diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx index b4d35c5edc..d435b9b229 100644 --- a/Source/cmCoreTryCompile.cxx +++ b/Source/cmCoreTryCompile.cxx @@ -691,6 +691,13 @@ cm::optional cmCoreTryCompile::TryCompileCode( *cmp0197 == "NEW"_s ? "NEW" : "OLD"); } + /* Set per-language link flags policy to match outer project. + It affects platform modules. */ + if (this->Makefile->GetPolicyStatus(cmPolicies::CMP0210) != + cmPolicies::NEW) { + fprintf(fout, "cmake_policy(SET CMP0210 OLD)\n"); + } + std::string projectLangs; for (std::string const& li : testLangs) { projectLangs += cmStrCat(' ', li); @@ -907,15 +914,6 @@ cm::optional cmCoreTryCompile::TryCompileCode( ? "NEW" : "OLD"); - /* Set the appropriate policy information for passing - * CMAKE__LINK_FLAGS - */ - fprintf(fout, "cmake_policy(SET CMP0210 %s)\n", - this->Makefile->GetPolicyStatus(cmPolicies::CMP0210) == - cmPolicies::NEW - ? "NEW" - : "OLD"); - // Honor CMAKE_EXE_LINKER_FLAGS in Swift if the outer project does. fprintf(fout, "cmake_policy(SET CMP0214 %s)\n", this->Makefile->GetPolicyStatus(cmPolicies::CMP0214) == diff --git a/Tests/RunCMake/ToolchainFile/CMP0210-NEW-stderr.txt b/Tests/RunCMake/ToolchainFile/CMP0210-NEW-stderr.txt new file mode 100644 index 0000000000..36ad41b68a --- /dev/null +++ b/Tests/RunCMake/ToolchainFile/CMP0210-NEW-stderr.txt @@ -0,0 +1 @@ +^try_compile CMP0210='NEW' diff --git a/Tests/RunCMake/ToolchainFile/CMP0210-NEW-toolchain.cmake b/Tests/RunCMake/ToolchainFile/CMP0210-NEW-toolchain.cmake new file mode 100644 index 0000000000..5474508bf9 --- /dev/null +++ b/Tests/RunCMake/ToolchainFile/CMP0210-NEW-toolchain.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/CMP0210-toolchain.cmake") diff --git a/Tests/RunCMake/ToolchainFile/CMP0210-NEW.cmake b/Tests/RunCMake/ToolchainFile/CMP0210-NEW.cmake new file mode 100644 index 0000000000..644f78510b --- /dev/null +++ b/Tests/RunCMake/ToolchainFile/CMP0210-NEW.cmake @@ -0,0 +1,2 @@ +cmake_policy(SET CMP0210 NEW) +enable_language(C) diff --git a/Tests/RunCMake/ToolchainFile/CMP0210-OLD-stderr.txt b/Tests/RunCMake/ToolchainFile/CMP0210-OLD-stderr.txt new file mode 100644 index 0000000000..c308ca2967 --- /dev/null +++ b/Tests/RunCMake/ToolchainFile/CMP0210-OLD-stderr.txt @@ -0,0 +1 @@ +^try_compile CMP0210='OLD' diff --git a/Tests/RunCMake/ToolchainFile/CMP0210-OLD-toolchain.cmake b/Tests/RunCMake/ToolchainFile/CMP0210-OLD-toolchain.cmake new file mode 100644 index 0000000000..5474508bf9 --- /dev/null +++ b/Tests/RunCMake/ToolchainFile/CMP0210-OLD-toolchain.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/CMP0210-toolchain.cmake") diff --git a/Tests/RunCMake/ToolchainFile/CMP0210-OLD.cmake b/Tests/RunCMake/ToolchainFile/CMP0210-OLD.cmake new file mode 100644 index 0000000000..b6eda62914 --- /dev/null +++ b/Tests/RunCMake/ToolchainFile/CMP0210-OLD.cmake @@ -0,0 +1,2 @@ +cmake_policy(SET CMP0210 OLD) +enable_language(C) diff --git a/Tests/RunCMake/ToolchainFile/CMP0210-WARN-stderr.txt b/Tests/RunCMake/ToolchainFile/CMP0210-WARN-stderr.txt new file mode 100644 index 0000000000..c308ca2967 --- /dev/null +++ b/Tests/RunCMake/ToolchainFile/CMP0210-WARN-stderr.txt @@ -0,0 +1 @@ +^try_compile CMP0210='OLD' diff --git a/Tests/RunCMake/ToolchainFile/CMP0210-WARN-toolchain.cmake b/Tests/RunCMake/ToolchainFile/CMP0210-WARN-toolchain.cmake new file mode 100644 index 0000000000..5474508bf9 --- /dev/null +++ b/Tests/RunCMake/ToolchainFile/CMP0210-WARN-toolchain.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/CMP0210-toolchain.cmake") diff --git a/Tests/RunCMake/ToolchainFile/CMP0210-WARN.cmake b/Tests/RunCMake/ToolchainFile/CMP0210-WARN.cmake new file mode 100644 index 0000000000..af6fb7e1ee --- /dev/null +++ b/Tests/RunCMake/ToolchainFile/CMP0210-WARN.cmake @@ -0,0 +1,2 @@ +# leave CMP0210 unset +enable_language(C) diff --git a/Tests/RunCMake/ToolchainFile/CMP0210-toolchain.cmake b/Tests/RunCMake/ToolchainFile/CMP0210-toolchain.cmake new file mode 100644 index 0000000000..f19e0efa77 --- /dev/null +++ b/Tests/RunCMake/ToolchainFile/CMP0210-toolchain.cmake @@ -0,0 +1,5 @@ +get_property(_IN_TC GLOBAL PROPERTY IN_TRY_COMPILE) +if(_IN_TC) + cmake_policy(GET CMP0210 cmp0210) + message("try_compile CMP0210='${cmp0210}'") +endif() diff --git a/Tests/RunCMake/ToolchainFile/RunCMakeTest.cmake b/Tests/RunCMake/ToolchainFile/RunCMakeTest.cmake index 5105e7afa9..6320cd127e 100644 --- a/Tests/RunCMake/ToolchainFile/RunCMakeTest.cmake +++ b/Tests/RunCMake/ToolchainFile/RunCMakeTest.cmake @@ -14,6 +14,9 @@ run_cmake_toolchain(LinkFlagsInit) run_cmake_toolchain(CMP0126-NEW) run_cmake_toolchain(CMP0126-OLD) run_cmake_toolchain(CMP0126-WARN) +run_cmake_toolchain(CMP0210-NEW) +run_cmake_toolchain(CMP0210-OLD) +run_cmake_toolchain(CMP0210-WARN) run_cmake_toolchain(SetCompilerLoaded) run_cmake_toolchain(SetCrossCompiling)