xref: /freebsd/usr.bin/bmake/Makefile (revision 23401aeb15cec75fc215550b032aa898d2e62455)
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.133 2025/03/08 20:12:56 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
43MAN= ${PROG}.1
44SRCS.${MAN}= ${srcdir}/make.1
45
46.-include "Makefile.inc"
47
48# this file gets generated by configure
49.-include "Makefile.config"
50
51.if !empty(LIBOBJS)
52SRCS+= ${LIBOBJS:T:.o=.c}
53.endif
54
55# just in case
56prefix?= /usr
57srcdir?= ${.PARSEDIR}
58srcdir:= ${srcdir}
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.for x in FORCE_MAKE_OS FORCE_MACHINE FORCE_MACHINE_ARCH
70.ifdef $x
71COPTS.main.c+= "-D$x=\"${$x}\""
72.endif
73.endfor
74
75# meta mode can be useful even without filemon
76# should be set by now
77USE_FILEMON?= no
78.if ${USE_FILEMON:tl} != "no"
79.PATH:	${srcdir}/filemon
80SRCS+= filemon_${USE_FILEMON}.c
81COPTS.meta.c+= -DUSE_FILEMON -DUSE_FILEMON_${USE_FILEMON:tu}
82COPTS.job.c+= ${COPTS.meta.c}
83
84.if ${USE_FILEMON} == "dev"
85FILEMON_H?= /usr/include/dev/filemon/filemon.h
86.if exists(${FILEMON_H}) && ${FILEMON_H:T} == "filemon.h"
87COPTS.filemon_dev.c+= -DHAVE_FILEMON_H -I${FILEMON_H:H}
88.endif
89.elif ${USE_FILEMON} == "ktrace"
90COPTS.filemon_ktrace.c+= -Wno-error=unused-parameter
91.endif
92
93.endif				# USE_FILEMON
94
95.PATH:	${srcdir}
96
97
98.if make(obj) || make(clean)
99SUBDIR.${MK_TESTS}+= unit-tests
100.endif
101
102.if ${MK_GEN_MAN:Uno} == "yes"
103
104# we use this to generate ${MAN}
105.include <${srcdir}/mk/genfiles.mk>
106
107.if ${PROG} != "make"
108CLEANFILES+= my.history
109SED_CMDS.${MAN}+= \
110	-e '/^.Dt/s/MAKE/${PROG:tu}/' \
111	-e '/^.Nm/s/make/${PROG}/' \
112
113.endif
114
115.if ${CLEANFILES:U:Mmy.history} != ""
116${MAN}: my.history
117my.history:
118	@(echo ".Nm"; \
119	echo "is derived from NetBSD"; \
120	echo ".Xr make 1 ."; \
121	echo "It uses autoconf to facilitate portability to other platforms."; \
122	echo ".Pp") > $@
123
124SED_CMDS.${MAN}+= \
125	-e '/^.Sh HISTORY/rmy.history' \
126	-e '/^.Sh HISTORY/,/BUGS/s,^.Nm,make,' \
127
128.endif
129
130.if ${.MAKE.OS:N*BSD} != ""
131# assume .Nx is not supported
132SED_CMDS.${MAN}+= -e 's/^\.Nx/NetBSD/'
133.endif
134
135# watch out for a late change of PROG
136.if !empty(SRCS.${MAN})
137.NOPATH: ${MAN}
138${MAN}:	${SRCS.${MAN}} _GENFILES_USE
139
140all man beforeinstall: ${MAN}
141_mfromdir= .
142.endif
143.endif				# MK_GEN_MAN
144
145MANTARGET?= cat
146MANDEST?= ${MANDIR}/${MANTARGET}1
147
148.if ${MANTARGET} == "cat"
149_mfromdir= ${srcdir}
150.endif
151
152.include <bsd.prog.mk>
153
154CPPFLAGS+= -DMAKE_NATIVE -DHAVE_CONFIG_H
155COPTS.var.c+= -Wno-cast-qual
156COPTS.job.c+= -Wno-format-nonliteral
157COPTS.parse.c+= -Wno-format-nonliteral
158COPTS.var.c+= -Wno-format-nonliteral
159
160# Force these
161SHAREDIR= ${SHAREDIR.bmake:U${prefix}/share}
162BINDIR= ${BINDIR.bmake:U${prefix}/bin}
163MANDIR= ${MANDIR.bmake:U${SHAREDIR}/man}
164
165${OBJS}: config.h
166
167
168# A simple unit-test driver to help catch regressions
169TEST_MAKE?= ${.OBJDIR}/${PROG:T}
170accept test: .NOMETA
171	cd ${.CURDIR}/unit-tests && \
172	MAKEFLAGS= ${TEST_MAKE} -r -m / ${.TARGET} ${TESTS:DTESTS=${TESTS:Q}}
173
174
175.if make(test) && ${MK_AUTO_OBJ} == "yes"
176# The test target above visits unit-tests with -r -m /
177# which prevents MK_AUTO_OBJ doing its job
178# so do it here
179.if defined(MAKEOBJDIRPREFIX) || ${MAKEOBJDIR:U:M*/*} != ""
180_utobj= ${.OBJDIR}/unit-tests
181.else
182_utobj= ${.CURDIR}/unit-tests/${MAKEOBJDIR:Uobj}
183.endif
184utobj: .NOMETA
185	@test -d ${_utobj} && exit 0; \
186	echo "[Creating ${_utobj}...]"; \
187	umask ${OBJDIR_UMASK:U002}; \
188	mkdir -p ${_utobj}
189test: utobj
190.endif
191
192# override some simple things
193BINDIR= /usr/bin
194MANDIR= /usr/share/man/man
195
196# make sure we get this
197CFLAGS+= ${COPTS.${.IMPSRC:T}}
198
199after-import: ${SRCTOP}/contrib/bmake/bsd.after-import.mk
200	cd ${.CURDIR} && ${.MAKE} -f ${SRCTOP}/contrib/bmake/bsd.after-import.mk
201
202