[Cmake-commits] CMake branch, next, updated. v2.8.12-4682-ge8aaf2f

Brad King brad.king at kitware.com
Thu Oct 31 09:31:34 EDT 2013


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  e8aaf2fb9b97849db8cf7807a8137d5849aad3c8 (commit)
       via  4fcb97eaac5de1cdd4adc86ac757ce68b37c9858 (commit)
       via  05c70424f6fb3aac890f50aec067b60e997113b1 (commit)
      from  248e6e7629c5aed81e98302bb3acaf6e95e22bd3 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e8aaf2fb9b97849db8cf7807a8137d5849aad3c8
commit e8aaf2fb9b97849db8cf7807a8137d5849aad3c8
Merge: 248e6e7 4fcb97e
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu Oct 31 09:31:30 2013 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Thu Oct 31 09:31:30 2013 -0400

    Merge topic 'fix-ninja-launcher-errors-from-custom' into next
    
    4fcb97e Tests: Add test for CTEST_USE_LAUNCHERS capture of custom commands
    05c7042 Ninja: run custom commands through launcher if available


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4fcb97eaac5de1cdd4adc86ac757ce68b37c9858
commit 4fcb97eaac5de1cdd4adc86ac757ce68b37c9858
Author:     Nils Gladitz <nilsgladitz at gmail.com>
AuthorDate: Tue Oct 29 22:29:27 2013 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Oct 31 09:29:55 2013 -0400

    Tests: Add test for CTEST_USE_LAUNCHERS capture of custom commands
    
    This new test detects if custom command failures are detected with
    launchers.

diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 4b08c88..7c939ed 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -2344,6 +2344,17 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/
       --output-log "${CMake_BINARY_DIR}/Tests/CTestTest2/testOutput.log"
       )
 
+    if("${CMAKE_TEST_GENERATOR}" MATCHES "Makefiles" OR "${CMAKE_TEST_GENERATOR}" MATCHES "Ninja")
+      configure_file("${CMake_SOURCE_DIR}/Tests/CTestTestLaunchers/test.cmake.in"
+        "${CMake_BINARY_DIR}/Tests/CTestTestLaunchers/test.cmake" @ONLY ESCAPE_QUOTES)
+      add_test(CTestTestLaunchers ${CMAKE_CTEST_COMMAND}
+        -S "${CMake_BINARY_DIR}/Tests/CTestTestLaunchers/test.cmake" -V
+        --output-log "${CMake_BINARY_DIR}/Tests/CTestTestLaunchers/testOutput.log"
+        )
+      set_tests_properties(CTestTestLaunchers PROPERTIES
+        PASS_REGULAR_EXPRESSION "CTEST_TEST_LAUNCHER_SUCCESS")
+    endif()
+
     configure_file("${CMake_SOURCE_DIR}/Tests/CTestTestChecksum/test.cmake.in"
       "${CMake_BINARY_DIR}/Tests/CTestTestChecksum/test.cmake" @ONLY
       ESCAPE_QUOTES)
