diff options
Diffstat (limited to 'Source/cmTryRunCommand.cxx')
-rw-r--r-- | Source/cmTryRunCommand.cxx | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/Source/cmTryRunCommand.cxx b/Source/cmTryRunCommand.cxx index 47f1d26..a5d5599 100644 --- a/Source/cmTryRunCommand.cxx +++ b/Source/cmTryRunCommand.cxx @@ -61,7 +61,7 @@ bool cmTryRunCommand::InitialPass(std::vector<std::string> const& argv) if ( argv.size() <= (i+1) ) { cmSystemTools::Error( - "OUTPUT_VARIABLE specified but there is no variable"); + "OUTPUT_VARIABLE specified but there is no variable"); return false; } outputVariable = argv[i+1]; @@ -75,7 +75,7 @@ bool cmTryRunCommand::InitialPass(std::vector<std::string> const& argv) std::string binaryDirectory = argv[2] + "/CMakeTmp"; if (!res) { - int retVal; + int retVal = -1; std::string output; std::string command; command = binaryDirectory; @@ -110,25 +110,34 @@ bool cmTryRunCommand::InitialPass(std::vector<std::string> const& argv) finalCommand += runArgs; } int timeout = 0; - cmSystemTools::RunSingleCommand(finalCommand.c_str(), &output, &retVal, - 0, false, timeout); + bool worked = cmSystemTools::RunSingleCommand(finalCommand.c_str(), + &output, &retVal, + 0, false, timeout); if(outputVariable.size()) { // if the TryCompileCore saved output in this outputVariable then // prepend that output to this output - const char* compileOutput = m_Makefile->GetDefinition(outputVariable.c_str()); + const char* compileOutput + = m_Makefile->GetDefinition(outputVariable.c_str()); if(compileOutput) { output = std::string(compileOutput) + output; } m_Makefile->AddDefinition(outputVariable.c_str(), output.c_str()); } - // set the run var char retChar[1000]; - sprintf(retChar,"%i",retVal); + if(worked) + { + sprintf(retChar,"%i",retVal); + } + else + { + strcpy(retChar, "FAILED_TO_RUN"); + } m_Makefile->AddCacheDefinition(argv[0].c_str(), retChar, - "Result of TRY_RUN", cmCacheManager::INTERNAL); + "Result of TRY_RUN", + cmCacheManager::INTERNAL); } } |