mirror of
https://github.com/reactos/CMake.git
synced 2024-11-24 20:19:53 +00:00
removed ccommand use cmake now
This commit is contained in:
parent
5a286f1c90
commit
350f09ae6d
@ -79,10 +79,7 @@ LINK_DIRECTORIES(${CMake_BINARY_DIR}/Source)
|
||||
|
||||
ADD_EXECUTABLE(cmake cmakemain.cxx)
|
||||
ADD_EXECUTABLE(DumpDocumentation cmDumpDocumentation)
|
||||
|
||||
ADD_EXECUTABLE(ctest ctest.cxx cmSystemTools.cxx cmRegularExpression.cxx)
|
||||
ADD_EXECUTABLE(ccommand ccommand.cxx cmSystemTools.cxx cmMakefile.cxx)
|
||||
|
||||
|
||||
IF (UNIX)
|
||||
INCLUDE (${CMake_SOURCE_DIR}/Modules/FindCurses.cmake OPTIONAL)
|
||||
@ -214,6 +211,5 @@ INCLUDE (${CMAKE_SOURCE_DIR}/Source/LocalUserOptions.cmake OPTIONAL)
|
||||
|
||||
INSTALL_TARGETS(/bin cmake)
|
||||
INSTALL_TARGETS(/bin ctest)
|
||||
INSTALL_TARGETS(/bin ccommand)
|
||||
INSTALL_TARGETS(/bin cmaketest)
|
||||
|
||||
|
@ -102,8 +102,6 @@ void cmBorlandMakefileGenerator::OutputMakeVariables(std::ostream& fout)
|
||||
|
||||
std::string replaceVars = variables;
|
||||
m_Makefile->ExpandVariablesInString(replaceVars);
|
||||
std::string ccommand = m_Makefile->GetDefinition("CCOMMAND_COMMAND");
|
||||
fout << "RM = " << this->ConvertToOutputPath(ccommand.c_str()) << " remove -f\n";
|
||||
std::string ccompiler = m_Makefile->GetDefinition("CMAKE_C_COMPILER");
|
||||
fout << "CMAKE_C_COMPILER = "
|
||||
<< this->ConvertToOutputPath(ccompiler.c_str())
|
||||
@ -123,6 +121,7 @@ void cmBorlandMakefileGenerator::OutputMakeVariables(std::ostream& fout)
|
||||
std::string cmakecommand = m_Makefile->GetDefinition("CMAKE_COMMAND");
|
||||
fout << "CMAKE_COMMAND = "
|
||||
<< this->ShortPath(cmakecommand.c_str()) << "\n";
|
||||
fout << "RM = " << this->ShortPath(cmakecommand.c_str()) << " -E remove -f\n";
|
||||
|
||||
fout << replaceVars.c_str();
|
||||
fout << "CMAKE_CURRENT_SOURCE = "
|
||||
|
@ -170,8 +170,6 @@ void cmNMakeMakefileGenerator::OutputMakeVariables(std::ostream& fout)
|
||||
std::string replaceVars = variables;
|
||||
m_Makefile->ExpandVariablesInString(replaceVars);
|
||||
fout << replaceVars.c_str();
|
||||
std::string ccommand = m_Makefile->GetDefinition("CCOMMAND_COMMAND");
|
||||
fout << "RM = " << this->ShortPath(ccommand.c_str()) << " remove -f\n";
|
||||
std::string ccompiler = m_Makefile->GetDefinition("CMAKE_C_COMPILER");
|
||||
fout << "CMAKE_C_COMPILER = "
|
||||
<< this->ShortPath(ccompiler.c_str()) << "\n";
|
||||
@ -191,6 +189,7 @@ void cmNMakeMakefileGenerator::OutputMakeVariables(std::ostream& fout)
|
||||
std::string cmakecommand = m_Makefile->GetDefinition("CMAKE_COMMAND");
|
||||
fout << "CMAKE_COMMAND = "
|
||||
<< this->ShortPath(cmakecommand.c_str()) << "\n";
|
||||
fout << "RM = " << this->ShortPath(cmakecommand.c_str()) << " -E remove -f\n";
|
||||
|
||||
if(m_Makefile->GetDefinition("CMAKE_EDIT_COMMAND"))
|
||||
{
|
||||
|
128
Source/cmake.cxx
128
Source/cmake.cxx
@ -15,6 +15,7 @@
|
||||
|
||||
=========================================================================*/
|
||||
#include "cmake.h"
|
||||
#include "time.h"
|
||||
#include "cmCacheManager.h"
|
||||
|
||||
// include the generator
|
||||
@ -230,8 +231,15 @@ void cmake::AddCMakePaths(const std::vector<std::string>& args)
|
||||
if(!cmSystemTools::FileExists(cMakeSelf.c_str()))
|
||||
{
|
||||
#ifdef CMAKE_BUILD_DIR
|
||||
cMakeSelf = CMAKE_BUILD_DIR;
|
||||
cMakeSelf += "/Source/cmake";
|
||||
std::string intdir = ".";
|
||||
#ifdef CMAKE_INTDIR
|
||||
intdir = CMAKE_INTDIR;
|
||||
#endif
|
||||
cMakeSelf = CMAKE_BUILD_DIR;
|
||||
cMakeSelf += "/Source/";
|
||||
cMakeSelf += intdir;
|
||||
cMakeSelf += "/cmake";
|
||||
cMakeSelf += cmSystemTools::GetExecutableExtension();
|
||||
#endif
|
||||
}
|
||||
#ifdef CMAKE_PREFIX
|
||||
@ -251,17 +259,6 @@ void cmake::AddCMakePaths(const std::vector<std::string>& args)
|
||||
("CMAKE_COMMAND",cMakeSelf.c_str(), "Path to CMake executable.",
|
||||
cmCacheManager::INTERNAL);
|
||||
|
||||
// Find ccommand
|
||||
std::string cCommand = cmSystemTools::GetFilenamePath(cMakeSelf) +
|
||||
"/ccommand" + cmSystemTools::GetFilenameExtension(cMakeSelf);
|
||||
if( cmSystemTools::FileExists(cCommand.c_str()))
|
||||
{
|
||||
// Save the value in the cache
|
||||
cmCacheManager::GetInstance()->AddCacheEntry
|
||||
("CCOMMAND_COMMAND",cCommand.c_str(),
|
||||
"Path to CMakeCommand executable.", cmCacheManager::INTERNAL);
|
||||
}
|
||||
|
||||
// Find and save the command to edit the cache
|
||||
std::string editCacheCommand = cmSystemTools::GetFilenamePath(cMakeSelf) +
|
||||
"/ccmake" + cmSystemTools::GetFilenameExtension(cMakeSelf);
|
||||
@ -519,3 +516,108 @@ int cmake::Generate(const std::vector<std::string>& args, bool buildMakefiles)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void CMakeCommandUsage(const char* program)
|
||||
{
|
||||
std::strstream errorStream;
|
||||
|
||||
errorStream
|
||||
<< "cmake version " << cmMakefile::GetMajorVersion()
|
||||
<< "." << cmMakefile::GetMinorVersion() << "\n";
|
||||
|
||||
errorStream
|
||||
<< "Usage: " << program << " -E [command] [arguments ...]\n"
|
||||
<< "Available commands: \n"
|
||||
<< " copy file destination - copy file to destination (either file or directory)\n"
|
||||
<< " remove file1 file2 ... - remove the file(s)\n"
|
||||
<< " time command [args] ... - run command and return elapsed time\n"
|
||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
<< " write_regv key value - write registry value\n"
|
||||
<< " delete_regv key - delete registry value\n"
|
||||
#endif
|
||||
<< std::ends;
|
||||
|
||||
cmSystemTools::Error(errorStream.str());
|
||||
}
|
||||
|
||||
int cmake::CMakeCommand(std::vector<std::string>& args)
|
||||
{
|
||||
if (args.size() > 1)
|
||||
{
|
||||
// Copy file
|
||||
if (args[1] == "copy" && args.size() == 4)
|
||||
{
|
||||
cmSystemTools::cmCopyFile(args[2].c_str(), args[3].c_str());
|
||||
return cmSystemTools::GetErrorOccuredFlag();
|
||||
}
|
||||
|
||||
// Remove file
|
||||
else if (args[1] == "remove" && args.size() > 2)
|
||||
{
|
||||
for (std::string::size_type cc = 2; cc < args.size(); cc ++)
|
||||
{
|
||||
if(args[cc] != "-f")
|
||||
{
|
||||
if(args[cc] == "\\-f")
|
||||
{
|
||||
args[cc] = "-f";
|
||||
}
|
||||
cmSystemTools::RemoveFile(args[cc].c_str());
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Clock command
|
||||
else if (args[1] == "time" && args.size() > 2)
|
||||
{
|
||||
std::string command = args[2];
|
||||
std::string output;
|
||||
for (std::string::size_type cc = 3; cc < args.size(); cc ++)
|
||||
{
|
||||
command += " ";
|
||||
command += args[cc];
|
||||
}
|
||||
|
||||
clock_t clock_start, clock_finish;
|
||||
time_t time_start, time_finish;
|
||||
|
||||
time(&time_start);
|
||||
clock_start = clock();
|
||||
|
||||
cmSystemTools::RunCommand(command.c_str(), output, 0, true);
|
||||
|
||||
clock_finish = clock();
|
||||
time(&time_finish);
|
||||
|
||||
std::cout << output.c_str();
|
||||
|
||||
double clocks_per_sec = (double)CLOCKS_PER_SEC;
|
||||
std::cout << "Elapsed time: "
|
||||
<< (long)(time_finish - time_start) << " s. (time)"
|
||||
<< ", "
|
||||
<< (double)(clock_finish - clock_start) / clocks_per_sec
|
||||
<< " s. (clock)"
|
||||
<< "\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
// Write registry value
|
||||
else if (args[1] == "write_regv" && args.size() > 3)
|
||||
{
|
||||
return cmSystemTools::WriteRegistryValue(args[2].c_str(),
|
||||
args[3].c_str()) ? 0 : 1;
|
||||
}
|
||||
|
||||
// Delete registry value
|
||||
else if (args[1] == "delete_regv" && args.size() > 2)
|
||||
{
|
||||
return cmSystemTools::DeleteRegistryValue(args[2].c_str()) ? 0 : 1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
::CMakeCommandUsage(args[0].c_str());
|
||||
return 1;
|
||||
}
|
||||
|
@ -41,6 +41,12 @@ class cmake
|
||||
*/
|
||||
int Generate(const std::vector<std::string>&, bool buildMakefiles = true);
|
||||
|
||||
/**
|
||||
* Execute commands during the build process. Supports options such
|
||||
* as echo, remove file etc.
|
||||
*/
|
||||
static int CMakeCommand(std::vector<std::string>&);
|
||||
|
||||
///! Parse command line arguments
|
||||
void SetArgs(cmMakefile& builder, const std::vector<std::string>&);
|
||||
///! Parse command line arguments that might set cache values
|
||||
|
@ -21,6 +21,7 @@
|
||||
int main(int ac, char** av)
|
||||
{
|
||||
bool wiz = false;
|
||||
bool command = false;
|
||||
std::vector<std::string> args;
|
||||
for(int i =0; i < ac; ++i)
|
||||
{
|
||||
@ -30,18 +31,31 @@ int main(int ac, char** av)
|
||||
}
|
||||
else
|
||||
{
|
||||
args.push_back(av[i]);
|
||||
if (strcmp(av[i], "-E") == 0)
|
||||
{
|
||||
command = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
args.push_back(av[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!wiz)
|
||||
|
||||
if(command)
|
||||
{
|
||||
cmake cm;
|
||||
int ret = cm.Generate(args);
|
||||
cmMakefileGenerator::UnRegisterGenerators();
|
||||
int ret = cmake::CMakeCommand(args);
|
||||
return ret;
|
||||
}
|
||||
cmakewizard wizard;
|
||||
wizard.RunWizard(args);
|
||||
if (wiz)
|
||||
{
|
||||
cmakewizard wizard;
|
||||
wizard.RunWizard(args);
|
||||
cmMakefileGenerator::UnRegisterGenerators();
|
||||
return 0;
|
||||
}
|
||||
cmake cm;
|
||||
int ret = cm.Generate(args);
|
||||
cmMakefileGenerator::UnRegisterGenerators();
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
@ -137,12 +137,12 @@ IF (WIN32)
|
||||
${Complex_SOURCE_DIR}/Library/dummy
|
||||
"${dir}/${file}"
|
||||
COPYONLY IMMEDIATE)
|
||||
EXEC_PROGRAM(${CCOMMAND_COMMAND} ARGS "write_regv \"${hkey}\" \"${dir}\"")
|
||||
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "-E write_regv \"${hkey}\" \"${dir}\"")
|
||||
FIND_PATH(REGISTRY_TEST_PATH
|
||||
${file}
|
||||
"[${hkey}]" DOC "Registry_Test_Path")
|
||||
EXEC_PROGRAM(${CCOMMAND_COMMAND} ARGS "delete_regv \"${hkey}\"")
|
||||
EXEC_PROGRAM(${CCOMMAND_COMMAND} ARGS "remove \"${dir}/${file}\"")
|
||||
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "-E delete_regv \"${hkey}\"")
|
||||
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "-E remove \"${dir}/${file}\"")
|
||||
ENDIF (NOT UNIX)
|
||||
ENDIF (WIN32)
|
||||
|
||||
|
@ -137,12 +137,12 @@ IF (WIN32)
|
||||
${Complex_SOURCE_DIR}/Library/dummy
|
||||
"${dir}/${file}"
|
||||
COPYONLY IMMEDIATE)
|
||||
EXEC_PROGRAM(${CCOMMAND_COMMAND} ARGS "write_regv \"${hkey}\" \"${dir}\"")
|
||||
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "-E write_regv \"${hkey}\" \"${dir}\"")
|
||||
FIND_PATH(REGISTRY_TEST_PATH
|
||||
${file}
|
||||
"[${hkey}]" DOC "Registry_Test_Path")
|
||||
EXEC_PROGRAM(${CCOMMAND_COMMAND} ARGS "delete_regv \"${hkey}\"")
|
||||
EXEC_PROGRAM(${CCOMMAND_COMMAND} ARGS "remove \"${dir}/${file}\"")
|
||||
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "-E delete_regv \"${hkey}\"")
|
||||
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "-E remove \"${dir}/${file}\"")
|
||||
ENDIF (NOT UNIX)
|
||||
ENDIF (WIN32)
|
||||
|
||||
|
@ -137,12 +137,12 @@ IF (WIN32)
|
||||
${Complex_SOURCE_DIR}/Library/dummy
|
||||
"${dir}/${file}"
|
||||
COPYONLY IMMEDIATE)
|
||||
EXEC_PROGRAM(${CCOMMAND_COMMAND} ARGS "write_regv \"${hkey}\" \"${dir}\"")
|
||||
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "-E write_regv \"${hkey}\" \"${dir}\"")
|
||||
FIND_PATH(REGISTRY_TEST_PATH
|
||||
${file}
|
||||
"[${hkey}]" DOC "Registry_Test_Path")
|
||||
EXEC_PROGRAM(${CCOMMAND_COMMAND} ARGS "delete_regv \"${hkey}\"")
|
||||
EXEC_PROGRAM(${CCOMMAND_COMMAND} ARGS "remove \"${dir}/${file}\"")
|
||||
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "-E delete_regv \"${hkey}\"")
|
||||
EXEC_PROGRAM(${CMAKE_COMMAND} ARGS "-E remove \"${dir}/${file}\"")
|
||||
ENDIF (NOT UNIX)
|
||||
ENDIF (WIN32)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user