summaryrefslogtreecommitdiffstats
path: root/share/mk
diff options
context:
space:
mode:
Diffstat (limited to 'share/mk')
-rw-r--r--share/mk/bsd.crunchgen.mk2
-rw-r--r--share/mk/bsd.dep.mk7
-rw-r--r--share/mk/bsd.obj.mk7
-rw-r--r--share/mk/bsd.subdir.mk4
-rw-r--r--share/mk/bsd.sys.mk15
-rw-r--r--share/mk/sys.mk15
6 files changed, 46 insertions, 4 deletions
diff --git a/share/mk/bsd.crunchgen.mk b/share/mk/bsd.crunchgen.mk
index 80d337f..95f1aa3 100644
--- a/share/mk/bsd.crunchgen.mk
+++ b/share/mk/bsd.crunchgen.mk
@@ -38,6 +38,8 @@ OUTPUTS=$(OUTMK) $(OUTC) $(PROG).cache
CRUNCHOBJS= ${.OBJDIR}
.if defined(MAKEOBJDIRPREFIX)
CANONICALOBJDIR:= ${MAKEOBJDIRPREFIX}${.CURDIR}
+.elif defined(MAKEOBJDIR) && ${MAKEOBJDIR:M/*} != ""
+CANONICALOBJDIR:=${MAKEOBJDIR}
.else
CANONICALOBJDIR:= /usr/obj${.CURDIR}
.endif
diff --git a/share/mk/bsd.dep.mk b/share/mk/bsd.dep.mk
index 5e4ec0b..deac736 100644
--- a/share/mk/bsd.dep.mk
+++ b/share/mk/bsd.dep.mk
@@ -102,8 +102,8 @@ ${_YC} y.tab.h: ${_YSRC}
CLEANFILES+= y.tab.c y.tab.h
.elif !empty(YFLAGS:M-d)
.for _YH in ${_YC:R}.h
-.ORDER: ${_YC} ${_YH}
-${_YC} ${_YH}: ${_YSRC}
+${_YH}: ${_YC}
+${_YC}: ${_YSRC}
${YACC} ${YFLAGS} -o ${_YC} ${.ALLSRC}
SRCS+= ${_YH}
CLEANFILES+= ${_YH}
@@ -123,6 +123,9 @@ ${_YC:R}.o: ${_YC}
.if defined(SRCS)
depend: beforedepend ${DEPENDFILE} afterdepend
+# Tell bmake not to look for generated files via .PATH
+.NOPATH: ${DEPENDFILE}
+
# Different types of sources are compiled with slightly different flags.
# Split up the sources, and filter out headers and non-applicable flags.
MKDEP_CFLAGS= ${CFLAGS:M-nostdinc*} ${CFLAGS:M-[BIDU]*} ${CFLAGS:M-std=*} \
diff --git a/share/mk/bsd.obj.mk b/share/mk/bsd.obj.mk
index bd8f2aa..634261e 100644
--- a/share/mk/bsd.obj.mk
+++ b/share/mk/bsd.obj.mk
@@ -44,6 +44,8 @@ __<bsd.obj.mk>__:
.if defined(MAKEOBJDIRPREFIX)
CANONICALOBJDIR:=${MAKEOBJDIRPREFIX}${.CURDIR}
+.elif defined(MAKEOBJDIR) && ${MAKEOBJDIR:M/*} != ""
+CANONICALOBJDIR:=${MAKEOBJDIR}
.else
CANONICALOBJDIR:=/usr/obj${.CURDIR}
.endif
@@ -116,6 +118,11 @@ cleanobj: clean cleandepend
.endif
@if [ -L ${.CURDIR}/obj ]; then rm -f ${.CURDIR}/obj; fi
+# Tell bmake not to look for generated files via .PATH
+.if !empty(CLEANFILES)
+.NOPATH: ${CLEANFILES}
+.endif
+
.if !target(clean)
clean:
.if defined(CLEANFILES) && !empty(CLEANFILES)
diff --git a/share/mk/bsd.subdir.mk b/share/mk/bsd.subdir.mk
index dc5af72..a66ab9b 100644
--- a/share/mk/bsd.subdir.mk
+++ b/share/mk/bsd.subdir.mk
@@ -42,7 +42,7 @@ distribute:
_SUBDIR: .USE
.if defined(SUBDIR) && !empty(SUBDIR) && !defined(NO_SUBDIR)
- @${_+_}for entry in ${SUBDIR}; do \
+ @${_+_}set -e; for entry in ${SUBDIR}; do \
if test -d ${.CURDIR}/$${entry}.${MACHINE_ARCH}; then \
${ECHODIR} "===> ${DIRPRFX}$${entry}.${MACHINE_ARCH} (${.TARGET:realinstall=install})"; \
edir=$${entry}.${MACHINE_ARCH}; \
@@ -79,7 +79,7 @@ ${__stage}${__target}: _SUBDIR
.endif
.endfor
${__target}:
- ${_+_}cd ${.CURDIR}; ${MAKE} build${__target}; ${MAKE} install${__target}
+ ${_+_}set -e; cd ${.CURDIR}; ${MAKE} build${__target}; ${MAKE} install${__target}
.endfor
.if !target(install)
diff --git a/share/mk/bsd.sys.mk b/share/mk/bsd.sys.mk
index cc752a2..847e571 100644
--- a/share/mk/bsd.sys.mk
+++ b/share/mk/bsd.sys.mk
@@ -126,3 +126,18 @@ CFLAGS+= ${SSP_CFLAGS}
# Allow user-specified additional warning flags
CFLAGS+= ${CWARNFLAGS}
+
+
+# Tell bmake not to mistake standard targets for things to be searched for
+# or expect to ever be up-to-date.
+PHONY_NOTMAIN = afterdepend afterinstall all beforedepend beforeinstall \
+ beforelinking build build-tools buildfiles buildincludes \
+ checkdpadd clean cleandepend cleandir cleanobj configure \
+ depend dependall distclean distribute exe extract fetch \
+ html includes install installfiles installincludes lint \
+ obj objlink objs objwarn patch realall realdepend \
+ realinstall regress subdir-all subdir-depend subdir-install \
+ tags whereobj
+
+.PHONY: ${PHONY_NOTMAIN}
+.NOTMAIN: ${PHONY_NOTMAIN}
diff --git a/share/mk/sys.mk b/share/mk/sys.mk
index 3c43ff4..0e8dc95 100644
--- a/share/mk/sys.mk
+++ b/share/mk/sys.mk
@@ -16,6 +16,10 @@ unix ?= We run FreeBSD, not UNIX.
MACHINE_CPUARCH=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/powerpc64/powerpc/}
.endif
+# Set any local definitions first. Place this early, but it needs
+# MACHINE_CPUARCH to be defined.
+.sinclude <local.sys.mk>
+
# If the special target .POSIX appears (without prerequisites or
# commands) before the first noncomment line in the makefile, make shall
# process the makefile as specified by the Posix 1003.2 specification.
@@ -324,8 +328,19 @@ SHELL= ${__MAKE_SHELL}
# XXX hint for bsd.port.mk
OBJFORMAT?= elf
+# Tell bmake to expand -V VAR by default
+.MAKE.EXPAND_VARIABLES= yes
+
+.if !defined(.PARSEDIR)
+# We are not bmake, which is more aggressive about searching .PATH
+# It is sometime necessary to curb its enthusiasm with .NOPATH
+# The following allows us to quietly ignore .NOPATH when not using bmake.
+.NOTMAIN: .NOPATH
+.NOPATH:
+
# Toggle on warnings
.WARN: dirsyntax
+.endif
.endif
OpenPOWER on IntegriCloud