From 13c2ba2dcc61c70d4dde0f0615a665d8d0f93bca Mon Sep 17 00:00:00 2001 From: reuk Date: Thu, 25 May 2023 18:55:04 +0100 Subject: [PATCH] CMake: Use DEBUG_CONFIGURATIONS to determine whether a configuration is a Debug configuration --- extras/Build/CMake/JUCEHelperTargets.cmake | 19 +++++++++++++++++-- extras/Build/CMake/JUCEModuleSupport.cmake | 3 ++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/extras/Build/CMake/JUCEHelperTargets.cmake b/extras/Build/CMake/JUCEHelperTargets.cmake index 9c770877a4..938a527e72 100644 --- a/extras/Build/CMake/JUCEHelperTargets.cmake +++ b/extras/Build/CMake/JUCEHelperTargets.cmake @@ -24,6 +24,19 @@ add_library(juce_recommended_warning_flags INTERFACE) add_library(juce::juce_recommended_warning_flags ALIAS juce_recommended_warning_flags) +function(_juce_get_debug_config_genex result) + get_property(debug_configs GLOBAL PROPERTY DEBUG_CONFIGURATIONS) + if(NOT debug_configs) + set(debug_configs Debug) + endif() + list(TRANSFORM debug_configs REPLACE [[^.+$]] [[$]]) + list(JOIN debug_configs "," debug_configs) + # $ doesn't accept multiple configurations until CMake 3.19 + set(${result} "$" PARENT_SCOPE) +endfunction() + +# ================================================================================================== + if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_COMPILER_FRONTEND_VARIANT 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")) @@ -58,13 +71,15 @@ 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_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")) + _juce_get_debug_config_genex(debug_config) target_compile_options(juce_recommended_config_flags INTERFACE - $,/Od /Zi,/Ox> $<$:/MP> /EHsc) + $ $<$:/MP> /EHsc) elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")) + _juce_get_debug_config_genex(debug_config) target_compile_options(juce_recommended_config_flags INTERFACE - $<$:-g -O0> + $<${debug_config}:-g -O0> $<$:-O3>) endif() diff --git a/extras/Build/CMake/JUCEModuleSupport.cmake b/extras/Build/CMake/JUCEModuleSupport.cmake index db6218bc40..90f9ccdd8d 100644 --- a/extras/Build/CMake/JUCEModuleSupport.cmake +++ b/extras/Build/CMake/JUCEModuleSupport.cmake @@ -73,9 +73,10 @@ endfunction() # ================================================================================================== function(_juce_add_standard_defs juce_target) + _juce_get_debug_config_genex(debug_config) target_compile_definitions(${juce_target} INTERFACE JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1 - $,DEBUG=1 _DEBUG=1,NDEBUG=1 _NDEBUG=1> + $ $<$:JUCE_ANDROID=1>) endfunction()