1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
#ifdef IH
void precompile(string class)
{
string classIH = class + IH;
if (!exists(classIH))
{
printf << "[Warning] directory " << class << " has no `" <<
classIH << "' file: maybe remove `" << class <<
"' from CLASSES?\n";
return;
}
string classGch = classIH + ".gch";
// if a directory listed in CLASSES has no sources,
// then it doesn't need a .gch file: to satisfy icm-dep
// a fake .gch file is created
if (listlen(makelist(SOURCES)) == 0)
{
#ifndef NO_PRECOMP_WARNING
if (classGch older classIH)
printf << "[Warning] no sources in " << class <<
": header not precompiled\n";
#endif
echo(0);
system("touch " + classGch);
echo(USE_ECHO);
return;
}
// if the current gch file is older than the IH file then renew
// the gch file
if (classGch older classIH)
system(g_compiler + " " PRECOMP " " + classIH);
}
#else
void precompile(string class)
{
requireIH("PRECOMP");
}
#endif
void precompileHeaders(list classes)
{
for (int idx = listlen(g_classes); idx--; )
{
string class = g_classes[idx];
chdir(class);
precompile(class);
chdir(g_cwd);
}
#ifdef MAIN // if a main source file exists
precompile(g_mainBase); // then precompile main.ih
#endif
}
|