mirror of
https://github.com/reactos/CMake.git
synced 2024-12-14 07:09:22 +00:00
86578eccf2
Per-source copyright/license notice headers that spell out copyright holder names and years are hard to maintain and often out-of-date or plain wrong. Precise contributor information is already maintained automatically by the version control tool. Ultimately it is the receiver of a file who is responsible for determining its licensing status, and per-source notices are merely a convenience. Therefore it is simpler and more accurate for each source to have a generic notice of the license name and references to more detailed information on copyright holders and full license terms. Our `Copyright.txt` file now contains a list of Contributors whose names appeared source-level copyright notices. It also references version control history for more precise information. Therefore we no longer need to spell out the list of Contributors in each source file notice. Replace CMake per-source copyright/license notice headers with a short description of the license and links to `Copyright.txt` and online information available from "https://cmake.org/licensing". The online URL also handles cases of modules being copied out of our source into other projects, so we can drop our notices about replacing links with full license text. Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority of the replacements mechanically. Manually fix up shebang lines and trailing newlines in a few files. Manually update the notices in a few files that the script does not handle.
109 lines
3.3 KiB
C++
109 lines
3.3 KiB
C++
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
file Copyright.txt or https://cmake.org/licensing for details. */
|
|
#ifndef cmCustomCommand_h
|
|
#define cmCustomCommand_h
|
|
|
|
#include <cmConfigure.h> // IWYU pragma: keep
|
|
|
|
#include "cmCustomCommandLines.h"
|
|
#include "cmListFileCache.h"
|
|
|
|
#include <string>
|
|
#include <utility>
|
|
#include <vector>
|
|
|
|
class cmMakefile;
|
|
|
|
/** \class cmCustomCommand
|
|
* \brief A class to encapsulate a custom command
|
|
*
|
|
* cmCustomCommand encapsulates the properties of a custom command
|
|
*/
|
|
class cmCustomCommand
|
|
{
|
|
public:
|
|
/** Default and copy constructors for STL containers. */
|
|
cmCustomCommand();
|
|
|
|
/** Main constructor specifies all information for the command. */
|
|
cmCustomCommand(cmMakefile const* mf,
|
|
const std::vector<std::string>& outputs,
|
|
const std::vector<std::string>& byproducts,
|
|
const std::vector<std::string>& depends,
|
|
const cmCustomCommandLines& commandLines,
|
|
const char* comment, const char* workingDirectory);
|
|
|
|
/** Get the output file produced by the command. */
|
|
const std::vector<std::string>& GetOutputs() const;
|
|
|
|
/** Get the extra files produced by the command. */
|
|
const std::vector<std::string>& GetByproducts() const;
|
|
|
|
/** Get the vector that holds the list of dependencies. */
|
|
const std::vector<std::string>& GetDepends() const;
|
|
|
|
/** Get the working directory. */
|
|
std::string const& GetWorkingDirectory() const
|
|
{
|
|
return this->WorkingDirectory;
|
|
}
|
|
|
|
/** Get the list of command lines. */
|
|
const cmCustomCommandLines& GetCommandLines() const;
|
|
|
|
/** Get the comment string for the command. */
|
|
const char* GetComment() const;
|
|
|
|
/** Append to the list of command lines. */
|
|
void AppendCommands(const cmCustomCommandLines& commandLines);
|
|
|
|
/** Append to the list of dependencies. */
|
|
void AppendDepends(const std::vector<std::string>& depends);
|
|
|
|
/** Set/Get whether old-style escaping should be used. */
|
|
bool GetEscapeOldStyle() const;
|
|
void SetEscapeOldStyle(bool b);
|
|
|
|
/** Set/Get whether the build tool can replace variables in
|
|
arguments to the command. */
|
|
bool GetEscapeAllowMakeVars() const;
|
|
void SetEscapeAllowMakeVars(bool b);
|
|
|
|
/** Backtrace of the command that created this custom command. */
|
|
cmListFileBacktrace const& GetBacktrace() const;
|
|
|
|
typedef std::pair<std::string, std::string> ImplicitDependsPair;
|
|
class ImplicitDependsList : public std::vector<ImplicitDependsPair>
|
|
{
|
|
};
|
|
void SetImplicitDepends(ImplicitDependsList const&);
|
|
void AppendImplicitDepends(ImplicitDependsList const&);
|
|
ImplicitDependsList const& GetImplicitDepends() const;
|
|
|
|
/** Set/Get whether this custom command should be given access to the
|
|
real console (if possible). */
|
|
bool GetUsesTerminal() const;
|
|
void SetUsesTerminal(bool b);
|
|
|
|
/** Set/Get the depfile (used by the Ninja generator) */
|
|
const std::string& GetDepfile() const;
|
|
void SetDepfile(const std::string& depfile);
|
|
|
|
private:
|
|
std::vector<std::string> Outputs;
|
|
std::vector<std::string> Byproducts;
|
|
std::vector<std::string> Depends;
|
|
cmCustomCommandLines CommandLines;
|
|
cmListFileBacktrace Backtrace;
|
|
ImplicitDependsList ImplicitDepends;
|
|
std::string Comment;
|
|
std::string WorkingDirectory;
|
|
std::string Depfile;
|
|
bool HaveComment;
|
|
bool EscapeAllowMakeVars;
|
|
bool EscapeOldStyle;
|
|
bool UsesTerminal;
|
|
};
|
|
|
|
#endif
|