From 08eb157c032487b2793e625c554caae33267116d Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 24 Jul 2018 13:05:22 -0400 Subject: Tests: Add case showing CMP0048 warning on injected project command Issue: #18202 --- Tests/RunCMake/CMakeLists.txt | 1 + Tests/RunCMake/project_injected/CMP0048-WARN-stderr.txt | 12 ++++++++++++ Tests/RunCMake/project_injected/CMP0048-WARN.cmake | 0 Tests/RunCMake/project_injected/CMakeLists.txt | 3 +++ Tests/RunCMake/project_injected/RunCMakeTest.cmake | 12 ++++++++++++ 5 files changed, 28 insertions(+) create mode 100644 Tests/RunCMake/project_injected/CMP0048-WARN-stderr.txt create mode 100644 Tests/RunCMake/project_injected/CMP0048-WARN.cmake create mode 100644 Tests/RunCMake/project_injected/CMakeLists.txt create mode 100644 Tests/RunCMake/project_injected/RunCMakeTest.cmake diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index bb46144..637c5c2 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -240,6 +240,7 @@ add_RunCMake_test(include_guard) add_RunCMake_test(list) add_RunCMake_test(message) add_RunCMake_test(project -DCMake_TEST_RESOURCES=${CMake_TEST_RESOURCES}) +add_RunCMake_test(project_injected) add_RunCMake_test(return) add_RunCMake_test(separate_arguments) add_RunCMake_test(set_property) diff --git a/Tests/RunCMake/project_injected/CMP0048-WARN-stderr.txt b/Tests/RunCMake/project_injected/CMP0048-WARN-stderr.txt new file mode 100644 index 0000000..aafa733 --- /dev/null +++ b/Tests/RunCMake/project_injected/CMP0048-WARN-stderr.txt @@ -0,0 +1,12 @@ +^CMake Warning \(dev\) in CMakeLists.txt: + Policy CMP0048 is not set: project\(\) command manages VERSION variables. + Run "cmake --help-policy CMP0048" for policy details. Use the cmake_policy + command to set the policy and suppress this warning. + + The following variable\(s\) would be set to empty: + + CMAKE_PROJECT_VERSION + CMAKE_PROJECT_VERSION_MAJOR + CMAKE_PROJECT_VERSION_MINOR + CMAKE_PROJECT_VERSION_PATCH +This warning is for project developers. Use -Wno-dev to suppress it.$ diff --git a/Tests/RunCMake/project_injected/CMP0048-WARN.cmake b/Tests/RunCMake/project_injected/CMP0048-WARN.cmake new file mode 100644 index 0000000..e69de29 diff --git a/Tests/RunCMake/project_injected/CMakeLists.txt b/Tests/RunCMake/project_injected/CMakeLists.txt new file mode 100644 index 0000000..1b4931b --- /dev/null +++ b/Tests/RunCMake/project_injected/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 2.8.12.2) # old enough to not set CMP0048 +# no project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/project_injected/RunCMakeTest.cmake b/Tests/RunCMake/project_injected/RunCMakeTest.cmake new file mode 100644 index 0000000..ba1a003 --- /dev/null +++ b/Tests/RunCMake/project_injected/RunCMakeTest.cmake @@ -0,0 +1,12 @@ +include(RunCMake) + +set(RunCMake_TEST_OPTIONS + # Simulate a previous CMake run that used `project(... VERSION ...)` + # in a non-injected call site. + -DCMAKE_PROJECT_VERSION:STATIC=1.2.3 + -DCMAKE_PROJECT_VERSION_MAJOR:STATIC=1 + -DCMAKE_PROJECT_VERSION_MINOR:STATIC=2 + -DCMAKE_PROJECT_VERSION_PATCH:STATIC=3 + ) +run_cmake(CMP0048-WARN) +unset(RunCMake_TEST_OPTIONS) -- cgit v0.12 From 6646771b0f4f6ec71a5717a68f74c987eb399b4e Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 24 Jul 2018 13:10:14 -0400 Subject: project: Do not issue CMP0048 warnings on injected call Fixes: #18202 --- Source/cmMakefile.cxx | 2 ++ Source/cmProjectCommand.cxx | 9 +++++++-- Tests/RunCMake/project_injected/CMP0048-WARN-stderr.txt | 12 ------------ 3 files changed, 9 insertions(+), 14 deletions(-) delete mode 100644 Tests/RunCMake/project_injected/CMP0048-WARN-stderr.txt diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 3c7a4cf..af97f80 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1511,6 +1511,8 @@ void cmMakefile::Configure() project.Name.Lower = "project"; project.Arguments.emplace_back("Project", cmListFileArgument::Unquoted, 0); + project.Arguments.emplace_back("__CMAKE_INJECTED_PROJECT_COMMAND__", + cmListFileArgument::Unquoted, 0); listFile.Functions.insert(listFile.Functions.begin(), project); } } diff --git a/Source/cmProjectCommand.cxx b/Source/cmProjectCommand.cxx index a25bd6b..ee44007 100644 --- a/Source/cmProjectCommand.cxx +++ b/Source/cmProjectCommand.cxx @@ -69,6 +69,7 @@ bool cmProjectCommand::InitialPass(std::vector const& args, bool haveLanguages = false; bool haveDescription = false; bool haveHomepage = false; + bool injectedProjectCommand = false; std::string version; std::string description; std::string homepage; @@ -160,6 +161,8 @@ bool cmProjectCommand::InitialPass(std::vector const& args, "by a value that expanded to nothing."); resetReporter(); }; + } else if (i == 1 && args[i] == "__CMAKE_INJECTED_PROJECT_COMMAND__") { + injectedProjectCommand = true; } else if (doing == DoingVersion) { doing = DoingLanguages; version = args[i]; @@ -280,8 +283,10 @@ bool cmProjectCommand::InitialPass(std::vector const& args, const char* v = this->Makefile->GetDefinition(i); if (v && *v) { if (cmp0048 == cmPolicies::WARN) { - vw += "\n "; - vw += i; + if (!injectedProjectCommand) { + vw += "\n "; + vw += i; + } } else { this->Makefile->AddDefinition(i, ""); } diff --git a/Tests/RunCMake/project_injected/CMP0048-WARN-stderr.txt b/Tests/RunCMake/project_injected/CMP0048-WARN-stderr.txt deleted file mode 100644 index aafa733..0000000 --- a/Tests/RunCMake/project_injected/CMP0048-WARN-stderr.txt +++ /dev/null @@ -1,12 +0,0 @@ -^CMake Warning \(dev\) in CMakeLists.txt: - Policy CMP0048 is not set: project\(\) command manages VERSION variables. - Run "cmake --help-policy CMP0048" for policy details. Use the cmake_policy - command to set the policy and suppress this warning. - - The following variable\(s\) would be set to empty: - - CMAKE_PROJECT_VERSION - CMAKE_PROJECT_VERSION_MAJOR - CMAKE_PROJECT_VERSION_MINOR - CMAKE_PROJECT_VERSION_PATCH -This warning is for project developers. Use -Wno-dev to suppress it.$ -- cgit v0.12