summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-01-12 18:55:57 (GMT)
committerBrad King <brad.king@kitware.com>2023-01-12 18:55:57 (GMT)
commit5cd5c8cac5460f37dbdc27ad48cabc3282f2f5f8 (patch)
tree03097321152d1b2b60eb80c0c8c12c1471fbb614
parent0191e8b512d4a2d2bdb9f65ea9edebced9dee372 (diff)
parent2f85ec0a37d1ad75956dd81016a8c7ab90ff845b (diff)
downloadCMake-5cd5c8cac5460f37dbdc27ad48cabc3282f2f5f8.zip
CMake-5cd5c8cac5460f37dbdc27ad48cabc3282f2f5f8.tar.gz
CMake-5cd5c8cac5460f37dbdc27ad48cabc3282f2f5f8.tar.bz2
Merge branch 'backport-try_run-cross-compile' into try_run-cross-compile
-rw-r--r--Source/cmTryRunCommand.cxx14
-rw-r--r--Tests/RunCMake/try_run/CrossCompile.cmake8
-rw-r--r--Tests/RunCMake/try_run/old_and_new_signature_tests.cmake2
3 files changed, 18 insertions, 6 deletions
diff --git a/Source/cmTryRunCommand.cxx b/Source/cmTryRunCommand.cxx
index dcb52da..ef59c32 100644
--- a/Source/cmTryRunCommand.cxx
+++ b/Source/cmTryRunCommand.cxx
@@ -86,7 +86,7 @@ public:
std::string* runOutputStdOutContents,
std::string* runOutputStdErrContents);
void DoNotRunExecutable(const std::string& runArgs,
- const std::string& srcFile,
+ cm::optional<std::string> const& srcFile,
std::string const& compileResultVariable,
std::string* runOutputContents,
std::string* runOutputStdOutContents,
@@ -191,7 +191,7 @@ bool TryRunCommandImpl::TryRunCode(std::vector<std::string> const& argv)
bool const stdOutErrRequired = (arguments.RunOutputStdOutVariable ||
arguments.RunOutputStdErrVariable);
this->DoNotRunExecutable(
- runArgs, *arguments.SourceDirectoryOrFile,
+ runArgs, arguments.SourceDirectoryOrFile,
*arguments.CompileResultVariable,
captureRunOutput ? &runOutputContents : nullptr,
captureRunOutputStdOutErr ? &runOutputStdOutContents : nullptr,
@@ -315,7 +315,7 @@ void TryRunCommandImpl::RunExecutable(const std::string& runArgs,
the executable would have produced.
*/
void TryRunCommandImpl::DoNotRunExecutable(
- const std::string& runArgs, const std::string& srcFile,
+ const std::string& runArgs, cm::optional<std::string> const& srcFile,
std::string const& compileResultVariable, std::string* out,
std::string* stdOut, std::string* stdErr, bool stdOutErrRequired)
{
@@ -498,9 +498,11 @@ void TryRunCommandImpl::DoNotRunExecutable(
comment += "The ";
comment += compileResultVariable;
- comment += " variable holds the build result for this try_run().\n\n"
- "Source file : ";
- comment += srcFile + "\n";
+ comment += " variable holds the build result for this try_run().\n\n";
+ if (srcFile) {
+ comment += "Source file : ";
+ comment += *srcFile + "\n";
+ }
comment += "Executable : ";
comment += copyDest + "\n";
comment += "Run arguments : ";
diff --git a/Tests/RunCMake/try_run/CrossCompile.cmake b/Tests/RunCMake/try_run/CrossCompile.cmake
new file mode 100644
index 0000000..4993768
--- /dev/null
+++ b/Tests/RunCMake/try_run/CrossCompile.cmake
@@ -0,0 +1,8 @@
+include(${CMAKE_CURRENT_SOURCE_DIR}/${try_compile_DEFS})
+
+# Pretend we are cross-compiling to take that try_run code path.
+set(CMAKE_CROSSCOMPILING 1)
+set(RUN_RESULT 0)
+try_run(RUN_RESULT COMPILE_RESULT ${try_compile_bindir_or_SOURCES}
+ ${CMAKE_CURRENT_SOURCE_DIR}/src.c)
+unset(CMAKE_CROSSCOMPILING)
diff --git a/Tests/RunCMake/try_run/old_and_new_signature_tests.cmake b/Tests/RunCMake/try_run/old_and_new_signature_tests.cmake
index e1c1784..2b51eb2 100644
--- a/Tests/RunCMake/try_run/old_and_new_signature_tests.cmake
+++ b/Tests/RunCMake/try_run/old_and_new_signature_tests.cmake
@@ -11,6 +11,8 @@ run_cmake(BadLinkLibraries)
run_cmake(BinDirEmpty)
run_cmake(BinDirRelative)
+run_cmake(CrossCompile)
+
run_cmake(WorkingDirArg)
run_cmake(NoCompileOutputVariable)