FreeCalypso > hg > fc-magnetite
view helpers/makeline.c @ 701:35e7f9d0379f
targets: add TARGET_HAS_BUZZER to c11x, c139 and dsample
This new target config preprocessor symbol was introduced in Tourmaline
in connection with the new approach to playing buzzer melodies via PWT,
properly omitting the responsible code on targets where BU output
controls the vibrator instead. That code is not present in Magnetite
and we have no plans to backport it here, but target header files
should be kept consistent between the two trees, especially given
that we plan to support FC Venus target in Magnetite.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 26 Mar 2022 19:51:34 +0000 |
parents | 352f80da6813 |
children |
line wrap: on
line source
/* * This helper utility for the FreeCalypso Magnetite build system * emits potentially long generated Makefile lines, breaking them into * multiple lines with backslashes. */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> int is_cmd, equ_or_colon, extra_indent; int linelen; main(argc, argv) char **argv; { char **ap; if (argc < 4) { fprintf(stderr, "error: too few arguments\n", argv[0]); exit(1); } if (!strcmp(argv[1], "def")) { is_cmd = 0; equ_or_colon = '='; extra_indent = 0; } else if (!strcmp(argv[1], "dep")) { is_cmd = 0; equ_or_colon = ':'; extra_indent = 1; } else if (!strcmp(argv[1], "cmd")) { is_cmd = 1; extra_indent = 1; } else { fprintf(stderr, "error: line type \"%s\" not known\n", argv[1]); exit(1); } if (is_cmd) { putchar('\t'); linelen = 8; } else linelen = 0; fputs(argv[2], stdout); linelen += strlen(argv[2]); if (is_cmd) { putchar(' '); linelen++; } else { putchar(equ_or_colon); linelen++; putchar('\t'); do linelen++; while (linelen & 7); } fputs(argv[3], stdout); linelen += strlen(argv[3]); for (ap = argv + 4; *ap; ap++) { if (linelen + 1 + strlen(*ap) <= 78) { putchar(' '); linelen++; } else { fputs(" \\\n\t", stdout); linelen = 8; if (extra_indent) { fputs(" ", stdout); linelen += 4; } } fputs(*ap, stdout); linelen += strlen(*ap); } putchar('\n'); exit(0); }