Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/config config(1): Fix build of old trees (bin/49389)...



details:   https://anonhg.NetBSD.org/src/rev/a822c5b3c0c4
branches:  trunk
changeset: 334931:a822c5b3c0c4
user:      uebayasi <uebayasi%NetBSD.org@localhost>
date:      Mon Dec 15 15:41:18 2014 +0000

description:
config(1): Fix build of old trees (bin/49389) (take 2)

Look into sys/conf/Makefile.kern.inc to check if "build_kernel" .USE target
is defined.  If not (== old source trees), generate one on the fly.

diffstat:

 usr.bin/config/mkmakefile.c |  48 +++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 44 insertions(+), 4 deletions(-)

diffs (85 lines):

diff -r 36ee32de2e8f -r a822c5b3c0c4 usr.bin/config/mkmakefile.c
--- a/usr.bin/config/mkmakefile.c       Mon Dec 15 13:50:10 2014 +0000
+++ b/usr.bin/config/mkmakefile.c       Mon Dec 15 15:41:18 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: mkmakefile.c,v 1.35 2014/12/15 10:10:24 uebayasi Exp $ */
+/*     $NetBSD: mkmakefile.c,v 1.36 2014/12/15 15:41:18 uebayasi Exp $ */
 
 /*
  * Copyright (c) 1992, 1993
@@ -45,7 +45,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: mkmakefile.c,v 1.35 2014/12/15 10:10:24 uebayasi Exp $");
+__RCSID("$NetBSD: mkmakefile.c,v 1.36 2014/12/15 15:41:18 uebayasi Exp $");
 
 #include <sys/param.h>
 #include <ctype.h>
@@ -86,6 +86,8 @@
 static void emitsubs(FILE *, const char *, const char *, int);
 static int  selectopt(const char *, void *);
 
+int has_build_kernel;
+
 int
 mkmakefile(void)
 {
@@ -95,7 +97,32 @@
        char *ifname;
        char line[BUFSIZ], buf[200];
 
-       /* Try a makefile for the port first.
+       /*
+        * Check if conf/Makefile.kern.inc defines "build_kernel".
+        *
+        * (This is usually done by checking "version" in sys/conf/files;
+        * unfortunately the "build_kernel" change done around 2014 Aug didn't
+        * bump that version.  Thus this hack.)
+        */
+       (void)snprintf(buf, sizeof(buf), "conf/Makefile.kern.inc");
+       ifname = sourcepath(buf);
+       if ((ifp = fopen(ifname, "r")) != NULL) {
+               while (fgets(line, sizeof(line), ifp) != NULL) {
+                       fputc('+', stderr);
+                       if (strncmp(line, "build_kernel:", 13) == 0) {
+                               has_build_kernel = 1;
+                               break;
+                       }
+               }
+       }
+       if (ifp == NULL) {
+               warn("cannot read %s", ifname);
+               goto bad2;
+       }
+       (void)fclose(ifp);
+
+       /*
+        * Try a makefile for the port first.
         */
        (void)snprintf(buf, sizeof(buf), "arch/%s/conf/Makefile.%s",
            machine, machine);
@@ -579,9 +606,22 @@
                        fprintf(fp, " .WAIT");
        }
        fputs("\n\n", fp);
+       /*
+        * Generate the backward-compatible "build_kernel" rule if
+        * sys/conf/Makefile.kern.inc doesn't define any (pre-2014 Aug).
+        */
+       if (has_build_kernel == 0) {
+               fprintf(fp, "build_kernel: .USE\n"
+                   "\t${SYSTEM_LD_HEAD}\n"
+                   "\t${SYSTEM_LD} swap${.TARGET}.o\n"
+                   "\t${SYSTEM_LD_TAIL}\n"
+                   "\n");
+       }
+       /*
+        * Generate per-kernel rules.
+        */
        TAILQ_FOREACH(cf, &allcf, cf_next) {
                fprintf(fp, "KERNELS+=%s\n", cf->cf_name);
-               fprintf(fp, "build_kernel:\n");
                fprintf(fp, "%s: ${SYSTEM_DEP} swap%s.o vers.o build_kernel\n",
                    cf->cf_name, cf->cf_name);
                fprintf(fp, "swap%s.o: swap%s.c\n"



Home | Main Index | Thread Index | Old Index