Makefile revision 246149
164126Skato#	$Id: Makefile,v 1.5 2013/01/28 19:31:58 sjg Exp $
264126Skato
364126Skato# Base version on src date
464126SkatoMAKE_VERSION= 20130123
564126Skato
664126SkatoPROG=	bmake
764126Skato
864126SkatoSRCS= \
964126Skato	arch.c \
1064126Skato	buf.c \
1164126Skato	compat.c \
1264126Skato	cond.c \
1364126Skato	dir.c \
1464126Skato	for.c \
1564126Skato	hash.c \
1664126Skato	job.c \
1764126Skato	main.c \
1864126Skato	make.c \
1964126Skato	make_malloc.c \
2064126Skato	meta.c \
2164126Skato	parse.c \
2264126Skato	str.c \
2364126Skato	strlist.c \
2464126Skato	suff.c \
2564126Skato	targ.c \
2664126Skato	trace.c \
2764126Skato	util.c \
2864126Skato	var.c
2964126Skato
3064126Skato# from lst.lib/
3164126SkatoSRCS+= \
3264126Skato	lstAppend.c \
3364126Skato	lstAtEnd.c \
3464126Skato	lstAtFront.c \
3564126Skato	lstClose.c \
3664126Skato	lstConcat.c \
3764126Skato	lstDatum.c \
3864126Skato	lstDeQueue.c \
3964126Skato	lstDestroy.c \
4064126Skato	lstDupl.c \
4164126Skato	lstEnQueue.c \
4264126Skato	lstFind.c \
4364126Skato	lstFindFrom.c \
4464126Skato	lstFirst.c \
4564126Skato	lstForEach.c \
4664126Skato	lstForEachFrom.c \
4764126Skato	lstInit.c \
4864126Skato	lstInsert.c \
4964126Skato	lstIsAtEnd.c \
5064126Skato	lstIsEmpty.c \
5164126Skato	lstLast.c \
5264126Skato	lstMember.c \
5364126Skato	lstNext.c \
5464126Skato	lstOpen.c \
5564126Skato	lstPrev.c \
5664126Skato	lstRemove.c \
5764126Skato	lstReplace.c \
58148049Snyan	lstSucc.c
59148049Snyan
60148049Snyan# this file gets generated by configure
6164126Skato.-include "Makefile.config"
62148049Snyan
6364126Skato.if !empty(LIBOBJS)
6464126SkatoSRCS+= ${LIBOBJS:T:.o=.c}
6564126Skato.endif
6664126Skato
6764126Skato# just in case
68148064Snyanprefix?= /usr
6964126Skatosrcdir?= ${.CURDIR}
7064126Skato
7164126SkatoDEFAULT_SYS_PATH?= .../share/mk:${prefix}/share/mk
7264126Skato
7364126SkatoCPPFLAGS+= -DUSE_META
7464126SkatoCFLAGS+= ${CPPFLAGS}
75110678SnyanCFLAGS+= -D_PATH_DEFSYSPATH=\"${DEFAULT_SYS_PATH}\"
7664126SkatoCFLAGS+= -I. -I${srcdir} ${XDEFS} -DMAKE_NATIVE
7764126SkatoCFLAGS+= ${COPTS.${.ALLSRC:M*.c:T:u}}
7864126SkatoCOPTS.main.c+= "-DMAKE_VERSION=\"${MAKE_VERSION}\""
7964126Skato
80110678Snyan# meta mode can be useful even without filemon 
81110678SnyanFILEMON_H ?= /usr/include/dev/filemon/filemon.h
82110678Snyan.if exists(${FILEMON_H}) && ${FILEMON_H:T} == "filemon.h"
8364126SkatoCOPTS.meta.c += -DHAVE_FILEMON_H -I${FILEMON_H:H}
84148049Snyan.endif
85148049Snyan
86148064Snyan.PATH:	${srcdir}
87148049Snyan.PATH:	${srcdir}/lst.lib
88148049Snyan
8964126Skato.if make(obj) || make(clean)
90148049SnyanSUBDIR+= unit-tests
9164126Skato.endif
9264126Skato
9364126Skato# start-delete1 for bsd.after-import.mk
9464126Skato# we skip a lot of this when building as part of FreeBSD etc.
9564126Skato
9678715Sdd# list of OS's which are derrived from BSD4.4
9764126SkatoBSD44_LIST= NetBSD FreeBSD OpenBSD DragonFly
9864126Skato# we are...
9964126SkatoOS!= uname -s
10064126Skato# are we 4.4BSD ?
101110678SnyanisBSD44:=${BSD44_LIST:M${OS}}
10264126Skato
10364126Skato.if ${isBSD44} == ""
10464126SkatoMANTARGET= cat
10564126SkatoINSTALL?=${srcdir}/install-sh
10664126Skato.if (${MACHINE} == "sun386")
10764126Skato# even I don't have one of these anymore :-)
10864126SkatoCFLAGS+= -DPORTAR
10964126Skato.elif (${MACHINE} != "sunos")
11064126SkatoSRCS+= sigcompat.c
11164126SkatoCFLAGS+= -DSIGNAL_FLAGS=SA_RESTART
11264126Skato.endif
11364126Skato.else
11464126SkatoMANTARGET?= man
11564126Skato.endif
11664126Skato
11764126Skato# turn this on by default - ignored if we are root
11864126SkatoWITH_INSTALL_AS_USER=
11964126Skato
12064126Skato# supress with -DWITHOUT_*
12164126SkatoOPTIONS_DEFAULT_YES+= \
12264126Skato	AUTOCONF_MK \
12364126Skato	INSTALL_MK \
12464126Skato	PROG_LINK
125126652Snyan
12664126SkatoOPTIONS_DEFAULT_NO+= \
12764126Skato	PROG_VERSION
12864126Skato
12964126Skato# process options now
13064126Skato.include <own.mk>
13164126Skato
13264126Skato.if ${MK_PROG_VERSION} == "yes"
13364126SkatoPROG_NAME= ${PROG}-${MAKE_VERSION}
13464126Skato.if ${MK_PROG_LINK} == "yes"
13564126SkatoSYMLINKS+= ${PROG}-${MAKE_VERSION} ${BINDIR}/${PROG}
13664126Skato.endif
13764126Skato.endif
13864126Skato
13964126SkatoEXTRACT_MAN=no
14064126Skato# end-delete1
14164126Skato
142126652SnyanMAN= ${PROG}.1
14364126SkatoMAN1= ${MAN}
144174764Simp
14564126Skato.if (${PROG} != "make")
14664126SkatoCLEANFILES+= my.history
14764126Skato.if make(${MAN}) || !exists(${srcdir}/${MAN})
14864126Skatomy.history: ${MAKEFILE}
14964126Skato	@(echo ".Nm"; \
15064126Skato	echo "is derived from NetBSD"; \
15164126Skato	echo ".Xr make 1 ."; \
15264126Skato	echo "It uses autoconf to facilitate portability to other platforms."; \
15364126Skato	echo ".Pp") > $@
15464126Skato
15564126Skato.NOPATH: ${MAN}
15664126Skato${MAN}:	make.1 my.history
15764126Skato	@echo making $@
15864126Skato	@sed -e 's/^.Nx/NetBSD/' -e '/^.Nm/s/make/${PROG}/' \
159110678Snyan	-e '/^.Sh HISTORY/rmy.history' \
16064126Skato	-e '/^.Sh HISTORY/,$$s,^.Nm,make,' ${srcdir}/make.1 > $@
16164126Skato
16264126Skatoall beforeinstall: ${MAN}
16364126Skato_mfromdir=.
16464126Skato.endif
16564126Skato.endif
16664126Skato
16764126SkatoMANTARGET?= cat
16864126SkatoMANDEST?= ${MANDIR}/${MANTARGET}1
16964126Skato
17064126Skato.if ${MANTARGET} == "cat"
17164126Skato_mfromdir=${srcdir}
17264126Skato.endif
17364126Skato
17464126Skato.include <prog.mk>
17564126Skato
17664126SkatoCPPFLAGS+= -DMAKE_NATIVE -DHAVE_CONFIG_H
17764126SkatoCOPTS.var.c += -Wno-cast-qual
17864126SkatoCOPTS.job.c += -Wno-format-nonliteral
17964126SkatoCOPTS.parse.c += -Wno-format-nonliteral
18064126SkatoCOPTS.var.c += -Wno-format-nonliteral
18164126Skato
18264126Skato# Force these
18364126SkatoSHAREDIR= ${prefix}/share
18464126SkatoBINDIR= ${prefix}/bin
18564126SkatoMANDIR= ${SHAREDIR}/man
18664126Skato
18764126Skato.if !exists(.depend)
18864126Skato${OBJS}: config.h
18964126Skato.endif
19064126Skato.if ${MK_AUTOCONF_MK} == "yes"
19164126Skato.include <autoconf.mk>
19264126Skato.endif
19364126Skato
19464126Skato# make sure that MAKE_VERSION gets updated.
19564126Skatomain.o: ${SRCS} ${MAKEFILE}
19664126Skato
19764126Skato# start-delete2 for bsd.after-import.mk
19864126SkatoSHARE_MK?=${SHAREDIR}/mk
19964126SkatoMKSRC=${srcdir}/mk
20064126SkatoINSTALL?=${srcdir}/install-sh
20164126Skato
20264126Skato.if ${MK_INSTALL_MK} == "yes"
20364126Skatoinstall: install-mk
20464126Skato.endif
20564126Skato
20664126Skatobeforeinstall:
20764126Skato	test -d ${DESTDIR}${BINDIR} || ${INSTALL} -m 775 -d ${DESTDIR}${BINDIR}
20864126Skato	test -d ${DESTDIR}${MANDEST} || ${INSTALL} -m 775 -d ${DESTDIR}${MANDEST}
20964126Skato
21064126Skatoinstall-mk:
21164126Skato.if exists(${MKSRC}/install-mk)
21264126Skato	test -d ${DESTDIR}${SHARE_MK} || ${INSTALL} -m 775 -d ${DESTDIR}${SHARE_MK}
21364126Skato	sh ${MKSRC}/install-mk -v -m 644 ${DESTDIR}${SHARE_MK}
21464126Skato.else
21564126Skato	@echo need to unpack mk.tar.gz under ${srcdir} or set MKSRC; false
216110678Snyan.endif
217110678Snyan# end-delete2
218110678Snyan
21964126Skato# A simple unit-test driver to help catch regressions
22064126Skatoaccept test:
221148049Snyan	cd ${.CURDIR}/unit-tests && MAKEFLAGS= ${.MAKE} -r -m / TEST_MAKE=${TEST_MAKE:U${.OBJDIR}/${PROG:T}} ${.TARGET}
222148049Snyan