mirror of
https://github.com/reactos/CMake.git
synced 2024-11-29 14:30:27 +00:00
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.
103 lines
3.5 KiB
C++
103 lines
3.5 KiB
C++
/*============================================================================
|
|
CMake - Cross Platform Makefile Generator
|
|
Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
|
|
|
|
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 cmConfigureFileCommand_h
|
|
#define cmConfigureFileCommand_h
|
|
|
|
#include "cmCommand.h"
|
|
|
|
class cmConfigureFileCommand : public cmCommand
|
|
{
|
|
public:
|
|
cmTypeMacro(cmConfigureFileCommand, cmCommand);
|
|
|
|
virtual cmCommand* Clone()
|
|
{
|
|
return new cmConfigureFileCommand;
|
|
}
|
|
|
|
/**
|
|
* This is called when the command is first encountered in
|
|
* the input file.
|
|
*/
|
|
virtual bool InitialPass(std::vector<std::string> const& args,
|
|
cmExecutionStatus &status);
|
|
|
|
/**
|
|
* The name of the command as specified in CMakeList.txt.
|
|
*/
|
|
virtual const char* GetName() { return "configure_file";}
|
|
|
|
/**
|
|
* This determines if the command is invoked when in script mode.
|
|
*/
|
|
virtual bool IsScriptable() { return true; }
|
|
|
|
/**
|
|
* Succinct documentation.
|
|
*/
|
|
virtual const char* GetTerseDocumentation()
|
|
{
|
|
return "Copy a file to another location and modify its contents.";
|
|
}
|
|
|
|
/**
|
|
* Longer documentation.
|
|
*/
|
|
virtual const char* GetFullDocumentation()
|
|
{
|
|
return
|
|
" configure_file(<input> <output>\n"
|
|
" [COPYONLY] [ESCAPE_QUOTES] [@ONLY])\n"
|
|
"Copies a file <input> to file <output> and substitutes variable "
|
|
"values referenced in the file content. "
|
|
"If <input> is a relative path it is evaluated with respect to "
|
|
"the current source directory. "
|
|
"The <input> must be a file, not a directory. "
|
|
"If <output> is a relative path it is evaluated with respect to "
|
|
"the current binary directory. "
|
|
"If <output> names an existing directory the input file is placed "
|
|
"in that directory with its original name. "
|
|
"\n"
|
|
"This command replaces any variables in the input file referenced as "
|
|
"${VAR} or @VAR@ with their values as determined by CMake. If a "
|
|
"variable is not defined, it will be replaced with nothing. "
|
|
"If COPYONLY is specified, then no variable expansion will take "
|
|
"place. If ESCAPE_QUOTES is specified then any substituted quotes "
|
|
"will be C-style escaped. "
|
|
"The file will be configured with the current values of CMake "
|
|
"variables. If @ONLY is specified, only variables "
|
|
"of the form @VAR@ will be replaces and ${VAR} will be ignored. "
|
|
"This is useful for configuring scripts that use ${VAR}. "
|
|
"Any occurrences of #cmakedefine VAR will be replaced with "
|
|
"either #define VAR or /* #undef VAR */ depending on "
|
|
"the setting of VAR in CMake. Any occurrences of #cmakedefine01 VAR "
|
|
"will be replaced with either #define VAR 1 or #define VAR 0 "
|
|
"depending on whether VAR evaluates to TRUE or FALSE in CMake";
|
|
}
|
|
|
|
virtual void FinalPass();
|
|
virtual bool HasFinalPass() const { return !this->Immediate; }
|
|
private:
|
|
int ConfigureFile();
|
|
|
|
std::string InputFile;
|
|
std::string OutputFile;
|
|
bool CopyOnly;
|
|
bool EscapeQuotes;
|
|
bool Immediate;
|
|
bool AtOnly;
|
|
};
|
|
|
|
|
|
|
|
#endif
|