File: precompileheaders

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 (61 lines) | stat: -rw-r--r-- 1,654 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
#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
}