compiler_common.cmake 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. # OBS CMake common compiler options module
  2. include_guard(GLOBAL)
  3. # Set C and C++ language standards to C17 and C++17
  4. if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.21)
  5. set(CMAKE_C_STANDARD 17)
  6. else()
  7. set(CMAKE_C_STANDARD 11)
  8. endif()
  9. set(CMAKE_C_STANDARD_REQUIRED TRUE)
  10. set(CMAKE_CXX_STANDARD 17)
  11. set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
  12. # Set symbols to be hidden by default for C and C++
  13. set(CMAKE_C_VISIBILITY_PRESET hidden)
  14. set(CMAKE_CXX_VISIBILITY_PRESET hidden)
  15. set(CMAKE_VISIBILITY_INLINES_HIDDEN TRUE)
  16. # clang options for C, C++, ObjC, and ObjC++
  17. set(_obs_clang_common_options
  18. -fno-strict-aliasing
  19. -Wno-trigraphs
  20. -Wno-missing-field-initializers
  21. -Wno-missing-prototypes
  22. -Werror=return-type
  23. -Wunreachable-code
  24. -Wquoted-include-in-framework-header
  25. -Wno-missing-braces
  26. -Wparentheses
  27. -Wswitch
  28. -Wno-unused-function
  29. -Wno-unused-label
  30. -Wunused-parameter
  31. -Wunused-variable
  32. -Wunused-value
  33. -Wempty-body
  34. -Wuninitialized
  35. -Wno-unknown-pragmas
  36. -Wfour-char-constants
  37. -Wconstant-conversion
  38. -Wno-conversion
  39. -Wint-conversion
  40. -Wbool-conversion
  41. -Wenum-conversion
  42. -Wnon-literal-null-conversion
  43. -Wsign-compare
  44. -Wshorten-64-to-32
  45. -Wpointer-sign
  46. -Wnewline-eof
  47. -Wno-implicit-fallthrough
  48. -Wdeprecated-declarations
  49. -Wno-sign-conversion
  50. -Winfinite-recursion
  51. -Wcomma
  52. -Wno-strict-prototypes
  53. -Wno-semicolon-before-method-body
  54. -Wformat-security
  55. -Wvla
  56. -Wno-error=shorten-64-to-32)
  57. # clang options for C
  58. set(_obs_clang_c_options ${_obs_clang_common_options} -Wno-shadow -Wno-float-conversion)
  59. # clang options for C++
  60. set(_obs_clang_cxx_options
  61. ${_obs_clang_common_options}
  62. -Wno-non-virtual-dtor
  63. -Wno-overloaded-virtual
  64. -Wno-exit-time-destructors
  65. -Wno-shadow
  66. -Winvalid-offsetof
  67. -Wmove
  68. -Werror=block-capture-autoreleasing
  69. -Wrange-loop-analysis)
  70. if(NOT DEFINED CMAKE_COMPILE_WARNING_AS_ERROR)
  71. set(CMAKE_COMPILE_WARNING_AS_ERROR ON)
  72. endif()