Makefile revision 1.45
1#	$NetBSD: Makefile,v 1.45 2025/12/24 20:05:59 thorpej Exp $
2
3NOLIBCSANITIZER=	# defined
4NOSANITIZER=		# defined
5
6.include <bsd.own.mk>
7.include "${NETBSDSRCDIR}/distrib/common/Makefile.distrib"
8
9WARNS=		1
10# XXX
11.if ${MACHINE_ARCH} != "m68000"
12DBG+=		-Os
13.endif
14
15CRUNCHGEN_FLAGS+=-V DBG="${DBG}"
16
17.if ${MKSTATICPIE:Uno} == "yes"
18CFLAGS+=-fPIE
19CRUNCHGEN_FLAGS+=-V LDSTATIC="-static -pie"
20.else
21CRUNCHGEN_FLAGS+=-V LDSTATIC="-static" -V NOPIE=
22.endif
23
24CRUNCHGEN_FLAGS+=-V NOLIBCSANITIZER= -V NOSANITIZER= -V NOMAN=
25
26# libssh is private, so libssh.a is not installed in DESTDIR, so we
27# have to get it out of the objdir.
28#
29# XXX Should do this differently, and uniformly for all libraries.
30.if !defined(LIBDO.ssh)
31LIBDO.ssh!=	cd ${NETBSDSRCDIR}/crypto/external/bsd/openssh/lib && \
32		${PRINTOBJDIR}
33.MAKEOVERRIDES+=LIBDO.ssh
34.endif
35CRUNCHGEN_FLAGS+=-L ${LIBDO.ssh}
36
37RESCUEDIR=	/rescue
38CRUNCHBIN=	rescue
39CRUNCHENV=	RESCUEDIR=${RESCUEDIR}
40SMALLPROG=	0
41LISTS=		${.CURDIR}/list
42TARGETDIR=	${DESTDIR}/rescue
43PARSELISTENV+=  TARGETDIR=${TARGETDIR:Q}
44
45.for f in pdisk
46PROG_${f}!=	cd ${NETBSDSRCDIR}/external/bsd/${f}/bin && ${MAKE} -V PROG
47.if (${PROG_${f}} != "")
48LISTS+=		${.CURDIR}/list.${f}
49.endif
50.endfor
51
52RESCUEFSLIST=	adosfs cd9660fs efs ext2fs fdescfs filecorefs kernfs lfs \
53		msdosfs nfs ntfs nullfs overlayfs procfs tmpfs umapfs unionfs
54
55.for f in ${RESCUEFSLIST}
56.if (${MK${f:tu}} != "no")
57LISTS+=		${.CURDIR}/list.${f}
58.endif
59.endfor
60
61.if ${USE_INET6} != "no"
62LISTS+=		${.CURDIR}/list.inet6
63.endif
64
65.if ${MKIPSEC} != "no"
66LISTS+=		${.CURDIR}/list.ipsec
67.endif
68
69LISTS+=		${.CURDIR}/list.crypto
70CRUNCHENV+=	MKKERBEROS=no		# for ssh
71
72LISTS+=		${.CURDIR}/list.ldd
73LDD_ELF32DIR!=	cd ${NETBSDSRCDIR}/usr.bin/ldd/elf32 && ${PRINTOBJDIR}
74LDD_ELF64DIR!=	cd ${NETBSDSRCDIR}/usr.bin/ldd/elf64 && ${PRINTOBJDIR}
75PARSELISTENV+=	LDD_ELF32DIR=${LDD_ELF32DIR} LDD_ELF64DIR=${LDD_ELF64DIR}
76
77#	Specially built objects to override the behaviour of
78#	various library functions
79#
80
81OVERRIDEOBJS=	rcmd.o
82.PATH:	${NETBSDSRCDIR}/lib/libc/net
83CPPFLAGS.rcmd.c+=-I${NETBSDSRCDIR}/lib/libc/include -DRESCUEDIR=\"${RESCUEDIR}\"
84
85LIBOVERRIDE=	liboverride.o
86${LIBOVERRIDE}: ${OVERRIDEOBJS}
87	${_MKTARGET_LINK}
88	${LD} -r -o $@ ${OVERRIDEOBJS}
89
90CLEANFILES+=	${OVERRIDEOBJS} ${LIBOVERRIDE}
91
92${CRUNCHBIN}:	${LIBOVERRIDE}
93
94
95#	The primary target ...
96#
97
98CLEANFILES+=	rescue.unstripped
99
100.include "${DISTRIBDIR}/common/Makefile.crunch"
101
102realall: ${CRUNCHBIN}
103
104install: ${CRUNCHBIN}
105# XXX this MKMSG doesn't line up
106	${_MKMSG} "populate ${TARGETDIR}"
107	${PARSELIST} -v mode=install ${LISTS} | ${MAKE} -f - install
108
109.include <bsd.prog.mk>
110