956e45f6fb
Lots of new unit-tests increase code coverage. Lots of refactoring, cleanup and simlpification to reduce code size. Fixes for Bug 223564 and 245807 Updates to dirdeps.mk and meta2deps.py
215 lines
4.5 KiB
Makefile
215 lines
4.5 KiB
Makefile
# $Id: Makefile,v 1.113 2020/10/26 17:55:09 sjg Exp $
|
|
|
|
PROG= bmake
|
|
|
|
SRCS= \
|
|
arch.c \
|
|
buf.c \
|
|
compat.c \
|
|
cond.c \
|
|
dir.c \
|
|
enum.c \
|
|
for.c \
|
|
hash.c \
|
|
job.c \
|
|
lst.c \
|
|
main.c \
|
|
make.c \
|
|
make_malloc.c \
|
|
meta.c \
|
|
metachar.c \
|
|
parse.c \
|
|
str.c \
|
|
suff.c \
|
|
targ.c \
|
|
trace.c \
|
|
util.c \
|
|
var.c
|
|
|
|
.-include "VERSION"
|
|
.-include "Makefile.inc"
|
|
|
|
# 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?= ${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
|
|
# should be set by now
|
|
USE_FILEMON ?= no
|
|
.if ${USE_FILEMON:tl} != "no"
|
|
.PATH: ${srcdir}/filemon
|
|
SRCS+= filemon_${USE_FILEMON}.c
|
|
COPTS.meta.c+= -DUSE_FILEMON -DUSE_FILEMON_${USE_FILEMON:tu}
|
|
COPTS.job.c+= ${COPTS.meta.c}
|
|
|
|
.if ${USE_FILEMON} == "dev"
|
|
FILEMON_H ?= /usr/include/dev/filemon/filemon.h
|
|
.if exists(${FILEMON_H}) && ${FILEMON_H:T} == "filemon.h"
|
|
COPTS.filemon_dev.c += -DHAVE_FILEMON_H -I${FILEMON_H:H}
|
|
.endif
|
|
.endif # USE_FILEMON == dev
|
|
|
|
.endif # USE_FILEMON
|
|
|
|
.PATH: ${srcdir}
|
|
|
|
.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 MirBSD Bitrig
|
|
# we are...
|
|
OS := ${.MAKE.OS:U${uname -s:L:sh}}
|
|
# 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=
|
|
|
|
# suppress 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_NAME} ${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:
|
|
@(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 '/^.Dt/s/MAKE/${PROG:tu}/' \
|
|
-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= ${SHAREDIR.bmake:U${prefix}/share}
|
|
BINDIR= ${BINDIR.bmake:U${prefix}/bin}
|
|
MANDIR= ${MANDIR.bmake:U${SHAREDIR}/man}
|
|
|
|
.if !exists(.depend)
|
|
${OBJS}: config.h
|
|
.endif
|
|
|
|
# start-delete2 for bsd.after-import.mk
|
|
|
|
# make sure that MAKE_VERSION gets updated.
|
|
main.o: ${srcdir}/VERSION
|
|
|
|
.if ${MK_AUTOCONF_MK} == "yes"
|
|
CONFIGURE_DEPS += ${.CURDIR}/VERSION
|
|
# we do not need or want the generated makefile
|
|
CONFIGURE_ARGS += --without-makefile
|
|
.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
|
|
TEST_MAKE ?= ${.OBJDIR}/${PROG:T}
|
|
accept test:
|
|
cd ${.CURDIR}/unit-tests && \
|
|
MAKEFLAGS= ${TEST_MAKE} -r -m / ${.TARGET} ${TESTS:DTESTS=${TESTS:Q}}
|
|
|