make(1): Create custom variable .MAKE.BUILT.BY
authorJohn Marino <draco@marino.st>
Mon, 16 Feb 2015 10:57:04 +0000 (11:57 +0100)
committerJohn Marino <draco@marino.st>
Mon, 16 Feb 2015 12:02:20 +0000 (13:02 +0100)
The value of .MAKE.BUILT.BY is normally either "gcc47" or "gcc50"
depending on which base compiler built the DragonFly world.  It could
also be any valid CCVER for a dports compiler such as "clang35".

This capability is needed to handle the c++ ABI change that has been
introduced by gcc50.  The problem hits when gcc50 is used to build when
the system libraries have been built by gcc47.  The sys.mk file will
need .MAKE.BUILT.BY to adjust c++ flags appropriately.

contrib/bmake/bmake.1
contrib/bmake/main.c
usr.bin/bmake/Makefile

index 23a3035..bfa8676 100644 (file)
@@ -897,6 +897,9 @@ The process-id of
 .It Va .MAKE.PPID
 The parent process-id of
 .Nm .
+.It Va .MAKE.BUILT.BY
+The compiler CCVER that built the
+.Dx world.
 .It Va MAKE_PRINT_VAR_ON_ERROR
 When
 .Nm
index fb35601..1a8b5b3 100644 (file)
@@ -1042,6 +1042,7 @@ main(int argc, char **argv)
            Var_Set(".MAKE.PID", tmp, VAR_GLOBAL, 0);
            snprintf(tmp, sizeof(tmp), "%u", getppid());
            Var_Set(".MAKE.PPID", tmp, VAR_GLOBAL, 0);
+           Var_Set(".MAKE.BUILT.BY", CCVER, VAR_GLOBAL, 0);
        }
        if (makelevel > 0) {
                char pn[1024];
index 88323a1..fb8faeb 100644 (file)
@@ -39,6 +39,7 @@ CFLAGS+=      -I${.CURDIR}
 CFLAGS+=       -I${.OBJDIR}
 CFLAGS+=       -I${srcdir}
 CFLAGS+=       -DHAVE_CONFIG_H
+CFLAGS+=       -DCCVER=\"${CCVER}\"
 CFLAGS+=       ${XDEFS}
 CFLAGS+=       ${CFLAGS_${.TARGET:T}} 
 CFLAGS+=       ${COPTS.${.ALLSRC:M*.c:T}}