8 #define ADS ":::AGSsemble " VERSION " by rofl0r:::"
10 static int usage(char *argv0
) {
11 dprintf(2, ADS
"\nusage:\n%s [-E] file.s [file.o]\npass an ags assembly filename.\n"
12 "-E: invoke C preprocessor 'cpp' on the input file before assembling\n"
13 "if optional second filename is ommited, will write into file.o\n", argv0
);
17 int main(int argc
, char** argv
) {
19 while ((c
= getopt(argc
, argv
, "E")) != EOF
) switch(c
) {
20 case 'E': flags
|= 1; break;
21 default: return usage(argv
[0]);
23 if(!argv
[optind
]) return usage(argv
[0]);
24 char* file
= argv
[optind
];
25 char out
[256], *outn
, tmp
[256];
27 size_t l
= strlen(file
);
29 snprintf(out
, 256, "%s", file
);
30 p
= strrchr(out
, '.');
36 } else outn
= argv
[optind
+1];
39 snprintf(tmp
, sizeof tmp
, "%s.i", file
);
40 dprintf(1, "preprocessing %s -> %s ...", file
, tmp
);
42 snprintf(cmd
, sizeof cmd
, "cpp %s > %s", file
, tmp
);
43 int ret
= system(cmd
);
55 dprintf(1, "assembling %s -> %s ... ", file
, outn
);
56 int ret
= AS_assemble(a
, outn
);
59 if(!ret
) dprintf(1, "FAIL\n");
60 else dprintf(1, "OK\n");