Browse Source

Merge topic 'try_compile-copy-config' into release-3.25

80fc564dd7 try_compile: Restore COPY_FILE with CMAKE_TRY_COMPILE_CONFIGURATION

Acked-by: Kitware Robot <[email protected]>
Tested-by: buildbot <[email protected]>
Acked-by: Robert Maynard <[email protected]>
Merge-request: !7948
Brad King 3 years ago
parent
commit
90907c8ff9

+ 11 - 4
Source/cmCoreTryCompile.cxx

@@ -206,6 +206,8 @@ auto const TryRunSourcesArgParser =
 auto const TryRunOldArgParser = makeTryRunParser(TryCompileOldArgParser);
 
 #undef BIND_LANG_PROPS
+
+std::string const TryCompileDefaultConfig = "DEBUG";
 }
 
 Arguments cmCoreTryCompile::ParseArgs(
@@ -706,9 +708,9 @@ bool cmCoreTryCompile::TryCompileCode(Arguments& arguments,
         CM_FALLTHROUGH;
       case cmPolicies::NEW: {
         // NEW behavior is to pass config-specific compiler flags.
-        static std::string const cfgDefault = "DEBUG";
-        std::string const cfg =
-          !tcConfig.empty() ? cmSystemTools::UpperCase(tcConfig) : cfgDefault;
+        std::string const cfg = !tcConfig.empty()
+          ? cmSystemTools::UpperCase(tcConfig)
+          : TryCompileDefaultConfig;
         for (std::string const& li : testLangs) {
           std::string const langFlagsCfg =
             cmStrCat("CMAKE_", li, "_FLAGS_", cfg);
@@ -1199,7 +1201,12 @@ void cmCoreTryCompile::FindOutputFile(const std::string& targetName)
   tmpOutputFile += targetName;
 
   if (this->Makefile->GetGlobalGenerator()->IsMultiConfig()) {
-    tmpOutputFile += "_DEBUG";
+    std::string const tcConfig =
+      this->Makefile->GetSafeDefinition("CMAKE_TRY_COMPILE_CONFIGURATION");
+    std::string const cfg = !tcConfig.empty()
+      ? cmSystemTools::UpperCase(tcConfig)
+      : TryCompileDefaultConfig;
+    tmpOutputFile = cmStrCat(tmpOutputFile, '_', cfg);
   }
   tmpOutputFile += "_loc";
 

+ 8 - 0
Tests/RunCMake/try_compile/CopyFileConfig.cmake

@@ -0,0 +1,8 @@
+enable_language(C)
+set(CMAKE_TRY_COMPILE_CONFIGURATION Release)
+
+include(${CMAKE_CURRENT_SOURCE_DIR}/${try_compile_DEFS})
+try_compile(RESULT
+  ${try_compile_bindir_or_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/src.c
+  COPY_FILE "${CMAKE_CURRENT_BINARY_DIR}/out.bin"
+  )

+ 1 - 0
Tests/RunCMake/try_compile/old_and_new_signature_tests.cmake

@@ -23,6 +23,7 @@ run_cmake(TryRunArgs)
 run_cmake(BuildType)
 run_cmake(BuildTypeAsFlag)
 run_cmake(OutputDirAsFlag)
+run_cmake(CopyFileConfig)
 
 run_cmake(EnvConfig)