mirror of
https://github.com/reactos/CMake.git
synced 2024-12-15 23:57:44 +00:00
ENH: part of the progress reporting checkin
This commit is contained in:
parent
29b75dda97
commit
53dce3b231
@ -29,6 +29,7 @@
|
|||||||
# include "cmVariableWatch.h"
|
# include "cmVariableWatch.h"
|
||||||
# include "cmVersion.h"
|
# include "cmVersion.h"
|
||||||
# include <cmsys/Terminal.h>
|
# include <cmsys/Terminal.h>
|
||||||
|
# include <cmsys/Directory.hxx>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// only build kdevelop generator on non-windows platforms
|
// only build kdevelop generator on non-windows platforms
|
||||||
@ -973,6 +974,68 @@ int cmake::ExecuteCMakeCommand(std::vector<std::string>& args)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Command to start progress for a build
|
||||||
|
else if (args[1] == "cmake_progress_start" && args.size() == 4)
|
||||||
|
{
|
||||||
|
// bascially remove the directory
|
||||||
|
std::string dirName = args[2];
|
||||||
|
dirName += "/Progress";
|
||||||
|
cmSystemTools::RemoveADirectory(dirName.c_str());
|
||||||
|
cmSystemTools::MakeDirectory(dirName.c_str());
|
||||||
|
// write the count into the directory
|
||||||
|
std::string fName = dirName;
|
||||||
|
fName += "/count.txt";
|
||||||
|
FILE *progFile = fopen(fName.c_str(),"w");
|
||||||
|
if (progFile)
|
||||||
|
{
|
||||||
|
int count = atoi(args[3].c_str());
|
||||||
|
fprintf(progFile,"%i\n",count);
|
||||||
|
fclose(progFile);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Command to report progress for a build
|
||||||
|
else if (args[1] == "cmake_progress_report" && args.size() >= 4)
|
||||||
|
{
|
||||||
|
std::string dirName = args[2];
|
||||||
|
dirName += "/Progress";
|
||||||
|
std::string fName;
|
||||||
|
FILE *progFile;
|
||||||
|
unsigned int i;
|
||||||
|
for (i = 3; i < args.size(); ++i)
|
||||||
|
{
|
||||||
|
fName = dirName;
|
||||||
|
fName += "/";
|
||||||
|
fName += args[i];
|
||||||
|
progFile = fopen(fName.c_str(),"w");
|
||||||
|
if (progFile)
|
||||||
|
{
|
||||||
|
fprintf(progFile,"empty");
|
||||||
|
fclose(progFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cmsys::Directory dir;
|
||||||
|
dir.Load(dirName.c_str());
|
||||||
|
size_t fileNum = dir.GetNumberOfFiles();
|
||||||
|
// read the count
|
||||||
|
fName = dirName;
|
||||||
|
fName += "/count.txt";
|
||||||
|
progFile = fopen(fName.c_str(),"r");
|
||||||
|
if (progFile)
|
||||||
|
{
|
||||||
|
int count = 0;
|
||||||
|
fscanf(progFile,"%i",&count);
|
||||||
|
if (count > 0)
|
||||||
|
{
|
||||||
|
// print the progress
|
||||||
|
fprintf(stdout,"%3i%% complete\n",((fileNum-3)*100)/count);
|
||||||
|
}
|
||||||
|
fclose(progFile);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// Command to create a symbolic link. Fails on platforms not
|
// Command to create a symbolic link. Fails on platforms not
|
||||||
// supporting them.
|
// supporting them.
|
||||||
else if (args[1] == "create_symlink" && args.size() == 4)
|
else if (args[1] == "create_symlink" && args.size() == 4)
|
||||||
|
Loading…
Reference in New Issue
Block a user