compilerconfig.cmake 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. # CMake macOS compiler configuration module
  2. include_guard(GLOBAL)
  3. include(ccache)
  4. include(compiler_common)
  5. add_compile_options(-fopenmp-simd)
  6. if(XCODE)
  7. # Use Xcode's standard architecture selection
  8. set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD)")
  9. # Enable dSYM generation for Release builds
  10. string(APPEND CMAKE_C_FLAGS_RELEASE " -g")
  11. string(APPEND CMAKE_CXX_FLAGS_RELEASE " -g")
  12. else()
  13. option(ENABLE_COMPILER_TRACE "Enable clang time-trace (requires Ninja)" OFF)
  14. mark_as_advanced(ENABLE_COMPILER_TRACE)
  15. # clang options for ObjC
  16. set(_obs_clang_objc_options
  17. # cmake-format: sortable
  18. -Werror=block-capture-autoreleasing -Wno-selector -Wno-strict-selector-match -Wnon-virtual-dtor -Wprotocol
  19. -Wundeclared-selector)
  20. # clang options for ObjC++
  21. set(_obs_clang_objcxx_options
  22. # cmake-format: sortable
  23. ${_obs_clang_objc_options} -Warc-repeated-use-of-weak -Wno-arc-maybe-repeated-use-of-weak)
  24. add_compile_options(
  25. "$<$<COMPILE_LANGUAGE:C>:${_obs_clang_c_options}>" "$<$<COMPILE_LANGUAGE:CXX>:${_obs_clang_cxx_options}>"
  26. "$<$<COMPILE_LANGUAGE:OBJC>:${_obs_clang_objc_options}>"
  27. "$<$<COMPILE_LANGUAGE:OBJCXX>:${_obs_clang_objcxx_options}>")
  28. # Enable stripping of dead symbols when not building for Debug configuration
  29. set(_release_configs RelWithDebInfo Release MinSizeRel)
  30. if(CMAKE_BUILD_TYPE IN_LIST _release_configs)
  31. add_link_options(LINKER:-dead_strip)
  32. endif()
  33. # Enable color diagnostics for AppleClang
  34. set(CMAKE_COLOR_DIAGNOSTICS ON)
  35. # Set universal architectures via CMake flag for non-Xcode generators
  36. set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64")
  37. # Enable compiler and build tracing (requires Ninja generator)
  38. if(ENABLE_COMPILER_TRACE AND CMAKE_GENERATOR STREQUAL "Ninja")
  39. add_compile_options($<$<COMPILE_LANGUAGE:C>:-ftime-trace> $<$<COMPILE_LANGUAGE:CXX>:-ftime-trace>)
  40. else()
  41. set(ENABLE_COMPILER_TRACE
  42. OFF
  43. CACHE STRING "Enable clang time-trace (requires Ninja)" FORCE)
  44. endif()
  45. endif()
  46. add_compile_definitions($<$<CONFIG:DEBUG>:DEBUG> $<$<CONFIG:DEBUG>:_DEBUG> SIMDE_ENABLE_OPENMP)