2016-09-27 19:01:08 +00:00
|
|
|
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
|
|
file Copyright.txt or https://cmake.org/licensing for details. */
|
2003-07-07 21:47:17 +00:00
|
|
|
#ifndef cmFileCommand_h
|
|
|
|
#define cmFileCommand_h
|
|
|
|
|
2016-10-25 18:35:04 +00:00
|
|
|
#include <cmConfigure.h>
|
|
|
|
#include <string>
|
|
|
|
#include <vector>
|
|
|
|
|
2003-07-07 21:47:17 +00:00
|
|
|
#include "cmCommand.h"
|
|
|
|
|
2016-10-25 18:35:04 +00:00
|
|
|
class cmExecutionStatus;
|
ENH: merge CMake-CrossCompileBasic to HEAD
-add a RESULT_VARIABLE to INCLUDE()
-add CMAKE_TOOLCHAIN_FILE for specifiying your (potentially crosscompiling) toolchain
-have TRY_RUN() complain if you try to use it in crosscompiling mode (which were compiled but cannot run on this system)
-use CMAKE_EXECUTABLE_SUFFIX in TRY_RUN(), probably TRY_RUN won't be able to
run the executables if they have a different suffix because they are
probably crosscompiled, but nevertheless it should be able to find them
-make several cmake variables presettable by the user: CMAKE_C/CXX_COMPILER, CMAKE_C/CXX_OUTPUT_EXTENSION, CMAKE_SYSTEM_NAME, CMAKE_SYSTEM_INFO_FILE
-support prefix for GNU toolchains (arm-elf-gcc, arm-elf-ar, arm-elf-strip etc.)
-move ranlib on OSX from the file command to a command in executed in cmake_install.cmake
-add support for stripping during install in cmake_install.cmake
-split out cl.cmake from Windows-cl.cmake, first (very incomplete) step to support MS crosscompiling tools
-remove stdio.h from the simple C program which checks if the compiler works, since this may not exist for some embedded platforms
-create a new CMakeFindBinUtils.cmake which collects the search fro ar, ranlib, strip, ld, link, install_name_tool and other tools like these
-add support for CMAKE_FIND_ROOT_PATH for all FIND_XXX commands, which is a
list of directories which will be prepended to all search directories, right
now as a cmake variable, turning it into a global cmake property may need
some more work
-remove cmTestTestHandler::TryExecutable(), it's unused
-split cmFileCommand::HandleInstall() into slightly smaller functions
Alex
2007-05-17 17:20:44 +00:00
|
|
|
|
2003-07-07 21:47:17 +00:00
|
|
|
/** \class cmFileCommand
|
|
|
|
* \brief Command for manipulation of files
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
class cmFileCommand : public cmCommand
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
* This is a virtual constructor for the command.
|
|
|
|
*/
|
2016-06-27 19:25:27 +00:00
|
|
|
cmCommand* Clone() CM_OVERRIDE { return new cmFileCommand; }
|
2003-07-07 21:47:17 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* This is called when the command is first encountered in
|
|
|
|
* the CMakeLists.txt file.
|
|
|
|
*/
|
2016-06-27 19:25:27 +00:00
|
|
|
bool InitialPass(std::vector<std::string> const& args,
|
|
|
|
cmExecutionStatus& status) CM_OVERRIDE;
|
2003-07-07 21:47:17 +00:00
|
|
|
|
2004-01-26 21:05:58 +00:00
|
|
|
/**
|
|
|
|
* This determines if the command is invoked when in script mode.
|
|
|
|
*/
|
2016-06-27 19:25:27 +00:00
|
|
|
bool IsScriptable() const CM_OVERRIDE { return true; }
|
2004-01-26 21:05:58 +00:00
|
|
|
|
2003-07-07 21:47:17 +00:00
|
|
|
/**
|
|
|
|
* The name of the command as specified in CMakeList.txt.
|
|
|
|
*/
|
2016-06-27 19:25:27 +00:00
|
|
|
std::string GetName() const CM_OVERRIDE { return "file"; }
|
2003-07-07 21:47:17 +00:00
|
|
|
|
|
|
|
protected:
|
2009-04-15 13:58:13 +00:00
|
|
|
bool HandleRename(std::vector<std::string> const& args);
|
2006-03-09 19:30:35 +00:00
|
|
|
bool HandleRemove(std::vector<std::string> const& args, bool recurse);
|
2003-07-07 21:47:17 +00:00
|
|
|
bool HandleWriteCommand(std::vector<std::string> const& args, bool append);
|
|
|
|
bool HandleReadCommand(std::vector<std::string> const& args);
|
2011-11-16 01:39:36 +00:00
|
|
|
bool HandleHashCommand(std::vector<std::string> const& args);
|
2007-04-25 21:22:07 +00:00
|
|
|
bool HandleStringsCommand(std::vector<std::string> const& args);
|
2003-07-14 13:15:13 +00:00
|
|
|
bool HandleGlobCommand(std::vector<std::string> const& args, bool recurse);
|
2003-07-08 20:33:29 +00:00
|
|
|
bool HandleMakeDirectoryCommand(std::vector<std::string> const& args);
|
2007-06-07 17:51:17 +00:00
|
|
|
|
2005-10-17 13:10:20 +00:00
|
|
|
bool HandleRelativePathCommand(std::vector<std::string> const& args);
|
2006-04-05 11:46:32 +00:00
|
|
|
bool HandleCMakePathCommand(std::vector<std::string> const& args,
|
|
|
|
bool nativePath);
|
2008-04-14 19:02:44 +00:00
|
|
|
bool HandleRPathChangeCommand(std::vector<std::string> const& args);
|
|
|
|
bool HandleRPathCheckCommand(std::vector<std::string> const& args);
|
|
|
|
bool HandleRPathRemoveCommand(std::vector<std::string> const& args);
|
2009-01-07 19:16:35 +00:00
|
|
|
bool HandleDifferentCommand(std::vector<std::string> const& args);
|
2007-06-07 17:51:17 +00:00
|
|
|
|
2009-04-29 17:13:29 +00:00
|
|
|
bool HandleCopyCommand(std::vector<std::string> const& args);
|
ENH: merge CMake-CrossCompileBasic to HEAD
-add a RESULT_VARIABLE to INCLUDE()
-add CMAKE_TOOLCHAIN_FILE for specifiying your (potentially crosscompiling) toolchain
-have TRY_RUN() complain if you try to use it in crosscompiling mode (which were compiled but cannot run on this system)
-use CMAKE_EXECUTABLE_SUFFIX in TRY_RUN(), probably TRY_RUN won't be able to
run the executables if they have a different suffix because they are
probably crosscompiled, but nevertheless it should be able to find them
-make several cmake variables presettable by the user: CMAKE_C/CXX_COMPILER, CMAKE_C/CXX_OUTPUT_EXTENSION, CMAKE_SYSTEM_NAME, CMAKE_SYSTEM_INFO_FILE
-support prefix for GNU toolchains (arm-elf-gcc, arm-elf-ar, arm-elf-strip etc.)
-move ranlib on OSX from the file command to a command in executed in cmake_install.cmake
-add support for stripping during install in cmake_install.cmake
-split out cl.cmake from Windows-cl.cmake, first (very incomplete) step to support MS crosscompiling tools
-remove stdio.h from the simple C program which checks if the compiler works, since this may not exist for some embedded platforms
-create a new CMakeFindBinUtils.cmake which collects the search fro ar, ranlib, strip, ld, link, install_name_tool and other tools like these
-add support for CMAKE_FIND_ROOT_PATH for all FIND_XXX commands, which is a
list of directories which will be prepended to all search directories, right
now as a cmake variable, turning it into a global cmake property may need
some more work
-remove cmTestTestHandler::TryExecutable(), it's unused
-split cmFileCommand::HandleInstall() into slightly smaller functions
Alex
2007-05-17 17:20:44 +00:00
|
|
|
bool HandleInstallCommand(std::vector<std::string> const& args);
|
2008-02-06 14:35:02 +00:00
|
|
|
bool HandleDownloadCommand(std::vector<std::string> const& args);
|
2011-02-23 18:53:53 +00:00
|
|
|
bool HandleUploadCommand(std::vector<std::string> const& args);
|
2012-10-05 19:55:07 +00:00
|
|
|
|
|
|
|
bool HandleTimestampCommand(std::vector<std::string> const& args);
|
2013-01-02 16:10:04 +00:00
|
|
|
bool HandleGenerateCommand(std::vector<std::string> const& args);
|
2014-11-25 22:49:25 +00:00
|
|
|
bool HandleLockCommand(std::vector<std::string> const& args);
|
2013-01-02 16:10:04 +00:00
|
|
|
|
|
|
|
private:
|
2016-05-16 14:34:04 +00:00
|
|
|
void AddEvaluationFile(const std::string& inputName,
|
|
|
|
const std::string& outputExpr,
|
|
|
|
const std::string& condition, bool inputIsContent);
|
2003-07-07 21:47:17 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|