summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-01-16 16:49:35 (GMT)
committerBrad King <brad.king@kitware.com>2023-01-16 22:16:12 (GMT)
commitd4bf7d80c618930e6b88c35d271a5b0a0656bb7b (patch)
treefb9e5883e8fef2d96a3d1168946a9ad527658014
parent9d9e8450a872a4a9ec1a74cc7a73df100c32c7e8 (diff)
downloadCMake-d4bf7d80c618930e6b88c35d271a5b0a0656bb7b.zip
CMake-d4bf7d80c618930e6b88c35d271a5b0a0656bb7b.tar.gz
CMake-d4bf7d80c618930e6b88c35d271a5b0a0656bb7b.tar.bz2
try_compile: Add a NO_LOG option to skip recording in the configure log
-rw-r--r--Help/command/try_compile.rst9
-rw-r--r--Help/command/try_run.rst2
-rw-r--r--Help/release/dev/configure-log.rst4
-rw-r--r--Source/cmCoreTryCompile.cxx1
-rw-r--r--Source/cmCoreTryCompile.h1
-rw-r--r--Source/cmTryCompileCommand.cxx7
-rw-r--r--Source/cmTryRunCommand.cxx2
-rw-r--r--Tests/RunCMake/try_compile/ConfigureLog.cmake5
-rw-r--r--Tests/RunCMake/try_run/ConfigureLog.cmake5
9 files changed, 32 insertions, 4 deletions
diff --git a/Help/command/try_compile.rst b/Help/command/try_compile.rst
index 208be46..8f6a4eb 100644
--- a/Help/command/try_compile.rst
+++ b/Help/command/try_compile.rst
@@ -20,6 +20,7 @@ Try Compiling Whole Projects
[TARGET <targetName>]
[LOG_DESCRIPTION <text>]
[NO_CACHE]
+ [NO_LOG]
[CMAKE_FLAGS <flags>...]
[OUTPUT_VARIABLE <var>])
@@ -50,6 +51,7 @@ which was present in older versions of CMake:
<projectName> [<targetName>]
[LOG_DESCRIPTION <text>]
[NO_CACHE]
+ [NO_LOG]
[CMAKE_FLAGS <flags>...]
[OUTPUT_VARIABLE <var>])
@@ -67,6 +69,7 @@ Try Compiling Source Files
SOURCE_FROM_FILE <name> <path> >...
[LOG_DESCRIPTION <text>]
[NO_CACHE]
+ [NO_LOG]
[CMAKE_FLAGS <flags>...]
[COMPILE_DEFINITIONS <defs>...]
[LINK_OPTIONS <options>...]
@@ -120,6 +123,7 @@ which was present in older versions of CMake:
try_compile(<resultVar> <bindir> <srcfile|SOURCES srcfile...>
[LOG_DESCRIPTION <text>]
[NO_CACHE]
+ [NO_LOG]
[CMAKE_FLAGS <flags>...]
[COMPILE_DEFINITIONS <defs>...]
[LINK_OPTIONS <options>...]
@@ -201,6 +205,11 @@ The options are:
the test is part of a larger inspection), ``NO_CACHE`` may be useful to avoid
leaking the intermediate result variable into the cache.
+``NO_LOG``
+ .. versionadded:: 3.26
+
+ Do not record a :manual:`cmake-configure-log(7)` entry for this call.
+
``OUTPUT_VARIABLE <var>``
Store the output from the build process in the given variable.
diff --git a/Help/command/try_run.rst b/Help/command/try_run.rst
index ab4742e..ef8ec96 100644
--- a/Help/command/try_run.rst
+++ b/Help/command/try_run.rst
@@ -19,6 +19,7 @@ Try Compiling and Running Source Files
SOURCE_FROM_FILE <name> <path> >...
[LOG_DESCRIPTION <text>]
[NO_CACHE]
+ [NO_LOG]
[CMAKE_FLAGS <flags>...]
[COMPILE_DEFINITIONS <defs>...]
[LINK_OPTIONS <options>...]
@@ -58,6 +59,7 @@ which was present in older versions of CMake:
<bindir> <srcfile|SOURCES srcfile...>
[LOG_DESCRIPTION <text>]
[NO_CACHE]
+ [NO_LOG]
[CMAKE_FLAGS <flags>...]
[COMPILE_DEFINITIONS <defs>...]
[LINK_OPTIONS <options>...]
diff --git a/Help/release/dev/configure-log.rst b/Help/release/dev/configure-log.rst
index 298137b..f802a8c 100644
--- a/Help/release/dev/configure-log.rst
+++ b/Help/release/dev/configure-log.rst
@@ -10,3 +10,7 @@ Configure Log
* The :command:`try_compile` and :command:`try_run` commands gained
a ``LOG_DESCRIPTION`` option specifying text to be recorded in the
:manual:`cmake-configure-log(7)`.
+
+* The :command:`try_compile` and :command:`try_run` commands gained a
+ ``NO_LOG`` option to skip recording a :manual:`cmake-configure-log(7)`
+ entry.
diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx
index 29f6a98..2084b33 100644
--- a/Source/cmCoreTryCompile.cxx
+++ b/Source/cmCoreTryCompile.cxx
@@ -153,6 +153,7 @@ auto const TryCompileBaseArgParser =
.Bind(0, &Arguments::CompileResultVariable)
.Bind("LOG_DESCRIPTION"_s, &Arguments::LogDescription)
.Bind("NO_CACHE"_s, &Arguments::NoCache)
+ .Bind("NO_LOG"_s, &Arguments::NoLog)
.Bind("CMAKE_FLAGS"_s, &Arguments::CMakeFlags)
.Bind("__CMAKE_INTERNAL"_s, &Arguments::CMakeInternal)
/* keep semicolon on own line */;
diff --git a/Source/cmCoreTryCompile.h b/Source/cmCoreTryCompile.h
index efd58e5..1ec4405 100644
--- a/Source/cmCoreTryCompile.h
+++ b/Source/cmCoreTryCompile.h
@@ -75,6 +75,7 @@ public:
cm::optional<std::string> CopyFileError;
cm::optional<ArgumentParser::NonEmpty<std::string>> LogDescription;
bool NoCache = false;
+ bool NoLog = false;
// Argument for try_run only.
// Keep in sync with warnings in cmCoreTryCompile::ParseArgs.
diff --git a/Source/cmTryCompileCommand.cxx b/Source/cmTryCompileCommand.cxx
index c70c03e..ebbb4f2 100644
--- a/Source/cmTryCompileCommand.cxx
+++ b/Source/cmTryCompileCommand.cxx
@@ -81,14 +81,15 @@ bool cmTryCompileCommand(std::vector<std::string> const& args,
return true;
}
- if (cm::optional<cmTryCompileResult> compileResult =
- tc.TryCompileCode(arguments, targetType)) {
+ cm::optional<cmTryCompileResult> compileResult =
+ tc.TryCompileCode(arguments, targetType);
#ifndef CMAKE_BOOTSTRAP
+ if (compileResult && !arguments.NoLog) {
if (cmConfigureLog* log = mf.GetCMakeInstance()->GetConfigureLog()) {
WriteTryCompileEvent(*log, mf, *compileResult);
}
-#endif
}
+#endif
// if They specified clean then we clean up what we can
if (tc.SrcFileSignature) {
diff --git a/Source/cmTryRunCommand.cxx b/Source/cmTryRunCommand.cxx
index ef59c32..a8e8b48 100644
--- a/Source/cmTryRunCommand.cxx
+++ b/Source/cmTryRunCommand.cxx
@@ -246,7 +246,7 @@ bool TryRunCommandImpl::TryRunCode(std::vector<std::string> const& argv)
}
#ifndef CMAKE_BOOTSTRAP
- if (compileResult) {
+ if (compileResult && !arguments.NoLog) {
cmMakefile const& mf = *(this->Makefile);
if (cmConfigureLog* log = mf.GetCMakeInstance()->GetConfigureLog()) {
WriteTryRunEvent(*log, mf, *compileResult, runResult);
diff --git a/Tests/RunCMake/try_compile/ConfigureLog.cmake b/Tests/RunCMake/try_compile/ConfigureLog.cmake
index 4502d24..511ade9 100644
--- a/Tests/RunCMake/try_compile/ConfigureLog.cmake
+++ b/Tests/RunCMake/try_compile/ConfigureLog.cmake
@@ -7,5 +7,10 @@ try_compile(COMPILE_RESULT
try_compile(COMPILE_RESULT
SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/ConfigureLog-test.c
+ NO_LOG
+ )
+
+try_compile(COMPILE_RESULT
+ SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/ConfigureLog-test.c
LOG_DESCRIPTION "Source that should compile."
)
diff --git a/Tests/RunCMake/try_run/ConfigureLog.cmake b/Tests/RunCMake/try_run/ConfigureLog.cmake
index 8a4b8a7..e39310c 100644
--- a/Tests/RunCMake/try_run/ConfigureLog.cmake
+++ b/Tests/RunCMake/try_run/ConfigureLog.cmake
@@ -5,6 +5,11 @@ try_run(RUN_RESULT COMPILE_RESULT
try_run(RUN_RESULT COMPILE_RESULT
SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/ConfigureLog-test.c
+ NO_LOG
+ )
+
+try_run(RUN_RESULT COMPILE_RESULT
+ SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/ConfigureLog-test.c
LOG_DESCRIPTION "Source that should compile."
)