diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx index ee1b60a83e..2e123a4d91 100644 --- a/Source/cmGeneratorExpressionEvaluator.cxx +++ b/Source/cmGeneratorExpressionEvaluator.cxx @@ -16,6 +16,8 @@ #include "cmGeneratorExpressionDAGChecker.h" #include "cmGeneratorExpression.h" +#include + //---------------------------------------------------------------------------- #if !defined(__SUNPRO_CC) || __SUNPRO_CC > 0x510 static @@ -253,7 +255,8 @@ static const struct ConfigurationTestNode : public cmGeneratorExpressionNode return parameters.front().empty() ? "1" : "0"; } - return *parameters.begin() == context->Config ? "1" : "0"; + return cmsysString_strcasecmp(parameters.begin()->c_str(), + context->Config) == 0 ? "1" : "0"; } } configurationTestNode; diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index b404333b88..bbf804bb17 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -556,6 +556,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/ --build-generator ${CMAKE_TEST_GENERATOR} --build-project GeneratorExpression --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM} + --build-options -DCMAKE_BUILD_TYPE=\${CTEST_CONFIGURATION_TYPE} ) list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/GeneratorExpression") diff --git a/Tests/GeneratorExpression/CMakeLists.txt b/Tests/GeneratorExpression/CMakeLists.txt index 581d4838eb..3a92d81b14 100644 --- a/Tests/GeneratorExpression/CMakeLists.txt +++ b/Tests/GeneratorExpression/CMakeLists.txt @@ -19,6 +19,10 @@ add_custom_target(check ALL -Dtest_and_0_invalidcontent=$ -Dtest_config_0=$x> -Dtest_config_1=$> + -Dtest_config_debug=$$$ + -Dtest_config_release=$$$ + -Dtest_config_relwithdebinfo=$$$ + -Dtest_config_minsizerel=$$$ -Dtest_not_0=$ -Dtest_not_1=$ -Dtest_or_0=$ diff --git a/Tests/GeneratorExpression/check.cmake b/Tests/GeneratorExpression/check.cmake index 88a60ce74e..af436de9e4 100644 --- a/Tests/GeneratorExpression/check.cmake +++ b/Tests/GeneratorExpression/check.cmake @@ -18,6 +18,11 @@ check(test_and_1_1 "1") check(test_and_0_invalidcontent "0") check(test_config_0 "0") check(test_config_1 "1") +foreach(c debug release relwithdebinfo minsizerel) + if(NOT "${test_config_${c}}" MATCHES "^(0+|1+)$") + message(SEND_ERROR "test_config_${c} is \"${test_config_${c}}\", not all 0 or all 1") + endif() +endforeach() check(test_not_0 "1") check(test_not_1 "0") check(test_or_0 "0")