File: build

package info (click to toggle)
xd 3.29.00-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 516 kB
  • sloc: cpp: 1,414; makefile: 112; sh: 36
file content (138 lines) | stat: -rwxr-xr-x 3,696 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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/usr/bin/icmake -qt/tmp/xdbuild

#define LOGENV "XD"

string
    g_logPath = getenv(LOGENV)[1],
    g_cwd = chdir("");  // initial working directory, ends in /

int g_echo = ON;

#include "icmconf"

#include "icmake/cuteoln"
#include "icmake/backtick"

#include "icmake/setopt"
#include "icmake/run"

#include "icmake/md"
#include "icmake/findall"
#include "icmake/loginstall"
#include "icmake/logzip"
#include "icmake/logfile"
#include "icmake/uninstall"
#include "icmake/pathfile"
#include "icmake/precompileheaders"

#include "icmake/special"

#include "icmake/clean"
#include "icmake/manpage"
#include "icmake/install"
#include "icmake/gitlab"

void main(int argc, list argv)
{
    string option;
    string strip;
    int idx;

    for (idx = listlen(argv); idx--; )
    {
        if (argv[idx] == "-q")
        {
            g_echo = OFF;
            argv -= (list)"-q";
        }
        else if (argv[idx] == "-P")
        {
            g_gch = 0;
            argv -= (list)"-P";
        }
    }

    echo(g_echo);


    option = argv[1];

    if (option == "clean")
        clean(0);

    if (option == "distclean")
        clean(1);

    if (option == "install")
        install(argv[2], argv[3]);

    if (option == "uninstall")
        uninstall(argv[2]);

    if (option != "")
        special();

    if (option == "gitlab")
        gitlab();

    if (option == "man")
        manpage();

    if (option == "library")
    {
        system("icmbuild library");
        exit(0);
    }

    if (argv[2] == "strip")
        strip = "strip";

    if (option == "program")
    {
        precompileHeaders();
        system("icmbuild program " + strip);
        exit(0);
    }

    if (option == "oxref")
    {
        precompileHeaders();
        system("icmbuild program " + strip);
        run("oxref -fxs tmp/lib" LIBRARY ".a > " PROJECT ".xref");
        exit(0);
    }

    printf("Usage: build [-q -P] what\n"
        "Where\n"
        "   [-q]:   run quietly, do not show executed commands\n"
        "   [-P]:   do not use precompiled headers\n"
        "`what' is one of:\n"
        "   clean                - clean up remnants of previous "
                                                            "compilations\n"
        "   distclean            - clean + fully remove tmp/\n"
        "   library              - build " PROJECT "'s library\n"
        "   man                  - build the man-page (requires Yodl)\n"
        "   program [strip]      - build " PROJECT " (optionally strip the\n"
        "                          executable)\n"
        "   oxref [strip]        - same a `program', also builds xref file\n"
        "                          using oxref\n"
        "   install selection [base] - to install the software in the \n"
        "                         locations defined in the INSTALL.im file,\n"
        "                         optionally below base\n"
        "                         selection can be\n"
        "                               x, to install all components,\n"
        "                         or a combination of:\n"
        "                               b (binary program),\n"
        "                               d (documentation),\n"
        "                               m (man-pages)\n"
        "   uninstall logfile   - remove files and empty directories listed\n"
        "                         in the file 'logfile'\n"
        "   gitlab               - prepare gitlab's gh-pages update\n"
        "                          (internal use only)\n"
        "\n"
        "If the environment variable DRYRUN is defined, no commands are\n"
        "actually executed\n"
        "\n"
    );
    exit(1);
}