Module Name: src Committed By: uebayasi Date: Tue Sep 1 00:38:30 UTC 2015
Modified Files: src/usr.bin/config: mkmakefile.c Log Message: Refactor emit file functions. No functional changes. To generate a diff of this commit: cvs rdiff -u -r1.49 -r1.50 src/usr.bin/config/mkmakefile.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/config/mkmakefile.c diff -u src/usr.bin/config/mkmakefile.c:1.49 src/usr.bin/config/mkmakefile.c:1.50 --- src/usr.bin/config/mkmakefile.c:1.49 Sun Aug 30 21:58:19 2015 +++ src/usr.bin/config/mkmakefile.c Tue Sep 1 00:38:30 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: mkmakefile.c,v 1.49 2015/08/30 21:58:19 uebayasi Exp $ */ +/* $NetBSD: mkmakefile.c,v 1.50 2015/09/01 00:38:30 uebayasi Exp $ */ /* * Copyright (c) 1992, 1993 @@ -45,7 +45,7 @@ #endif #include <sys/cdefs.h> -__RCSID("$NetBSD: mkmakefile.c,v 1.49 2015/08/30 21:58:19 uebayasi Exp $"); +__RCSID("$NetBSD: mkmakefile.c,v 1.50 2015/09/01 00:38:30 uebayasi Exp $"); #include <sys/param.h> #include <ctype.h> @@ -62,12 +62,6 @@ __RCSID("$NetBSD: mkmakefile.c,v 1.49 20 * Make the Makefile. */ -static const char *srcpath(struct files *); - -static const char *prefix_prologue(const char *); -static const char *filetype_prologue(struct filetype *); - - static void emitdefs(FILE *); static void emitfiles(FILE *, int, int); @@ -263,46 +257,6 @@ emitsubs(FILE *fp, const char *line, con } } -/* - * Return (possibly in a static buffer) the name of the `source' for a - * file. If we have `options source', or if the file is marked `always - * source', this is always the path from the `file' line; otherwise we - * get the .o from the obj-directory. - */ -static const char * -srcpath(struct files *fi) -{ -#if 1 - /* Always have source, don't support object dirs for kernel builds. */ - return (fi->fi_path); -#else - static char buf[MAXPATHLEN]; - - if (have_source || (fi->fi_flags & FI_ALWAYSSRC) != 0) - return (fi->fi_path); - if (objpath == NULL) { - cfgerror("obj-directory not set"); - return (NULL); - } - (void)snprintf(buf, sizeof buf, "%s/%s.o", objpath, fi->fi_base); - return (buf); -#endif -} - -static const char * -filetype_prologue(struct filetype *fit) -{ - - return (*fit->fit_path == '/') ? "" : "$S/"; -} - -static const char * -prefix_prologue(const char *path) -{ - - return (*path == '/') ? "" : "$S/"; -} - static void emitdefs(FILE *fp) { @@ -338,6 +292,22 @@ emitdefs(FILE *fp) } static void +emitfiletype(FILE *fp, struct filetype *fit) +{ + const char *prologue, *prefix, *sep; + + prologue = prefix = sep = ""; + if (*fit->fit_path != '/') { + prologue = "$S/"; + if (fit->fit_prefix != NULL) { + prefix = fit->fit_prefix; + sep = "/"; + } + } + fprintf(fp, "%s%s%s%s", prologue, prefix, sep, fit->fit_path); +} + +static void emitobjs(FILE *fp) { struct files *fi; @@ -350,22 +320,11 @@ emitobjs(FILE *fp) fprintf(fp, "\t%s.o \\\n", fi->fi_base); } TAILQ_FOREACH(oi, &allobjects, oi_next) { - const char *prologue, *prefix, *sep; - if ((oi->oi_flags & OI_SEL) == 0) continue; - prologue = prefix = sep = ""; - if (*oi->oi_path != '/') { - if (oi->oi_prefix != NULL) { - prologue = prefix_prologue(oi->oi_path); - prefix = oi->oi_prefix; - sep = "/"; - } else { - prologue = filetype_prologue(&oi->oi_fit); - } - } - fprintf(fp, "\t%s%s%s%s \\\n", prologue, prefix, sep, - oi->oi_path); + putc('\t', fp); + emitfiletype(fp, &oi->oi_fit); + fputs(" \\\n", fp); } putc('\n', fp); } @@ -498,31 +457,18 @@ static void emitfiles(FILE *fp, int suffix, int upper_suffix) { struct files *fi; - const char *fpath; struct config *cf; char swapname[100]; fprintf(fp, "%cFILES= \\\n", toupper(suffix)); TAILQ_FOREACH(fi, &allfiles, fi_next) { - const char *prologue, *prefix, *sep; - if ((fi->fi_flags & FI_SEL) == 0) continue; - fpath = srcpath(fi); if (fi->fi_suffix != suffix && fi->fi_suffix != upper_suffix) continue; - prologue = prefix = sep = ""; - if (*fi->fi_path != '/') { - if (fi->fi_prefix != NULL) { - prologue = prefix_prologue(fi->fi_prefix); - prefix = fi->fi_prefix; - sep = "/"; - } else { - prologue = filetype_prologue(&fi->fi_fit); - } - } - fprintf(fp, "\t%s%s%s%s \\\n", - prologue, prefix, sep, fpath); + putc('\t', fp); + emitfiletype(fp, &fi->fi_fit); + fputs(" \\\n", fp); } /* @@ -547,28 +493,15 @@ static void emitrules(FILE *fp) { struct files *fi; - const char *fpath; TAILQ_FOREACH(fi, &allfiles, fi_next) { - const char *prologue, *prefix, *sep; - if ((fi->fi_flags & FI_SEL) == 0) continue; if (fi->fi_mkrule == NULL) continue; - fpath = srcpath(fi); - prologue = prefix = sep = ""; - if (*fpath != '/') { - if (fi->fi_prefix != NULL) { - prologue = prefix_prologue(fi->fi_prefix); - prefix = fi->fi_prefix; - sep = "/"; - } else { - prologue = filetype_prologue(&fi->fi_fit); - } - } - fprintf(fp, "%s.o: %s%s%s%s\n", fi->fi_base, - prologue, prefix, sep, fpath); + fprintf(fp, "%s.o: ", fi->fi_base); + emitfiletype(fp, &fi->fi_fit); + putc('\n', fp); fprintf(fp, "\t%s\n\n", fi->fi_mkrule); } } @@ -627,8 +560,10 @@ emitincludes(FILE *fp) struct prefix *pf; SLIST_FOREACH(pf, &allprefixes, pf_next) { + const char *prologue = (*pf->pf_prefix == '/') ? "" : "$S/"; + fprintf(fp, "EXTRA_INCLUDES+=\t-I%s%s\n", - prefix_prologue(pf->pf_prefix), pf->pf_prefix); + prologue, pf->pf_prefix); } }