summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2005-05-02 15:51:58 -0400
committerAndy Cedilnik <andy.cedilnik@kitware.com>2005-05-02 15:51:58 -0400
commiteb3857ce8381957aeb4d9f8dbee9ba0eb1f6549e (patch)
tree5998adb40a5d03b15d14c6a3e04899a30bad0dcc
parente4af567bd224ffcac53d81e6d8492ca415f30ea4 (diff)
downloadcmake-eb3857ce8381957aeb4d9f8dbee9ba0eb1f6549e.tar.gz
ENH: Make ctest build command work
-rw-r--r--CTestConfig.cmake1
-rw-r--r--Source/CTest/cmCTestBuildCommand.cxx39
-rw-r--r--Source/CTest/cmCTestScriptHandler.cxx1
3 files changed, 41 insertions, 0 deletions
diff --git a/CTestConfig.cmake b/CTestConfig.cmake
index 0623d67798..602e08bb11 100644
--- a/CTestConfig.cmake
+++ b/CTestConfig.cmake
@@ -1,3 +1,4 @@
+SET (CTEST_PROJECT_NAME "CMake")
SET (CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
SET (CTEST_DROP_SITE "public.kitware.com")
SET (CTEST_DROP_LOCATION "/cgi-bin/HTTPUploadDartFile.cgi")
diff --git a/Source/CTest/cmCTestBuildCommand.cxx b/Source/CTest/cmCTestBuildCommand.cxx
index e1c3d666ed..52c90e5e85 100644
--- a/Source/CTest/cmCTestBuildCommand.cxx
+++ b/Source/CTest/cmCTestBuildCommand.cxx
@@ -18,6 +18,8 @@
#include "cmCTest.h"
#include "cmCTestGenericHandler.h"
+#include "cmake.h"
+#include "cmGlobalGenerator.h"
bool cmCTestBuildCommand::InitialPass(
std::vector<std::string> const& args)
@@ -38,6 +40,43 @@ bool cmCTestBuildCommand::InitialPass(
this->SetError("internal CTest error. Cannot instantiate build handler");
return false;
}
+
+ const char* ctestBuildCommand = m_Makefile->GetDefinition("CTEST_BUILD_COMMAND");
+ if ( ctestBuildCommand && *ctestBuildCommand )
+ {
+ m_CTest->SetDartConfiguration("MakeCommand", ctestBuildCommand);
+ }
+ else
+ {
+ const char* cmakeGeneratorName = m_Makefile->GetDefinition("CTEST_CMAKE_GENERATOR");
+ const char* cmakeProjectName = m_Makefile->GetDefinition("CTEST_PROJECT_NAME");
+ const char* cmakeBuildConfiguration = m_Makefile->GetDefinition("CTEST_BUILD_CONFIGURATION");
+ if ( cmakeGeneratorName && *cmakeGeneratorName &&
+ cmakeProjectName && *cmakeProjectName )
+ {
+ if ( !cmakeBuildConfiguration )
+ {
+ cmakeBuildConfiguration = "Release";
+ }
+ cmGlobalGenerator* gen =
+ m_Makefile->GetCMakeInstance()->CreateGlobalGenerator(cmakeGeneratorName);
+ gen->FindMakeProgram(m_Makefile);
+ const char* cmakeMakeProgram = m_Makefile->GetDefinition("CMAKE_MAKE_PROGRAM");
+ std::cout << "CMake Make program is: " << cmakeMakeProgram << std::endl;
+ std::string buildCommand = gen->GenerateBuildCommand(cmakeMakeProgram, cmakeProjectName,
+ 0, cmakeBuildConfiguration, true);
+
+ m_CTest->SetDartConfiguration("MakeCommand", buildCommand.c_str());
+ }
+ else
+ {
+ cmOStringStream ostr;
+ ostr << "CTEST_BUILD_COMMAND or CTEST_CMAKE_GENERATOR not specified. Please specify the CTEST_CMAKE_GENERATOR if this is a CMake project, or specify the CTEST_BUILD_COMMAND for cmake or any other project.";
+ this->SetError(ostr.str().c_str());
+ return false;
+ }
+ }
+
int res = handler->ProcessHandler();
cmOStringStream str;
str << res;
diff --git a/Source/CTest/cmCTestScriptHandler.cxx b/Source/CTest/cmCTestScriptHandler.cxx
index 22e1146d4f..37034184f6 100644
--- a/Source/CTest/cmCTestScriptHandler.cxx
+++ b/Source/CTest/cmCTestScriptHandler.cxx
@@ -202,6 +202,7 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg)
delete m_LocalGenerator;
}
m_CMake = new cmake;
+ m_CMake->AddCMakePaths(m_CTest->GetCTestExecutable());
m_GlobalGenerator = new cmGlobalGenerator;
m_GlobalGenerator->SetCMakeInstance(m_CMake);