Do not specify the -B option when executing the sub-make. In the BSD
authorMatthew Dillon <dillon@dragonflybsd.org>
Sat, 8 Jan 2005 11:58:46 +0000 (11:58 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Sat, 8 Jan 2005 11:58:46 +0000 (11:58 +0000)
make, -B is a compatibility option to execute shell commands one per line.
In GNU make (as of vers 3.80) -B is --always-make, which forces all targets
to be made regardless of whether they are out of date or not.

Since both GNU make and our make use MAKEFLAGS to pass build flags between
invocations, -B gets propogated down the chain into the gnu make and blows
everything to itsy bitsy little pieces.

share/mk/bsd.port.mk

index aee19e1..b902884 100644 (file)
@@ -1,5 +1,5 @@
 # $FreeBSD: src/share/mk/bsd.port.mk,v 1.303.2.2 2002/07/17 19:08:23 ru Exp $
-# $DragonFly: src/share/mk/Attic/bsd.port.mk,v 1.23 2004/11/28 22:29:19 joerg Exp $
+# $DragonFly: src/share/mk/Attic/bsd.port.mk,v 1.24 2005/01/08 11:58:46 dillon Exp $
 
 PORTSDIR?=     /usr/ports
 DFPORTSDIR?=   /usr/dfports
@@ -81,6 +81,12 @@ TARGETS+=    reinstall
 TARGETS+=      install
 TARGETS+=      tags
 
+# WARNING!  Do not use the -B option.  This appears to propogate to the
+# gmake (probably because both use the same environment variable, MAKEFLAGS,
+# to pass make options) where as of version 3.80 -B means 'always-make',
+# which forces all targets, which blows up gnu builds in the ports system
+# because it appears to cause the configure.status target to loop.
+#
 .if !defined(_DFPORTS_REDIRECT)
 _DFPORTS_REDIRECT=
 .if !make(package-depends-list) && !make(all-depends-list) && \
@@ -88,10 +94,10 @@ _DFPORTS_REDIRECT=
     !make(describe)
 .BEGIN:
        @echo "WARNING, USING DRAGONFLY OVERRIDE ${DFPORTSDIR}/${PORTPATH}"
-       cd ${DFPORTSDIR}/${PORTPATH} && ${MAKE} -B ${.TARGETS}
+       cd ${DFPORTSDIR}/${PORTPATH} && ${MAKE} ${.TARGETS}
 .else
 .BEGIN:
-       @cd ${DFPORTSDIR}/${PORTPATH} && ${MAKE} -B ${.TARGETS} 
+       @cd ${DFPORTSDIR}/${PORTPATH} && ${MAKE} ${.TARGETS} 
 .endif
 .endif