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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
#ifdef MULTICOMP
void c_compile(int prefix, string destDir, string srcDir, list cfiles)
{
fprintf << (TMP_DIR '/' + multicomp[0]) <<
": " << srcDir << ' ' << destDir << ' ' << prefix << '\n';
if (srcDir != "")
srcDir += "/";
for (int idx = listlen(cfiles); idx--; )
{
fprintf << (TMP_DIR '/' + multicomp[0]) << cfiles[idx] << '\n';
g_compiled = 1;
}
}
#else
void c_compile(int prefix, string destDir, string srcDir, list cfiles)
{
showCd(srcDir);
if (srcDir != "")
srcDir += "/";
string compiler = g_compiler + " -c -o " + destDir + "/" + (string)prefix;
for (int idx = listlen(cfiles); idx--; )
{
string file = cfiles[idx];
system(compiler + change_ext(file, OBJ_EXT) + " " + srcDir + file);
g_compiled = 1;
}
}
#endif
void std_cpp(int ignoreMain, string destDir,
int prefix, string srcDir, string library)
{
chdir(g_cwd);
// make list of all files
md(destDir);
chdir(srcDir);
list files = makelist(SOURCES);
#ifdef MAIN
if (ignoreMain)
files -= (list)MAIN;
#endif
chdir(g_cwd);
files = inspect(destDir, prefix, srcDir, files, library);
if (listlen(files))
c_compile(prefix, destDir, srcDir, files); // compile files
}
void compileAll(string libPath)
{
g_compiled = 0;
// use abs. path so the library can
libPath = g_cwd + TMP_DIR "/" + libPath; // directly be located
// compile all source files
for (int idx = g_nClasses; idx--; )
std_cpp(0, TMP_DIR + "/o", idx + 1, g_classes[idx], libPath);
// compile all files in g_cwd
std_cpp(1, TMP_DIR + "/o", 0, ".", libPath);
#ifdef MULTICOMP
if (g_compiled)
{
string cmd = "icmake -m ";
for (int idx = 1, end = listlen(multicomp); idx != end; ++idx)
cmd += multicomp[idx] + ' ';
cmd += TMP_DIR '/' + multicomp[0] + " '" +
g_compiler + " -c -o $2 $1'";
system(cmd);
}
#endif
}
|