view helpers/makeline.c @ 134:7d50d8d13711

FFS code sync with Magnetite + gcc version fix This change brings the new flash autodetection for FC and Pirelli targets from Magnetite, and should also fix the gcc version for C1xx and gtamodem targets, which were previously broken because they used TI's original flash autodetect code (which operates at address 0) while the boot ROM is mapped there.
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 11 Dec 2018 08:43:25 +0000
parents e825175be40d
children
line wrap: on
line source

/*
 * This helper utility for the FreeCalypso Selenite 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);
}