xref: /freebsd/usr.bin/bmake/Makefile (revision a69ac6ee79143476abc044346aa28822324f33a6)
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.132 2024/09/22 19:56:26 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
102MAN1 = ${MAN}
103
104.if ${MK_GEN_MAN:Uno} == "yes"
105
106# we use this to generate ${MAN}
107.include <${srcdir}/mk/genfiles.mk>
108
109.if ${PROG} != "make"
110CLEANFILES += my.history
111SED_CMDS.${MAN} += \
112	-e '/^.Dt/s/MAKE/${PROG:tu}/' \
113	-e '/^.Nm/s/make/${PROG}/' \
114
115.endif
116
117.if ${CLEANFILES:U:Mmy.history} != ""
118${MAN}: my.history
119my.history:
120	@(echo ".Nm"; \
121	echo "is derived from NetBSD"; \
122	echo ".Xr make 1 ."; \
123	echo "It uses autoconf to facilitate portability to other platforms."; \
124	echo ".Pp") > $@
125
126SED_CMDS.${MAN} += \
127	-e '/^.Sh HISTORY/rmy.history' \
128	-e '/^.Sh HISTORY/,/BUGS/s,^.Nm,make,' \
129
130.endif
131
132.if ${.MAKE.OS:N*BSD} != ""
133# assume .Nx is not supported
134SED_CMDS.${MAN} += -e 's/^\.Nx/NetBSD/'
135.endif
136
137# watch out for a late change of PROG
138.if !empty(SRCS.${MAN})
139.NOPATH: ${MAN}
140${MAN}:	${SRCS.${MAN}} _GENFILES_USE
141
142all man beforeinstall: ${MAN}
143_mfromdir = .
144.endif
145.endif				# MK_GEN_MAN
146
147MANTARGET ?= cat
148MANDEST ?= ${MANDIR}/${MANTARGET}1
149
150.if ${MANTARGET} == "cat"
151_mfromdir = ${srcdir}
152.endif
153
154.include <bsd.prog.mk>
155
156CPPFLAGS += -DMAKE_NATIVE -DHAVE_CONFIG_H
157COPTS.var.c += -Wno-cast-qual
158COPTS.job.c += -Wno-format-nonliteral
159COPTS.parse.c += -Wno-format-nonliteral
160COPTS.var.c += -Wno-format-nonliteral
161
162# Force these
163SHAREDIR = ${SHAREDIR.bmake:U${prefix}/share}
164BINDIR = ${BINDIR.bmake:U${prefix}/bin}
165MANDIR = ${MANDIR.bmake:U${SHAREDIR}/man}
166
167${OBJS}: config.h
168
169
170# A simple unit-test driver to help catch regressions
171TEST_MAKE ?= ${.OBJDIR}/${PROG:T}
172accept test: .NOMETA
173	cd ${.CURDIR}/unit-tests && \
174	MAKEFLAGS= ${TEST_MAKE} -r -m / ${.TARGET} ${TESTS:DTESTS=${TESTS:Q}}
175
176
177.if make(test) && ${MK_AUTO_OBJ} == "yes"
178# The test target above visits unit-tests with -r -m /
179# which prevents MK_AUTO_OBJ doing its job
180# so do it here
181.if defined(MAKEOBJDIRPREFIX) || ${MAKEOBJDIR:U:M*/*} != ""
182_utobj = ${.OBJDIR}/unit-tests
183.else
184_utobj = ${.CURDIR}/unit-tests/${MAKEOBJDIR:Uobj}
185.endif
186utobj: .NOMETA
187	@test -d ${_utobj} && exit 0; \
188	echo "[Creating ${_utobj}...]"; \
189	umask ${OBJDIR_UMASK:U002}; \
190	mkdir -p ${_utobj}
191test: utobj
192.endif
193
194# override some simple things
195BINDIR = /usr/bin
196MANDIR = /usr/share/man/man
197
198# make sure we get this
199CFLAGS += ${COPTS.${.IMPSRC:T}}
200
201after-import: ${SRCTOP}/contrib/bmake/bsd.after-import.mk
202	cd ${.CURDIR} && ${.MAKE} -f ${SRCTOP}/contrib/bmake/bsd.after-import.mk
203
204