The JUCE cross-platform C++ framework, with DISTRHO/KXStudio specific changes
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
3.5KB

  1. add_library(juce_recommended_warning_flags INTERFACE)
  2. add_library(juce::juce_recommended_warning_flags ALIAS juce_recommended_warning_flags)
  3. if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
  4. target_compile_options(juce_recommended_warning_flags INTERFACE "/W4")
  5. elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang"))
  6. target_compile_options(juce_recommended_warning_flags INTERFACE
  7. -Wall -Wshadow-all -Wshorten-64-to-32 -Wstrict-aliasing
  8. -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare
  9. -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion
  10. -Wsign-conversion -Wbool-conversion -Wextra-semi -Wunreachable-code
  11. -Wcast-align -Wshift-sign-overflow -Wno-missing-field-initializers
  12. -Wnullable-to-nonnull-conversion -Wno-ignored-qualifiers -Wswitch-enum
  13. -Wpedantic
  14. $<$<OR:$<COMPILE_LANGUAGE:CXX>,$<COMPILE_LANGUAGE:OBJCXX>>:
  15. -Wzero-as-null-pointer-constant -Wunused-private-field
  16. -Woverloaded-virtual -Wreorder
  17. -Winconsistent-missing-destructor-override>)
  18. elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
  19. target_compile_options(juce_recommended_warning_flags INTERFACE
  20. -Wall -Wextra -Wpedantic -Wstrict-aliasing -Wuninitialized
  21. -Wunused-parameter -Wsign-compare -Wsign-conversion -Wunreachable-code
  22. -Wcast-align -Wno-implicit-fallthrough -Wno-maybe-uninitialized
  23. -Wno-missing-field-initializers -Wno-ignored-qualifiers -Wswitch-enum
  24. -Wredundant-decls -Wno-strict-overflow -Wshadow
  25. $<$<COMPILE_LANGUAGE:CXX>:
  26. -Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant>)
  27. endif()
  28. # ==================================================================================================
  29. add_library(juce_recommended_config_flags INTERFACE)
  30. add_library(juce::juce_recommended_config_flags ALIAS juce_recommended_config_flags)
  31. if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
  32. target_compile_options(juce_recommended_config_flags INTERFACE
  33. $<IF:$<CONFIG:Debug>,/Od /Zi,/Ox> $<$<STREQUAL:"${CMAKE_CXX_COMPILER_ID}","MSVC">:/MP> /EHsc)
  34. elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
  35. OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
  36. OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))
  37. target_compile_options(juce_recommended_config_flags INTERFACE
  38. $<$<CONFIG:Debug>:-g -O0>
  39. $<$<CONFIG:Release>:-O3>)
  40. endif()
  41. # ==================================================================================================
  42. add_library(juce_recommended_lto_flags INTERFACE)
  43. add_library(juce::juce_recommended_lto_flags ALIAS juce_recommended_lto_flags)
  44. if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
  45. target_compile_options(juce_recommended_lto_flags INTERFACE
  46. $<$<CONFIG:Release>:$<IF:$<STREQUAL:"${CMAKE_CXX_COMPILER_ID}","MSVC">,-GL,-flto>>)
  47. target_link_libraries(juce_recommended_lto_flags INTERFACE
  48. $<$<CONFIG:Release>:$<$<STREQUAL:"${CMAKE_CXX_COMPILER_ID}","MSVC">:-LTCG>>)
  49. elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
  50. OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
  51. OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))
  52. target_compile_options(juce_recommended_lto_flags INTERFACE $<$<CONFIG:Release>:-flto>)
  53. target_link_libraries(juce_recommended_lto_flags INTERFACE $<$<CONFIG:Release>:-flto>)
  54. endif()