Linux-IntelLLVM.cmake 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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_LLVM)
  5. return()
  6. endif()
  7. set(__LINUX_COMPILER_INTEL_LLVM 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_llvm lang)
  20. set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-fPIC")
  21. set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIE")
  22. set(_CMAKE_${lang}_PIE_MAY_BE_SUPPORTED_BY_LINKER NO)
  23. set(_CMAKE_${lang}_PIE_MAY_BE_SUPPORTED_BY_LINKER YES)
  24. set(CMAKE_${lang}_LINK_OPTIONS_PIE ${CMAKE_${lang}_COMPILE_OPTIONS_PIE} "-pie")
  25. set(CMAKE_${lang}_LINK_OPTIONS_NO_PIE "-no-pie")
  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. set(CMAKE_${lang}_COMPILE_OPTIONS_VISIBILITY "-fvisibility=")
  46. endmacro()