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.

85 lines
4.4KB

  1. # ==============================================================================
  2. #
  3. # This file is part of the JUCE library.
  4. # Copyright (c) 2020 - Raw Material Software Limited
  5. #
  6. # JUCE is an open source library subject to commercial or open-source
  7. # licensing.
  8. #
  9. # By using JUCE, you agree to the terms of both the JUCE 6 End-User License
  10. # Agreement and JUCE Privacy Policy (both effective as of the 16th June 2020).
  11. #
  12. # End User License Agreement: www.juce.com/juce-6-licence
  13. # Privacy Policy: www.juce.com/juce-privacy-policy
  14. #
  15. # Or: You may also use this code under the terms of the GPL v3 (see
  16. # www.gnu.org/licenses).
  17. #
  18. # JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
  19. # EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
  20. # DISCLAIMED.
  21. #
  22. # ==============================================================================
  23. add_library(juce_recommended_warning_flags INTERFACE)
  24. add_library(juce::juce_recommended_warning_flags ALIAS juce_recommended_warning_flags)
  25. if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
  26. target_compile_options(juce_recommended_warning_flags INTERFACE "/W4")
  27. elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang"))
  28. target_compile_options(juce_recommended_warning_flags INTERFACE
  29. -Wall -Wshadow-all -Wshorten-64-to-32 -Wstrict-aliasing
  30. -Wuninitialized -Wunused-parameter -Wconversion -Wsign-compare
  31. -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion
  32. -Wsign-conversion -Wbool-conversion -Wextra-semi -Wunreachable-code
  33. -Wcast-align -Wshift-sign-overflow -Wno-missing-field-initializers
  34. -Wnullable-to-nonnull-conversion -Wno-ignored-qualifiers -Wswitch-enum
  35. -Wpedantic -Wdeprecated
  36. $<$<OR:$<COMPILE_LANGUAGE:CXX>,$<COMPILE_LANGUAGE:OBJCXX>>:
  37. -Wzero-as-null-pointer-constant -Wunused-private-field
  38. -Woverloaded-virtual -Wreorder
  39. -Winconsistent-missing-destructor-override>)
  40. elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
  41. target_compile_options(juce_recommended_warning_flags INTERFACE
  42. -Wall -Wextra -Wpedantic -Wstrict-aliasing -Wuninitialized
  43. -Wunused-parameter -Wsign-compare -Wsign-conversion -Wunreachable-code
  44. -Wcast-align -Wno-implicit-fallthrough -Wno-maybe-uninitialized
  45. -Wno-missing-field-initializers -Wno-ignored-qualifiers -Wswitch-enum
  46. -Wredundant-decls -Wno-strict-overflow -Wshadow
  47. $<$<COMPILE_LANGUAGE:CXX>:
  48. -Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant>)
  49. endif()
  50. # ==================================================================================================
  51. add_library(juce_recommended_config_flags INTERFACE)
  52. add_library(juce::juce_recommended_config_flags ALIAS juce_recommended_config_flags)
  53. if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
  54. target_compile_options(juce_recommended_config_flags INTERFACE
  55. $<IF:$<CONFIG:Debug>,/Od /Zi,/Ox> $<$<STREQUAL:"${CMAKE_CXX_COMPILER_ID}","MSVC">:/MP> /EHsc)
  56. elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
  57. OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
  58. OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))
  59. target_compile_options(juce_recommended_config_flags INTERFACE
  60. $<$<CONFIG:Debug>:-g -O0>
  61. $<$<CONFIG:Release>:-O3>)
  62. endif()
  63. # ==================================================================================================
  64. add_library(juce_recommended_lto_flags INTERFACE)
  65. add_library(juce::juce_recommended_lto_flags ALIAS juce_recommended_lto_flags)
  66. if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
  67. target_compile_options(juce_recommended_lto_flags INTERFACE
  68. $<$<CONFIG:Release>:$<IF:$<STREQUAL:"${CMAKE_CXX_COMPILER_ID}","MSVC">,-GL,-flto>>)
  69. target_link_libraries(juce_recommended_lto_flags INTERFACE
  70. $<$<CONFIG:Release>:$<$<STREQUAL:"${CMAKE_CXX_COMPILER_ID}","MSVC">:-LTCG>>)
  71. elseif((NOT MINGW) AND ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
  72. OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
  73. OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")))
  74. target_compile_options(juce_recommended_lto_flags INTERFACE $<$<CONFIG:Release>:-flto>)
  75. target_link_libraries(juce_recommended_lto_flags INTERFACE $<$<CONFIG:Release>:-flto>)
  76. endif()