xref: /netbsd-src/lib/Makefile (revision 4b3febd891ea5bd4d2eb22ec4952c99cad31e2c2)
1*4b3febd8Schristos#	$NetBSD: Makefile,v 1.307 2025/01/18 20:54:52 christos Exp $
2cda4f8f6Smycroft#	from: @(#)Makefile	5.25.1.1 (Berkeley) 5/7/91
361f28255Scgd
4df83a2a3Sthorpej.include <bsd.own.mk>
5df83a2a3Sthorpej
6933525b9SjoergSUBDIR=		csu .WAIT
7f33b316bSplunky
8f33b316bSplunky.if (${MKGCC} != "no")
9afa90f2bSmrgSUBDIR+=	../external/gpl3/${EXTERNAL_GCC_SUBDIR}/lib/libgcc .WAIT
104791aafcSmrg.endif
11f33b316bSplunky
12f33b316bSplunkySUBDIR+=	libc
13f33b316bSplunkySUBDIR+=	.WAIT
14f33b316bSplunky
15f33b316bSplunky#
16f33b316bSplunky# The SUBDIRs above are included here for completeness but should be built
17f33b316bSplunky# and installed prior to make(dependall) in this file, as libraries listed
18f33b316bSplunky# below will depend on versions from DESTDIR only.
19f33b316bSplunky#
20f33b316bSplunky
2190c70dd2SplunkySUBDIR+=	i18n_module
2290c70dd2Splunky
23f33b316bSplunkySUBDIR+=	libarch \
2490c70dd2Splunky		libbluetooth libbsdmalloc libbz2 \
25237bc153Smatt		libcompat libcrypt \
2653fe7907Smartin		libintl libipsec libkvm libm \
2718f65af8Smaxv		libossaudio libpci libposix libprop libpthread \
280892a29aSkamil		libpuffs libresolv librmt librpcsvc librt \
29b559c1ffSchristos		libtelnet libterminfo \
30d54a6e0cSchristos		libusbhid libutil liby libz
31ab5476b2Sthorpej
32dcd5cab6Smatt.if !defined(BSD_MK_COMPAT_FILE)
33dcd5cab6SmattSUBDIR+=	libkern
34dcd5cab6Smatt.endif
35dcd5cab6Smatt
36dd3ee07dSrin.if (${MACHINE} == "evbppc" && ${MACHINE_ARCH} == "powerpc")
37dd3ee07dSrinSUBDIR+=	libc_aligned
38dd3ee07dSrin.endif
396fa466fcSmatt.if (${MACHINE_CPU} == "arm" || ${MACHINE_CPU} == "aarch64")
4036e3b717SmattLIBC_MACHINE_ARCH?=${MACHINE_ARCH}
417cd26696SjoergLIBC_MACHINE_CPU?=${MACHINE_CPU}
427cd26696Sjoerg.if ${LIBC_MACHINE_CPU} == "arm" && empty(LIBC_MACHINE_ARCH:M*hf*)
433c352395SmattSUBDIR+=	libc_vfp
443c352395Smatt.endif
4536e3b717Smatt.endif
46e8ee02e0Schristos.if ${MACHINE_MIPS64}
478baff5f4SmacallanSUBDIR+=	libc_fp
488baff5f4Smacallan.endif
49b559c1ffSchristos.if (${MKRUMP} != "no")
50b559c1ffSchristosSUBDIR+=	librumpclient
51b559c1ffSchristos.endif
5290c70dd2Splunky.if (${MKSKEY} != "no")
5390c70dd2SplunkySUBDIR+=	libskey
5490c70dd2Splunky.endif
5590c70dd2Splunky
56c9f4e317Sjmcneill.if ${HAVE_NVMM:Uno} == "yes" && !defined(MLIBDIR)
5753fe7907SmartinSUBDIR+=	libnvmm
5853fe7907Smartin.endif
5953fe7907Smartin
601569bcc0Snia.if (${MKARGON2} != "no")
611569bcc0SniaSUBDIR+=	../external/apache2/argon2/lib/libargon2
621569bcc0Snia.endif
631569bcc0Snia
64f33b316bSplunky.if (${MKMDNS} != "no")
65f33b316bSplunkySUBDIR+=	../external/apache2/mDNSResponder/lib
66f33b316bSplunky.endif
67f33b316bSplunky
68f33b316bSplunkySUBDIR+=	../external/bsd/am-utils/lib
69f33b316bSplunky
70fb86afc5SchristosSUBDIR+=	../external/bsd/flex/lib
713f75ab31SchristosSUBDIR+=	../external/bsd/tre/lib
7240ca0b46SriastradhELFTOOLCHAINLIB=../external/bsd/elftoolchain/lib/
7340ca0b46Sriastradh.include "${ELFTOOLCHAINLIB}Makefile.subdir"
745f886840SmattSUBDIR+=	../external/bsd/liblzf/lib
7590c70dd2SplunkySUBDIR+=	../external/bsd/libpcap/lib
76f33b316bSplunky
774a71bf0eSplunky.if ${MKSLJIT} != "no"
784a71bf0eSplunkySUBDIR+=	../external/bsd/sljit/lib
794a71bf0eSplunkySUBDIR+=	libbpfjit
804a71bf0eSplunky.endif
814a71bf0eSplunky
823271408cSchristosSUBDIR+=	../external/bsd/libnv/lib
833271408cSchristos
846e6800cbSmatt.if (${MKZFS} != "no")
856e6800cbSmattSUBDIR+=        ../external/cddl/osnet/lib/libavl
866e6800cbSmattSUBDIR+=        ../external/cddl/osnet/lib/libnvpair
876e6800cbSmattSUBDIR+=        ../external/cddl/osnet/lib/libumem
886e6800cbSmattSUBDIR+=        ../external/cddl/osnet/lib/libuutil
896e6800cbSmatt.endif
906e6800cbSmatt
91df92d05dStronSUBDIR+=	../external/mit/expat/lib
92d4aeae3fSchristos
9326492c89SchristosSUBDIR+=	../external/gpl2/libmalloc
94f33b316bSplunky
9581b0ebe0SchristosSUBDIR+=	../external/bsd/${EXTERNAL_JEMALLOC_SUBDIR}/lib
96121f466aSchristos
97f33b316bSplunky.if (${MKGCC} != "no")
98afa90f2bSmrgSUBDIR+=	../external/gpl3/${EXTERNAL_GCC_SUBDIR}/lib/libobjc
99afa90f2bSmrgSUBDIR+=	../external/gpl3/${EXTERNAL_GCC_SUBDIR}/lib/libgomp
1003a3b951bSmrg.endif
101f33b316bSplunky
102c0141d3aSrin# GCC and GDB >= 13 require GMP.
1033fe1e851Schristos# We don't build compat versions of these
1043fe1e851Schristos.if !defined(MLIBDIR) && (${MKGCCCMDS} != "no" || ${MKGDB} != "no")
1053fe1e851SchristosSUBDIR+=	../external/lgpl3/mpfr/lib/libmpfr
1063fe1e851SchristosSUBDIR+=	../external/lgpl3/mpc/lib/libmpc
107c0141d3aSrinSUBDIR+=	../external/lgpl3/gmp/lib/libgmp
108c0141d3aSrin.endif
109c0141d3aSrin
110124613b2Slukem#
111124613b2Slukem# Libraries that depend upon any listed previously
11298a04f53Slukem# (and those that depend upon these [and ...])
113124613b2Slukem#
11491168c6fSchristos#==================== 1st library dependency barrier ====================
11591168c6fSchristosSUBDIR+=	.WAIT
11691168c6fSchristos
1174a21fa14Schristos.if ${MKDTRACE} != "no"
11858ad14e8SchristosSUBDIR+=	../external/bsd/librtld_db/lib		# depends on libutil
119c09ba22eSchristos.endif
12058ad14e8Schristos
12117ca604bSriastradh.if ${MKCTF} != "no"
122b5736113SchristosSUBDIR+=        ../external/cddl/osnet/lib/libctf
123b5736113Schristos.endif
124b5736113Schristos
125422d8988SmrgSUBDIR+=	../external/public-domain/xz/lib	# depends on libpthread
126e2079e26SmrgSUBDIR+=	../crypto/external/bsd/netpgp/libmj
127e2079e26SmrgSUBDIR+=	../crypto/external/bsd/netpgp/lib/verify # depends on libz
1282f0bfbf3SchristosSUBDIR+=	../external/bsd/blocklist/lib		# depends on libpthread
129e2079e26SmrgSUBDIR+=	../external/mit/lua/lib # depends on libm
1300a229fd3SniaSUBDIR+=	../external/public-domain/sqlite/lib # depends on libm
13190c70dd2SplunkySUBDIR+=	libcurses	# depends on libterminfo
13283425a0fShaadSUBDIR+=	libdm		# depends on libprop
13390c70dd2SplunkySUBDIR+=	libedit		# depends on libterminfo
134237bc153SmattSUBDIR+=	libexecinfo 	# depends on libelf
13599432646SdyoungSUBDIR+=	libppath	# depends on libprop
136342305c4SplunkySUBDIR+=	libperfuse	# depends on libpuffs
137d9210c24SbouyerSUBDIR+=	libquota	# depends on libprop and librpcsvc
138b4747228SpookaSUBDIR+=	librefuse	# depends on libpuffs
139975a152cSjoergSUBDIR+=	libisns 	# depends on libpthread
140b559c1ffSchristos.if (${MKRUMP} != "no")
141342305c4SplunkySUBDIR+=	librumphijack	# depends on librumpclient and libpthread
142219944fbSchristosSUBDIR+=	librumpres	# depends on librumpclient
143219944fbSchristosSUBDIR+=	librumpuser	# depends on libpthread
144b559c1ffSchristos.endif
145bdf6e0b0Spooka
14607ac07d3Srmind.if (${MKNPF} != "no")
1473271408cSchristosSUBDIR+=	libnpf		# depends on libnv
14807ac07d3Srmind.endif
14907ac07d3Srmind
15085e497afSchristosOSSL=../crypto/external/bsd/${EXTERNAL_OPENSSL_SUBDIR}/lib/
15185e497afSchristos.include "${.CURDIR}/${OSSL}Makefile.subdir" # depends on libcrypt
152f33b316bSplunky
153f33b316bSplunky.if (${MKISCSI} != "no")
154f33b316bSplunkySUBDIR+=	../external/bsd/iscsi/lib	# depends on libpthread
155f33b316bSplunky.endif
156f33b316bSplunky
1576e6800cbSmatt.if (${MKZFS} != "no")
158ba2539a9SchsSUBDIR+=        ../external/cddl/osnet/lib/libzfs_core
1596e6800cbSmattSUBDIR+=        ../external/cddl/osnet/lib/libzpool
1606e6800cbSmatt.endif
1616e6800cbSmatt
1625f886840Smatt.if (${MKLVM} != "no")
1635f886840SmattSUBDIR+=	../external/gpl2/lvm2/lib	# depends on libprop
1645f886840Smatt.endif
1655f886840Smatt
166f33b316bSplunky.if (${MKBINUTILS} != "no")
16722253bc3SchristosSUBDIR+=	../external/gpl3/${EXTERNAL_BINUTILS_SUBDIR}/lib	# libbfd depends on libz
168f33b316bSplunky.endif
169f33b316bSplunky
170ecb06a3bSjoerg.if (${MKLIBCXX} != "no")
171ecb06a3bSjoergSUBDIR+=	../external/bsd/libc++
172ecb06a3bSjoerg.endif
173ecb06a3bSjoerg
1742fa1d247Sjoerg.if (${MKGCC} != "no" && ${MKCXX} != "no" && ${MKLIBSTDCXX} != "no")
175afa90f2bSmrgSUBDIR+=	../external/gpl3/${EXTERNAL_GCC_SUBDIR}/lib/libstdc++-v3
176afa90f2bSmrgSUBDIR+=	../external/gpl3/${EXTERNAL_GCC_SUBDIR}/lib/libsupc++
177f33b316bSplunky.endif
178440c00cdSchristos
179063ec26aSnakayama.if (${MKLLVMRT} != "no" && (!defined(MLIBDIR) || ${MKCOMPATX11} != "no"))
18076c7fc5fSjoergSUBDIR+=	../external/apache2/llvm/include
1810a0d4092Sjoerg.endif
1820a0d4092Sjoerg
18306535827SchristosSUBDIR+=	../external/mit/libcbor/lib
18456e4243bSchristos
18545707f09SmrgSUBDIR+=	../external/bsd/zstd/lib
186440c00cdSchristos#==================== 2nd library dependency barrier ====================
187440c00cdSchristosSUBDIR+=	.WAIT
188440c00cdSchristos
189d54a6e0cSchristosSUBDIR+=	libwrap
190d54a6e0cSchristos
191ee803f23Smrg.if (${MKGCC} != "no" && ${MKCXX} != "no" && ${MKLIBSTDCXX} != "no")
192a5330f4cSmrg.if ${MKGCCCMDS} != "no"
1930fd9ea36Schristos.for sanitizer in asan lsan ubsan
194739a3124Schristos.if exists(../external/gpl3/${EXTERNAL_GCC_SUBDIR}/lib/lib${sanitizer})
195739a3124SchristosSUBDIR+= ../external/gpl3/${EXTERNAL_GCC_SUBDIR}/lib/lib${sanitizer}
196739a3124Schristos.endif
197739a3124Schristos.endfor
1981db21b1dSmrg.endif
199a5330f4cSmrg.endif
200f33b316bSplunky
201063ec26aSnakayama.if (${MKLLVMRT} != "no" && (!defined(MLIBDIR) || ${MKCOMPATX11} != "no"))
20276c7fc5fSjoergSUBDIR+=	../external/apache2/llvm/librt
2030a0d4092Sjoerg.endif
2040a0d4092Sjoerg
2057c5d5dfdSchristosSUBDIR+=	../external/bsd/libarchive/lib	# depends on libxz, zstd
206422d8988Smrg
20745707f09SmrgSUBDIR+=	../external/bsd/file/lib	# depends on libz, libbz2, libxz, zstd
2088282cab4Schristos
209e2079e26Smrg.if (${MKNPF} != "no")
210e2079e26SmrgSUBDIR+=	npf		# depends on libnpf
211e2079e26Smrg.endif
212e2079e26Smrg
21315203877Schristos.if (${MKATF} != "no")
21440ca0b46SriastradhATFLIB=	../external/bsd/atf/lib/
21540ca0b46Sriastradh.include "${ATFLIB}Makefile.subdir"		# depends on libstdc++
21615203877Schristos.endif
21715203877Schristos
2187d3a48f1Sjmmv.if (${MKKYUA} != "no")
2197d3a48f1SjmmvSUBDIR+=	../external/bsd/lutok/lib	# depends on lua and libstdc++
2207d3a48f1Sjmmv.endif
2217d3a48f1Sjmmv
22290c70dd2SplunkySUBDIR+=	libform		# depends on libcurses
223342305c4SplunkySUBDIR+=	libmenu		# depends on libcurses
22415fb689cSkamilSUBDIR+=	libpanel	# depends on libcurses
225ef315f79SriastradhSUBDIR+=	libradius	# depends on libcrypto
226b559c1ffSchristos.if (${MKRUMP} != "no")
227342305c4SplunkySUBDIR+=	librump		# depends on librumpuser
228b559c1ffSchristos.endif
22990c70dd2Splunky
230d3e8815aSchristos.if (${MKKERBEROS} != "no")
23140ca0b46Sriastradh# heimdal depends on libcrypto, libedit, libterminfo
23240ca0b46SriastradhHEIMDALLIB=	../crypto/external/bsd/heimdal/lib/
23340ca0b46Sriastradh.include "${HEIMDALLIB}Makefile.subdir"			# depends on libcrypto
23498fbe74fSelric							# libedit, libterminfo,
235d3e8815aSchristos.endif
236d3e8815aSchristos
23706535827SchristosSUBDIR+=	../external/bsd/libfido2/lib	# depends on libcbor
23840ca0b46SriastradhNETPGPLIB=	../crypto/external/bsd/netpgp/lib/
23940ca0b46Sriastradh.include "${NETPGPLIB}Makefile.subdir"		# depends on libcrypto, ...
24040ca0b46SriastradhLIBEVENTLIB=	../external/bsd/libevent/lib/
24140ca0b46Sriastradh.include "${LIBEVENTLIB}Makefile.subdir"	# depends on libcrypto
2424a21fa14Schristos.if ${MKDTRACE} != "no"
243c09ba22eSchristosSUBDIR+=	../external/bsd/libproc/lib	# depends on libstdc++, libctf
244c09ba22eSchristos.endif
24590c70dd2SplunkySUBDIR+=	../external/bsd/fetch/lib	# depends on libssl
24690c70dd2Splunky
24790c70dd2Splunky.if (${MKLDAP} != "no")
24840ca0b46SriastradhOPENLDAPLIB=	../external/bsd/openldap/lib/	# depends on libcrypto, ...
24940ca0b46Sriastradh.include "${OPENLDAPLIB}Makefile.subdir"
25090c70dd2Splunky.endif
25190c70dd2Splunky
252ba2539a9Schs.if (${MKZFS} != "no")
253ba2539a9SchsSUBDIR+=        ../external/cddl/osnet/lib/libzfs
254ba2539a9Schs.endif
255ba2539a9Schs
2564e0254f1SsevanSUBDIR+= 	../libexec/httpd/libbozohttpd 	# depends on libssl & libcrypto
2574e0254f1Ssevan
258f6b23865SchristosSUBDIR+=	../external/mit/libuv/lib
259*4b3febd8SchristosSUBDIR+=	../external/lgpl2/userspace-rcu/lib
260f6b23865Schristos
2618f975a40Slukem#==================== 3rd library dependency barrier ====================
2628f975a40SlukemSUBDIR+=	.WAIT
2638f975a40Slukem
26406535827SchristosSUBDIR+=	../crypto/external/bsd/openssh/lib # depends on libcrypto, libz,
26506535827Schristos						   # libfido2
2667351a5d2SchristosSUBDIR+=	../crypto/external/bsd/netpgp/bindings/lua  # depends on netpgp/lib
267491e7745SchristosSUBDIR+=	../external/mpl/bind/lib	# depends on heimdal, libcrypto
268f6b23865Schristos						# libuv, userspace-rcu
269ef315f79Sriastradh.if ${MKUNBOUND} != "no"
270c90b9921SchristosSUBDIR+=	../external/bsd/unbound/lib	# depends on libcrypto
271c90b9921Schristos.endif
2721419f289Sjoerg
27346e2ed0dSchristos.if ${MKDTRACE} != "no"
27446e2ed0dSchristosSUBDIR+=        ../external/cddl/osnet/lib/libdtrace	# depends on libproc
27546e2ed0dSchristos.endif
27646e2ed0dSchristos
277b559c1ffSchristos.if (${MKRUMP} != "no")
278de4fa6c5SpookaSUBDIR+=	librumpdev	# depends on librump
27946b5f75dSpookaSUBDIR+=	librumpnet	# depends on librump
280e10fef6cSpookaSUBDIR+=	librumpvfs	# depends on librump
281b559c1ffSchristos.endif
282bdf6e0b0Spooka
283342305c4SplunkySUBDIR+=	../crypto/external/bsd/libsaslc	# depends on heimdal, openssl
284410d0f43SjoergSUBDIR+=	../external/bsd/mdocml/lib
285410d0f43Sjoerg
286bdf6e0b0Spooka#==================== 4th library dependency barrier ====================
287bdf6e0b0SpookaSUBDIR+=	.WAIT
28890c70dd2Splunky
289e54fad50Schristos.if (${MKPAM} != "no")
2901bdcb77cSrinSUBDIR+=	libpam		# depends on heimdal, libssh
291e54fad50Schristos.endif
292e54fad50Schristos
293e54fad50Schristos
294a3dab7b6Schristos.if (${MKRUMP} != "no")
29590c70dd2SplunkySUBDIR+=	libukfs		# depends on librumpvfs, librump
296a3dab7b6Schristos.endif
2970b7df1d2Spooka
29894c130b2Schristos.if (${MKTPM} != "no")
29994c130b2SchristosSUBDIR+=	../crypto/external/cpl/trousers/lib
30094c130b2Schristos.endif
30194c130b2Schristos
3020b7df1d2Spooka#==================== 5th library dependency barrier ====================
3030b7df1d2SpookaSUBDIR+=	.WAIT
30490c70dd2Splunky
30566ab3c9cSchristos.if (${MKPAM} != "no")
30666ab3c9cSchristosSUBDIR+=	../external/bsd/pam-u2f/lib	# depends on libpam
30766ab3c9cSchristos.endif
30866ab3c9cSchristos
30915173c72Stnn.if (${MKRUMP} != "no")
31090c70dd2SplunkySUBDIR+=	libp2k		# depends on libukfs, librumpvfs, libpuffs
31115173c72Stnn.endif
312933525b9Sjoerg
313c168a883Schristos.if (${MKTPM} != "no")
314c168a883SchristosSUBDIR+=	../crypto/external/cpl/tpm-tools/lib	# depends on trousers
315c168a883Schristos.endif
316c168a883Schristos
317a3dab7b6Schristos.if (${MKRUMP} != "no")
318933525b9Sjoerg.if !defined(BSD_MK_COMPAT_FILE)
319933525b9SjoergSUBDIR+=	../sys/rump/dev/lib
320933525b9SjoergSUBDIR+=	../sys/rump/fs/lib
321933525b9SjoergSUBDIR+=	../sys/rump/kern/lib
322933525b9SjoergSUBDIR+=	../sys/rump/net/lib
323933525b9Sjoerg.endif
324b559c1ffSchristos.endif
32590c70dd2Splunky
326540bd6bdSmbalmer# Lua bindings come last, they might depend on anything
327540bd6bdSmbalmerSUBDIR+=	lua
328540bd6bdSmbalmer
32954f191bfSjoerg.include <bsd.buildinstall.mk>
33061f28255Scgd.include <bsd.subdir.mk>
331