From 6f016aa03b79f8a3afe12f609978b7e56d89af0b Mon Sep 17 00:00:00 2001 From: reuk Date: Mon, 4 May 2020 12:09:46 +0100 Subject: [PATCH] CMake: Move helper targets to dedicated file --- CMakeLists.txt | 1 + extras/Build/CMake/JUCEHelperTargets.cmake | 67 +++++++++++++++++++++ extras/Build/CMake/JUCEUtils.cmake | 70 ---------------------- 3 files changed, 68 insertions(+), 70 deletions(-) create mode 100644 extras/Build/CMake/JUCEHelperTargets.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 68f9efa019..2191495f6d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,7 @@ project(JUCE VERSION 6.0.0 LANGUAGES C CXX) set_property(GLOBAL PROPERTY USE_FOLDERS YES) +include(extras/Build/CMake/JUCEHelperTargets.cmake) include(extras/Build/CMake/JUCEUtils.cmake) juce_disable_default_flags() diff --git a/extras/Build/CMake/JUCEHelperTargets.cmake b/extras/Build/CMake/JUCEHelperTargets.cmake new file mode 100644 index 0000000000..ec50ffea43 --- /dev/null +++ b/extras/Build/CMake/JUCEHelperTargets.cmake @@ -0,0 +1,67 @@ +add_library(juce_recommended_warning_flags INTERFACE) +add_library(juce::juce_recommended_warning_flags ALIAS juce_recommended_warning_flags) + +if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + target_compile_options(juce_recommended_warning_flags INTERFACE "/W4") +elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")) + target_compile_options(juce_recommended_warning_flags INTERFACE + -Wall -Wshadow-all -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized + -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion + -Wconditional-uninitialized -Woverloaded-virtual -Wreorder + -Wconstant-conversion -Wsign-conversion -Wunused-private-field + -Wbool-conversion -Wextra-semi -Wunreachable-code + -Wzero-as-null-pointer-constant -Wcast-align + -Winconsistent-missing-destructor-override -Wshift-sign-overflow + -Wnullable-to-nonnull-conversion -Wno-missing-field-initializers + -Wno-ignored-qualifiers -Wswitch-enum) +elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + target_compile_options(juce_recommended_warning_flags INTERFACE + -Wall -Wextra -Wstrict-aliasing -Wuninitialized -Wunused-parameter + -Wsign-compare -Woverloaded-virtual -Wreorder -Wsign-conversion + -Wunreachable-code -Wzero-as-null-pointer-constant -Wcast-align + -Wno-implicit-fallthrough -Wno-maybe-uninitialized + -Wno-missing-field-initializers -Wno-ignored-qualifiers -Wswitch-enum + -Wswitch-default -Wredundant-decls) + + if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "7.0.0") + target_compile_options(juce_recommended_warning_flags INTERFACE "-Wno-strict-overflow") + endif() +endif() + +install(TARGETS juce_recommended_warning_flags EXPORT JUCE) + +# ================================================================================================== + +add_library(juce_recommended_config_flags INTERFACE) +add_library(juce::juce_recommended_config_flags ALIAS juce_recommended_config_flags) + +if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + target_compile_options(juce_recommended_config_flags INTERFACE + $<$:/Od /MP /EHsc> + $<$:/Ox /MP /EHsc>) +elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") + OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")) + target_compile_options(juce_recommended_config_flags INTERFACE + $<$:-g -O0> + $<$:-O3>) +endif() + +install(TARGETS juce_recommended_config_flags EXPORT JUCE) + +# ================================================================================================== + +add_library(juce_recommended_lto_flags INTERFACE) +add_library(juce::juce_recommended_lto_flags ALIAS juce_recommended_lto_flags) + +if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) + target_compile_options(juce_recommended_lto_flags INTERFACE $<$:/GL>) + target_link_libraries(juce_recommended_lto_flags INTERFACE $<$:-LTCG>) +elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") + OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")) + target_compile_options(juce_recommended_lto_flags INTERFACE $<$:-flto>) + target_link_libraries(juce_recommended_lto_flags INTERFACE $<$:-flto>) +endif() + +install(TARGETS juce_recommended_lto_flags EXPORT JUCE) diff --git a/extras/Build/CMake/JUCEUtils.cmake b/extras/Build/CMake/JUCEUtils.cmake index d082477bf4..c1e50474ba 100644 --- a/extras/Build/CMake/JUCEUtils.cmake +++ b/extras/Build/CMake/JUCEUtils.cmake @@ -2181,73 +2181,3 @@ function(juce_disable_default_flags) endforeach() endforeach() endfunction() - -# ================================================================================================== - -add_library(juce_recommended_warning_flags INTERFACE) -add_library(juce::juce_recommended_warning_flags ALIAS juce_recommended_warning_flags) - -if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) - target_compile_options(juce_recommended_warning_flags INTERFACE "/W4") -elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")) - target_compile_options(juce_recommended_warning_flags INTERFACE - -Wall -Wshadow-all -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized - -Wunused-parameter -Wconversion -Wsign-compare -Wint-conversion - -Wconditional-uninitialized -Woverloaded-virtual -Wreorder - -Wconstant-conversion -Wsign-conversion -Wunused-private-field - -Wbool-conversion -Wextra-semi -Wunreachable-code - -Wzero-as-null-pointer-constant -Wcast-align - -Winconsistent-missing-destructor-override -Wshift-sign-overflow - -Wnullable-to-nonnull-conversion -Wno-missing-field-initializers - -Wno-ignored-qualifiers -Wswitch-enum) -elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - target_compile_options(juce_recommended_warning_flags INTERFACE - -Wall -Wextra -Wstrict-aliasing -Wuninitialized -Wunused-parameter - -Wsign-compare -Woverloaded-virtual -Wreorder -Wsign-conversion - -Wunreachable-code -Wzero-as-null-pointer-constant -Wcast-align - -Wno-implicit-fallthrough -Wno-maybe-uninitialized - -Wno-missing-field-initializers -Wno-ignored-qualifiers -Wswitch-enum - -Wswitch-default -Wredundant-decls) - - if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "7.0.0") - target_compile_options(juce_recommended_warning_flags INTERFACE "-Wno-strict-overflow") - endif() -endif() - -install(TARGETS juce_recommended_warning_flags EXPORT JUCE) - -# ================================================================================================== - -add_library(juce_recommended_config_flags INTERFACE) -add_library(juce::juce_recommended_config_flags ALIAS juce_recommended_config_flags) - -if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) - target_compile_options(juce_recommended_config_flags INTERFACE - $<$:/Od /MP /EHsc> - $<$:/Ox /MP /EHsc>) -elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") - OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")) - target_compile_options(juce_recommended_config_flags INTERFACE - $<$:-g -O0> - $<$:-O3>) -endif() - -install(TARGETS juce_recommended_config_flags EXPORT JUCE) - -# ================================================================================================== - -add_library(juce_recommended_lto_flags INTERFACE) -add_library(juce::juce_recommended_lto_flags ALIAS juce_recommended_lto_flags) - -if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")) - target_compile_options(juce_recommended_lto_flags INTERFACE $<$:/GL>) - target_link_libraries(juce_recommended_lto_flags INTERFACE $<$:-LTCG>) -elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") - OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")) - target_compile_options(juce_recommended_lto_flags INTERFACE $<$:-flto>) - target_link_libraries(juce_recommended_lto_flags INTERFACE $<$:-flto>) -endif() - -install(TARGETS juce_recommended_lto_flags EXPORT JUCE)