6f9aaad150
The output file used for memory checker runs must be unique for every test run in parallel, so simply make them unique for every test run. Simply use the test index to avoid collisions.
53 lines
1.1 KiB
C++
53 lines
1.1 KiB
C++
#include <cmSystemTools.h>
|
|
#include <string>
|
|
|
|
#define RETVAL @_retval@
|
|
|
|
int
|
|
main(int argc, char **argv)
|
|
{
|
|
std::string exename = argv[0];
|
|
std::string logarg;
|
|
bool nextarg = false;
|
|
|
|
if (exename.find("valgrind") != exename.npos)
|
|
logarg = "--log-file=";
|
|
else if (exename.find("purify") != exename.npos)
|
|
#ifdef _WIN32
|
|
logarg = "/SAVETEXTDATA=";
|
|
#else
|
|
logarg = "-log-file=";
|
|
#endif
|
|
else if (exename.find("BC") != exename.npos)
|
|
{
|
|
nextarg = true;
|
|
logarg = "/X";
|
|
}
|
|
|
|
if (!logarg.empty()) {
|
|
std::string logfile;
|
|
for (int i = 1; i < argc; i++) {
|
|
std::string arg = argv[i];
|
|
if (arg.find(logarg) == 0)
|
|
{
|
|
if (nextarg)
|
|
{
|
|
if (i == argc - 1)
|
|
return 1; // invalid command line
|
|
logfile = argv[i + 1];
|
|
}
|
|
else
|
|
{
|
|
logfile = arg.substr(logarg.length());
|
|
}
|
|
// keep searching, it may be overridden later to provoke an error
|
|
}
|
|
}
|
|
|
|
if (!logfile.empty())
|
|
cmSystemTools::Touch(logfile.c_str(), true);
|
|
}
|
|
|
|
return RETVAL;
|
|
}
|