Makefile revision 242102
1241279Smarcel# This is a generated file, do NOT edit!
2241279Smarcel# See contrib/bmake/bsd.after-import.mk
3241279Smarcel#
4241279Smarcel# $FreeBSD: head/usr.bin/bmake/Makefile 242102 2012-10-25 23:18:05Z sjg $
5241279Smarcel
6241279Smarcel.sinclude "Makefile.inc"
7241279Smarcel
8241279SmarcelSRCTOP?= ${.CURDIR:H:H}
9241279Smarcel
10241279Smarcel# look here first for config.h
11241279SmarcelCFLAGS+= -I${.CURDIR}
12241279Smarcel
13241279Smarcel#	$NetBSD: Makefile,v 1.56 2012/05/30 21:54:23 sjg Exp $
14241279Smarcel#	@(#)Makefile	5.2 (Berkeley) 12/28/90
15241279Smarcel
16242102Ssjg#	$Id: Makefile.in,v 1.174 2012/10/10 18:46:24 sjg Exp $
17241279Smarcel
18241279SmarcelPROG?=	${.CURDIR:T}
19241279SmarcelSRCS=	arch.c buf.c compat.c cond.c dir.c for.c hash.c job.c main.c \
20241279Smarcel	make.c parse.c str.c suff.c targ.c trace.c var.c util.c 
21241279SmarcelSRCS+=  strlist.c
22241279SmarcelSRCS+=  make_malloc.c
23241279SmarcelSRCS+=	lstAppend.c lstAtEnd.c lstAtFront.c lstClose.c lstConcat.c \
24241279Smarcel	lstDatum.c lstDeQueue.c lstDestroy.c lstDupl.c lstEnQueue.c \
25241279Smarcel	lstFind.c lstFindFrom.c lstFirst.c lstForEach.c lstForEachFrom.c \
26241279Smarcel	lstInit.c lstInsert.c lstIsAtEnd.c lstIsEmpty.c lstLast.c \
27241279Smarcel	lstMember.c lstNext.c lstOpen.c lstRemove.c lstReplace.c lstSucc.c
28241279SmarcelSRCS += lstPrev.c
29241279Smarcel
30241279Smarcel# you can use this Makefile if you have an earlier version of bmake.
31241279Smarcelprefix= /usr
32241279Smarcelsrcdir= ${SRCTOP}/contrib/bmake
33241279SmarcelCC?= gcc
34241279Smarcel
35241279Smarcel# Base version on src date
36242102SsjgMAKE_VERSION= 20121010
37241279SmarcelDEFAULT_SYS_PATH = .../share/mk:/usr/share/mk
38241279Smarcel
39241279SmarcelCPPFLAGS+= 
40241279SmarcelCFLAGS+= ${CPPFLAGS}
41241279SmarcelCFLAGS+= -D_PATH_DEFSYSPATH=\"${DEFAULT_SYS_PATH}\"
42241279SmarcelCFLAGS+= -I. -I${srcdir} -DHAVE_CONFIG_H ${XDEFS} -DMAKE_NATIVE
43241279SmarcelCFLAGS+= ${CFLAGS_${.TARGET:T}} 
44241279SmarcelCFLAGS+= ${COPTS.${.ALLSRC:M*.c:T:u}}
45241279SmarcelCOPTS.main.c+= "-DMAKE_VERSION=\"${MAKE_VERSION}\""
46241279SmarcelLDFLAGS= 
47241279SmarcelLIBOBJS=  ${LIBOBJDIR}stresep$U.o
48241279SmarcelLDADD= 
49241279Smarcel
50241279Smarcel.if !empty(LIBOBJS)
51241279SmarcelSRCS+= ${LIBOBJS:T:.o=.c}
52241279Smarcel.endif
53241279Smarcel
54241279SmarcelUSE_META = yes
55241279Smarcel.if ${USE_META} != "no"
56241279SmarcelSRCS+=	meta.c
57241279SmarcelCPPFLAGS+= -DUSE_META
58241279SmarcelFILEMON_H ?= /usr/include/dev/filemon/filemon.h
59241279Smarcel.if exists(${FILEMON_H}) && ${FILEMON_H:T} == "filemon.h"
60241279SmarcelCOPTS.meta.c += -DHAVE_FILEMON_H -I${FILEMON_H:H}
61241279Smarcel.endif
62241279Smarcel.endif
63241279Smarcel
64241279Smarcel.PATH:	${srcdir}
65241279Smarcel.PATH:	${srcdir}/lst.lib
66241279Smarcel
67241279SmarcelOS!= uname -s
68241279SmarcelARCH!= uname -p 2>/dev/null || uname -m
69241279Smarcel
70241279Smarcel# list of OS's which are derrived from BSD4.4
71241279SmarcelisBSD44= NetBSD FreeBSD OpenBSD DragonFly
72241279Smarcel
73241279Smarcel.if ${OS} == "NetBSD"
74241279Smarcel# Don't set these for anyone else since we don't know what the effect may be.
75241279Smarcel# On FreeBSD WARNS=2 sets a bunch of -W flags that make does not handle.
76241279SmarcelWFORMAT= 1
77241279SmarcelWARNS=4
78241279Smarcel.NOPATH: bmake.cat1
79241279Smarcel.if make(install) && exists(${DESTDIR}/usr/share/doc)
80241279SmarcelSUBDIR=	PSD.doc
81241279Smarcel.endif
82241279Smarcel.endif
83241279Smarcel
84241751Smarcel.if defined(.PARSEDIR) 
85241751Smarcel# we cannot rely on anything but bmake to parse this correctly.
86241279Smarcel.if empty(isBSD44:M${OS})
87241279SmarcelMANTARGET=cat
88241279SmarcelINSTALL?=${srcdir}/install-sh
89241279Smarcel.if (${MACHINE} == "sun386")
90241279Smarcel# even I don't have one of these anymore :-)
91241279SmarcelCFLAGS+= -DPORTAR
92241279Smarcel.elif (${MACHINE} != "sunos")
93241279SmarcelSRCS+= sigcompat.c
94241279SmarcelCFLAGS+= -DSIGNAL_FLAGS=SA_RESTART
95241279Smarcel.endif
96241279Smarcel.endif
97241751Smarcel
98241279Smarcel.if make(obj) || make(clean)
99241279SmarcelSUBDIR+= unit-tests
100241279Smarcel.endif
101241279Smarcel.endif
102241279Smarcel
103241279Smarcel# many systems use gcc these days
104241279SmarcelCC_IS_GCC=yes
105241279Smarcel.if ${CC_IS_GCC} == "yes"
106241279Smarcel# problem with gcc3
107241279SmarcelCFLAGS_var.o+= -Wno-cast-qual
108241279Smarcel.endif
109241279Smarcel
110241279SmarcelCFLAGS_main.o+= "-DMACHINE=\"${MACHINE}\"" "-DMACHINE_ARCH=\"${MACHINE_ARCH}\""
111241279Smarcel
112241279SmarcelEXTRACT_MAN=no
113241279Smarcel
114241279SmarcelMAN=${PROG}.1
115241279Smarcel.if (${PROG} != "make")
116242102Ssjgmy.history: ${MAKEFILE}
117242102Ssjg	@(echo ".Nm"; \
118241279Smarcel	echo "is derived from NetBSD"; \
119241279Smarcel	echo ".Xr make 1 ."; \
120242102Ssjg	echo "It uses autoconf to facilitate portability to other platforms."; \
121242102Ssjg	echo ".Pp") > $@
122241279Smarcel
123242102Ssjg${MAN}:	make.1 my.history
124242102Ssjg	@echo making ${PROG}.1
125242102Ssjg	@sed -e 's/^.Nx/NetBSD/' -e '/^.Nm/s/make/${PROG}/' \
126242102Ssjg	-e '/^.Sh HISTORY/rmy.history' \
127242102Ssjg	-e '/^.Sh HISTORY/,$$s,^.Nm,make,' ${srcdir}/make.1 > $@
128242102Ssjg
129241279Smarcel.endif
130241279Smarcel
131241279Smarcel.if !empty(isBSD44:M${OS})
132241279Smarcel.if "${OS}" != "NetBSD" 
133241279SmarcelMAN1=${MAN}
134241279Smarcel.endif
135241279SmarcelMANTARGET?=man
136241279Smarcel.endif
137241279Smarcel
138241279SmarcelMANTARGET?= cat
139241279SmarcelMANDEST?= ${MANDIR}/${MANTARGET}1
140241279Smarcel
141241279Smarcel.if ${MANTARGET} == "cat"
142241279Smarcel_mfromdir=${srcdir}
143241279Smarcel.endif
144241279Smarcel
145241279Smarcel.if exists(${srcdir}/../Makefile.inc)
146241279Smarcel.include "${srcdir}/../Makefile.inc"
147241279Smarcel.endif
148241279Smarcel.sinclude <bsd.prog.mk>
149241279Smarcel# sigh, FreeBSD at least includes bsd.subdir.mk via bsd.obj.mk
150241279Smarcel# so the inclusion below, results in complaints about re-defined
151241279Smarcel# targets.  For NetBSD though we need to explicitly include it.
152241279Smarcel.if defined(.PARSEDIR)
153241279Smarcel.if defined(SUBDIR) && !target(${SUBDIR:[1]})
154241279Smarcel.sinclude <bsd.subdir.mk>
155241279Smarcel.endif
156241279Smarcel.endif
157241279Smarcel
158241279SmarcelCPPFLAGS+= -DMAKE_NATIVE
159241279SmarcelCOPTS.var.c += -Wno-cast-qual
160241279SmarcelCOPTS.job.c += -Wno-format-nonliteral
161241279SmarcelCOPTS.parse.c += -Wno-format-nonliteral
162241279SmarcelCOPTS.var.c += -Wno-format-nonliteral
163241279Smarcel
164241279Smarcel# Force these
165241279SmarcelBINDIR= ${prefix}/bin
166241279SmarcelMANDIR= ${prefix}/man
167241279Smarcel
168241279Smarcelarch.o:	config.h
169241279Smarcel# make sure that MAKE_VERSION gets updated.
170241279Smarcelmain.o: ${SRCS} ${MAKEFILE}
171241279Smarcel
172241279SmarcelMK?=${prefix}/share/mk
173241279SmarcelMKSRC?=mk
174241279SmarcelINSTALL?=${srcdir}/install-sh
175241279Smarcel
176241279Smarcelbeforeinstall:
177241279Smarcel	test -d ${DESTDIR}${BINDIR} || ${INSTALL} -m 775 -d ${DESTDIR}${BINDIR}
178241279Smarcel	test -d ${DESTDIR}${MANDEST} || ${INSTALL} -m 775 -d ${DESTDIR}${MANDEST}
179241279Smarcel
180241279Smarcel# latest version of *.mk includes an installer.
181241279Smarcel# you should not need to  set USE_OS
182241279Smarcelinstall-mk:
183241279Smarcel.if exists(${MKSRC}/install-mk)
184241279Smarcel	test -d ${DESTDIR}${MK} || ${INSTALL} -m 775 -d ${DESTDIR}${MK}
185241279Smarcel	${MKSRC}/install-mk -v -m 644 ${DESTDIR}${MK} ${USE_OS}
186241279Smarcel.else
187241279Smarcel	@echo need to unpack mk.tar.gz under ${srcdir} or set MKSRC; false
188241279Smarcel.endif
189241279Smarcel
190241279Smarcel.ifdef TOOLDIR
191241279Smarcel# this is a native netbsd build, 
192241279Smarcel# use libutil rather than the local emalloc etc.
193241279SmarcelCPPFLAGS+= -DUSE_EMALLOC
194241279SmarcelLDADD+=-lutil
195241279SmarcelDPADD+=${LIBUTIL}
196241279Smarcel.endif
197241279Smarcel
198241279Smarcel# A simple unit-test driver to help catch regressions
199241279Smarcelaccept test:
200241279Smarcel	cd ${.CURDIR}/unit-tests && MAKEFLAGS= ${.MAKE} -r -m / TEST_MAKE=${TEST_MAKE:U${.OBJDIR}/${PROG:T}} ${.TARGET}
201241279Smarcel
202241279Smarcel# override some simple things
203241279SmarcelBINDIR= /usr/bin
204241279SmarcelMANDIR= /usr/share/man/man
205241279Smarcel
206241279Smarcel# make sure we get this
207241279SmarcelCFLAGS+= ${COPTS.${.IMPSRC:T}}
208241279SmarcelCLEANFILES+= bootstrap
209241279Smarcel
210241279Smarcelafter-import: ${SRCTOP}/contrib/bmake/bsd.after-import.mk
211241279Smarcel	cd ${.CURDIR} && ${.MAKE} -f ${SRCTOP}/contrib/bmake/bsd.after-import.mk
212241279Smarcel
213