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.

78 lines
4.1KB

  1. # ==============================================================================
  2. #
  3. # This file is part of the JUCE 7 technical preview.
  4. # Copyright (c) 2022 - Raw Material Software Limited
  5. #
  6. # You may use this code under the terms of the GPL v3
  7. # (see www.gnu.org/licenses).
  8. #
  9. # For the technical preview this file cannot be licensed commercially.
  10. #
  11. # JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
  12. # EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
  13. # DISCLAIMED.
  14. #
  15. # ==============================================================================
  16. add_library(juce_recommended_warning_flags INTERFACE)
  17. add_library(juce::juce_recommended_warning_flags ALIAS juce_recommended_warning_flags)
  18. if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
  19. target_compile_options(juce_recommended_warning_flags INTERFACE "/W4")
  20. elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang"))
  21. target_compile_options(juce_recommended_warning_flags INTERFACE
  22. -Wall -Wshadow-all -Wshorten-64-to-32 -Wstrict-aliasing
  23. -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare
  24. -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion
  25. -Wsign-conversion -Wbool-conversion -Wextra-semi -Wunreachable-code
  26. -Wcast-align -Wshift-sign-overflow -Wmissing-prototypes
  27. -Wnullable-to-nonnull-conversion -Wno-ignored-qualifiers -Wswitch-enum
  28. -Wpedantic -Wdeprecated
  29. $<$<OR:$<COMPILE_LANGUAGE:CXX>,$<COMPILE_LANGUAGE:OBJCXX>>:
  30. -Wzero-as-null-pointer-constant -Wunused-private-field
  31. -Woverloaded-virtual -Wreorder
  32. -Winconsistent-missing-destructor-override>)
  33. elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
  34. target_compile_options(juce_recommended_warning_flags INTERFACE
  35. -Wall -Wextra -Wpedantic -Wstrict-aliasing -Wuninitialized
  36. -Wunused-parameter -Wsign-compare -Wsign-conversion -Wunreachable-code
  37. -Wcast-align -Wno-implicit-fallthrough -Wno-maybe-uninitialized
  38. -Wno-ignored-qualifiers -Wswitch-enum
  39. -Wredundant-decls -Wno-strict-overflow -Wshadow
  40. $<$<COMPILE_LANGUAGE:CXX>:
  41. -Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant>)
  42. endif()
  43. # ==================================================================================================
  44. add_library(juce_recommended_config_flags INTERFACE)
  45. add_library(juce::juce_recommended_config_flags ALIAS juce_recommended_config_flags)
  46. if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
  47. target_compile_options(juce_recommended_config_flags INTERFACE
  48. $<IF:$<CONFIG:Debug>,/Od /Zi,/Ox> $<$<STREQUAL:"${CMAKE_CXX_COMPILER_ID}","MSVC">:/MP> /EHsc)
  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_config_flags INTERFACE
  53. $<$<CONFIG:Debug>:-g -O0>
  54. $<$<CONFIG:Release>:-O3>)
  55. endif()
  56. # ==================================================================================================
  57. add_library(juce_recommended_lto_flags INTERFACE)
  58. add_library(juce::juce_recommended_lto_flags ALIAS juce_recommended_lto_flags)
  59. if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
  60. target_compile_options(juce_recommended_lto_flags INTERFACE
  61. $<$<CONFIG:Release>:$<IF:$<STREQUAL:"${CMAKE_CXX_COMPILER_ID}","MSVC">,-GL,-flto>>)
  62. target_link_libraries(juce_recommended_lto_flags INTERFACE
  63. $<$<CONFIG:Release>:$<$<STREQUAL:"${CMAKE_CXX_COMPILER_ID}","MSVC">:-LTCG>>)
  64. elseif((NOT MINGW) AND ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
  65. OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
  66. OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")))
  67. target_compile_options(juce_recommended_lto_flags INTERFACE $<$<CONFIG:Release>:-flto>)
  68. target_link_libraries(juce_recommended_lto_flags INTERFACE $<$<CONFIG:Release>:-flto>)
  69. endif()