diff options
author | Ken Martin <ken.martin@kitware.com> | 2004-09-07 13:17:15 (GMT) |
---|---|---|
committer | Ken Martin <ken.martin@kitware.com> | 2004-09-07 13:17:15 (GMT) |
commit | 05d985c08277350c3a1ca5ea6023ac397cf9bf1b (patch) | |
tree | 3de2553519af7ff8543538831f2f7017cd44efe7 /Source/CTest/cmCTestConfigureHandler.cxx | |
parent | 9d6ea59a69542b008d296bc4ce42d975f4020d53 (diff) | |
download | CMake-05d985c08277350c3a1ca5ea6023ac397cf9bf1b.zip CMake-05d985c08277350c3a1ca5ea6023ac397cf9bf1b.tar.gz CMake-05d985c08277350c3a1ca5ea6023ac397cf9bf1b.tar.bz2 |
some bug fixes for my recent checkins and some more cleanup
Diffstat (limited to 'Source/CTest/cmCTestConfigureHandler.cxx')
-rw-r--r-- | Source/CTest/cmCTestConfigureHandler.cxx | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/Source/CTest/cmCTestConfigureHandler.cxx b/Source/CTest/cmCTestConfigureHandler.cxx new file mode 100644 index 0000000..65950a7 --- /dev/null +++ b/Source/CTest/cmCTestConfigureHandler.cxx @@ -0,0 +1,114 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile$ + Language: C++ + Date: $Date$ + Version: $Revision$ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ + +#include "cmCTestConfigureHandler.h" + +#include "cmCTest.h" +#include "cmake.h" +#include <cmsys/Process.h> + + +//---------------------------------------------------------------------- +cmCTestConfigureHandler::cmCTestConfigureHandler() +{ + m_Verbose = false; + m_CTest = 0; +} + + +//---------------------------------------------------------------------- +//clearly it would be nice if this were broken up into a few smaller +//functions and commented... +int cmCTestConfigureHandler::ConfigureDirectory(cmCTest *ctest_inst) +{ + m_CTest = ctest_inst; + + std::cout << "Configure project" << std::endl; + std::string cCommand = m_CTest->GetDartConfiguration("ConfigureCommand"); + if ( cCommand.size() == 0 ) + { + std::cerr << "Cannot find ConfigureCommand key in the DartConfiguration.tcl" + << std::endl; + return 1; + } + + std::string buildDirectory = m_CTest->GetDartConfiguration("BuildDirectory"); + if ( buildDirectory.size() == 0 ) + { + std::cerr << "Cannot find BuildDirectory key in the DartConfiguration.tcl" << std::endl; + return 1; + } + + double elapsed_time_start = cmSystemTools::GetTime(); + std::string output; + int retVal = 0; + int res = 0; + if ( !m_CTest->GetShowOnly() ) + { + std::ofstream os; + if ( !m_CTest->OpenOutputFile(m_CTest->GetCurrentTag(), "Configure.xml", os) ) + { + std::cerr << "Cannot open configure file" << std::endl; + return 1; + } + std::string start_time = m_CTest->CurrentTime(); + + std::ofstream ofs; + m_CTest->OpenOutputFile("Temporary", "LastConfigure.log", ofs); + res = m_CTest->RunMakeCommand(cCommand.c_str(), &output, + &retVal, buildDirectory.c_str(), + m_Verbose, 0, ofs); + + if ( ofs ) + { + ofs.close(); + } + + if ( os ) + { + m_CTest->StartXML(os); + os << "<Configure>\n" + << "\t<StartDateTime>" << start_time << "</StartDateTime>" << std::endl; + if ( res == cmsysProcess_State_Exited && retVal ) + { + os << retVal; + } + os << "<ConfigureCommand>" << cCommand.c_str() << "</ConfigureCommand>" << std::endl; + //std::cout << "End" << std::endl; + os << "<Log>" << cmCTest::MakeXMLSafe(output) << "</Log>" << std::endl; + std::string end_time = m_CTest->CurrentTime(); + os << "\t<ConfigureStatus>" << retVal << "</ConfigureStatus>\n" + << "\t<EndDateTime>" << end_time << "</EndDateTime>\n" + << "<ElapsedMinutes>" + << static_cast<int>( + (cmSystemTools::GetTime() - elapsed_time_start)/6)/10.0 + << "</ElapsedMinutes>" + << "</Configure>" << std::endl; + m_CTest->EndXML(os); + } + } + else + { + std::cout << "Configure with command: " << cCommand << std::endl; + } + if (! res || retVal ) + { + std::cerr << "Error(s) when updating the project" << std::endl; + return 1; + } + return 0; +} |