From 8d332091702f34fd1e6c1554f137ac6d85b15dc8 Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 5 Sep 2014 15:14:13 -0400 Subject: CTest: Add options to set generator platform The ctest_configure command already reads the CTEST_CMAKE_GENERATOR variable to get the value for the cmake -G option. Read new variable CTEST_CMAKE_GENERATOR_PLATFORM to pass on as CMAKE_GENERATOR_PLATFORM. The "ctest --build-and-test" mode already has "--build-generator" to specify the -G option to CMake. Add a "--build-generator-platform" option to specify a value to pass on as CMAKE_GENERATOR_PLATFORM. --- Help/manual/ctest.1.rst | 3 +++ Source/CTest/cmCTestBuildAndTestHandler.cxx | 13 +++++++++++++ Source/CTest/cmCTestBuildAndTestHandler.h | 1 + Source/CTest/cmCTestConfigureCommand.cxx | 9 +++++++++ Source/ctest.cxx | 1 + 5 files changed, 27 insertions(+) diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst index 52e4beb..a3210a9 100644 --- a/Help/manual/ctest.1.rst +++ b/Help/manual/ctest.1.rst @@ -258,6 +258,9 @@ Options ``--build-generator`` Specify the generator to use. +``--build-generator-platform`` + Specify the generator-specific platform. + ``--build-generator-toolset`` Specify the generator-specific toolset. diff --git a/Source/CTest/cmCTestBuildAndTestHandler.cxx b/Source/CTest/cmCTestBuildAndTestHandler.cxx index 627832c..ece4697 100644 --- a/Source/CTest/cmCTestBuildAndTestHandler.cxx +++ b/Source/CTest/cmCTestBuildAndTestHandler.cxx @@ -68,6 +68,12 @@ int cmCTestBuildAndTestHandler::RunCMake(std::string* outstring, generator += this->BuildGenerator; args.push_back(generator); } + if(!this->BuildGeneratorPlatform.empty()) + { + std::string platform = "-DCMAKE_GENERATOR_PLATFORM="; + platform += this->BuildGeneratorPlatform; + args.push_back(platform); + } if(this->BuildGeneratorToolset.size()) { std::string toolset = "-T"; @@ -246,6 +252,7 @@ int cmCTestBuildAndTestHandler::RunCMakeAndTest(std::string* outstring) // Make the generator available for the Build call below. cm.SetGlobalGenerator(cm.CreateGlobalGenerator( this->BuildGenerator)); + cm.SetGeneratorPlatform(this->BuildGeneratorPlatform); cm.SetGeneratorToolset(this->BuildGeneratorToolset); // Load the cache to make CMAKE_MAKE_PROGRAM available. @@ -490,6 +497,12 @@ int cmCTestBuildAndTestHandler::ProcessCommandLineArguments( idx++; this->BuildGenerator = allArgs[idx]; } + if(currentArg == "--build-generator-platform" && + idx < allArgs.size() - 1) + { + idx++; + this->BuildGeneratorPlatform = allArgs[idx]; + } if(currentArg == "--build-generator-toolset" && idx < allArgs.size() - 1) { diff --git a/Source/CTest/cmCTestBuildAndTestHandler.h b/Source/CTest/cmCTestBuildAndTestHandler.h index d1e9a4d..5a7b916 100644 --- a/Source/CTest/cmCTestBuildAndTestHandler.h +++ b/Source/CTest/cmCTestBuildAndTestHandler.h @@ -57,6 +57,7 @@ protected: std::string Output; std::string BuildGenerator; + std::string BuildGeneratorPlatform; std::string BuildGeneratorToolset; std::vector BuildOptions; bool BuildTwoConfig; diff --git a/Source/CTest/cmCTestConfigureCommand.cxx b/Source/CTest/cmCTestConfigureCommand.cxx index 1aa8768..8ab5037 100644 --- a/Source/CTest/cmCTestConfigureCommand.cxx +++ b/Source/CTest/cmCTestConfigureCommand.cxx @@ -118,6 +118,15 @@ cmCTestGenericHandler* cmCTestConfigureCommand::InitializeHandler() cmakeConfigureCommand += cmakeGeneratorName; cmakeConfigureCommand += "\""; + const char* cmakeGeneratorPlatform = + this->Makefile->GetDefinition("CTEST_CMAKE_GENERATOR_PLATFORM"); + if(cmakeGeneratorPlatform && *cmakeGeneratorPlatform) + { + cmakeConfigureCommand += " \"-DCMAKE_GENERATOR_PLATFORM="; + cmakeConfigureCommand += cmakeGeneratorPlatform; + cmakeConfigureCommand += "\""; + } + const char* cmakeGeneratorToolset = this->Makefile->GetDefinition("CTEST_CMAKE_GENERATOR_TOOLSET"); if(cmakeGeneratorToolset && *cmakeGeneratorToolset) diff --git a/Source/ctest.cxx b/Source/ctest.cxx index 2c72b4d..fb97af6 100644 --- a/Source/ctest.cxx +++ b/Source/ctest.cxx @@ -86,6 +86,7 @@ static const char * cmDocumentationOptions[][2] = {"--build-two-config", "Run CMake twice"}, {"--build-exe-dir", "Specify the directory for the executable."}, {"--build-generator", "Specify the generator to use."}, + {"--build-generator-platform", "Specify the generator-specific platform."}, {"--build-generator-toolset", "Specify the generator-specific toolset."}, {"--build-project", "Specify the name of the project to build."}, {"--build-makeprogram", "Specify the make program to use."}, -- cgit v0.12