diff --git a/Tests/CTestTestLaunchers/launcher_test_project/CMakeLists.txt b/Tests/CTestTestLaunchers/launcher_test_project/CMakeLists.txt
new file mode 100644
index 0000000..06c5725
--- /dev/null
+++ b/Tests/CTestTestLaunchers/launcher_test_project/CMakeLists.txt
@@ -0,0 +1,19 @@
+cmake_minimum_required(VERSION 2.8.12)
+
+project(launcher_test_project)
+
+include(CTest)
+
+add_custom_command(
+  OUTPUT test1.txt
+  COMMAND ${CMAKE_COMMAND}
+  ARGS -DTESTID=1 -P "${CMAKE_CURRENT_SOURCE_DIR}/command.cmake"
+)
+
+add_custom_command(
+  OUTPUT test2.txt
+  COMMAND ${CMAKE_COMMAND}
+  ARGS -DTESTID=2 -P "${CMAKE_CURRENT_SOURCE_DIR}/command.cmake"
+)
+
+add_custom_target(mytarget ALL DEPENDS test1.txt test2.txt)
diff --git a/Tests/CTestTestLaunchers/launcher_test_project/CTestConfig.cmake b/Tests/CTestTestLaunchers/launcher_test_project/CTestConfig.cmake
new file mode 100644
index 0000000..bf404ab
--- /dev/null
+++ b/Tests/CTestTestLaunchers/launcher_test_project/CTestConfig.cmake
@@ -0,0 +1,8 @@
+set(CTEST_USE_LAUNCHERS 1)
+set(CTEST_PROJECT_NAME "CTestTestLaunchers")
+set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
+set(CTEST_DART_SERVER_VERSION "2")
+set(CTEST_DROP_METHOD "http")
+set(CTEST_DROP_SITE "www.cdash.org")
+set(CTEST_DROP_LOCATION "/CDash/submit.php?project=PublicDashboard")
+set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/Tests/CTestTestLaunchers/launcher_test_project/command.cmake b/Tests/CTestTestLaunchers/launcher_test_project/command.cmake
new file mode 100644
index 0000000..7f31af9
--- /dev/null
+++ b/Tests/CTestTestLaunchers/launcher_test_project/command.cmake
@@ -0,0 +1,5 @@
+if("${TESTID}" STREQUAL "1")
+  message("success")
+elseif("${TESTID}" STREQUAL "2")
+  message(FATAL_ERROR "failure")
+endif()
diff --git a/Tests/CTestTestLaunchers/test.cmake.in b/Tests/CTestTestLaunchers/test.cmake.in
new file mode 100644
index 0000000..43a6533
--- /dev/null
+++ b/Tests/CTestTestLaunchers/test.cmake.in
@@ -0,0 +1,39 @@
+cmake_minimum_required(VERSION 2.8.12)
+
+# Settings:
+set(CTEST_DASHBOARD_SOURCE              "@CMake_SOURCE_DIR@/Tests/CTestTestLaunchers")
+set(CTEST_DASHBOARD_ROOT                "@CMake_BINARY_DIR@/Tests/CTestTestLaunchers")
+set(CTEST_SITE                          "@SITE@")
+set(CTEST_BUILD_NAME                    "Launchers- at BUILDNAME@-CTestTestLaunchers")
+
+set(CTEST_SOURCE_DIRECTORY              "${CTEST_DASHBOARD_SOURCE}/launcher_test_project")
+set(CTEST_BINARY_DIRECTORY              "${CTEST_DASHBOARD_ROOT}/launcher_test_project-bin")
+set(CTEST_CMAKE_GENERATOR               "@CMAKE_GENERATOR@")
+set(CTEST_CMAKE_GENERATOR_TOOLSET       "@CMAKE_GENERATOR_TOOLSET@")
+set(CTEST_BUILD_CONFIGURATION           "$ENV{CMAKE_CONFIG_TYPE}")
+set(CTEST_NOTES_FILES                   "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}")
+
+ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})
+
+file(WRITE "${CTEST_BINARY_DIRECTORY}/CMakeCache.txt" "
+CMAKE_CXX_FLAGS:STRING=@CMAKE_CXX_FLAGS@
+CMAKE_C_FLAGS:STRING=@CMAKE_C_FLAGS@
+CMAKE_C_COMPILER:STRING=@CMAKE_C_COMPILER@
+CMAKE_CXX_COMPILER:STRING=@CMAKE_CXX_COMPILER@
+CMAKE_C_COMPILER_ARG1:STRING=@CMAKE_C_COMPILER_ARG1@
+CMAKE_CXX_COMPILER_ARG1:STRING=@CMAKE_CXX_COMPILER_ARG1@
+")
+
+set(TEST_SUCCESS FALSE)
+
+ctest_start(Experimental)
+ctest_configure(OPTIONS "-DCTEST_USE_LAUNCHERS=1")
+ctest_build(NUMBER_ERRORS error_count)
+
+if("${error_count}" STREQUAL "1")
+  set(TEST_SUCCESS TRUE)
+endif()
+
+if(TEST_SUCCESS)
+  message("CTEST_TEST_LAUNCHER_SUCCESS")
+endif()

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=05c70424f6fb3aac890f50aec067b60e997113b1
commit 05c70424f6fb3aac890f50aec067b60e997113b1
Author:     Nils Gladitz <nilsgladitz at gmail.com>
AuthorDate: Tue Oct 29 22:56:23 2013 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Oct 31 09:28:55 2013 -0400

    Ninja: run custom commands through launcher if available

diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx
index d95a213..f1d5e2c 100644
--- a/Source/cmLocalNinjaGenerator.cxx
+++ b/Source/cmLocalNinjaGenerator.cxx
@@ -318,9 +318,13 @@ void cmLocalNinjaGenerator::AppendCustomCommandLines(const cmCustomCommand *cc,
     cdCmd << cdStr << this->ConvertToOutputFormat(wd, SHELL);
     cmdLines.push_back(cdCmd.str());
   }
+
+  std::string launcher = this->MakeCustomLauncher(*cc);
+
   for (unsigned i = 0; i != ccg.GetNumberOfCommands(); ++i) {
-    cmdLines.push_back(this->ConvertToOutputFormat(ccg.GetCommand(i).c_str(),
-                                                   SHELL));
+    cmdLines.push_back(launcher +
+      this->ConvertToOutputFormat(ccg.GetCommand(i).c_str(), SHELL));
+
     std::string& cmd = cmdLines.back();
     ccg.AppendArguments(i, cmd);
   }
@@ -407,3 +411,39 @@ void cmLocalNinjaGenerator::WriteCustomCommandBuildStatements()
     this->WriteCustomCommandBuildStatement(i->first, ccTargetDeps);
   }
 }
+
+std::string cmLocalNinjaGenerator::MakeCustomLauncher(
+  const cmCustomCommand& cc)
+{
+  const char* property = "RULE_LAUNCH_CUSTOM";
+  const char* property_value = this->Makefile->GetProperty(property);
+
+  if(!property_value || !*property_value)
+  {
+    return std::string();
+  }
+
+  // Expand rules in the empty string.  It may insert the launcher and
+  // perform replacements.
+  RuleVariables vars;
+  vars.RuleLauncher = property;
+  std::string output;
+  const std::vector<std::string>& outputs = cc.GetOutputs();
+  if(!outputs.empty())
+  {
+    RelativeRoot relative_root =
+      cc.GetWorkingDirectory() ? NONE : START_OUTPUT;
+
+    output = this->Convert(outputs[0].c_str(), relative_root, SHELL);
+  }
+  vars.Output = output.c_str();
+
+  std::string launcher;
+  this->ExpandRuleVariables(launcher, vars);
+  if(!launcher.empty())
+  {
+    launcher += " ";
+  }
+
+  return launcher;
+}
diff --git a/Source/cmLocalNinjaGenerator.h b/Source/cmLocalNinjaGenerator.h
index c450841..8eb63c5 100644
--- a/Source/cmLocalNinjaGenerator.h
+++ b/Source/cmLocalNinjaGenerator.h
@@ -121,6 +121,7 @@ private:
 
   void WriteCustomCommandBuildStatements();
 
+  std::string MakeCustomLauncher(const cmCustomCommand& cc);
 
   std::string ConfigName;
   std::string HomeRelativeOutputPath;

-----------------------------------------------------------------------

Summary of changes:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list