neatcc top-level makefile
[neatcc_make.git] / neatrun / neatcc.c
blob10ac11b266e2419d29494d0f9d8cae3a7f1b2d5b
1 #include <stdlib.h>
2 #include <unistd.h>
3 #include <string.h>
5 #define MAXARGS 512
7 static void die(char *msg)
9 write(2, msg, strlen(msg));
10 exit(1);
13 int main(int argc, char *argv[], char *envp[])
15 char *targv[MAXARGS];
16 int targc = 0;
17 int cc = 0;
18 int i;
19 if (argc < 2)
20 die("neatcc: ncc/nld wrapper\n");
21 for (i = 1; i < argc; i++)
22 if (argv[i][0] == '-' && argv[i][1] == 'c')
23 cc = 1;
24 if (cc) {
25 targv[targc++] = NCC;
26 targv[targc++] = "-Dfloat=long";
27 targv[targc++] = "-Ddouble=long";
28 targv[targc++] = "-D__extension__=";
29 targv[targc++] = "-I" NLC;
30 for (i = 1; i < argc; i++)
31 targv[targc++] = argv[i];
32 } else {
33 targv[targc++] = NLD;
34 for (i = 1; i < argc; i++)
35 targv[targc++] = argv[i];
36 targv[targc++] = NLC "/start.o";
37 targv[targc++] = NLC "/libc.a";
39 targv[targc] = NULL;
40 execve(targv[0], targv, envp);
41 die("neatcc: could not find ncc/nld\n");
42 return 1;