xref: /freebsd/contrib/bmake/Makefile (revision 45447996a086f21cc3c66b9371b7783a3154e508)
1*45447996SSimon J. Gerraty#	$Id: Makefile,v 1.77 2016/12/12 07:34:19 sjg Exp $
23cbdda60SSimon J. Gerraty
33cbdda60SSimon J. Gerraty# Base version on src date
4*45447996SSimon J. Gerraty_MAKE_VERSION= 20161212
53cbdda60SSimon J. Gerraty
63cbdda60SSimon J. GerratyPROG=	bmake
73cbdda60SSimon J. Gerraty
83cbdda60SSimon J. GerratySRCS= \
93cbdda60SSimon J. Gerraty	arch.c \
103cbdda60SSimon J. Gerraty	buf.c \
113cbdda60SSimon J. Gerraty	compat.c \
123cbdda60SSimon J. Gerraty	cond.c \
133cbdda60SSimon J. Gerraty	dir.c \
143cbdda60SSimon J. Gerraty	for.c \
153cbdda60SSimon J. Gerraty	hash.c \
163cbdda60SSimon J. Gerraty	job.c \
173cbdda60SSimon J. Gerraty	main.c \
183cbdda60SSimon J. Gerraty	make.c \
193cbdda60SSimon J. Gerraty	make_malloc.c \
203cbdda60SSimon J. Gerraty	meta.c \
214c620fe5SSimon J. Gerraty	metachar.c \
223cbdda60SSimon J. Gerraty	parse.c \
233cbdda60SSimon J. Gerraty	str.c \
243cbdda60SSimon J. Gerraty	strlist.c \
253cbdda60SSimon J. Gerraty	suff.c \
263cbdda60SSimon J. Gerraty	targ.c \
273cbdda60SSimon J. Gerraty	trace.c \
283cbdda60SSimon J. Gerraty	util.c \
293cbdda60SSimon J. Gerraty	var.c
303cbdda60SSimon J. Gerraty
313cbdda60SSimon J. Gerraty# from lst.lib/
323cbdda60SSimon J. GerratySRCS+= \
333cbdda60SSimon J. Gerraty	lstAppend.c \
343cbdda60SSimon J. Gerraty	lstAtEnd.c \
353cbdda60SSimon J. Gerraty	lstAtFront.c \
363cbdda60SSimon J. Gerraty	lstClose.c \
373cbdda60SSimon J. Gerraty	lstConcat.c \
383cbdda60SSimon J. Gerraty	lstDatum.c \
393cbdda60SSimon J. Gerraty	lstDeQueue.c \
403cbdda60SSimon J. Gerraty	lstDestroy.c \
413cbdda60SSimon J. Gerraty	lstDupl.c \
423cbdda60SSimon J. Gerraty	lstEnQueue.c \
433cbdda60SSimon J. Gerraty	lstFind.c \
443cbdda60SSimon J. Gerraty	lstFindFrom.c \
453cbdda60SSimon J. Gerraty	lstFirst.c \
463cbdda60SSimon J. Gerraty	lstForEach.c \
473cbdda60SSimon J. Gerraty	lstForEachFrom.c \
483cbdda60SSimon J. Gerraty	lstInit.c \
493cbdda60SSimon J. Gerraty	lstInsert.c \
503cbdda60SSimon J. Gerraty	lstIsAtEnd.c \
513cbdda60SSimon J. Gerraty	lstIsEmpty.c \
523cbdda60SSimon J. Gerraty	lstLast.c \
533cbdda60SSimon J. Gerraty	lstMember.c \
543cbdda60SSimon J. Gerraty	lstNext.c \
553cbdda60SSimon J. Gerraty	lstOpen.c \
563cbdda60SSimon J. Gerraty	lstPrev.c \
573cbdda60SSimon J. Gerraty	lstRemove.c \
583cbdda60SSimon J. Gerraty	lstReplace.c \
593cbdda60SSimon J. Gerraty	lstSucc.c
603cbdda60SSimon J. Gerraty
613cbdda60SSimon J. Gerraty# this file gets generated by configure
623cbdda60SSimon J. Gerraty.-include "Makefile.config"
633cbdda60SSimon J. Gerraty
643cbdda60SSimon J. Gerraty.if !empty(LIBOBJS)
653cbdda60SSimon J. GerratySRCS+= ${LIBOBJS:T:.o=.c}
663cbdda60SSimon J. Gerraty.endif
673cbdda60SSimon J. Gerraty
683cbdda60SSimon J. Gerraty# just in case
693cbdda60SSimon J. Gerratyprefix?= /usr
703cbdda60SSimon J. Gerratysrcdir?= ${.CURDIR}
713cbdda60SSimon J. Gerraty
720dede8b0SSimon J. GerratyDEFAULT_SYS_PATH?= ${prefix}/share/mk
733cbdda60SSimon J. Gerraty
743cbdda60SSimon J. GerratyCPPFLAGS+= -DUSE_META
753cbdda60SSimon J. GerratyCFLAGS+= ${CPPFLAGS}
763cbdda60SSimon J. GerratyCFLAGS+= -D_PATH_DEFSYSPATH=\"${DEFAULT_SYS_PATH}\"
773cbdda60SSimon J. GerratyCFLAGS+= -I. -I${srcdir} ${XDEFS} -DMAKE_NATIVE
783cbdda60SSimon J. GerratyCFLAGS+= ${COPTS.${.ALLSRC:M*.c:T:u}}
793bebe729SSimon J. GerratyCOPTS.main.c+= "-DMAKE_VERSION=\"${_MAKE_VERSION}\""
803cbdda60SSimon J. Gerraty
813cbdda60SSimon J. Gerraty# meta mode can be useful even without filemon
823cbdda60SSimon J. GerratyFILEMON_H ?= /usr/include/dev/filemon/filemon.h
833cbdda60SSimon J. Gerraty.if exists(${FILEMON_H}) && ${FILEMON_H:T} == "filemon.h"
843cbdda60SSimon J. GerratyCOPTS.meta.c += -DHAVE_FILEMON_H -I${FILEMON_H:H}
853cbdda60SSimon J. Gerraty.endif
863cbdda60SSimon J. Gerraty
873cbdda60SSimon J. Gerraty.PATH:	${srcdir}
883cbdda60SSimon J. Gerraty.PATH:	${srcdir}/lst.lib
893cbdda60SSimon J. Gerraty
903cbdda60SSimon J. Gerraty.if make(obj) || make(clean)
913cbdda60SSimon J. GerratySUBDIR+= unit-tests
923cbdda60SSimon J. Gerraty.endif
933cbdda60SSimon J. Gerraty
943cbdda60SSimon J. Gerraty# start-delete1 for bsd.after-import.mk
953cbdda60SSimon J. Gerraty# we skip a lot of this when building as part of FreeBSD etc.
963cbdda60SSimon J. Gerraty
973cbdda60SSimon J. Gerraty# list of OS's which are derrived from BSD4.4
9828a6bc81SSimon J. GerratyBSD44_LIST= NetBSD FreeBSD OpenBSD DragonFly MirBSD Bitrig
993cbdda60SSimon J. Gerraty# we are...
1003cbdda60SSimon J. GerratyOS!= uname -s
1013cbdda60SSimon J. Gerraty# are we 4.4BSD ?
1023cbdda60SSimon J. GerratyisBSD44:=${BSD44_LIST:M${OS}}
1033cbdda60SSimon J. Gerraty
1043cbdda60SSimon J. Gerraty.if ${isBSD44} == ""
1053cbdda60SSimon J. GerratyMANTARGET= cat
1063cbdda60SSimon J. GerratyINSTALL?=${srcdir}/install-sh
1073cbdda60SSimon J. Gerraty.if (${MACHINE} == "sun386")
1083cbdda60SSimon J. Gerraty# even I don't have one of these anymore :-)
1093cbdda60SSimon J. GerratyCFLAGS+= -DPORTAR
1103cbdda60SSimon J. Gerraty.elif (${MACHINE} != "sunos")
1113cbdda60SSimon J. GerratySRCS+= sigcompat.c
1123cbdda60SSimon J. GerratyCFLAGS+= -DSIGNAL_FLAGS=SA_RESTART
1133cbdda60SSimon J. Gerraty.endif
1143cbdda60SSimon J. Gerraty.else
1153cbdda60SSimon J. GerratyMANTARGET?= man
1163cbdda60SSimon J. Gerraty.endif
1173cbdda60SSimon J. Gerraty
1183cbdda60SSimon J. Gerraty# turn this on by default - ignored if we are root
1193cbdda60SSimon J. GerratyWITH_INSTALL_AS_USER=
1203cbdda60SSimon J. Gerraty
1215bcb7424SSimon J. Gerraty# suppress with -DWITHOUT_*
1223cbdda60SSimon J. GerratyOPTIONS_DEFAULT_YES+= \
1233cbdda60SSimon J. Gerraty	AUTOCONF_MK \
1243cbdda60SSimon J. Gerraty	INSTALL_MK \
1253cbdda60SSimon J. Gerraty	PROG_LINK
1263cbdda60SSimon J. Gerraty
1273cbdda60SSimon J. GerratyOPTIONS_DEFAULT_NO+= \
1283cbdda60SSimon J. Gerraty	PROG_VERSION
1293cbdda60SSimon J. Gerraty
1303cbdda60SSimon J. Gerraty# process options now
1313cbdda60SSimon J. Gerraty.include <own.mk>
1323cbdda60SSimon J. Gerraty
1333cbdda60SSimon J. Gerraty.if ${MK_PROG_VERSION} == "yes"
134e48f47ddSSimon J. GerratyPROG_NAME= ${PROG}-${_MAKE_VERSION}
1353cbdda60SSimon J. Gerraty.if ${MK_PROG_LINK} == "yes"
136e48f47ddSSimon J. GerratySYMLINKS+= ${PROG_NAME} ${BINDIR}/${PROG}
1373cbdda60SSimon J. Gerraty.endif
1383cbdda60SSimon J. Gerraty.endif
1393cbdda60SSimon J. Gerraty
1403cbdda60SSimon J. GerratyEXTRACT_MAN=no
1413cbdda60SSimon J. Gerraty# end-delete1
1423cbdda60SSimon J. Gerraty
1433cbdda60SSimon J. GerratyMAN= ${PROG}.1
1443cbdda60SSimon J. GerratyMAN1= ${MAN}
1453cbdda60SSimon J. Gerraty
1463cbdda60SSimon J. Gerraty.if (${PROG} != "make")
1473cbdda60SSimon J. GerratyCLEANFILES+= my.history
1483cbdda60SSimon J. Gerraty.if make(${MAN}) || !exists(${srcdir}/${MAN})
1493cbdda60SSimon J. Gerratymy.history: ${MAKEFILE}
1503cbdda60SSimon J. Gerraty	@(echo ".Nm"; \
1513cbdda60SSimon J. Gerraty	echo "is derived from NetBSD"; \
1523cbdda60SSimon J. Gerraty	echo ".Xr make 1 ."; \
1533cbdda60SSimon J. Gerraty	echo "It uses autoconf to facilitate portability to other platforms."; \
1543cbdda60SSimon J. Gerraty	echo ".Pp") > $@
1553cbdda60SSimon J. Gerraty
1563cbdda60SSimon J. Gerraty.NOPATH: ${MAN}
1573cbdda60SSimon J. Gerraty${MAN}:	make.1 my.history
1583cbdda60SSimon J. Gerraty	@echo making $@
159*45447996SSimon J. Gerraty	@sed \
160*45447996SSimon J. Gerraty	-e '/^.Dt/s/MAKE/${PROG:tu}/' \
161*45447996SSimon J. Gerraty	-e 's/^.Nx/NetBSD/' \
162*45447996SSimon J. Gerraty	-e '/^.Nm/s/make/${PROG}/' \
1633cbdda60SSimon J. Gerraty	-e '/^.Sh HISTORY/rmy.history' \
1643cbdda60SSimon J. Gerraty	-e '/^.Sh HISTORY/,$$s,^.Nm,make,' ${srcdir}/make.1 > $@
1653cbdda60SSimon J. Gerraty
1663cbdda60SSimon J. Gerratyall beforeinstall: ${MAN}
1673cbdda60SSimon J. Gerraty_mfromdir=.
1683cbdda60SSimon J. Gerraty.endif
1693cbdda60SSimon J. Gerraty.endif
1703cbdda60SSimon J. Gerraty
1713cbdda60SSimon J. GerratyMANTARGET?= cat
1723cbdda60SSimon J. GerratyMANDEST?= ${MANDIR}/${MANTARGET}1
1733cbdda60SSimon J. Gerraty
1743cbdda60SSimon J. Gerraty.if ${MANTARGET} == "cat"
1753cbdda60SSimon J. Gerraty_mfromdir=${srcdir}
1763cbdda60SSimon J. Gerraty.endif
1773cbdda60SSimon J. Gerraty
1783cbdda60SSimon J. Gerraty.include <prog.mk>
1793cbdda60SSimon J. Gerraty
1803cbdda60SSimon J. GerratyCPPFLAGS+= -DMAKE_NATIVE -DHAVE_CONFIG_H
1813cbdda60SSimon J. GerratyCOPTS.var.c += -Wno-cast-qual
1823cbdda60SSimon J. GerratyCOPTS.job.c += -Wno-format-nonliteral
1833cbdda60SSimon J. GerratyCOPTS.parse.c += -Wno-format-nonliteral
1843cbdda60SSimon J. GerratyCOPTS.var.c += -Wno-format-nonliteral
1853cbdda60SSimon J. Gerraty
1863cbdda60SSimon J. Gerraty# Force these
187db29cad8SSimon J. GerratySHAREDIR= ${SHAREDIR.bmake:U${prefix}/share}
188db29cad8SSimon J. GerratyBINDIR= ${BINDIR.bmake:U${prefix}/bin}
189db29cad8SSimon J. GerratyMANDIR= ${MANDIR.bmake:U${SHAREDIR}/man}
1903cbdda60SSimon J. Gerraty
1913cbdda60SSimon J. Gerraty.if !exists(.depend)
1923cbdda60SSimon J. Gerraty${OBJS}: config.h
1933cbdda60SSimon J. Gerraty.endif
1943cbdda60SSimon J. Gerraty
1953cbdda60SSimon J. Gerraty# make sure that MAKE_VERSION gets updated.
1963cbdda60SSimon J. Gerratymain.o: ${SRCS} ${MAKEFILE}
1973cbdda60SSimon J. Gerraty
1983cbdda60SSimon J. Gerraty# start-delete2 for bsd.after-import.mk
1991748de26SSimon J. Gerraty.if ${MK_AUTOCONF_MK} == "yes"
2001748de26SSimon J. Gerraty.include <autoconf.mk>
2011748de26SSimon J. Gerraty.endif
2023cbdda60SSimon J. GerratySHARE_MK?=${SHAREDIR}/mk
2033cbdda60SSimon J. GerratyMKSRC=${srcdir}/mk
2043cbdda60SSimon J. GerratyINSTALL?=${srcdir}/install-sh
2053cbdda60SSimon J. Gerraty
2063cbdda60SSimon J. Gerraty.if ${MK_INSTALL_MK} == "yes"
2073cbdda60SSimon J. Gerratyinstall: install-mk
2083cbdda60SSimon J. Gerraty.endif
2093cbdda60SSimon J. Gerraty
2103cbdda60SSimon J. Gerratybeforeinstall:
2113cbdda60SSimon J. Gerraty	test -d ${DESTDIR}${BINDIR} || ${INSTALL} -m 775 -d ${DESTDIR}${BINDIR}
2123cbdda60SSimon J. Gerraty	test -d ${DESTDIR}${MANDEST} || ${INSTALL} -m 775 -d ${DESTDIR}${MANDEST}
2133cbdda60SSimon J. Gerraty
2143cbdda60SSimon J. Gerratyinstall-mk:
2153cbdda60SSimon J. Gerraty.if exists(${MKSRC}/install-mk)
2163cbdda60SSimon J. Gerraty	test -d ${DESTDIR}${SHARE_MK} || ${INSTALL} -m 775 -d ${DESTDIR}${SHARE_MK}
2173cbdda60SSimon J. Gerraty	sh ${MKSRC}/install-mk -v -m 644 ${DESTDIR}${SHARE_MK}
2183cbdda60SSimon J. Gerraty.else
2193cbdda60SSimon J. Gerraty	@echo need to unpack mk.tar.gz under ${srcdir} or set MKSRC; false
2203cbdda60SSimon J. Gerraty.endif
2213cbdda60SSimon J. Gerraty# end-delete2
2223cbdda60SSimon J. Gerraty
2233cbdda60SSimon J. Gerraty# A simple unit-test driver to help catch regressions
2243cbdda60SSimon J. Gerratyaccept test:
2253cbdda60SSimon J. Gerraty	cd ${.CURDIR}/unit-tests && MAKEFLAGS= ${.MAKE} -r -m / TEST_MAKE=${TEST_MAKE:U${.OBJDIR}/${PROG:T}} ${.TARGET}
226