96afb12087
This converts the CMake license to a pure 3-clause OSI-approved BSD License. We drop the previous license clause requiring modified versions to be plainly marked. We also update the CMake copyright to cover the full development time range.
150 lines
4.7 KiB
C++
150 lines
4.7 KiB
C++
/*============================================================================
|
|
CMake - Cross Platform Makefile Generator
|
|
Copyright 2000-2009 Kitware, Inc.
|
|
|
|
Distributed under the OSI-approved BSD License (the "License");
|
|
see accompanying file Copyright.txt for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
See the License for more information.
|
|
============================================================================*/
|
|
|
|
#ifndef cmCTestBuildHandler_h
|
|
#define cmCTestBuildHandler_h
|
|
|
|
|
|
#include "cmCTestGenericHandler.h"
|
|
#include "cmListFileCache.h"
|
|
|
|
#include <cmsys/RegularExpression.hxx>
|
|
|
|
class cmMakefile;
|
|
|
|
/** \class cmCTestBuildHandler
|
|
* \brief A class that handles ctest -S invocations
|
|
*
|
|
*/
|
|
class cmCTestBuildHandler : public cmCTestGenericHandler
|
|
{
|
|
public:
|
|
cmTypeMacro(cmCTestBuildHandler, cmCTestGenericHandler);
|
|
|
|
/*
|
|
* The main entry point for this class
|
|
*/
|
|
int ProcessHandler();
|
|
|
|
cmCTestBuildHandler();
|
|
|
|
void PopulateCustomVectors(cmMakefile *mf);
|
|
|
|
/**
|
|
* Initialize handler
|
|
*/
|
|
virtual void Initialize();
|
|
|
|
int GetTotalErrors() { return this->TotalErrors;}
|
|
int GetTotalWarnings() { return this->TotalWarnings;}
|
|
private:
|
|
//! Run command specialized for make and configure. Returns process status
|
|
// and retVal is return value or exception.
|
|
int RunMakeCommand(const char* command,
|
|
int* retVal, const char* dir, int timeout,
|
|
std::ofstream& ofs);
|
|
|
|
enum {
|
|
b_REGULAR_LINE,
|
|
b_WARNING_LINE,
|
|
b_ERROR_LINE
|
|
};
|
|
|
|
class cmCTestCompileErrorWarningRex
|
|
{
|
|
public:
|
|
cmCTestCompileErrorWarningRex() {}
|
|
int FileIndex;
|
|
int LineIndex;
|
|
cmsys::RegularExpression RegularExpression;
|
|
};
|
|
|
|
struct cmCTestBuildErrorWarning
|
|
{
|
|
bool Error;
|
|
int LogLine;
|
|
std::string Text;
|
|
std::string SourceFile;
|
|
std::string SourceFileTail;
|
|
int LineNumber;
|
|
std::string PreContext;
|
|
std::string PostContext;
|
|
};
|
|
|
|
// generate the XML output
|
|
void GenerateXMLHeader(std::ostream& os);
|
|
void GenerateXMLLaunched(std::ostream& os);
|
|
void GenerateXMLLogScraped(std::ostream& os);
|
|
void GenerateXMLFooter(std::ostream& os, double elapsed_build_time);
|
|
void GenerateXMLLaunchedFragment(std::ostream& os, const char* fname);
|
|
bool IsLaunchedErrorFile(const char* fname);
|
|
bool IsLaunchedWarningFile(const char* fname);
|
|
|
|
std::string StartBuild;
|
|
std::string EndBuild;
|
|
double StartBuildTime;
|
|
double EndBuildTime;
|
|
|
|
std::vector<cmStdString> CustomErrorMatches;
|
|
std::vector<cmStdString> CustomErrorExceptions;
|
|
std::vector<cmStdString> CustomWarningMatches;
|
|
std::vector<cmStdString> CustomWarningExceptions;
|
|
std::vector<std::string> ReallyCustomWarningMatches;
|
|
std::vector<std::string> ReallyCustomWarningExceptions;
|
|
std::vector<cmCTestCompileErrorWarningRex> ErrorWarningFileLineRegex;
|
|
|
|
std::vector<cmsys::RegularExpression> ErrorMatchRegex;
|
|
std::vector<cmsys::RegularExpression> ErrorExceptionRegex;
|
|
std::vector<cmsys::RegularExpression> WarningMatchRegex;
|
|
std::vector<cmsys::RegularExpression> WarningExceptionRegex;
|
|
|
|
typedef std::deque<char> t_BuildProcessingQueueType;
|
|
|
|
void ProcessBuffer(const char* data, int length, size_t& tick,
|
|
size_t tick_len, std::ofstream& ofs, t_BuildProcessingQueueType* queue);
|
|
int ProcessSingleLine(const char* data);
|
|
|
|
t_BuildProcessingQueueType BuildProcessingQueue;
|
|
t_BuildProcessingQueueType BuildProcessingErrorQueue;
|
|
size_t BuildOutputLogSize;
|
|
std::vector<char> CurrentProcessingLine;
|
|
|
|
cmStdString SimplifySourceDir;
|
|
cmStdString SimplifyBuildDir;
|
|
size_t OutputLineCounter;
|
|
typedef std::vector<cmCTestBuildErrorWarning> t_ErrorsAndWarningsVector;
|
|
t_ErrorsAndWarningsVector ErrorsAndWarnings;
|
|
t_ErrorsAndWarningsVector::iterator LastErrorOrWarning;
|
|
size_t PostContextCount;
|
|
size_t MaxPreContext;
|
|
size_t MaxPostContext;
|
|
std::deque<cmStdString> PreContext;
|
|
|
|
int TotalErrors;
|
|
int TotalWarnings;
|
|
char LastTickChar;
|
|
|
|
bool ErrorQuotaReached;
|
|
bool WarningQuotaReached;
|
|
|
|
int MaxErrors;
|
|
int MaxWarnings;
|
|
|
|
bool UseCTestLaunch;
|
|
std::string CTestLaunchDir;
|
|
class LaunchHelper;
|
|
friend class LaunchHelper;
|
|
class FragmentCompare;
|
|
};
|
|
|
|
#endif
|