File: compileall

package info (click to toggle)
icmake 13.05.01-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 7,132 kB
  • sloc: cpp: 11,595; fortran: 883; makefile: 853; sh: 546; pascal: 342
file content (88 lines) | stat: -rw-r--r-- 2,224 bytes parent folder | download | duplicates (2)
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
}