diff options
-rw-r--r-- | Help/manual/cmake.1.rst | 6 | ||||
-rw-r--r-- | Help/release/dev/cmake-e-true-false.rst | 5 | ||||
-rw-r--r-- | Source/cmcmd.cxx | 12 | ||||
-rw-r--r-- | Tests/RunCMake/CommandLine/E_false-extraargs-result.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/CommandLine/E_false-result.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/CommandLine/RunCMakeTest.cmake | 4 |
6 files changed, 29 insertions, 0 deletions
diff --git a/Help/manual/cmake.1.rst b/Help/manual/cmake.1.rst index 7b5399d..68d88e7 100644 --- a/Help/manual/cmake.1.rst +++ b/Help/manual/cmake.1.rst @@ -604,6 +604,12 @@ Available commands are: .. note:: Path to where ``<new>`` symbolic link will be created has to exist beforehand. +``true`` + Do nothing, with an exit code of 0. + +``false`` + Do nothing, with an exit code of 1. + Windows-specific Command-Line Tools ----------------------------------- diff --git a/Help/release/dev/cmake-e-true-false.rst b/Help/release/dev/cmake-e-true-false.rst new file mode 100644 index 0000000..173fabd --- /dev/null +++ b/Help/release/dev/cmake-e-true-false.rst @@ -0,0 +1,5 @@ +cmake-e-true-false +------------------ + +* :manual:`cmake(1)` ``-E`` now supports ``true`` and ``false`` commands, which + do nothing while returning exit codes of 0 and 1, respectively. diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index effc094..503dce1 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -114,6 +114,8 @@ void CMakeCommandUsage(const char* program) << " touch <file>... - touch a <file>.\n" << " touch_nocreate <file>... - touch a <file> but do not create it.\n" << " create_symlink old new - create a symbolic link new -> old\n" + << " true - do nothing with an exit code of 0\n" + << " false - do nothing with an exit code of 1\n" #if defined(_WIN32) && !defined(__CYGWIN__) << "Available on Windows only:\n" << " delete_regv key - delete registry value\n" @@ -891,6 +893,16 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string> const& args) return 0; } + // Command to do nothing with an exit code of 0. + if (args[1] == "true") { + return 0; + } + + // Command to do nothing with an exit code of 1. + if (args[1] == "false") { + return 1; + } + // Internal CMake shared library support. if (args[1] == "cmake_symlink_library" && args.size() == 5) { return cmcmd::SymlinkLibrary(args); diff --git a/Tests/RunCMake/CommandLine/E_false-extraargs-result.txt b/Tests/RunCMake/CommandLine/E_false-extraargs-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CommandLine/E_false-extraargs-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/CommandLine/E_false-result.txt b/Tests/RunCMake/CommandLine/E_false-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CommandLine/E_false-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake index c9d3a4d..4e19871 100644 --- a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake @@ -26,6 +26,10 @@ run_cmake_command(E_echo_append ${CMAKE_COMMAND} -E echo_append) run_cmake_command(E_rename-no-arg ${CMAKE_COMMAND} -E rename) run_cmake_command(E_server-arg ${CMAKE_COMMAND} -E server --extra-arg) run_cmake_command(E_server-pipe ${CMAKE_COMMAND} -E server --pipe=) +run_cmake_command(E_true ${CMAKE_COMMAND} -E true) +run_cmake_command(E_true-extraargs ${CMAKE_COMMAND} -E true ignored) +run_cmake_command(E_false ${CMAKE_COMMAND} -E false) +run_cmake_command(E_false-extraargs ${CMAKE_COMMAND} -E false ignored) run_cmake_command(E_touch_nocreate-no-arg ${CMAKE_COMMAND} -E touch_nocreate) run_cmake_command(E_touch-nonexistent-dir ${CMAKE_COMMAND} -E touch "${RunCMake_BINARY_DIR}/touch-nonexistent-dir/foo") |