Linux-Intel.cmake 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. # file Copyright.txt or https://cmake.org/licensing for details.
  3. # This module is shared by multiple languages; use include blocker.
  4. if(__LINUX_COMPILER_INTEL)
  5. return()
  6. endif()
  7. set(__LINUX_COMPILER_INTEL 1)
  8. if(NOT XIAR)
  9. set(_intel_xiar_hints)
  10. foreach(lang C CXX Fortran)
  11. if(IS_ABSOLUTE "${CMAKE_${lang}_COMPILER}")
  12. get_filename_component(_hint "${CMAKE_${lang}_COMPILER}" PATH)
  13. list(APPEND _intel_xiar_hints ${_hint})
  14. endif()
  15. endforeach()
  16. find_program(XIAR NAMES xiar HINTS ${_intel_xiar_hints})
  17. mark_as_advanced(XIAR)
  18. endif()
  19. macro(__linux_compiler_intel lang)
  20. set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-fPIC")
  21. set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE")
  22. set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "-fPIC")
  23. set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-shared")
  24. # We pass this for historical reasons. Projects may have
  25. # executables that use dlopen but do not set ENABLE_EXPORTS.
  26. set(CMAKE_SHARED_LIBRARY_LINK_${lang}_FLAGS "-rdynamic")
  27. set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
  28. if(XIAR)
  29. # INTERPROCEDURAL_OPTIMIZATION
  30. set(CMAKE_${lang}_COMPILE_OPTIONS_IPO -ipo)
  31. set(CMAKE_${lang}_CREATE_STATIC_LIBRARY_IPO
  32. "${XIAR} cr <TARGET> <LINK_FLAGS> <OBJECTS> "
  33. "${XIAR} -s <TARGET> ")
  34. set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
  35. set(_CMAKE_${lang}_IPO_LEGACY_BEHAVIOR YES)
  36. else()
  37. set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER NO)
  38. endif()
  39. if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 12.0)
  40. set(CMAKE_${lang}_COMPILE_OPTIONS_VISIBILITY "-fvisibility=")
  41. endif()
  42. endmacro()