aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Moolenaar <marcel@FreeBSD.org>2003-08-28 04:03:13 +0000
committerMarcel Moolenaar <marcel@FreeBSD.org>2003-08-28 04:03:13 +0000
commitd911f786ab7c711235b2e883bd05895313e95c92 (patch)
treeadd85d530c4cf52fa674167a37c2e0773cd41ef5
parentc8fb1af26cd65cad3b759a95fa2915af2b940c48 (diff)
downloadsrc-d911f786ab7c711235b2e883bd05895313e95c92.tar.gz
src-d911f786ab7c711235b2e883bd05895313e95c92.zip
Limit testing for an up-to-date version of make(1) to the world and
buildworld targets by default, but allow it to be done for all user targets by introducing a boolean option, named ALWAYS_CHECK_MAKE. This change is by no means perfect and I don't even want to claim this to be a solution. It does however address the fact that not everybody likes to see make(1) rebuilt simply because the regression test failed for some reason or other, including pilot error. It therefore serves the purpose of keeping the crowd happy until we have something better or simply reached a compromise. The reasons for changing the default behaviour are: o It avoids a negative, possibly non-intuitive option, o It's according to POLA and fond of feet, o Only buildworld is documented to do its best to be successful at reasonably cost. Reviewed by: gad, imp, obrien, peter
Notes
Notes: svn path=/head/; revision=119519
-rw-r--r--Makefile15
-rw-r--r--share/man/man5/make.conf.510
2 files changed, 24 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index cf2cd387223e..b808c3fe378b 100644
--- a/Makefile
+++ b/Makefile
@@ -87,9 +87,22 @@ BINMAKE= \
_MAKE= PATH=${PATH} ${BINMAKE} -f Makefile.inc1
#
-# Handle the user-driven targets, using the source relative mk files.
+# Make sure we have an up-to-date make(1). Only world and buildworld
+# should do this as those are the initial targets used for upgrades.
+# The user can define ALWAYS_CHECK_MAKE to have this check performed
+# for all targets.
#
+.if defined(ALWAYS_CHECK_MAKE)
${TGTS} ${BITGTS}: upgrade_checks
+.else
+buildworld: upgrade_checks
+.endif
+
+#
+# Handle the user-driven targets, using the source relative mk files.
+#
+
+${TGTS} ${BITGTS}:
@cd ${.CURDIR}; \
${_MAKE} ${.TARGET}
diff --git a/share/man/man5/make.conf.5 b/share/man/man5/make.conf.5
index ebac979e945f..445edca99a46 100644
--- a/share/man/man5/make.conf.5
+++ b/share/man/man5/make.conf.5
@@ -93,6 +93,16 @@ that are used for all builds, or are used by the
.Pa makefiles
for things other than builds.
.Bl -tag -width Ar
+.It Va ALWAYS_CHECK_MAKE
+.Pq Vt bool
+Instructs the top-level makefile in the source tree (normally
+.Pa /usr/src )
+to always check if
+.Xr make 1
+is up-to-date.
+Normally this is only done for the world and buildworld targets to handle
+upgrades from older versions of
+.Fx .
.It Va CFLAGS
.Pq Vt str
Controls the compiler setting when compiling C code.