xref: /freebsd/rescue/rescue/Makefile (revision 9a9ea25f)
1884c25d1SGordon Tetlow#$FreeBSD$
2884c25d1SGordon Tetlow#	@(#)Makefile	8.1 (Berkeley) 6/2/93
3884c25d1SGordon Tetlow
4e1fe3dbaSRuslan ErmilovNO_MAN=
5e1fe3dbaSRuslan Ermilov
6e1fe3dbaSRuslan Ermilov.include <bsd.own.mk>
7e1fe3dbaSRuslan Ermilov
8884c25d1SGordon TetlowPROG=	rescue
9884c25d1SGordon TetlowBINDIR?=/rescue
10884c25d1SGordon Tetlow
11884c25d1SGordon Tetlow# Shell scripts need #! line to be edited from /bin/sh to /rescue/sh
12884c25d1SGordon TetlowSCRIPTS= nextboot_FIXED
1304ddb211SJohn BaldwinSCRIPTSNAME_nextboot_FIXED= nextboot
14884c25d1SGordon Tetlownextboot_FIXED: ../../sbin/reboot/nextboot.sh
15884c25d1SGordon Tetlow	sed '1s/\/bin\//\/rescue\//' ${.ALLSRC} > ${.TARGET}
16884c25d1SGordon TetlowCLEANFILES+= nextboot_FIXED
17884c25d1SGordon Tetlow
18d4208689SBrooks DavisSCRIPTS+= dhclient_FIXED
19d4208689SBrooks DavisSCRIPTSNAME_dhclient_FIXED= dhclient-script
20d4208689SBrooks Davisdhclient_FIXED: ../../sbin/dhclient/dhclient-script
21d4208689SBrooks Davis	sed '1s/\/bin\//\/rescue\//' ${.ALLSRC} > ${.TARGET}
22d4208689SBrooks DavisCLEANFILES+= dhclient_FIXED
23884c25d1SGordon Tetlow
24884c25d1SGordon Tetlow#################################################################
25884c25d1SGordon Tetlow#
26884c25d1SGordon Tetlow# General notes:
27884c25d1SGordon Tetlow#
28884c25d1SGordon Tetlow# A number of Make variables are used to generate the crunchgen config file.
29884c25d1SGordon Tetlow#
30884c25d1SGordon Tetlow#  CRUNCH_SRCDIRS: lists directories to search for included programs
31884c25d1SGordon Tetlow#  CRUNCH_PROGS:  lists programs to be included
32884c25d1SGordon Tetlow#  CRUNCH_LIBS:  libraries to link with
33884c25d1SGordon Tetlow#  CRUNCH_BUILDOPTS: generic build options to be added to every program
34884c25d1SGordon Tetlow#
35884c25d1SGordon Tetlow# Special options can be specified for individual programs
36884c25d1SGordon Tetlow#  CRUNCH_SRCDIR_$(P): base source directory for program $(P)
37884c25d1SGordon Tetlow#  CRUNCH_BUILDOPTS_$(P): additional build options for $(P)
38884c25d1SGordon Tetlow#  CRUNCH_ALIAS_$(P): additional names to be used for $(P)
39884c25d1SGordon Tetlow#
40884c25d1SGordon Tetlow# By default, any name appearing in CRUNCH_PROGS or CRUNCH_ALIAS_${P}
41884c25d1SGordon Tetlow# will be used to generate a hard link to the resulting binary.
42884c25d1SGordon Tetlow# Specific links can be suppressed by setting
43884c25d1SGordon Tetlow# CRUNCH_SUPPRESS_LINK_$(NAME) to 1.
44884c25d1SGordon Tetlow#
45884c25d1SGordon Tetlow
46884c25d1SGordon Tetlow# Define Makefile variable RESCUE
47884c25d1SGordon TetlowCRUNCH_BUILDOPTS+= -DRESCUE
48884c25d1SGordon Tetlow# Define compile-time RESCUE symbol when compiling components
49884c25d1SGordon TetlowCRUNCH_BUILDOPTS+= CRUNCH_CFLAGS=-DRESCUE
50884c25d1SGordon Tetlow
514d938af0SGordon Tetlow# An experiment that failed: try overriding bsd.lib.mk and bsd.prog.mk
524d938af0SGordon Tetlow# rather than incorporating rescue-specific logic into standard files.
53884c25d1SGordon Tetlow#MAKEFLAGS= -m ${.CURDIR} ${.MAKEFLAGS}
54884c25d1SGordon Tetlow
55884c25d1SGordon Tetlow# Hackery:  'librescue' exists merely as a tool for appropriately
56884c25d1SGordon Tetlow# recompiling specific library entries.  We _know_ they're needed, and
57884c25d1SGordon Tetlow# regular archive searching creates ugly library ordering problems.
58884c25d1SGordon Tetlow# Easiest fix: tell the linker to include them into the executable
59884c25d1SGordon Tetlow# first, so they are guaranteed to override the regular lib entries.
60884c25d1SGordon Tetlow# Note that if 'librescue' hasn't been compiled, we'll just get the
61884c25d1SGordon Tetlow# regular lib entries from libc and friends.
62884c25d1SGordon TetlowCRUNCH_LIBS+= ${.OBJDIR}/../librescue/*.o
63884c25d1SGordon Tetlow
64884c25d1SGordon Tetlow###################################################################
65884c25d1SGordon Tetlow# Programs from stock /bin
66884c25d1SGordon Tetlow#
67884c25d1SGordon Tetlow# WARNING: Changing this list may require adjusting
68884c25d1SGordon Tetlow# /usr/include/paths.h as well!  You were warned!
69884c25d1SGordon Tetlow#
70d60d0f81SGordon TetlowCRUNCH_SRCDIRS+= bin
7139ae372dSDavid E. O'BrienCRUNCH_PROGS_bin= cat chflags chio chmod cp date dd df echo 	\
72d60d0f81SGordon Tetlow	 ed expr getfacl hostname kenv kill ln ls mkdir mv pax ps pwd 	\
7339ae372dSDavid E. O'Brien	 realpath rm rmdir setfacl sh stty sync test
74bfa053a8SDavid E. O'BrienCRUNCH_LIBS+= -lcrypt -ledit -lkvm -ll -lm -ltermcap -lutil
75e1fe3dbaSRuslan Ermilov.if ${MK_OPENSSL} != "no"
76bfa053a8SDavid E. O'BrienCRUNCH_LIBS+= -lcrypto
77bfa053a8SDavid E. O'Brien.endif
78884c25d1SGordon Tetlow
79884c25d1SGordon Tetlow# Additional options for specific programs
80884c25d1SGordon TetlowCRUNCH_ALIAS_test= [
81884c25d1SGordon TetlowCRUNCH_ALIAS_sh= -sh
82884c25d1SGordon Tetlow# The -sh alias shouldn't appear in /rescue as a hard link
83884c25d1SGordon TetlowCRUNCH_SUPPRESS_LINK_-sh= 1
84884c25d1SGordon TetlowCRUNCH_ALIAS_ln= link
85884c25d1SGordon TetlowCRUNCH_ALIAS_rm= unlink
86884c25d1SGordon TetlowCRUNCH_ALIAS_ed= red
87884c25d1SGordon Tetlow
88e1fe3dbaSRuslan Ermilov.if ${MK_RCMDS} != "no"
89d60d0f81SGordon TetlowCRUNCH_PROGS_bin+= rcp
90884c25d1SGordon Tetlow.endif
91884c25d1SGordon Tetlow
92e1fe3dbaSRuslan Ermilov.if ${MK_TCSH} != "no"
93d60d0f81SGordon TetlowCRUNCH_PROGS_bin+= csh
94884c25d1SGordon TetlowCRUNCH_ALIAS_csh= -csh tcsh -tcsh
95884c25d1SGordon TetlowCRUNCH_SUPPRESS_LINK_-csh= 1
96884c25d1SGordon TetlowCRUNCH_SUPPRESS_LINK_-tcsh= 1
97884c25d1SGordon Tetlow.endif
98884c25d1SGordon Tetlow
99884c25d1SGordon Tetlow###################################################################
100884c25d1SGordon Tetlow# Programs from standard /sbin
101884c25d1SGordon Tetlow#
102884c25d1SGordon Tetlow# WARNING: Changing this list may require adjusting
103884c25d1SGordon Tetlow# /usr/include/paths.h as well!  You were warned!
104884c25d1SGordon Tetlow#
10539ae372dSDavid E. O'Brien# Note that mdmfs have their own private 'pathnames.h'
106884c25d1SGordon Tetlow# headers in addition to the standard 'paths.h' header.
107884c25d1SGordon Tetlow#
108d60d0f81SGordon TetlowCRUNCH_SRCDIRS+= sbin
10940353969SPoul-Henning KampCRUNCH_PROGS_sbin= atacontrol badsect bsdlabel		\
110513b02ffSHartmut Brandt	camcontrol ccdconfig clri devfs dmesg dump			\
111cc795cb4SMarius Strobl	dumpfs dumpon fsck fsck_ffs fsck_msdosfs fsdb		\
11240353969SPoul-Henning Kamp	fsirand gbde ifconfig init 				\
11339ae372dSDavid E. O'Brien	kldconfig kldload kldstat kldunload ldconfig 			\
114c89454cbSCraig Rodrigues	md5 mdconfig mdmfs mknod mount mount_cd9660	\
115a3367e4fSGordon Tetlow	mount_msdosfs mount_nfs mount_ntfs mount_nullfs			\
1166543fe0dSCraig Rodrigues	mount_udf mount_umapfs mount_unionfs newfs		\
117043fc269SPoul-Henning Kamp	newfs_msdos nos-tun ping reboot			\
11839ae372dSDavid E. O'Brien	restore rcorder route routed rtquery rtsol savecore 		\
11940353969SPoul-Henning Kamp	slattach spppcontrol startslip swapon sysctl tunefs umount
12040353969SPoul-Henning Kamp
121e1fe3dbaSRuslan Ermilov.if ${MK_ATM} != "no"
122cc795cb4SMarius StroblCRUNCH_PROGS_sbin+= atm atmconfig fore_dnld ilmid
12340353969SPoul-Henning KampCRUNCH_LIBS+= -latm
12440353969SPoul-Henning Kamp.endif
12540353969SPoul-Henning Kamp
126e1fe3dbaSRuslan Ermilov.if ${MK_INET6_SUPPORT} != "no"
12740353969SPoul-Henning KampCRUNCH_PROGS_sbin+= ping6
12840353969SPoul-Henning Kamp.endif
12940353969SPoul-Henning Kamp
130e1fe3dbaSRuslan Ermilov.if ${MK_IPFILTER} != "no"
131cf4ee2c9SDarren ReedCRUNCH_PROGS_sbin+= ipf
1325433713cSDavid E. O'Brien.endif
1335433713cSDavid E. O'Brien
134884c25d1SGordon Tetlow# crunchgen does not like C++ programs; this should be fixed someday
135884c25d1SGordon Tetlow# CRUNCH_PROGS+= devd
136884c25d1SGordon Tetlow
1376e7fd77bSOlivier HouchardCRUNCH_LIBS+= -lalias -lcam -lcurses -ldevstat -lipsec
138cea557adSRuslan Ermilov.if ${MK_IPX} != "no"
139cea557adSRuslan ErmilovCRUNCH_LIBS+= -lipx
140cea557adSRuslan Ermilov.endif
1416e7fd77bSOlivier HouchardCRUNCH_LIBS+= -lgeom -lbsdxml -lkiconv -lmd -lreadline -lsbuf -lufs -lz
142884c25d1SGordon Tetlow
143884c25d1SGordon Tetlow.if ${MACHINE_ARCH} == "i386"
144e21833dcSWarner LoshCRUNCH_PROGS_sbin+= sconfig fdisk
1459b6e332fSGordon TetlowCRUNCH_ALIAS_bsdlabel= disklabel
146cea557adSRuslan Ermilov#.if ${MK_NCP} != "no"
147cea557adSRuslan Ermilov#CRUNCH_PROGS+= mount_nwfs
148cea557adSRuslan Ermilov#CRUNCH_LIBS+= -lncp
149cea557adSRuslan Ermilov#.endif
150cea557adSRuslan Ermilov#CRUNCH_PROGS+= mount_smbfs
151cea557adSRuslan Ermilov#CRUNCH_LIBS+= -lsmb
152884c25d1SGordon Tetlow.endif
153884c25d1SGordon Tetlow
154884c25d1SGordon Tetlow.if ${MACHINE} == "pc98"
155107e6cdaSGordon TetlowCRUNCH_SRCDIR_fdisk= $(.CURDIR)/../../sbin/fdisk_pc98
156884c25d1SGordon Tetlow.endif
157884c25d1SGordon Tetlow
158884c25d1SGordon Tetlow.if ${MACHINE_ARCH} == "ia64"
159d60d0f81SGordon TetlowCRUNCH_PROGS_sbin+= mca gpt fdisk
160884c25d1SGordon Tetlow.endif
161884c25d1SGordon Tetlow
16258824dccSGordon Tetlow.if ${MACHINE_ARCH} == "sparc64"
163d60d0f81SGordon TetlowCRUNCH_PROGS_sbin+= sunlabel
164884c25d1SGordon Tetlow.endif
165884c25d1SGordon Tetlow
1669b6e332fSGordon Tetlow.if ${MACHINE_ARCH} == "amd64"
167d60d0f81SGordon TetlowCRUNCH_PROGS_sbin+= fdisk
1689b6e332fSGordon TetlowCRUNCH_ALIAS_bsdlabel= disklabel
169884c25d1SGordon Tetlow.endif
170884c25d1SGordon Tetlow
171884c25d1SGordon TetlowCRUNCH_SRCDIR_atm= $(.CURDIR)/../../sbin/atm/atm
172513b02ffSHartmut BrandtCRUNCH_SRCDIR_atmconfig= $(.CURDIR)/../../sbin/atm/atmconfig
173884c25d1SGordon TetlowCRUNCH_SRCDIR_fore_dnld= $(.CURDIR)/../../sbin/atm/fore_dnld
174884c25d1SGordon TetlowCRUNCH_SRCDIR_ilmid= $(.CURDIR)/../../sbin/atm/ilmid
175884c25d1SGordon TetlowCRUNCH_SRCDIR_rtquery= $(.CURDIR)/../../sbin/routed/rtquery
176cf4ee2c9SDarren ReedCRUNCH_SRCDIR_ipf= $(.CURDIR)/../../sbin/ipf/ipf
177884c25d1SGordon TetlowCRUNCH_ALIAS_reboot= fastboot halt fasthalt
178884c25d1SGordon TetlowCRUNCH_ALIAS_restore= rrestore
179884c25d1SGordon TetlowCRUNCH_ALIAS_dump= rdump
180884c25d1SGordon TetlowCRUNCH_ALIAS_fsck_ffs= fsck_4.2bsd fsck_ufs
181884c25d1SGordon Tetlow
182884c25d1SGordon Tetlow# dhclient has historically been troublesome...
183d4208689SBrooks DavisCRUNCH_PROGS_sbin+= dhclient
184d4208689SBrooks DavisCRUNCH_BUILDOPTS_dhclient= -DRELEASE_CRUNCH -Dlint
185884c25d1SGordon Tetlow
186884c25d1SGordon Tetlow##################################################################
187884c25d1SGordon Tetlow# Programs from stock /usr/bin
188884c25d1SGordon Tetlow#
189d60d0f81SGordon TetlowCRUNCH_SRCDIRS+= usr.bin
190884c25d1SGordon Tetlow
1919a9ea25fSXin LICRUNCH_PROGS_usr.bin+= gzip
192884c25d1SGordon TetlowCRUNCH_ALIAS_gzip= gunzip gzcat zcat
193884c25d1SGordon Tetlow
194d60d0f81SGordon TetlowCRUNCH_PROGS_usr.bin+= bzip2
195884c25d1SGordon TetlowCRUNCH_ALIAS_bzip2= bunzip2 bzcat
196884c25d1SGordon TetlowCRUNCH_LIBS+= -lbz2
197884c25d1SGordon Tetlow
198cc7f9762SDavid E. O'BrienCRUNCH_PROGS_usr.bin+= tar
199cc7f9762SDavid E. O'BrienCRUNCH_LIBS+= -larchive
200cc7f9762SDavid E. O'Brien
201d60d0f81SGordon TetlowCRUNCH_PROGS_usr.bin+= vi
202884c25d1SGordon TetlowCRUNCH_ALIAS_vi= ex
203884c25d1SGordon Tetlow
2047ad67863SDag-Erling SmørgravCRUNCH_PROGS_usr.bin+= id
2057ad67863SDag-Erling SmørgravCRUNCH_ALIAS_id= groups whoami
2067ad67863SDag-Erling Smørgrav
207884c25d1SGordon Tetlow##################################################################
208ad02aba6SDag-Erling Smørgrav# Programs from stock /usr/sbin
209ad02aba6SDag-Erling Smørgrav#
210ad02aba6SDag-Erling SmørgravCRUNCH_SRCDIRS+= usr.sbin
211ad02aba6SDag-Erling Smørgrav
212ad02aba6SDag-Erling SmørgravCRUNCH_PROGS_usr.sbin+= chroot
213ad02aba6SDag-Erling Smørgrav
214ad02aba6SDag-Erling Smørgrav##################################################################
215884c25d1SGordon Tetlow#  The following is pretty nearly a generic crunchgen-handling makefile
216884c25d1SGordon Tetlow#
217884c25d1SGordon Tetlow
218884c25d1SGordon TetlowCONF=	$(PROG).conf
219884c25d1SGordon TetlowOUTMK=	$(PROG).mk
220884c25d1SGordon TetlowOUTC=   $(PROG).c
221884c25d1SGordon TetlowOUTPUTS=$(OUTMK) $(OUTC) $(PROG).cache
222884c25d1SGordon TetlowCRUNCHOBJS= ${.OBJDIR}
223884c25d1SGordon Tetlow.if defined(MAKEOBJDIRPREFIX)
224884c25d1SGordon TetlowCANONICALOBJDIR:= ${MAKEOBJDIRPREFIX}${.CURDIR}
225884c25d1SGordon Tetlow.else
226884c25d1SGordon TetlowCANONICALOBJDIR:= /usr/obj${.CURDIR}
227884c25d1SGordon Tetlow.endif
228884c25d1SGordon Tetlow
229884c25d1SGordon TetlowCLEANFILES+= $(CONF) *.o *.lo *.c *.mk *.cache *.a *.h
230884c25d1SGordon Tetlow
231884c25d1SGordon Tetlow# Program names and their aliases contribute hardlinks to 'rescue' executable,
232884c25d1SGordon Tetlow# except for those that get suppressed.
233d60d0f81SGordon Tetlow.for D in $(CRUNCH_SRCDIRS)
234d60d0f81SGordon Tetlow.for P in $(CRUNCH_PROGS_$(D))
2352cf24569SRuslan Ermilov.ifdef CRUNCH_SRCDIR_${P}
2362cf24569SRuslan Ermilov$(OUTPUTS): $(CRUNCH_SRCDIR_${P})/Makefile
2372cf24569SRuslan Ermilov.else
2382cf24569SRuslan Ermilov$(OUTPUTS): $(.CURDIR)/../../$(D)/$(P)/Makefile
2392cf24569SRuslan Ermilov.endif
240884c25d1SGordon Tetlow.ifndef CRUNCH_SUPPRESS_LINK_${P}
241884c25d1SGordon TetlowLINKS+= $(BINDIR)/$(PROG) $(BINDIR)/$(P)
242884c25d1SGordon Tetlow.endif
243884c25d1SGordon Tetlow.for A in $(CRUNCH_ALIAS_$(P))
244884c25d1SGordon Tetlow.ifndef CRUNCH_SUPPRESS_LINK_${A}
245884c25d1SGordon TetlowLINKS+= $(BINDIR)/$(PROG) $(BINDIR)/$(A)
246884c25d1SGordon Tetlow.endif
247884c25d1SGordon Tetlow.endfor
248884c25d1SGordon Tetlow.endfor
249d60d0f81SGordon Tetlow.endfor
250884c25d1SGordon Tetlow
251884c25d1SGordon Tetlowall: $(PROG)
252884c25d1SGordon Tetlowexe: $(PROG)
253884c25d1SGordon Tetlow
254884c25d1SGordon Tetlow$(CONF): Makefile
255884c25d1SGordon Tetlow	echo \# Auto-generated, do not edit >$(.TARGET)
256884c25d1SGordon Tetlow.ifdef CRUNCH_BUILDOPTS
257884c25d1SGordon Tetlow	echo buildopts $(CRUNCH_BUILDOPTS) >>$(.TARGET)
258884c25d1SGordon Tetlow.endif
259884c25d1SGordon Tetlow.ifdef CRUNCH_LIBS
260884c25d1SGordon Tetlow	echo libs $(CRUNCH_LIBS) >>$(.TARGET)
261884c25d1SGordon Tetlow.endif
262d60d0f81SGordon Tetlow.for D in $(CRUNCH_SRCDIRS)
263d60d0f81SGordon Tetlow.for P in $(CRUNCH_PROGS_$(D))
264884c25d1SGordon Tetlow	echo progs $(P) >>$(.TARGET)
265884c25d1SGordon Tetlow.ifdef CRUNCH_SRCDIR_${P}
266884c25d1SGordon Tetlow	echo special $(P) srcdir $(CRUNCH_SRCDIR_${P}) >>$(.TARGET)
267665d6246STim Kientzle.else
268665d6246STim Kientzle	echo special $(P) srcdir $(.CURDIR)/../../$(D)/$(P) >>$(.TARGET)
269884c25d1SGordon Tetlow.endif
270884c25d1SGordon Tetlow.ifdef CRUNCH_BUILDOPTS_${P}
2719efddb06SRuslan Ermilov	echo special $(P) buildopts DIRPRFX=${DIRPRFX}${P}/ \
2729efddb06SRuslan Ermilov	    $(CRUNCH_BUILDOPTS_${P}) >>$(.TARGET)
2739efddb06SRuslan Ermilov.else
2749efddb06SRuslan Ermilov	echo special $(P) buildopts DIRPRFX=${DIRPRFX}${P}/ >>$(.TARGET)
275884c25d1SGordon Tetlow.endif
276884c25d1SGordon Tetlow.for A in $(CRUNCH_ALIAS_$(P))
277884c25d1SGordon Tetlow	echo ln $(P) $(A) >>$(.TARGET)
278884c25d1SGordon Tetlow.endfor
279884c25d1SGordon Tetlow.endfor
280d60d0f81SGordon Tetlow.endfor
281884c25d1SGordon Tetlow
28260c3f103SRuslan Ermilov# XXX Make sure we don't pass -P to crunchgen(1).
28360c3f103SRuslan Ermilov.MAKEFLAGS:= ${.MAKEFLAGS:N-P}
28444dde923SGordon Tetlow.ORDER: $(OUTPUTS) objs
285884c25d1SGordon Tetlow$(OUTPUTS): $(CONF)
28660c3f103SRuslan Ermilov	MAKEOBJDIRPREFIX=${CRUNCHOBJS} crunchgen -fq -m $(OUTMK) \
287b7ca2f28SGordon Tetlow	    -c $(OUTC) $(CONF)
288884c25d1SGordon Tetlow
28944dde923SGordon Tetlow$(PROG): $(OUTPUTS) objs
2904a17c736SRuslan Ermilov	MAKEOBJDIRPREFIX=${CRUNCHOBJS} ${MAKE} -f $(OUTMK) exe
291884c25d1SGordon Tetlow
29244dde923SGordon Tetlowobjs: $(OUTMK)
2934e923ac5SRuslan Ermilov	MAKEOBJDIRPREFIX=${CRUNCHOBJS} ${MAKE} -f $(OUTMK) objs
294884c25d1SGordon Tetlow
2954d938af0SGordon Tetlow# <sigh> Someone should replace the bin/csh and bin/sh build-tools with
2964d938af0SGordon Tetlow# shell scripts so we can remove this nonsense.
2974d938af0SGordon Tetlowbuild-tools:
2984d938af0SGordon Tetlow.for _tool in bin/csh bin/sh
299d60d0f81SGordon Tetlow	cd $(.CURDIR)/../../${_tool}; \
3008b0bf216SColin Percival	MAKEOBJDIRPREFIX=${CRUNCHOBJS} ${MAKE} obj; \
3019efddb06SRuslan Ermilov	MAKEOBJDIRPREFIX=${CRUNCHOBJS} ${MAKE} build-tools
3024d938af0SGordon Tetlow.endfor
3034d938af0SGordon Tetlow
304884c25d1SGordon Tetlow# Use a separate build tree to hold files compiled for this crunchgen binary
305884c25d1SGordon Tetlow# Yes, this does seem to partly duplicate bsd.subdir.mk, but I can't
306884c25d1SGordon Tetlow# get that to cooperate with bsd.prog.mk.  Besides, many of the standard
307884c25d1SGordon Tetlow# targets should NOT be propagated into the components.
308884c25d1SGordon Tetlowcleandepend cleandir obj objlink:
309884c25d1SGordon Tetlow.for D in $(CRUNCH_SRCDIRS)
310d60d0f81SGordon Tetlow.for P in $(CRUNCH_PROGS_$(D))
311d60d0f81SGordon Tetlow.ifdef CRUNCH_SRCDIR_${P}
312d60d0f81SGordon Tetlow	cd ${CRUNCH_SRCDIR_$(P)} && \
3139efddb06SRuslan Ermilov	    MAKEOBJDIRPREFIX=${CANONICALOBJDIR} ${MAKE} \
314428d65f1SRuslan Ermilov	    DIRPRFX=${DIRPRFX}${P}/ ${CRUNCH_BUILDOPTS} ${.TARGET}
315d60d0f81SGordon Tetlow.else
316d60d0f81SGordon Tetlow	cd $(.CURDIR)/../../${D}/${P} && \
3179efddb06SRuslan Ermilov	    MAKEOBJDIRPREFIX=${CANONICALOBJDIR} ${MAKE} \
318428d65f1SRuslan Ermilov	    DIRPRFX=${DIRPRFX}${P}/ ${CRUNCH_BUILDOPTS} ${.TARGET}
319d60d0f81SGordon Tetlow.endif
320d60d0f81SGordon Tetlow.endfor
321884c25d1SGordon Tetlow.endfor
322884c25d1SGordon Tetlow
323884c25d1SGordon Tetlowclean:
324884c25d1SGordon Tetlow	rm -f ${CLEANFILES}
325884c25d1SGordon Tetlow	if [ -e ${.OBJDIR}/$(OUTMK) ]; then				\
3264e923ac5SRuslan Ermilov		MAKEOBJDIRPREFIX=${CRUNCHOBJS} ${MAKE} -f $(OUTMK) clean;	\
327884c25d1SGordon Tetlow	fi
328d60d0f81SGordon Tetlow.for D in $(CRUNCH_SRCDIRS)
329d60d0f81SGordon Tetlow.for P in $(CRUNCH_PROGS_$(D))
330d60d0f81SGordon Tetlow.ifdef CRUNCH_SRCDIR_${P}
331d60d0f81SGordon Tetlow	cd ${CRUNCH_SRCDIR_$(P)} && \
3329efddb06SRuslan Ermilov	    MAKEOBJDIRPREFIX=${CANONICALOBJDIR} ${MAKE} \
333428d65f1SRuslan Ermilov	    DIRPRFX=${DIRPRFX}${P}/ ${CRUNCH_BUILDOPTS} ${.TARGET}
334d60d0f81SGordon Tetlow.else
335d60d0f81SGordon Tetlow	cd $(.CURDIR)/../../${D}/${P} && \
3369efddb06SRuslan Ermilov	    MAKEOBJDIRPREFIX=${CANONICALOBJDIR} ${MAKE} \
337428d65f1SRuslan Ermilov	    DIRPRFX=${DIRPRFX}${P}/ ${CRUNCH_BUILDOPTS} ${.TARGET}
338d60d0f81SGordon Tetlow.endif
339d60d0f81SGordon Tetlow.endfor
340884c25d1SGordon Tetlow.endfor
341884c25d1SGordon Tetlow
342884c25d1SGordon Tetlow.include <bsd.prog.mk>
343