xref: /freebsd/usr.bin/bmake/Makefile (revision 34a3834eadd03bec7703b8fbf9123f27b1114986)
1# This is a generated file, do NOT edit!
2# See contrib/bmake/bsd.after-import.mk
3#
4
5SRCTOP?= ${.CURDIR:H:H}
6
7# look here first for config.h
8CFLAGS+= -I${.CURDIR}
9
10# for after-import
11CLEANDIRS+= FreeBSD
12CLEANFILES+= bootstrap
13
14#	$Id: Makefile,v 1.137 2026/03/13 15:37:22 sjg Exp $
15
16PROG?= ${.CURDIR:T}
17
18SRCS= \
19	arch.c \
20	buf.c \
21	compat.c \
22	cond.c \
23	dir.c \
24	for.c \
25	hash.c \
26	job.c \
27	lst.c \
28	main.c \
29	make.c \
30	make_malloc.c \
31	meta.c \
32	metachar.c \
33	parse.c \
34	str.c \
35	suff.c \
36	targ.c \
37	trace.c \
38	util.c \
39	var.c
40
41.MAIN: all
42
43.-include "Makefile.inc"
44
45# this file gets generated by configure
46.-include "Makefile.config"
47
48.if !empty(LIBOBJS)
49SRCS+= ${LIBOBJS:T:.o=.c}
50.endif
51
52# just in case
53prefix?= /usr
54srcdir?= ${.PARSEDIR}
55srcdir:= ${srcdir}
56
57MAN?= ${PROG}.1
58SRCS.${MAN}?= ${srcdir}/make.1
59
60DEFAULT_SYS_PATH?= ${prefix}/share/mk
61
62CPPFLAGS+= -DUSE_META
63CFLAGS+= ${CPPFLAGS}
64CFLAGS+= -D_PATH_DEFSYSPATH=\"${DEFAULT_SYS_PATH}\"
65CFLAGS+= -I. -I${srcdir} ${XDEFS} -DMAKE_NATIVE
66CFLAGS+= ${COPTS.${.ALLSRC:M*.c:T:u}}
67COPTS.main.c+= "-DMAKE_VERSION=\"${_MAKE_VERSION}\""
68
69# bmake defaults to the traditional behavior
70MAKE_SAVE_DOLLARS_DEFAULT?= no
71
72VARS.main+= FORCE_MAKE_OS FORCE_MACHINE FORCE_MACHINE_ARCH \
73	MAKE_SAVE_DOLLARS_DEFAULT \
74
75.for x in ${VARS.main}
76.ifdef $x
77COPTS.main.c+= "-D$x=\"${$x}\""
78.endif
79.endfor
80
81# meta mode can be useful even without filemon
82# should be set by now
83USE_FILEMON?= no
84.if ${USE_FILEMON:tl} != "no"
85.PATH:	${srcdir}/filemon
86SRCS+= filemon_${USE_FILEMON}.c
87COPTS.meta.c+= -DUSE_FILEMON -DUSE_FILEMON_${USE_FILEMON:tu}
88COPTS.job.c+= ${COPTS.meta.c}
89
90.if ${USE_FILEMON} == "dev"
91FILEMON_H?= /usr/include/dev/filemon/filemon.h
92.if exists(${FILEMON_H}) && ${FILEMON_H:T} == "filemon.h"
93COPTS.filemon_dev.c+= -DHAVE_FILEMON_H -I${FILEMON_H:H}
94.endif
95.elif ${USE_FILEMON} == "ktrace"
96COPTS.filemon_ktrace.c+= -Wno-error=unused-parameter
97.endif
98
99.endif				# USE_FILEMON
100
101.PATH:	${srcdir}
102
103
104.if make(obj) || make(clean)
105SUBDIR.${MK_TESTS}+= unit-tests
106.endif
107
108MAN1= ${MAN}
109
110.if ${MK_GEN_MAN:Uno} == "yes"
111
112# we use this to generate ${MAN}
113.include <${srcdir}/mk/genfiles.mk>
114
115.if ${PROG} != "make"
116CLEANFILES+= my.history
117SED_CMDS.${MAN}+= \
118	-e '/^.Dt/s/MAKE/${PROG:tu}/' \
119	-e '/^.Nm/s/make/${PROG}/' \
120
121.endif
122
123.if ${CLEANFILES:U:Mmy.history} != ""
124${MAN}: my.history
125my.history:
126	@(echo ".Nm"; \
127	echo "is derived from NetBSD"; \
128	echo ".Xr make 1 ."; \
129	echo "It uses autoconf to facilitate portability to other platforms."; \
130	echo ".Pp") > $@
131
132SED_CMDS.${MAN}+= \
133	-e '/^.Sh HISTORY/rmy.history' \
134	-e '/^.Sh HISTORY/,/BUGS/s,^.Nm,make,' \
135
136.endif
137
138.if ${.MAKE.OS:N*BSD} != ""
139# assume .Nx is not supported
140SED_CMDS.${MAN}+= -e 's/^\.Nx/NetBSD/'
141.endif
142
143# watch out for a late change of PROG
144.if !empty(SRCS.${MAN})
145.NOPATH: ${MAN}
146${MAN}:	${SRCS.${MAN}} _GENFILES_USE
147
148all man beforeinstall: ${MAN}
149_mfromdir= .
150.endif
151.endif				# MK_GEN_MAN
152
153MANTARGET?= cat
154MANDEST?= ${MANDIR}/${MANTARGET}1
155
156.if ${MANTARGET} == "cat"
157_mfromdir= ${srcdir}
158.endif
159
160.include <bsd.prog.mk>
161
162CPPFLAGS+= -DMAKE_NATIVE -DHAVE_CONFIG_H
163COPTS.var.c+= -Wno-cast-qual
164COPTS.job.c+= -Wno-format-nonliteral
165COPTS.parse.c+= -Wno-format-nonliteral
166COPTS.var.c+= -Wno-format-nonliteral
167
168# Force these
169SHAREDIR= ${SHAREDIR.bmake:U${prefix}/share}
170BINDIR= ${BINDIR.bmake:U${prefix}/bin}
171MANDIR= ${MANDIR.bmake:U${SHAREDIR}/man}
172
173${OBJS}: .META config.h
174${PROG}: .META
175
176
177# A simple unit-test driver to help catch regressions
178TEST_MAKE?= ${.OBJDIR}/${PROG:T}
179accept test: .NOMETA
180	cd ${.CURDIR}/unit-tests && \
181	MAKEFLAGS= ${TEST_MAKE} -r -m / ${.TARGET} ${TESTS:DTESTS=${TESTS:Q}}
182
183
184.if make(test) && ${MK_AUTO_OBJ} == "yes"
185# The test target above visits unit-tests with -r -m /
186# which prevents MK_AUTO_OBJ doing its job
187# so do it here
188.if defined(MAKEOBJDIRPREFIX) || ${MAKEOBJDIR:U:M*/*} != ""
189_utobj= ${.OBJDIR}/unit-tests
190.else
191_utobj= ${.CURDIR}/unit-tests/${MAKEOBJDIR:Uobj}
192.endif
193utobj: .NOMETA
194	@test -d ${_utobj} && exit 0; \
195	echo "[Creating ${_utobj}...]"; \
196	umask ${OBJDIR_UMASK:U002}; \
197	mkdir -p ${_utobj}
198test: utobj
199.endif
200
201# override some simple things
202BINDIR= /usr/bin
203MANDIR= /usr/share/man/man
204
205# make sure we get this
206CFLAGS+= ${COPTS.${.IMPSRC:T}}
207
208after-import: ${SRCTOP}/contrib/bmake/bsd.after-import.mk
209	cd ${.CURDIR} && ${.MAKE} -f ${SRCTOP}/contrib/bmake/bsd.after-import.mk
210
211