annotate helpers/makeline.c @ 686:59f07d67eb45

luna target split into luna1 and luna2 luna1 is FC Luna based on iWOW DSK v4.0 or v5.0 motherboard luna2 is FC Luna based on FC Caramel2 MB
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 12 Oct 2020 18:51:24 +0000
parents 352f80da6813
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This helper utility for the FreeCalypso Magnetite build system
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * emits potentially long generated Makefile lines, breaking them into
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 * multiple lines with backslashes.
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 */
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <stdio.h>
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <stdlib.h>
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <string.h>
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include <strings.h>
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 int is_cmd, equ_or_colon, extra_indent;
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 int linelen;
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 main(argc, argv)
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 char **argv;
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 {
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 char **ap;
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 if (argc < 4) {
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 fprintf(stderr, "error: too few arguments\n", argv[0]);
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 exit(1);
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 }
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 if (!strcmp(argv[1], "def")) {
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 is_cmd = 0;
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 equ_or_colon = '=';
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 extra_indent = 0;
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 } else if (!strcmp(argv[1], "dep")) {
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 is_cmd = 0;
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 equ_or_colon = ':';
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 extra_indent = 1;
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 } else if (!strcmp(argv[1], "cmd")) {
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 is_cmd = 1;
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 extra_indent = 1;
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 } else {
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 fprintf(stderr, "error: line type \"%s\" not known\n", argv[1]);
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 exit(1);
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 }
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 if (is_cmd) {
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 putchar('\t');
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 linelen = 8;
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 } else
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 linelen = 0;
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 fputs(argv[2], stdout);
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 linelen += strlen(argv[2]);
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 if (is_cmd) {
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 putchar(' ');
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 linelen++;
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 } else {
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 putchar(equ_or_colon);
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 linelen++;
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 putchar('\t');
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 do
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 linelen++;
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 while (linelen & 7);
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 }
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 fputs(argv[3], stdout);
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 linelen += strlen(argv[3]);
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 for (ap = argv + 4; *ap; ap++) {
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 if (linelen + 1 + strlen(*ap) <= 78) {
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 putchar(' ');
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 linelen++;
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 } else {
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 fputs(" \\\n\t", stdout);
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 linelen = 8;
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 if (extra_indent) {
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 fputs(" ", stdout);
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 linelen += 4;
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 }
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 }
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 fputs(*ap, stdout);
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 linelen += strlen(*ap);
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 }
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 putchar('\n');
10
352f80da6813 ACI compiles!
Mychaela Falconia <falcon@freecalypso.org>
parents: 9
diff changeset
75 exit(0);
9
05945a9b9dda makeline helper written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 }