BUG: allow system information to accept the -G option
This commit is contained in:
parent
b1aae98926
commit
56e3a35ece
|
@ -430,7 +430,51 @@ CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/Templates/CTestScript.cmake.in"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/CTestScript.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}/CTestScript.cmake"
|
||||||
@ONLY IMMEDIATE)
|
@ONLY IMMEDIATE)
|
||||||
|
|
||||||
|
# Testing
|
||||||
|
IF (NOT DART_ROOT)
|
||||||
|
SET(MAKEPROGRAM ${CMAKE_MAKE_PROGRAM})
|
||||||
|
ENDIF (NOT DART_ROOT)
|
||||||
|
|
||||||
|
IF(BUILD_TESTING)
|
||||||
|
SET(CMAKE_TEST_GENERATOR "" CACHE STRING "Generator used when running tests")
|
||||||
|
SET(CMAKE_TEST_MAKEPROGRAM "" CACHE FILEPATH "Generator used when running tests")
|
||||||
|
IF(NOT CMAKE_TEST_GENERATOR)
|
||||||
|
SET(CMAKE_TEST_GENERATOR "${CMAKE_GENERATOR}")
|
||||||
|
SET(CMAKE_TEST_MAKEPROGRAM "${MAKEPROGRAM}")
|
||||||
|
ELSE(NOT CMAKE_TEST_GENERATOR)
|
||||||
|
SET(CMAKE_TEST_DIFFERENT_GENERATOR TRUE)
|
||||||
|
ENDIF(NOT CMAKE_TEST_GENERATOR)
|
||||||
|
|
||||||
|
# Are we testing with the MSVC compiler?
|
||||||
|
SET(CMAKE_TEST_MSVC 0)
|
||||||
|
IF(MSVC AND NOT CMAKE_TEST_DIFFERENT_GENERATOR)
|
||||||
|
SET(CMAKE_TEST_MSVC 1)
|
||||||
|
ELSE(MSVC AND NOT CMAKE_TEST_DIFFERENT_GENERATOR)
|
||||||
|
IF("${CMAKE_TEST_GENERATOR}" MATCHES "NMake" OR
|
||||||
|
"${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio")
|
||||||
|
SET(CMAKE_TEST_MSVC 1)
|
||||||
|
ENDIF("${CMAKE_TEST_GENERATOR}" MATCHES "NMake" OR
|
||||||
|
"${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio")
|
||||||
|
ENDIF(MSVC AND NOT CMAKE_TEST_DIFFERENT_GENERATOR)
|
||||||
|
|
||||||
|
SET(CMAKE_TEST_SYSTEM_LIBRARIES 0)
|
||||||
|
FOREACH(util CURL EXPAT XMLRPC ZLIB)
|
||||||
|
IF(CMAKE_USE_SYSTEM_${util})
|
||||||
|
SET(CMAKE_TEST_SYSTEM_LIBRARIES 1)
|
||||||
|
ENDIF(CMAKE_USE_SYSTEM_${util})
|
||||||
|
ENDFOREACH(util)
|
||||||
|
|
||||||
|
# This variable is set by cmake, however to
|
||||||
|
# test cmake we want to make sure that
|
||||||
|
# the ctest from this cmake is used for testing
|
||||||
|
# and not the ctest from the cmake building and testing
|
||||||
|
# cmake.
|
||||||
|
SET(CMAKE_CTEST_COMMAND "${EXECUTABLE_OUTPUT_PATH}/ctest")
|
||||||
|
SET(CMAKE_CMAKE_COMMAND "${EXECUTABLE_OUTPUT_PATH}/cmake")
|
||||||
|
ENDIF(BUILD_TESTING)
|
||||||
|
|
||||||
ADD_TEST(SystemInformationNew
|
ADD_TEST(SystemInformationNew
|
||||||
"${EXECUTABLE_OUTPUT_PATH}/cmake" --system-information
|
"${CMAKE_CMAKE_COMMAND}" --system-information
|
||||||
|
-G "${CMAKE_TEST_GENERATOR}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -353,47 +353,7 @@ IF(BUILD_WXDialog)
|
||||||
ENDIF(BUILD_WXDialog)
|
ENDIF(BUILD_WXDialog)
|
||||||
|
|
||||||
# Testing
|
# Testing
|
||||||
IF (NOT DART_ROOT)
|
|
||||||
SET(MAKEPROGRAM ${CMAKE_MAKE_PROGRAM})
|
|
||||||
ENDIF (NOT DART_ROOT)
|
|
||||||
|
|
||||||
IF(BUILD_TESTING)
|
IF(BUILD_TESTING)
|
||||||
SET(CMAKE_TEST_GENERATOR "" CACHE STRING "Generator used when running tests")
|
|
||||||
SET(CMAKE_TEST_MAKEPROGRAM "" CACHE FILEPATH "Generator used when running tests")
|
|
||||||
IF(NOT CMAKE_TEST_GENERATOR)
|
|
||||||
SET(CMAKE_TEST_GENERATOR "${CMAKE_GENERATOR}")
|
|
||||||
SET(CMAKE_TEST_MAKEPROGRAM "${MAKEPROGRAM}")
|
|
||||||
ELSE(NOT CMAKE_TEST_GENERATOR)
|
|
||||||
SET(CMAKE_TEST_DIFFERENT_GENERATOR TRUE)
|
|
||||||
ENDIF(NOT CMAKE_TEST_GENERATOR)
|
|
||||||
|
|
||||||
# Are we testing with the MSVC compiler?
|
|
||||||
SET(CMAKE_TEST_MSVC 0)
|
|
||||||
IF(MSVC AND NOT CMAKE_TEST_DIFFERENT_GENERATOR)
|
|
||||||
SET(CMAKE_TEST_MSVC 1)
|
|
||||||
ELSE(MSVC AND NOT CMAKE_TEST_DIFFERENT_GENERATOR)
|
|
||||||
IF("${CMAKE_TEST_GENERATOR}" MATCHES "NMake" OR
|
|
||||||
"${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio")
|
|
||||||
SET(CMAKE_TEST_MSVC 1)
|
|
||||||
ENDIF("${CMAKE_TEST_GENERATOR}" MATCHES "NMake" OR
|
|
||||||
"${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio")
|
|
||||||
ENDIF(MSVC AND NOT CMAKE_TEST_DIFFERENT_GENERATOR)
|
|
||||||
|
|
||||||
SET(CMAKE_TEST_SYSTEM_LIBRARIES 0)
|
|
||||||
FOREACH(util CURL EXPAT XMLRPC ZLIB)
|
|
||||||
IF(CMAKE_USE_SYSTEM_${util})
|
|
||||||
SET(CMAKE_TEST_SYSTEM_LIBRARIES 1)
|
|
||||||
ENDIF(CMAKE_USE_SYSTEM_${util})
|
|
||||||
ENDFOREACH(util)
|
|
||||||
|
|
||||||
# This variable is set by cmake, however to
|
|
||||||
# test cmake we want to make sure that
|
|
||||||
# the ctest from this cmake is used for testing
|
|
||||||
# and not the ctest from the cmake building and testing
|
|
||||||
# cmake.
|
|
||||||
SET(CMAKE_CTEST_COMMAND "${EXECUTABLE_OUTPUT_PATH}/ctest")
|
|
||||||
SET(CMAKE_CMAKE_COMMAND "${EXECUTABLE_OUTPUT_PATH}/cmake")
|
|
||||||
|
|
||||||
# Should the long tests be run?
|
# Should the long tests be run?
|
||||||
OPTION(CMAKE_RUN_LONG_TESTS "Should the long tests be run (such as Bootstrap)." ON)
|
OPTION(CMAKE_RUN_LONG_TESTS "Should the long tests be run (such as Bootstrap)." ON)
|
||||||
MARK_AS_ADVANCED(CMAKE_RUN_LONG_TESTS)
|
MARK_AS_ADVANCED(CMAKE_RUN_LONG_TESTS)
|
||||||
|
|
|
@ -2915,10 +2915,8 @@ bool cmake::GetPropertyAsBool(const char* prop)
|
||||||
|
|
||||||
int cmake::GetSystemInformation(std::vector<std::string>& args)
|
int cmake::GetSystemInformation(std::vector<std::string>& args)
|
||||||
{
|
{
|
||||||
// we must create a temporary directory, copy some files to it
|
|
||||||
// run cmake on it, and then collect the results.
|
|
||||||
|
|
||||||
// so create the directory
|
// so create the directory
|
||||||
|
std::string resultFile;
|
||||||
std::string cwd = cmSystemTools::GetCurrentWorkingDirectory();
|
std::string cwd = cmSystemTools::GetCurrentWorkingDirectory();
|
||||||
std::string destPath = cwd + "/__cmake_systeminformation";
|
std::string destPath = cwd + "/__cmake_systeminformation";
|
||||||
cmSystemTools::RemoveADirectory(destPath.c_str());
|
cmSystemTools::RemoveADirectory(destPath.c_str());
|
||||||
|
@ -2928,7 +2926,53 @@ int cmake::GetSystemInformation(std::vector<std::string>& args)
|
||||||
"writable directory!\n";
|
"writable directory!\n";
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// process the arguments
|
||||||
|
for(unsigned int i=1; i < args.size(); ++i)
|
||||||
|
{
|
||||||
|
std::string arg = args[i];
|
||||||
|
if(arg.find("-V",0) == 0)
|
||||||
|
{
|
||||||
|
this->Verbose = true;
|
||||||
|
}
|
||||||
|
else if(arg.find("-G",0) == 0)
|
||||||
|
{
|
||||||
|
std::string value = arg.substr(2);
|
||||||
|
if(value.size() == 0)
|
||||||
|
{
|
||||||
|
++i;
|
||||||
|
if(i >= args.size())
|
||||||
|
{
|
||||||
|
cmSystemTools::Error("No generator specified for -G");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
value = args[i];
|
||||||
|
}
|
||||||
|
cmGlobalGenerator* gen =
|
||||||
|
this->CreateGlobalGenerator(value.c_str());
|
||||||
|
if(!gen)
|
||||||
|
{
|
||||||
|
cmSystemTools::Error("Could not create named generator ",
|
||||||
|
value.c_str());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->SetGlobalGenerator(gen);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// no option assume it is the output file
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!cmSystemTools::FileIsFullPath(arg.c_str()))
|
||||||
|
{
|
||||||
|
resultFile += cwd;
|
||||||
|
resultFile += "/";
|
||||||
|
}
|
||||||
|
resultFile = arg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// we have to find the module directory, so we can copy the files
|
// we have to find the module directory, so we can copy the files
|
||||||
this->AddCMakePaths(args[0].c_str());
|
this->AddCMakePaths(args[0].c_str());
|
||||||
std::string modulesPath =
|
std::string modulesPath =
|
||||||
|
@ -2948,22 +2992,11 @@ int cmake::GetSystemInformation(std::vector<std::string>& args)
|
||||||
}
|
}
|
||||||
|
|
||||||
// do we write to a file or to stdout?
|
// do we write to a file or to stdout?
|
||||||
std::string resultFile;
|
if (resultFile.size() == 0)
|
||||||
|
|
||||||
if (args.size() == 1)
|
|
||||||
{
|
{
|
||||||
resultFile = cwd;
|
resultFile = cwd;
|
||||||
resultFile += "/__cmake_systeminformation/results.txt";
|
resultFile += "/__cmake_systeminformation/results.txt";
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!cmSystemTools::FileIsFullPath(args[1].c_str()))
|
|
||||||
{
|
|
||||||
resultFile += cwd;
|
|
||||||
resultFile += "/";
|
|
||||||
}
|
|
||||||
resultFile = args[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
// now run cmake on the CMakeLists file
|
// now run cmake on the CMakeLists file
|
||||||
cmSystemTools::ChangeDirectory(destPath.c_str());
|
cmSystemTools::ChangeDirectory(destPath.c_str());
|
||||||
|
|
Loading…
Reference in New Issue