diff options
author | Brad King <brad.king@kitware.com> | 2017-10-02 12:25:22 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-10-03 12:03:33 (GMT) |
commit | 303cd7037a5de2b26373ed4184fd36e68e0f01da (patch) | |
tree | 49398fbc6dd15245f8f922cdb6ff58b8c16efd5d | |
parent | db730f3e5092bbfcd1cee8c0cdf5150c88fb65b3 (diff) | |
download | CMake-303cd7037a5de2b26373ed4184fd36e68e0f01da.zip CMake-303cd7037a5de2b26373ed4184fd36e68e0f01da.tar.gz CMake-303cd7037a5de2b26373ed4184fd36e68e0f01da.tar.bz2 |
VS,Xcode: Fix TARGET_PROPERTY genex in source COMPILE_FLAGS property
This already worked in other generators. Also add a test case.
Fixes: #17314
-rw-r--r-- | Source/cmGlobalXCodeGenerator.cxx | 3 | ||||
-rw-r--r-- | Source/cmLocalVisualStudio7Generator.cxx | 2 | ||||
-rw-r--r-- | Source/cmVisualStudio10TargetGenerator.cxx | 4 | ||||
-rw-r--r-- | Tests/GeneratorExpression/CMakeLists.txt | 4 | ||||
-rw-r--r-- | Tests/GeneratorExpression/echo.c | 3 | ||||
-rw-r--r-- | Tests/GeneratorExpression/srcgenex.c | 12 |
6 files changed, 20 insertions, 8 deletions
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index 304a188..c79ee47 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -668,7 +668,8 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreateXCodeSourceFile( std::string configName = "NO-PER-CONFIG-SUPPORT-IN-XCODE"; std::unique_ptr<cmCompiledGeneratorExpression> compiledExpr = ge.Parse(cflags); - const char* processed = compiledExpr->Evaluate(lg, configName); + const char* processed = + compiledExpr->Evaluate(lg, configName, false, gtgt); if (compiledExpr->GetHadContextSensitiveCondition()) { std::ostringstream e; /* clang-format off */ diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 8027191..d8030b7 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -1454,7 +1454,7 @@ cmLocalVisualStudio7GeneratorFCInfo::cmLocalVisualStudio7GeneratorFCInfo( if (const char* cflags = sf.GetProperty("COMPILE_FLAGS")) { cmGeneratorExpression ge; std::unique_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(cflags); - fc.CompileFlags = cge->Evaluate(lg, *i); + fc.CompileFlags = cge->Evaluate(lg, *i, false, gt); needfc = true; } if (lg->FortranProject) { diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 6535008..eb5a3e4 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -2125,8 +2125,8 @@ bool cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags( if (configDependentFlags) { cmGeneratorExpression ge; std::unique_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(flags); - std::string evaluatedFlags = - cge->Evaluate(this->LocalGenerator, *config); + std::string evaluatedFlags = cge->Evaluate( + this->LocalGenerator, *config, false, this->GeneratorTarget); clOptions.Parse(evaluatedFlags.c_str()); } else { clOptions.Parse(flags.c_str()); diff --git a/Tests/GeneratorExpression/CMakeLists.txt b/Tests/GeneratorExpression/CMakeLists.txt index 8ac3419..83fd11d 100644 --- a/Tests/GeneratorExpression/CMakeLists.txt +++ b/Tests/GeneratorExpression/CMakeLists.txt @@ -258,11 +258,13 @@ add_custom_target(check-part4 ALL VERBATIM ) +add_executable(srcgenex srcgenex.c) +set_property(SOURCE srcgenex.c PROPERTY COMPILE_FLAGS "-DNAME=$<TARGET_PROPERTY:NAME>") + #----------------------------------------------------------------------------- # Cover test properties with generator expressions. add_executable(echo echo.c) add_executable(pwd pwd.c) -set_property(SOURCE echo.c PROPERTY COMPILE_FLAGS $<1:-DSRC_GENEX_WORKS>) add_test(NAME echo-configuration COMMAND echo $<CONFIGURATION>) set_property(TEST echo-configuration PROPERTY diff --git a/Tests/GeneratorExpression/echo.c b/Tests/GeneratorExpression/echo.c index 41596a2..06b0844 100644 --- a/Tests/GeneratorExpression/echo.c +++ b/Tests/GeneratorExpression/echo.c @@ -3,9 +3,6 @@ int main(int argc, char* argv[]) { -#ifndef SRC_GENEX_WORKS -#error SRC_GENEX_WORKS not defined -#endif printf("%s\n", argv[1]); return EXIT_SUCCESS; } diff --git a/Tests/GeneratorExpression/srcgenex.c b/Tests/GeneratorExpression/srcgenex.c new file mode 100644 index 0000000..56d3c3f --- /dev/null +++ b/Tests/GeneratorExpression/srcgenex.c @@ -0,0 +1,12 @@ +int srcgenex(void) +{ + return 0; +} + +int main(int argc, char* argv[]) +{ +#ifndef NAME +#error NAME not defined +#endif + return NAME(); +} |