Submit #2606 » 0001-update-to-bmake-20131001.patch
| contrib/bmake/ChangeLog | ||
|---|---|---|
|
2013-10-01 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile (MAKE_VERSION): 20131001
|
||
|
Merge with NetBSD make, pick up
|
||
|
o main.c: for NATIVE build sysctl to get MACHINE_ARCH from
|
||
|
hw.machine_arch if necessary.
|
||
|
o meta.c: meta_oodate - need to look at src of Link and target
|
||
|
of Move as well.
|
||
|
* main.c: check that CTL_HW and HW_MACHINE_ARCH exist.
|
||
|
provide __arraycount() if needed.
|
||
|
2013-09-04 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile (MAKE_VERSION): 20130904
|
||
|
Merge with NetBSD make, pick up
|
||
|
o Add VAR_INTERNAL context, so that internal setting of
|
||
|
MAKEFILE does not override value set by makefiles.
|
||
|
2013-09-02 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile (MAKE_VERSION): 20130902
|
||
|
Merge with NetBSD make, pick up
|
||
|
o CompatRunCommand: only apply shellErrFlag when errCheck is true
|
||
|
2013-08-28 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile (MAKE_VERSION): 20130828
|
||
|
Merge with NetBSD make, pick up
|
||
|
o Fix VAR :sh = syntax from Will Andrews at freebsd.org
|
||
|
o Call Job_SetPrefix() from Job_Init() so makefiles have
|
||
|
opportunity to set .MAKE.JOB.PREFIX
|
||
|
2013-07-30 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile (MAKE_VERSION): 20130730
|
||
|
Merge with NetBSD make, pick up
|
||
|
o Allow suppression of --- job -- tokens by setting
|
||
|
.MAKE.JOB.PREFIX empty.
|
||
|
2013-07-16 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile (MAKE_VERSION): 20130716
|
||
|
Merge with NetBSD make, pick up
|
||
|
o number of gmake compatability tweaks
|
||
|
-w for gmake style entering/leaving messages
|
||
|
if .MAKE.LEVEL > 0 indicate it in progname "make[1]" etc.
|
||
|
handle MAKEFLAGS containing only letters.
|
||
|
o when overriding a GLOBAL variable on the command line,
|
||
|
delete it from GLOBAL context so -V doesn't show the wrong
|
||
|
value.
|
||
|
|
||
|
2013-07-06 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* configure.in: We don't need MAKE_LEVEL_SAFE anymore.
|
||
|
* Makefile (MAKE_VERSION): 20130706
|
||
|
Merge with NetBSD make, pick up
|
||
|
o Shell_Init(): export shellErrFlag if commandShell hasErrCtl is
|
||
|
true so that CompatRunCommand() can use it, to ensure
|
||
|
consistent behavior with jobs mode.
|
||
|
o use MAKE_LEVEL_ENV to define the variable to propagate
|
||
|
.MAKE.LEVEL - currently set to MAKELEVEL (same as gmake).
|
||
|
o meta.c: use .MAKE.META.IGNORE_PATHS to allow customization of
|
||
|
paths to ignore.
|
||
|
2013-06-04 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile (MAKE_VERSION): 20130604
|
||
|
Merge with NetBSD make, pick up
|
||
|
o job.c: JobCreatePipe: do fcntl() after any tweaking of fd's
|
||
|
to avoid leaking descriptors.
|
||
|
2013-05-28 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile (MAKE_VERSION): 20130528
|
||
|
Merge with NetBSD make, pick up
|
||
|
o var.c: cleanup some left-overs in VarHash()
|
||
|
2013-05-20 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile (MAKE_VERSION): 20130520
|
||
|
generate manifest from component FILES rather than have to
|
||
|
update FILES when mk/FILES changes.
|
||
|
2013-05-18 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile (MAKE_VERSION): 20130518
|
||
|
Merge with NetBSD make, pick up
|
||
|
o suff.c: don't skip all processsing for .PHONY targets
|
||
|
else wildcard srcs do not get expanded.
|
||
|
o var.c: expand name of variable to delete if necessary.
|
||
|
2013-03-30 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile (MAKE_VERSION): 20130330
|
||
|
Merge with NetBSD make, pick up
|
||
|
o meta.c: refine the handling of .OODATE in commands.
|
||
|
Rather than suppress command comparison for the entire script
|
||
|
as though .NOMETA_CMP had been used, only suppress it for the
|
||
|
one command line.
|
||
|
This allows something like ${.OODATE:M.NOMETA_CMP} to be used to
|
||
|
suppress comparison of a command without otherwise affecting it.
|
||
|
o make.1: document that
|
||
|
2013-03-22 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile (MAKE_VERSION): 20130321
|
||
|
yes, not quite right but its a cooler number.
|
||
|
Merge with NetBSD make, pick up
|
||
|
o parse.c: fix ParseGmakeExport to be portable
|
||
|
and add a unit-test.
|
||
|
* meta.c: call meta_init() before makefiles are read and if built
|
||
|
with filemon support set .MAKE.PATH_FILEMON to _PATH_FILEMON
|
||
|
this let's makefiles test for support.
|
||
|
Call meta_mode_init() to process .MAKE.MODE.
|
||
|
2013-03-13 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile (MAKE_VERSION): 20130305
|
||
|
Merge with NetBSD make, pick up
|
||
|
o run .STALE: target when a dependency from .depend is missing.
|
||
|
o job.c: add Job_RunTarget() for the above and .BEGIN
|
||
|
2013-03-03 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile (MAKE_VERSION): 20130303
|
||
|
Merge with NetBSD make, pick up
|
||
|
o main.c: set .MAKE.OS to utsname.sysname
|
||
|
o job.c: more checks for read and poll errors
|
||
|
o var.c: lose VarChangeCase() saves 4% time
|
||
|
2013-03-02 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* boot-strap: remove MAKEOBJDIRPREFIX from environment since we
|
||
|
want to use MAKEOBJDIR
|
||
|
2013-01-27 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Merge with NetBSD make, pick up
|
||
|
o make.1: more info on how shell commands are handled.
|
||
|
o job.c,main.c: detect write errors to job pipes.
|
||
|
2013-01-25 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile (MAKE_VERSION): 20130123
|
||
|
Merge with NetBSD make, pick up
|
||
|
o meta.c: if script uses .OODATE and meta_oodate() decides
|
||
|
rebuild is needed, .OODATE will be empty - set it to .ALLSRC.
|
||
|
o var.c: in debug output indicate which variabale modifiers
|
||
|
apply to.
|
||
|
o remove Check_Cwd logic the makefiles have been fixed.
|
||
|
|
||
|
2012-12-12 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* makefile.in: add a simple makefile for folk who insist on
|
||
|
./configure; make; make install
|
||
|
it just runs boot-strap
|
||
|
* include mk/* to accommodate the above
|
||
|
* boot-strap: re-work to accommodate the above
|
||
|
mksrc defaults to $Mydir/mk
|
||
|
allow op={configure,build,install,clean,all}
|
||
|
add options to facilitate install
|
||
|
* Makefile.config.in: just the bits set by configure
|
||
|
* Makefile: bump version to 20121212
|
||
|
abandon Makefile.in (NetBSD Makefile)
|
||
|
leverage mk/* instead
|
||
|
* configure.in: ensure srcdir is absolute
|
||
|
2012-11-11 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile.in (MAKE_VERSION): 20121111
|
||
|
fix generation of bmake.cat1
|
||
|
2012-11-09 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile.in (MAKE_VERSION): 20121109
|
||
|
Merge with NetBSD make, pick up
|
||
|
o make.c: MakeBuildChild: return 0 so search continues if a
|
||
|
.ORDER dependency is detected.
|
||
|
o unit-tests/order: test the above
|
||
|
|
||
|
2012-11-02 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile.in (MAKE_VERSION): 20121102
|
||
|
Merge with NetBSD make, pick up
|
||
|
o cond.c: allow cond_state[] to grow.
|
||
|
In meta mode with a very large tree, we can hit the limit
|
||
|
while processing dirdeps.
|
||
|
|
||
|
2012-10-25 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile.in: we need to use ${srcdir} not ${.CURDIR}
|
||
|
2012-10-10 Simon J. Gerraty <sjg@bad.crufty.net>
|
||
|
* Makefile.in (MAKE_VERSION): 20121010
|
||
| contrib/bmake/FILES | ||
|---|---|---|
|
FILES
|
||
|
ChangeLog
|
||
|
bmake.cat1
|
||
|
boot-strap
|
||
|
bsd.after-import.mk
|
||
|
os.sh
|
||
|
Makefile.in
|
||
|
FILES
|
||
|
Makefile
|
||
|
Makefile.config.in
|
||
|
PSD.doc/Makefile
|
||
|
PSD.doc/tutorial.ms
|
||
|
README
|
||
|
aclocal.m4
|
||
|
arch.c
|
||
|
bmake.1
|
||
|
bmake.cat1
|
||
|
boot-strap
|
||
|
bsd.after-import.mk
|
||
|
buf.c
|
||
|
buf.h
|
||
|
compat.c
|
||
|
cond.c
|
||
|
make-conf.h
|
||
|
make_malloc.c
|
||
|
make_malloc.h
|
||
|
config.h.in
|
||
|
configure
|
||
|
aclocal.m4
|
||
|
configure.in
|
||
|
dir.c
|
||
|
dir.h
|
||
|
dirname.c
|
||
|
find_lib.sh
|
||
|
for.c
|
||
|
getopt.c
|
||
| ... | ... | |
|
install-sh
|
||
|
job.c
|
||
|
job.h
|
||
|
meta.c
|
||
|
meta.h
|
||
|
dirname.c
|
||
|
realpath.c
|
||
|
strlcpy.c
|
||
|
strlist.c
|
||
|
strlist.h
|
||
|
stresep.c
|
||
|
trace.c
|
||
|
trace.h
|
||
|
lst.h
|
||
|
lst.lib/Makefile
|
||
|
lst.lib/lstAppend.c
|
||
| ... | ... | |
|
lst.lib/lstSucc.c
|
||
|
machine.sh
|
||
|
main.c
|
||
|
make-bootstrap.sh.in
|
||
|
make-conf.h
|
||
|
make.1
|
||
|
bmake.1
|
||
|
make.c
|
||
|
make.h
|
||
|
make-bootstrap.sh.in
|
||
|
make_malloc.c
|
||
|
make_malloc.h
|
||
|
makefile.in
|
||
|
meta.c
|
||
|
meta.h
|
||
|
missing/sys/cdefs.h
|
||
|
mkdeps.sh
|
||
|
nonints.h
|
||
|
os.sh
|
||
|
parse.c
|
||
|
pathnames.h
|
||
|
ranlib.h
|
||
|
realpath.c
|
||
|
setenv.c
|
||
|
sigcompat.c
|
||
|
sprite.h
|
||
|
str.c
|
||
|
stresep.c
|
||
|
strlcpy.c
|
||
|
strlist.c
|
||
|
strlist.h
|
||
|
suff.c
|
||
|
targ.c
|
||
|
util.c
|
||
|
var.c
|
||
|
wait.h
|
||
|
trace.c
|
||
|
trace.h
|
||
|
unit-tests/Makefile.in
|
||
|
unit-tests/comment
|
||
|
unit-tests/cond1
|
||
| ... | ... | |
|
unit-tests/error
|
||
|
unit-tests/export
|
||
|
unit-tests/export-all
|
||
|
unit-tests/export-env
|
||
|
unit-tests/forloop
|
||
|
unit-tests/forsubst
|
||
|
unit-tests/hash
|
||
| ... | ... | |
|
unit-tests/modorder
|
||
|
unit-tests/modts
|
||
|
unit-tests/modword
|
||
|
unit-tests/order
|
||
|
unit-tests/phony-end
|
||
|
unit-tests/posix
|
||
|
unit-tests/qequals
|
||
|
unit-tests/sunshcmd
|
||
|
unit-tests/sysv
|
||
|
unit-tests/ternary
|
||
|
unit-tests/test.exp
|
||
|
unit-tests/unexport
|
||
|
unit-tests/unexport-env
|
||
|
unit-tests/varcmd
|
||
|
util.c
|
||
|
var.c
|
||
|
wait.h
|
||
| contrib/bmake/Makefile | ||
|---|---|---|
|
# $Id: Makefile,v 1.21 2013/10/01 15:44:05 sjg Exp $
|
||
|
# Base version on src date
|
||
|
MAKE_VERSION= 20131001
|
||
|
PROG= bmake
|
||
|
SRCS= \
|
||
|
arch.c \
|
||
|
buf.c \
|
||
|
compat.c \
|
||
|
cond.c \
|
||
|
dir.c \
|
||
|
for.c \
|
||
|
hash.c \
|
||
|
job.c \
|
||
|
main.c \
|
||
|
make.c \
|
||
|
make_malloc.c \
|
||
|
meta.c \
|
||
|
parse.c \
|
||
|
str.c \
|
||
|
strlist.c \
|
||
|
suff.c \
|
||
|
targ.c \
|
||
|
trace.c \
|
||
|
util.c \
|
||
|
var.c
|
||
|
# from lst.lib/
|
||
|
SRCS+= \
|
||
|
lstAppend.c \
|
||
|
lstAtEnd.c \
|
||
|
lstAtFront.c \
|
||
|
lstClose.c \
|
||
|
lstConcat.c \
|
||
|
lstDatum.c \
|
||
|
lstDeQueue.c \
|
||
|
lstDestroy.c \
|
||
|
lstDupl.c \
|
||
|
lstEnQueue.c \
|
||
|
lstFind.c \
|
||
|
lstFindFrom.c \
|
||
|
lstFirst.c \
|
||
|
lstForEach.c \
|
||
|
lstForEachFrom.c \
|
||
|
lstInit.c \
|
||
|
lstInsert.c \
|
||
|
lstIsAtEnd.c \
|
||
|
lstIsEmpty.c \
|
||
|
lstLast.c \
|
||
|
lstMember.c \
|
||
|
lstNext.c \
|
||
|
lstOpen.c \
|
||
|
lstPrev.c \
|
||
|
lstRemove.c \
|
||
|
lstReplace.c \
|
||
|
lstSucc.c
|
||
|
# this file gets generated by configure
|
||
|
.-include "Makefile.config"
|
||
|
.if !empty(LIBOBJS)
|
||
|
SRCS+= ${LIBOBJS:T:.o=.c}
|
||
|
.endif
|
||
|
# just in case
|
||
|
prefix?= /usr
|
||
|
srcdir?= ${.CURDIR}
|
||
|
DEFAULT_SYS_PATH?= .../share/mk:${prefix}/share/mk
|
||
|
CPPFLAGS+= -DUSE_META
|
||
|
CFLAGS+= ${CPPFLAGS}
|
||
|
CFLAGS+= -D_PATH_DEFSYSPATH=\"${DEFAULT_SYS_PATH}\"
|
||
|
CFLAGS+= -I. -I${srcdir} ${XDEFS} -DMAKE_NATIVE
|
||
|
CFLAGS+= ${COPTS.${.ALLSRC:M*.c:T:u}}
|
||
|
COPTS.main.c+= "-DMAKE_VERSION=\"${MAKE_VERSION}\""
|
||
|
# meta mode can be useful even without filemon
|
||
|
FILEMON_H ?= /usr/include/dev/filemon/filemon.h
|
||
|
.if exists(${FILEMON_H}) && ${FILEMON_H:T} == "filemon.h"
|
||
|
COPTS.meta.c += -DHAVE_FILEMON_H -I${FILEMON_H:H}
|
||
|
.endif
|
||
|
.PATH: ${srcdir}
|
||
|
.PATH: ${srcdir}/lst.lib
|
||
|
.if make(obj) || make(clean)
|
||
|
SUBDIR+= unit-tests
|
||
|
.endif
|
||
|
# start-delete1 for bsd.after-import.mk
|
||
|
# we skip a lot of this when building as part of FreeBSD etc.
|
||
|
# list of OS's which are derrived from BSD4.4
|
||
|
BSD44_LIST= NetBSD FreeBSD OpenBSD DragonFly
|
||
|
# we are...
|
||
|
OS!= uname -s
|
||
|
# are we 4.4BSD ?
|
||
|
isBSD44:=${BSD44_LIST:M${OS}}
|
||
|
.if ${isBSD44} == ""
|
||
|
MANTARGET= cat
|
||
|
INSTALL?=${srcdir}/install-sh
|
||
|
.if (${MACHINE} == "sun386")
|
||
|
# even I don't have one of these anymore :-)
|
||
|
CFLAGS+= -DPORTAR
|
||
|
.elif (${MACHINE} != "sunos")
|
||
|
SRCS+= sigcompat.c
|
||
|
CFLAGS+= -DSIGNAL_FLAGS=SA_RESTART
|
||
|
.endif
|
||
|
.else
|
||
|
MANTARGET?= man
|
||
|
.endif
|
||
|
# turn this on by default - ignored if we are root
|
||
|
WITH_INSTALL_AS_USER=
|
||
|
# supress with -DWITHOUT_*
|
||
|
OPTIONS_DEFAULT_YES+= \
|
||
|
AUTOCONF_MK \
|
||
|
INSTALL_MK \
|
||
|
PROG_LINK
|
||
|
OPTIONS_DEFAULT_NO+= \
|
||
|
PROG_VERSION
|
||
|
# process options now
|
||
|
.include <own.mk>
|
||
|
.if ${MK_PROG_VERSION} == "yes"
|
||
|
PROG_NAME= ${PROG}-${MAKE_VERSION}
|
||
|
.if ${MK_PROG_LINK} == "yes"
|
||
|
SYMLINKS+= ${PROG}-${MAKE_VERSION} ${BINDIR}/${PROG}
|
||
|
.endif
|
||
|
.endif
|
||
|
EXTRACT_MAN=no
|
||
|
# end-delete1
|
||
|
MAN= ${PROG}.1
|
||
|
MAN1= ${MAN}
|
||
|
.if (${PROG} != "make")
|
||
|
CLEANFILES+= my.history
|
||
|
.if make(${MAN}) || !exists(${srcdir}/${MAN})
|
||
|
my.history: ${MAKEFILE}
|
||
|
@(echo ".Nm"; \
|
||
|
echo "is derived from NetBSD"; \
|
||
|
echo ".Xr make 1 ."; \
|
||
|
echo "It uses autoconf to facilitate portability to other platforms."; \
|
||
|
echo ".Pp") > $@
|
||
|
.NOPATH: ${MAN}
|
||
|
${MAN}: make.1 my.history
|
||
|
@echo making $@
|
||
|
@sed -e 's/^.Nx/NetBSD/' -e '/^.Nm/s/make/${PROG}/' \
|
||
|
-e '/^.Sh HISTORY/rmy.history' \
|
||
|
-e '/^.Sh HISTORY/,$$s,^.Nm,make,' ${srcdir}/make.1 > $@
|
||
|
all beforeinstall: ${MAN}
|
||
|
_mfromdir=.
|
||
|
.endif
|
||
|
.endif
|
||
|
MANTARGET?= cat
|
||
|
MANDEST?= ${MANDIR}/${MANTARGET}1
|
||
|
.if ${MANTARGET} == "cat"
|
||
|
_mfromdir=${srcdir}
|
||
|
.endif
|
||
|
.include <prog.mk>
|
||
|
CPPFLAGS+= -DMAKE_NATIVE -DHAVE_CONFIG_H
|
||
|
COPTS.var.c += -Wno-cast-qual
|
||
|
COPTS.job.c += -Wno-format-nonliteral
|
||
|
COPTS.parse.c += -Wno-format-nonliteral
|
||
|
COPTS.var.c += -Wno-format-nonliteral
|
||
|
# Force these
|
||
|
SHAREDIR= ${prefix}/share
|
||
|
BINDIR= ${prefix}/bin
|
||
|
MANDIR= ${SHAREDIR}/man
|
||
|
.if !exists(.depend)
|
||
|
${OBJS}: config.h
|
||
|
.endif
|
||
|
# make sure that MAKE_VERSION gets updated.
|
||
|
main.o: ${SRCS} ${MAKEFILE}
|
||
|
# start-delete2 for bsd.after-import.mk
|
||
|
.if ${MK_AUTOCONF_MK} == "yes"
|
||
|
.include <autoconf.mk>
|
||
|
.endif
|
||
|
SHARE_MK?=${SHAREDIR}/mk
|
||
|
MKSRC=${srcdir}/mk
|
||
|
INSTALL?=${srcdir}/install-sh
|
||
|
.if ${MK_INSTALL_MK} == "yes"
|
||
|
install: install-mk
|
||
|
.endif
|
||
|
beforeinstall:
|
||
|
test -d ${DESTDIR}${BINDIR} || ${INSTALL} -m 775 -d ${DESTDIR}${BINDIR}
|
||
|
test -d ${DESTDIR}${MANDEST} || ${INSTALL} -m 775 -d ${DESTDIR}${MANDEST}
|
||
|
install-mk:
|
||
|
.if exists(${MKSRC}/install-mk)
|
||
|
test -d ${DESTDIR}${SHARE_MK} || ${INSTALL} -m 775 -d ${DESTDIR}${SHARE_MK}
|
||
|
sh ${MKSRC}/install-mk -v -m 644 ${DESTDIR}${SHARE_MK}
|
||
|
.else
|
||
|
@echo need to unpack mk.tar.gz under ${srcdir} or set MKSRC; false
|
||
|
.endif
|
||
|
# end-delete2
|
||
|
# A simple unit-test driver to help catch regressions
|
||
|
accept test:
|
||
|
cd ${.CURDIR}/unit-tests && MAKEFLAGS= ${.MAKE} -r -m / TEST_MAKE=${TEST_MAKE:U${.OBJDIR}/${PROG:T}} ${.TARGET}
|
||
| contrib/bmake/Makefile.config.in | ||
|---|---|---|
|
# things set by configure
|
||
|
prefix= @prefix@
|
||
|
srcdir= @srcdir@
|
||
|
CC?= @CC@
|
||
|
MACHINE= @machine@
|
||
|
MACHINE_ARCH= @machine_arch@
|
||
|
DEFAULT_SYS_PATH= @default_sys_path@
|
||
|
CPPFLAGS+= @CPPFLAGS@
|
||
|
CFLAGS+= ${CPPFLAGS} @DEFS@
|
||
|
LDFLAGS= @LDFLAGS@
|
||
|
LIBOBJS= @LIBOBJS@
|
||
|
LDADD= @LIBS@
|
||
|
USE_META= @use_meta@
|
||
|
FILEMON_H= @filemon_h@
|
||
| contrib/bmake/Makefile.in | ||
|---|---|---|
|
# $NetBSD: Makefile,v 1.56 2012/05/30 21:54:23 sjg Exp $
|
||
|
# @(#)Makefile 5.2 (Berkeley) 12/28/90
|
||
|
# $Id: Makefile.in,v 1.174 2012/10/10 18:46:24 sjg Exp $
|
||
|
PROG= bmake
|
||
|
SRCS= arch.c buf.c compat.c cond.c dir.c for.c hash.c job.c main.c \
|
||
|
make.c parse.c str.c suff.c targ.c trace.c var.c util.c
|
||
|
SRCS+= strlist.c
|
||
|
SRCS+= make_malloc.c
|
||
|
SRCS+= lstAppend.c lstAtEnd.c lstAtFront.c lstClose.c lstConcat.c \
|
||
|
lstDatum.c lstDeQueue.c lstDestroy.c lstDupl.c lstEnQueue.c \
|
||
|
lstFind.c lstFindFrom.c lstFirst.c lstForEach.c lstForEachFrom.c \
|
||
|
lstInit.c lstInsert.c lstIsAtEnd.c lstIsEmpty.c lstLast.c \
|
||
|
lstMember.c lstNext.c lstOpen.c lstRemove.c lstReplace.c lstSucc.c
|
||
|
SRCS += lstPrev.c
|
||
|
# you can use this Makefile if you have an earlier version of bmake.
|
||
|
prefix= @prefix@
|
||
|
srcdir= @srcdir@
|
||
|
CC?= @CC@
|
||
|
# Base version on src date
|
||
|
MAKE_VERSION= 20121010
|
||
|
MACHINE=@machine@
|
||
|
MACHINE_ARCH=@machine_arch@
|
||
|
DEFAULT_SYS_PATH = @default_sys_path@
|
||
|
CPPFLAGS+= @CPPFLAGS@
|
||
|
CFLAGS+= ${CPPFLAGS}
|
||
|
CFLAGS+= -D_PATH_DEFSYSPATH=\"${DEFAULT_SYS_PATH}\"
|
||
|
CFLAGS+= -I. -I${srcdir} @DEFS@ ${XDEFS} -DMAKE_NATIVE
|
||
|
CFLAGS+= ${CFLAGS_${.TARGET:T}}
|
||
|
CFLAGS+= ${COPTS.${.ALLSRC:M*.c:T:u}}
|
||
|
COPTS.main.c+= "-DMAKE_VERSION=\"${MAKE_VERSION}\""
|
||
|
LDFLAGS= @LDFLAGS@
|
||
|
LIBOBJS= @LIBOBJS@
|
||
|
LDADD= @LIBS@
|
||
|
.if !empty(LIBOBJS)
|
||
|
SRCS+= ${LIBOBJS:T:.o=.c}
|
||
|
.endif
|
||
|
USE_META = @use_meta@
|
||
|
.if ${USE_META} != "no"
|
||
|
SRCS+= meta.c
|
||
|
CPPFLAGS+= -DUSE_META
|
||
|
FILEMON_H ?= @filemon_h@
|
||
|
.if exists(${FILEMON_H}) && ${FILEMON_H:T} == "filemon.h"
|
||
|
COPTS.meta.c += -DHAVE_FILEMON_H -I${FILEMON_H:H}
|
||
|
.endif
|
||
|
.endif
|
||
|
.PATH: ${srcdir}
|
||
|
.PATH: ${srcdir}/lst.lib
|
||
|
OS!= uname -s
|
||
|
ARCH!= uname -p 2>/dev/null || uname -m
|
||
|
# list of OS's which are derrived from BSD4.4
|
||
|
isBSD44= NetBSD FreeBSD OpenBSD DragonFly
|
||
|
.if ${OS} == "NetBSD"
|
||
|
# Don't set these for anyone else since we don't know what the effect may be.
|
||
|
# On FreeBSD WARNS=2 sets a bunch of -W flags that make does not handle.
|
||
|
WFORMAT= 1
|
||
|
WARNS=4
|
||
|
.NOPATH: bmake.cat1
|
||
|
.if make(install) && exists(${DESTDIR}/usr/share/doc)
|
||
|
SUBDIR= PSD.doc
|
||
|
.endif
|
||
|
.endif
|
||
|
.if defined(.PARSEDIR)
|
||
|
# we cannot rely on anything but bmake to parse this correctly.
|
||
|
.if empty(isBSD44:M${OS})
|
||
|
MANTARGET=cat
|
||
|
INSTALL?=${srcdir}/install-sh
|
||
|
.if (${MACHINE} == "sun386")
|
||
|
# even I don't have one of these anymore :-)
|
||
|
CFLAGS+= -DPORTAR
|
||
|
.elif (${MACHINE} != "sunos")
|
||
|
SRCS+= sigcompat.c
|
||
|
CFLAGS+= -DSIGNAL_FLAGS=SA_RESTART
|
||
|
.endif
|
||
|
.endif
|
||
|
.if make(obj) || make(clean)
|
||
|
SUBDIR+= unit-tests
|
||
|
.endif
|
||
|
.endif
|
||
|
# many systems use gcc these days
|
||
|
CC_IS_GCC=@GCC@
|
||
|
.if ${CC_IS_GCC} == "yes"
|
||
|
# problem with gcc3
|
||
|
CFLAGS_var.o+= -Wno-cast-qual
|
||
|
.endif
|
||
|
CFLAGS_main.o+= "-D@force_machine@MACHINE=\"${MACHINE}\"" "-DMACHINE_ARCH=\"${MACHINE_ARCH}\""
|
||
|
EXTRACT_MAN=no
|
||
|
MAN=${PROG}.1
|
||
|
.if (${PROG} != "make")
|
||
|
my.history: ${MAKEFILE}
|
||
|
@(echo ".Nm"; \
|
||
|
echo "is derived from NetBSD"; \
|
||
|
echo ".Xr make 1 ."; \
|
||
|
echo "It uses autoconf to facilitate portability to other platforms."; \
|
||
|
echo ".Pp") > $@
|
||
|
${MAN}: make.1 my.history
|
||
|
@echo making ${PROG}.1
|
||
|
@sed -e 's/^.Nx/NetBSD/' -e '/^.Nm/s/make/${PROG}/' \
|
||
|
-e '/^.Sh HISTORY/rmy.history' \
|
||
|
-e '/^.Sh HISTORY/,$$s,^.Nm,make,' ${.CURDIR}/make.1 > $@
|
||
|
.endif
|
||
|
.if !empty(isBSD44:M${OS})
|
||
|
.if "${OS}" != "NetBSD"
|
||
|
MAN1=${MAN}
|
||
|
.endif
|
||
|
MANTARGET?=man
|
||
|
.endif
|
||
|
MANTARGET?= cat
|
||
|
MANDEST?= ${MANDIR}/${MANTARGET}1
|
||
|
.if ${MANTARGET} == "cat"
|
||
|
_mfromdir=${srcdir}
|
||
|
.endif
|
||
|
.if exists(${srcdir}/../Makefile.inc)
|
||
|
.include "${srcdir}/../Makefile.inc"
|
||
|
.endif
|
||
|
.-include <bsd.prog.mk>
|
||
|
# sigh, FreeBSD at least includes bsd.subdir.mk via bsd.obj.mk
|
||
|
# so the inclusion below, results in complaints about re-defined
|
||
|
# targets. For NetBSD though we need to explicitly include it.
|
||
|
.if defined(.PARSEDIR)
|
||
|
.if defined(SUBDIR) && !target(${SUBDIR:[1]})
|
||
|
.-include <bsd.subdir.mk>
|
||
|
.endif
|
||
|
.endif
|
||
|
CPPFLAGS+= -DMAKE_NATIVE
|
||
|
COPTS.var.c += -Wno-cast-qual
|
||
|
COPTS.job.c += -Wno-format-nonliteral
|
||
|
COPTS.parse.c += -Wno-format-nonliteral
|
||
|
COPTS.var.c += -Wno-format-nonliteral
|
||
|
# Force these
|
||
|
BINDIR= ${prefix}/bin
|
||
|
MANDIR= ${prefix}/man
|
||
|
arch.o: config.h
|
||
|
# make sure that MAKE_VERSION gets updated.
|
||
|
main.o: ${SRCS} ${MAKEFILE}
|
||
|
MK?=${prefix}/share/mk
|
||
|
MKSRC?=@mksrc@
|
||
|
INSTALL?=${srcdir}/install-sh
|
||
|
beforeinstall:
|
||
|
test -d ${DESTDIR}${BINDIR} || ${INSTALL} -m 775 -d ${DESTDIR}${BINDIR}
|
||
|
test -d ${DESTDIR}${MANDEST} || ${INSTALL} -m 775 -d ${DESTDIR}${MANDEST}
|
||
|
# latest version of *.mk includes an installer.
|
||
|
# you should not need to set USE_OS
|
||
|
install-mk:
|
||
|
.if exists(${MKSRC}/install-mk)
|
||
|
test -d ${DESTDIR}${MK} || ${INSTALL} -m 775 -d ${DESTDIR}${MK}
|
||
|
${MKSRC}/install-mk -v -m 644 ${DESTDIR}${MK} ${USE_OS}
|
||
|
.else
|
||
|
@echo need to unpack mk.tar.gz under ${srcdir} or set MKSRC; false
|
||
|
.endif
|
||
|
.ifdef TOOLDIR
|
||
|
# this is a native netbsd build,
|
||
|
# use libutil rather than the local emalloc etc.
|
||
|
CPPFLAGS+= -DUSE_EMALLOC
|
||
|
LDADD+=-lutil
|
||
|
DPADD+=${LIBUTIL}
|
||
|
.endif
|
||
|
# A simple unit-test driver to help catch regressions
|
||
|
accept test:
|
||
|
cd ${.CURDIR}/unit-tests && MAKEFLAGS= ${.MAKE} -r -m / TEST_MAKE=${TEST_MAKE:U${.OBJDIR}/${PROG:T}} ${.TARGET}
|
||
| contrib/bmake/bmake.1 | ||
|---|---|---|
|
.\" $NetBSD: make.1,v 1.209 2012/10/08 15:09:48 christos Exp $
|
||
|
.\" $NetBSD: make.1,v 1.222 2013/08/11 09:53:49 apb Exp $
|
||
|
.\"
|
||
|
.\" Copyright (c) 1990, 1993
|
||
|
.\" The Regents of the University of California. All rights reserved.
|
||
| ... | ... | |
|
.\"
|
||
|
.\" from: @(#)make.1 8.4 (Berkeley) 3/19/94
|
||
|
.\"
|
||
|
.Dd October 8, 2012
|
||
|
.Dd August 11, 2013
|
||
|
.Dt MAKE 1
|
||
|
.Os
|
||
|
.Sh NAME
|
||
| ... | ... | |
|
.Nd maintain program dependencies
|
||
|
.Sh SYNOPSIS
|
||
|
.Nm
|
||
|
.Op Fl BeikNnqrstWX
|
||
|
.Op Fl BeikNnqrstWwX
|
||
|
.Op Fl C Ar directory
|
||
|
.Op Fl D Ar variable
|
||
|
.Op Fl d Ar flags
|
||
| ... | ... | |
|
option to print raw values of variables.
|
||
|
.It Ar v
|
||
|
Print debugging information about variable assignment.
|
||
|
.It Ar w
|
||
|
Print entering and leaving directory messages, pre and post processing.
|
||
|
.It Ar x
|
||
|
Run shell commands with
|
||
|
.Fl x
|
||
| ... | ... | |
|
A
|
||
|
.Ql Ic \-
|
||
|
causes any non-zero exit status of the command line to be ignored.
|
||
|
.Pp
|
||
|
When
|
||
|
.Nm
|
||
|
is run in jobs mode with
|
||
|
.Fl j Ar max_jobs ,
|
||
|
the entire script for the target is fed to a
|
||
|
single instance of the shell.
|
||
|
.Pp
|
||
|
In compatibility (non-jobs) mode, each command is run in a separate process.
|
||
|
If the command contains any shell meta characters
|
||
|
.Pq Ql #=|^(){};&<>*?[]:$`\e\en
|
||
|
it will be passed to the shell, otherwise
|
||
|
.Nm
|
||
|
will attempt direct execution.
|
||
|
.Pp
|
||
|
Since
|
||
|
.Nm
|
||
|
will
|
||
|
.Xr chdir 2
|
||
|
to
|
||
|
.Ql Va .OBJDIR
|
||
|
before executing any targets, each child process
|
||
|
starts with that as its current working directory.
|
||
|
.Pp
|
||
|
Makefiles should be written so that the mode of
|
||
|
.Nm
|
||
|
operation does not change their behavior.
|
||
|
For example, any command which needs to use
|
||
|
.Dq cd
|
||
|
or
|
||
|
.Dq chdir ,
|
||
|
without side-effect should be put in parenthesis:
|
||
|
.Bd -literal -offset indent
|
||
|
avoid-chdir-side-effects:
|
||
|
@echo Building $@ in `pwd`
|
||
|
@(cd ${.CURDIR} && ${.MAKE} $@)
|
||
|
@echo Back in `pwd`
|
||
|
ensure-one-shell-regardless-of-mode:
|
||
|
@echo Building $@ in `pwd`; \\
|
||
|
(cd ${.CURDIR} && ${.MAKE} $@); \\
|
||
|
echo Back in `pwd`
|
||
|
.Ed
|
||
|
.Sh VARIABLE ASSIGNMENTS
|
||
|
Variables in make are much like variables in the shell, and, by tradition,
|
||
|
consist of all upper-case letters.
|
||
| ... | ... | |
|
.Ql --- target ---
|
||
|
the first part of which can be controlled via
|
||
|
.Va .MAKE.JOB.PREFIX .
|
||
|
If
|
||
|
.Va .MAKE.JOB.PREFIX
|
||
|
is empty, no token is printed.
|
||
|
.br
|
||
|
For example:
|
||
|
.Li .MAKE.JOB.PREFIX=${.newline}---${.MAKE:T}[${.MAKE.PID}]
|
||
| ... | ... | |
|
used (updated or not).
|
||
|
This list can be used to process the meta files to extract dependency
|
||
|
information.
|
||
|
.It Va .MAKE.META.IGNORE_PATHS
|
||
|
Provides a list of path prefixes that should be ignored;
|
||
|
because the contents are expected to change over time.
|
||
|
The default list includes:
|
||
|
.Ql Pa /dev /etc /proc /tmp /var/run /var/tmp
|
||
|
.It Va .MAKE.META.PREFIX
|
||
|
Defines the message printed for each meta file updated in "meta verbose" mode.
|
||
|
The default value is:
|
||
| ... | ... | |
|
is re-exported whenever
|
||
|
.Ql Va .MAKEOVERRIDES
|
||
|
is modified.
|
||
|
.It Va .MAKE.PATH_FILEMON
|
||
|
If
|
||
|
.Nm
|
||
|
was built with
|
||
|
.Xr filemon 4
|
||
|
support, this is set to the path of the device node.
|
||
|
This allows makefiles to test for this support.
|
||
|
.It Va .MAKE.PID
|
||
|
The process-id of
|
||
|
.Nm .
|
||
| ... | ... | |
|
For example.
|
||
|
.Dl ${LINKS:@.LINK.@${LN} ${TARGET} ${.LINK.}@}
|
||
|
.Pp
|
||
|
However a single character varaiable is often more readable:
|
||
|
However a single character variable is often more readable:
|
||
|
.Dl ${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}
|
||
|
.It Cm \&:U Ns Ar newval
|
||
|
If the variable is undefined
|
||
| ... | ... | |
|
is the value.
|
||
|
If no such node exists or its path is null, then the
|
||
|
name of the variable is used.
|
||
|
In order for this modifier to work, the name (node) must at least have
|
||
|
In order for this modifier to work, the name (node) must at least have
|
||
|
appeared on the rhs of a dependency.
|
||
|
.Sm off
|
||
|
.It Cm \&:\&! Ar cmd Cm \&!
|
||
| ... | ... | |
|
Ignore differences in commands when deciding if target is out of date.
|
||
|
This is useful if the command contains a value which always changes.
|
||
|
If the number of commands change, though, the target will still be out of date.
|
||
|
The same effect applies to any command line that uses the variable
|
||
|
.Va .OODATE ,
|
||
|
which can be used for that purpose even when not otherwise needed or desired:
|
||
|
.Bd -literal -offset indent
|
||
|
skip-compare-for-some:
|
||
|
@echo this will be compared
|
||
|
@echo this will not ${.OODATE:M.NOMETA_CMP}
|
||
|
@echo this will also be compared
|
||
|
.Ed
|
||
|
The
|
||
|
.Cm \&:M
|
||
|
pattern suppresses any expansion of the unwanted variable.
|
||
|
.It Ic .NOPATH
|
||
|
Do not search for the target in the directories specified by
|
||
|
.Ic .PATH .
|
||
| ... | ... | |
|
.Ic .DOTLAST
|
||
|
target, then the current working
|
||
|
directory is searched last.
|
||
|
.It Ic .PATH. Ns Va suffix
|
||
|
Like
|
||
|
.Ic .PATH
|
||
|
but applies only to files with a particular suffix.
|
||
|
The suffix must have been previously declared with
|
||
|
.Ic .SUFFIXES .
|
||
|
.It Ic .PHONY
|
||
|
Apply the
|
||
|
.Ic .PHONY
|
||
| ... | ... | |
|
.Ic .SILENT
|
||
|
attribute is applied to every
|
||
|
command in the file.
|
||
|
.It Ic .STALE
|
||
|
This target gets run when a dependency file contains stale entries, having
|
||
|
.Va .ALLSRC
|
||
|
set to the name of that dependency file.
|
||
|
.It Ic .SUFFIXES
|
||
|
Each source specifies a suffix to
|
||
|
.Nm .
|
||
| ... | ... | |
|
so that they still appear to be variable expansions.
|
||
|
In particular this stops them being treated as syntax, and removes some
|
||
|
obscure problems using them in .if statements.
|
||
|
.Pp
|
||
|
Unlike other
|
||
|
.Nm
|
||
|
programs, this implementation by default executes all commands for a given
|
||
|
target using a single shell invocation.
|
||
|
This is done for both efficiency and to simplify error handling in remote
|
||
|
command invocations.
|
||
|
Typically this is transparent to the user, unless the target commands change
|
||
|
the current working directory using
|
||
|
.Dq cd
|
||
|
or
|
||
|
.Dq chdir .
|
||
|
To be compatible with Makefiles that do this, one can use
|
||
|
.Fl B
|
||
|
to disable this behavior.
|
||
|
.Pp
|
||
|
In compatibility mode, each command is run in a separate process.
|
||
|
If the command contains any shell meta characters
|
||
|
.Pq Ql #=|^(){};&<>*?[]:$`\e\en
|
||
|
it will be passed to the shell, otherwise
|
||
|
.Nm
|
||
|
will attempt direct execution.
|
||
|
.Sh SEE ALSO
|
||
|
.Xr mkdep 1
|
||
|
.Sh HISTORY
|
||
| ... | ... | |
|
It was designed to be a parallel distributed make running jobs on different
|
||
|
machines using a daemon called
|
||
|
.Dq customs .
|
||
|
.Pp
|
||
|
Historically the target/dependency
|
||
|
.Dq FRC
|
||
|
has been used to FoRCe rebuilding (since the target/dependency
|
||
|
does not exist... unless someone creates an
|
||
|
.Dq FRC
|
||
|
file).
|
||
|
.Sh BUGS
|
||
|
The
|
||
|
make
|
||
| contrib/bmake/bmake.cat1 | ||
|---|---|---|
|
bbmmaakkee -- maintain program dependencies
|
||
|
SSYYNNOOPPSSIISS
|
||
|
bbmmaakkee [--BBeeiikkNNnnqqrrssttWWXX] [--CC _d_i_r_e_c_t_o_r_y] [--DD _v_a_r_i_a_b_l_e] [--dd _f_l_a_g_s]
|
||
|
bbmmaakkee [--BBeeiikkNNnnqqrrssttWWwwXX] [--CC _d_i_r_e_c_t_o_r_y] [--DD _v_a_r_i_a_b_l_e] [--dd _f_l_a_g_s]
|
||
|
[--ff _m_a_k_e_f_i_l_e] [--II _d_i_r_e_c_t_o_r_y] [--JJ _p_r_i_v_a_t_e] [--jj _m_a_x___j_o_b_s]
|
||
|
[--mm _d_i_r_e_c_t_o_r_y] [--TT _f_i_l_e] [--VV _v_a_r_i_a_b_l_e] [_v_a_r_i_a_b_l_e_=_v_a_l_u_e]
|
||
|
[_t_a_r_g_e_t _._._.]
|
||
| ... | ... | |
|
_v Print debugging information about variable assignment.
|
||
|
_x Run shell commands with --xx so the actual commands are
|
||
|
printed as they are executed.
|
||
|
--ee Specify that environment variables override macro assignments
|
||
|
within makefiles.
|
||
|
--ff _m_a_k_e_f_i_l_e
|
||
|
Specify a makefile to read instead of the default `_m_a_k_e_f_i_l_e'. If
|
||
|
_m_a_k_e_f_i_l_e is `--', standard input is read. Multiple makefiles may
|
||
|
be specified, and are read in the order specified.
|
||
|
--II _d_i_r_e_c_t_o_r_y
|
||
|
Specify a directory in which to search for makefiles and included
|
||
|
makefiles. The system makefile directory (or directories, see
|
||
|
the --mm option) is automatically included as part of this list.
|
||
|
--ii Ignore non-zero exit of shell commands in the makefile. Equiva-
|
||
|
lent to specifying `--' before each command line in the makefile.
|
||
|
--JJ _p_r_i_v_a_t_e
|
||
|
This option should _n_o_t be specified by the user.
|
||
|
When the _j option is in use in a recursive build, this option is
|
||
|
passed by a make to child makes to allow all the make processes
|
||
|
in the build to cooperate to avoid overloading the system.
|
||
|
--jj _m_a_x___j_o_b_s
|
||
|
Specify the maximum number of jobs that bbmmaakkee may have running at
|
||
|
any one time. The value is saved in _._M_A_K_E_._J_O_B_S. Turns compati-
|
||
|
bility mode off, unless the _B flag is also specified. When com-
|
||
|
patibility mode is off, all commands associated with a target are
|
||
|
executed in a single shell invocation as opposed to the tradi-
|
||
|
tional one shell invocation per line. This can break traditional
|
||
|
scripts which change directories on each command invocation and
|
||
|
then expect to start with a fresh environment on the next line.
|
||
|
It is more efficient to correct the scripts rather than turn
|
||
|
backwards compatibility on.
|
||
|
--kk Continue processing after errors are encountered, but only on
|
||
|
those targets that do not depend on the target whose creation
|
||
|
caused the error.
|
||
|
--mm _d_i_r_e_c_t_o_r_y
|
||
|
Specify a directory in which to search for sys.mk and makefiles
|
||
|
included via the <_f_i_l_e>-style include statement. The --mm option
|
||
|
can be used multiple times to form a search path. This path will
|
||
|
override the default system include path: /usr/share/mk. Fur-
|
||
|
thermore the system include path will be appended to the search
|
||
|
path used for "_f_i_l_e"-style include statements (see the --II
|
||
|
option).
|
||
|
If a file or directory name in the --mm argument (or the
|
||
|
MAKESYSPATH environment variable) starts with the string ".../"
|
||
|
then bbmmaakkee will search for the specified file or directory named
|
||
|
in the remaining part of the argument string. The search starts
|
||
|
with the current directory of the Makefile and then works upward
|
||
|
towards the root of the filesystem. If the search is successful,
|
||
|
then the resulting directory replaces the ".../" specification in
|
||
|
the --mm argument. If used, this feature allows bbmmaakkee to easily
|
||
|
search in the current source tree for customized sys.mk files
|
||
|
(e.g., by using ".../mk/sys.mk" as an argument).
|
||
|
--nn Display the commands that would have been executed, but do not
|
||
|
actually execute them unless the target depends on the .MAKE spe-
|
||
|
cial source (see below).
|
||
|
--NN Display the commands which would have been executed, but do not
|
||
|
actually execute any of them; useful for debugging top-level
|
||
|
makefiles without descending into subdirectories.
|
||
|
--qq Do not execute any commands, but exit 0 if the specified targets
|
||
|
are up-to-date and 1, otherwise.
|
||
|
--rr Do not use the built-in rules specified in the system makefile.
|
||
|
--ss Do not echo any commands as they are executed. Equivalent to
|
||
|
specifying `@@' before each command line in the makefile.
|
||
|
--TT _t_r_a_c_e_f_i_l_e
|
||
|
When used with the --jj flag, append a trace record to _t_r_a_c_e_f_i_l_e
|
||
|
for each job started and completed.
|
||
|
--tt Rather than re-building a target as specified in the makefile,
|
||
|
create it or update its modification time to make it appear up-
|
||
|
to-date.
|
||
|
--VV _v_a_r_i_a_b_l_e
|
||
|
Print bbmmaakkee's idea of the value of _v_a_r_i_a_b_l_e, in the global con-
|
||
|
text. Do not build any targets. Multiple instances of this
|
||
|
option may be specified; the variables will be printed one per
|
||
|
line, with a blank line for each null or undefined variable. If
|
||
|
_v_a_r_i_a_b_l_e contains a `$' then the value will be expanded before
|
||
|
printing.
|
||
|
--WW Treat any warnings during makefile parsing as errors.
|
||
|
--XX Don't export variables passed on the command line to the environ-
|
||
|
ment individually. Variables passed on the command line are
|
||
|
still exported via the _M_A_K_E_F_L_A_G_S environment variable. This
|
||
|
option may be useful on systems which have a small limit on the
|
||
|
size of command arguments.
|
||
|
_v_a_r_i_a_b_l_e_=_v_a_l_u_e
|
||
|
Set the value of the variable _v_a_r_i_a_b_l_e to _v_a_l_u_e. Normally, all
|
||
|
values passed on the command line are also exported to sub-makes
|
||
|
in the environment. The --XX flag disables this behavior. Vari-
|
||
|
able assignments should follow options for POSIX compatibility
|
||
|
but no ordering is enforced.
|
||
|
There are seven different types of lines in a makefile: file dependency
|
||
|
specifications, shell commands, variable assignments, include statements,
|
||
|
conditional directives, for loops, and comments.
|
||
|
In general, lines may be continued from one line to the next by ending
|
||
|
them with a backslash (`\'). The trailing newline character and initial
|
||
|
whitespace on the following line are compressed into a single space.
|
||
|
FFIILLEE DDEEPPEENNDDEENNCCYY SSPPEECCIIFFIICCAATTIIOONNSS
|
||
|
Dependency lines consist of one or more targets, an operator, and zero or
|
||
|
more sources. This creates a relationship where the targets ``depend''
|
||
|
on the sources and are usually created from them. The exact relationship
|
||
|
between the target and the source is determined by the operator that sep-
|
||
|
arates them. The three operators are as follows:
|
||
|
:: A target is considered out-of-date if its modification time is less
|
||
|
than those of any of its sources. Sources for a target accumulate
|
||
|
over dependency lines when this operator is used. The target is
|
||
|
removed if bbmmaakkee is interrupted.
|
||
|
!! Targets are always re-created, but not until all sources have been
|
||
|
examined and re-created as necessary. Sources for a target accumu-
|
||
|
late over dependency lines when this operator is used. The target
|
||
|
is removed if bbmmaakkee is interrupted.
|
||
|
:::: If no sources are specified, the target is always re-created. Oth-
|
||
|
erwise, a target is considered out-of-date if any of its sources
|
||
|
has been modified more recently than the target. Sources for a
|
||
|
target do not accumulate over dependency lines when this operator
|
||
|
is used. The target will not be removed if bbmmaakkee is interrupted.
|
||
|
Targets and sources may contain the shell wildcard values `?', `*', `[]',
|
||
|
and `{}'. The values `?', `*', and `[]' may only be used as part of the
|
||
|
final component of the target or source, and must be used to describe
|
||
|
existing files. The value `{}' need not necessarily be used to describe
|
||
|
existing files. Expansion is in directory order, not alphabetically as
|
||
|
done in the shell.
|
||
|
SSHHEELLLL CCOOMMMMAANNDDSS
|
||
|
Each target may have associated with it a series of shell commands, nor-
|
||
|
mally used to create the target. Each of the commands in this script
|
||
|
_m_u_s_t be preceded by a tab. While any target may appear on a dependency
|
||
|
line, only one of these dependencies may be followed by a creation
|
||
|
script, unless the `::::' operator is used.
|
||
|
If the first characters of the command line are any combination of `@@',
|
||
|
`++', or `--', the command is treated specially. A `@@' causes the command
|
||
|
not to be echoed before it is executed. A `++' causes the command to be
|
||
|
executed even when --nn is given. This is similar to the effect of the
|
||
|
.MAKE special source, except that the effect can be limited to a single
|
||
|
line of a script. A `--' causes any non-zero exit status of the command
|
||
|
line to be ignored.
|
||
|
VVAARRIIAABBLLEE AASSSSIIGGNNMMEENNTTSS
|
||
|
Variables in make are much like variables in the shell, and, by tradi-
|
||
|
tion, consist of all upper-case letters.
|
||
|
VVaarriiaabbllee aassssiiggnnmmeenntt mmooddiiffiieerrss
|
||
|
The five operators that can be used to assign values to variables are as
|
||
|
follows:
|
||
|
== Assign the value to the variable. Any previous value is overrid-
|
||
|
den.
|
||
|
++== Append the value to the current value of the variable.
|
||
|
??== Assign the value to the variable if it is not already defined.
|
||
|
::== Assign with expansion, i.e. expand the value before assigning it
|
||
|
to the variable. Normally, expansion is not done until the vari-
|
||
|
able is referenced. _N_O_T_E: References to undefined variables are
|
||
|
_n_o_t expanded. This can cause problems when variable modifiers
|
||
|
are used.
|
||
|
!!== Expand the value and pass it to the shell for execution and
|
||
|
assign the result to the variable. Any newlines in the result
|
||
|
are replaced with spaces.
|
||
|
Any white-space before the assigned _v_a_l_u_e is removed; if the value is
|
||
|
being appended, a single space is inserted between the previous contents
|
||
|
of the variable and the appended value.
|
||
|
Variables are expanded by surrounding the variable name with either curly
|
||
|
braces (`{}') or parentheses (`()') and preceding it with a dollar sign
|
||
|
(`$'). If the variable name contains only a single letter, the surround-
|
||
|
ing braces or parentheses are not required. This shorter form is not
|
||
|
recommended.
|
||
|
If the variable name contains a dollar, then the name itself is expanded
|
||
|
first. This allows almost arbitrary variable names, however names con-
|
||
|
taining dollar, braces, parenthesis, or whitespace are really best
|
||
|
avoided!
|
||
|
If the result of expanding a variable contains a dollar sign (`$') the
|
||
|
string is expanded again.
|
||
|
Variable substitution occurs at three distinct times, depending on where
|
||
|
the variable is being used.
|
||
|
1. Variables in dependency lines are expanded as the line is read.
|
||
|
2. Variables in shell commands are expanded when the shell command is
|
||
|
executed.
|
||
|
3. ``.for'' loop index variables are expanded on each loop iteration.
|
||
|
Note that other variables are not expanded inside loops so the fol-
|
||
|
lowing example code:
|
||
|
.for i in 1 2 3
|
||
|
a+= ${i}
|
||
|
j= ${i}
|
||
|
b+= ${j}
|
||
|
.endfor
|
||
|
all:
|
||
|
@echo ${a}
|
||
|
@echo ${b}
|
||
|
will print:
|
||
|
1 2 3
|
||
|
3 3 3
|
||
|
Because while ${a} contains ``1 2 3'' after the loop is executed,
|
||
|
${b} contains ``${j} ${j} ${j}'' which expands to ``3 3 3'' since
|
||
|
after the loop completes ${j} contains ``3''.
|
||
|
VVaarriiaabbllee ccllaasssseess
|
||
|
The four different classes of variables (in order of increasing prece-
|
||
|
dence) are:
|
||
|
Environment variables
|
||
|
Variables defined as part of bbmmaakkee's environment.
|
||
|
Global variables
|
||
|
Variables defined in the makefile or in included makefiles.
|
||
|
Command line variables
|
||
|
Variables defined as part of the command line.
|
||
|
Local variables
|
||
|
Variables that are defined specific to a certain target. The
|
||
|
seven local variables are as follows:
|
||
|
_._A_L_L_S_R_C The list of all sources for this target; also known as
|
||
|
`_>'.
|
||
|
_._A_R_C_H_I_V_E The name of the archive file.
|
||
|
_._I_M_P_S_R_C In suffix-transformation rules, the name/path of the
|
||
|
source from which the target is to be transformed (the
|
||
|
``implied'' source); also known as `_<'. It is not
|
||
|
defined in explicit rules.
|
||
|
_._M_E_M_B_E_R The name of the archive member.
|
||
|
_._O_O_D_A_T_E The list of sources for this target that were deemed
|
||
|
out-of-date; also known as `_?'.
|
||
|
_._P_R_E_F_I_X The file prefix of the target, containing only the file
|
||
|
portion, no suffix or preceding directory components;
|
||
|
also known as `_*'.
|
||
|
_._T_A_R_G_E_T The name of the target; also known as `_@'.
|
||
|
The shorter forms `_@', `_?', `_<', `_>', and `_*' are permitted for
|
||
|
backward compatibility with historical makefiles and are not rec-
|
||
|
ommended. The six variables `_@_F', `_@_D', `_<_F', `_<_D', `_*_F', and
|
||
|
`_*_D' are permitted for compatibility with AT&T System V UNIX
|
||
|
makefiles and are not recommended.
|
||
|
Four of the local variables may be used in sources on dependency
|
||
|
lines because they expand to the proper value for each target on
|
||
|
the line. These variables are `_._T_A_R_G_E_T', `_._P_R_E_F_I_X', `_._A_R_C_H_I_V_E',
|
||
|
and `_._M_E_M_B_E_R'.
|
||
|
AAddddiittiioonnaall bbuuiilltt--iinn vvaarriiaabblleess
|
||
|
In addition, bbmmaakkee sets or knows about the following variables:
|
||
|
_$ A single dollar sign `$', i.e. `$$' expands to a single
|
||
|
dollar sign.
|
||
|
_._A_L_L_T_A_R_G_E_T_S The list of all targets encountered in the Makefile. If
|
||
|
evaluated during Makefile parsing, lists only those tar-
|
||
|
gets encountered thus far.
|
||
|
_._C_U_R_D_I_R A path to the directory where bbmmaakkee was executed. Refer
|
||
|
to the description of `PWD' for more details.
|
||
|
MAKE The name that bbmmaakkee was executed with (_a_r_g_v_[_0_]). For
|
||
|
compatibility bbmmaakkee also sets _._M_A_K_E with the same value.
|
||
|
The preferred variable to use is the environment variable
|
||
|
MAKE because it is more compatible with other versions of
|
||
|
bbmmaakkee and cannot be confused with the special target with
|
||
|
the same name.
|
||
|
_._M_A_K_E_._D_E_P_E_N_D_F_I_L_E
|
||
|
Names the makefile (default `_._d_e_p_e_n_d') from which gener-
|
||
|
ated dependencies are read.
|
||
|
_._M_A_K_E_._E_X_P_A_N_D___V_A_R_I_A_B_L_E_S
|
||
|
A boolean that controls the default behavior of the --VV
|
||
|
option.
|
||
|
_._M_A_K_E_._E_X_P_O_R_T_E_D The list of variables exported by bbmmaakkee.
|
||
|
_._M_A_K_E_._J_O_B_S The argument to the --jj option.
|
||
|
_._M_A_K_E_._J_O_B_._P_R_E_F_I_X
|
||
|
If bbmmaakkee is run with _j then output for each target is
|
||