Linux-Intel.cmake 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 13.0)
  23. set(CMAKE_${lang}_LINK_OPTIONS_PIE ${CMAKE_${lang}_COMPILE_OPTIONS_PIE} "-pie")
  24. set(CMAKE_${lang}_LINK_OPTIONS_NO_PIE "-no-pie")
  25. endif()
  26. set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "-fPIC")
  27. set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-shared")
  28. # We pass this for historical reasons. Projects may have
  29. # executables that use dlopen but do not set ENABLE_EXPORTS.
  30. set(CMAKE_SHARED_LIBRARY_LINK_${lang}_FLAGS "-rdynamic")
  31. set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Wl,")
  32. set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP ",")
  33. set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
  34. if(XIAR)
  35. # INTERPROCEDURAL_OPTIMIZATION
  36. set(CMAKE_${lang}_COMPILE_OPTIONS_IPO -ipo)
  37. set(CMAKE_${lang}_CREATE_STATIC_LIBRARY_IPO
  38. "${XIAR} cr <TARGET> <LINK_FLAGS> <OBJECTS> "
  39. "${XIAR} -s <TARGET> ")
  40. set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
  41. set(_CMAKE_${lang}_IPO_LEGACY_BEHAVIOR YES)
  42. else()
  43. set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER NO)
  44. endif()
  45. if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 12.0)
  46. set(CMAKE_${lang}_COMPILE_OPTIONS_VISIBILITY "-fvisibility=")
  47. endif()
  48. endmacro()