xref: /freebsd/share/mk/src.libnames.mk (revision b1bebaaba9b9c0ddfe503c43ca8e9e3917ee2c57)
1#
2# The include file <src.libnames.mk> define library names suitable
3# for INTERNALLIB and PRIVATELIB definition
4
5.if !target(__<bsd.init.mk>__)
6.error src.libnames.mk cannot be included directly.
7.endif
8
9.if !target(__<src.libnames.mk>__)
10__<src.libnames.mk>__:	.NOTMAIN
11
12.include <src.opts.mk>
13
14_PRIVATELIBS=	\
15		atf_c \
16		atf_cxx \
17		auditd \
18		bsddialog \
19		bsdstat \
20		cbor \
21		devdctl \
22		event1 \
23		fido2 \
24		gmock \
25		gtest \
26		gmock_main \
27		gtest_main \
28		heimipcc \
29		heimipcs \
30		kldelf \
31		ldns \
32		opencsd \
33		samplerate \
34		sqlite3 \
35		ssh \
36		ucl \
37		unbound \
38		yaml \
39		zstd
40
41# Let projects based on FreeBSD append to _PRIVATELIBS
42# by maintaining their own LOCAL_PRIVATELIBS list.
43_PRIVATELIBS+=	${LOCAL_PRIVATELIBS}
44
45_INTERNALLIBS=	\
46		amu \
47		apputils \
48		bsnmptools \
49		c_nossp_pic \
50		cron \
51		der \
52		diff \
53		elftc \
54		fdt \
55		fifolog \
56		ifconfig \
57		ipf \
58		iscsiutil \
59		kadmin_common \
60		kprop_util \
61		krb5apputils \
62		krb5profile \
63		krb5ss \
64		lpr \
65		lua \
66		lutok \
67		netbsd \
68		ntp \
69		ntpevent \
70		nvmf \
71		openbsd \
72		opts \
73		parse \
74		pe \
75		pfctl \
76		pkgecc \
77		pmcstat \
78		sl \
79		sm \
80		smdb \
81		smutil \
82		telnet \
83		util++ \
84		vers \
85		wpaap \
86		wpacommon \
87		wpacrypto \
88		wpadrivers \
89		wpaeap_common \
90		wpaeap_peer \
91		wpaeap_server \
92		wpaeapol_auth \
93		wpaeapol_supp \
94		wpal2_packet \
95		wpapasn \
96		wparadius \
97		wparsn_supp \
98		wpatls \
99		wpautils \
100		wpawps
101
102# Let projects based on FreeBSD append to _INTERNALLIBS
103# by maintaining their own LOCAL_INTERNALLIBS list.
104_INTERNALLIBS+=	${LOCAL_INTERNALLIBS}
105
106_LIBRARIES=	\
107		${_PRIVATELIBS} \
108		${_INTERNALLIBS} \
109		${LOCAL_LIBRARIES} \
110		80211 \
111		9p \
112		alias \
113		archive \
114		asn1 \
115		avl \
116		BlocksRuntime \
117		be \
118		begemot \
119		bluetooth \
120		bsdxml \
121		bsm \
122		bsnmp \
123		bz2 \
124		c \
125		c_pic \
126		calendar \
127		cam \
128		casper \
129		cap_dns \
130		cap_fileargs \
131		cap_grp \
132		cap_net \
133		cap_netdb \
134		cap_pwd \
135		cap_sysctl \
136		cap_syslog \
137		com_err \
138		compiler_rt \
139		crypt \
140		crypto \
141		ctf \
142		cuse \
143		cxxrt \
144		devctl \
145		devdctl \
146		devinfo \
147		devstat \
148		dialog \
149		dl \
150		dpv \
151		dtrace \
152		dwarf \
153		edit \
154		efivar \
155		elf \
156		execinfo \
157		fetch \
158		figpar \
159		formw \
160		geom \
161		gpio \
162		gssapi \
163		gssapi_krb5 \
164		gssrpc \
165		hdb \
166		heimbase \
167		heimntlm \
168		heimsqlite \
169		hx509 \
170		icp \
171		ipsec \
172		ipt \
173		jail \
174		k5crypto \
175		kadm5 \
176		kadmin_common \
177		kafs5 \
178		kdb5 \
179		kdc \
180		kiconv \
181		krad \
182		krb5 \
183		krb5profile \
184		krb5support \
185		kvm \
186		l \
187		lzma \
188		m \
189		magic \
190		md \
191		memstat \
192		mp \
193		mt \
194		ncursesw \
195		netgraph \
196		netmap \
197		ngatm \
198		nv \
199		nvpair \
200		opencsd \
201		pam \
202		panel \
203		panelw \
204		pcap \
205		pcsclite \
206		pjdlog \
207		pmc \
208		proc \
209		procstat \
210		pthread \
211		radius \
212		regex \
213		roken \
214		rpcsec_gss \
215		rpcsvc \
216		rt \
217		rtld_db \
218		sbuf \
219		sdp \
220		sm \
221		smb \
222		spl \
223		ssl \
224		ssp_nonshared \
225		stats \
226		stdthreads \
227		supcplusplus \
228		sys \
229		sysdecode \
230		tacplus \
231		termcapw \
232		tinfow \
233		ufs \
234		ugidfw \
235		ulog \
236		umem \
237		usb \
238		usbhid \
239		util \
240		uvmem \
241		verto \
242		vmmapi \
243		wind \
244		wrap \
245		xo \
246		y \
247		ypclnt \
248		z \
249		zdb \
250		zfs_core \
251		zfs \
252		zfsbootenv \
253		zpool \
254		zutil
255
256.if ${MK_KERBEROS} != "no" && ${MK_MITKRB5} != "no"
257_LIBRARIES+= \
258		kadm5clnt_mit \
259		kadm5srv_mit
260.else
261_LIBRARIES+= \
262		kadm5clnt \
263		kadm5srv
264.endif
265
266.if ${MK_BLACKLIST} != "no"
267_LIBRARIES+= \
268		blacklist
269.endif
270
271.if ${MK_BLOCKLIST} != "no"
272_LIBRARIES+= \
273		blocklist
274.endif
275
276.if ${MK_OFED} != "no"
277_LIBRARIES+= \
278		cxgb4 \
279		ibcm \
280		ibmad \
281		ibnetdisc \
282		ibumad \
283		ibverbs \
284		irdma \
285		mlx4 \
286		mlx5 \
287		bnxtre \
288		rdmacm \
289		osmcomp \
290		opensm \
291		osmvendor
292.endif
293
294.if ${MK_BEARSSL} == "yes"
295_LIBRARIES+= \
296		bearssl \
297		secureboot \
298
299LIBBEARSSL?=	${LIBBEARSSLDIR}/libbearssl.a
300LIBSECUREBOOT?=	${LIBSECUREBOOTDIR}/libsecureboot.a
301.endif
302
303.if ${MK_VERIEXEC} == "yes"
304_LIBRARIES+= veriexec
305
306LIBVERIEXEC?=	${LIBVERIEXECDIR}/libveriexec.a
307.endif
308
309# Each library's LIBADD needs to be duplicated here for static linkage of
310# 2nd+ order consumers.  Auto-generating this would be better.
311_DP_80211=	sbuf bsdxml
312_DP_9p=		sbuf
313.if ${MK_CASPER} != "no"
314_DP_9p+=	casper cap_pwd cap_grp
315.endif
316
317# XXX: Not bootstrapped so uses host version on non-FreeBSD, so don't use a
318# FreeBSD-specific dependency list
319.if ${.MAKE.OS} == "FreeBSD" || !defined(BOOTSTRAPPING)
320_DP_archive=	z bz2 lzma bsdxml zstd
321.endif
322_DP_avl=	spl
323_DP_bsddialog=	ncursesw tinfow
324_DP_zstd=	pthread
325.if ${MK_BLACKLIST} != "no"
326_DP_blacklist+=	pthread
327.endif
328.if ${MK_BLOCKLIST} != "no"
329_DP_blocklist+=	pthread
330.endif
331_DP_crypto=	pthread
332# See comment by _DP_archive above
333.if ${.MAKE.OS} == "FreeBSD" || !defined(BOOTSTRAPPING)
334.if ${MK_OPENSSL} != "no"
335_DP_archive+=	crypto
336.else
337_DP_archive+=	md
338.endif
339.endif
340_DP_sqlite3=	pthread
341_DP_ssl=	pthread crypto
342_DP_ssh=	crypto crypt z
343.if ${MK_LDNS} != "no"
344_DP_ssh+=	ldns
345.endif
346_DP_edit=	tinfow
347.if ${MK_OPENSSL} != "no"
348_DP_bsnmp=	crypto
349.endif
350_DP_geom=	bsdxml sbuf
351_DP_cam=	sbuf
352_DP_kldelf=	elf
353_DP_kvm=	elf
354_DP_casper=	nv
355_DP_cap_dns=	nv
356_DP_cap_fileargs=	nv
357_DP_cap_grp=	nv
358_DP_cap_pwd=	nv
359_DP_cap_sysctl=	nv
360_DP_cap_syslog=	nv
361_DP_crypt=	md
362.if ${MK_OFED} != "no"
363_DP_pcap=	ibverbs mlx5 bnxtre
364.endif
365_DP_pjdlog=	util
366_DP_usb=	pthread
367_DP_unbound=	ssl crypto pthread
368_DP_rt=	pthread
369.if ${MK_OPENSSL} == "no"
370_DP_radius=	md
371.else
372_DP_radius=	crypto
373.endif
374_DP_rtld_db=	elf procstat
375_DP_procstat=	kvm util elf
376_DP_proc=	cxxrt
377.if ${MK_CDDL} != "no"
378_DP_proc+=	ctf
379.endif
380_DP_proc+=	elf procstat rtld_db util z
381_DP_mp=	crypto
382_DP_memstat=	kvm
383_DP_magic=	z
384_DP_mt=		sbuf bsdxml
385_DP_nvmf=	nv
386_DP_ldns=	ssl crypto
387_DP_lua=	m
388_DP_lutok=	lua
389.if ${MK_OPENSSL} != "no"
390_DP_fetch=	ssl crypto
391.else
392_DP_fetch=	md
393.endif
394_DP_execinfo=	elf
395_DP_dwarf=	elf z
396_DP_dpv=	dialog figpar util tinfow ncursesw
397_DP_dialog=	tinfow ncursesw m
398_DP_cuse=	pthread
399_DP_atf_cxx=	atf_c
400_DP_gtest=	pthread regex
401_DP_gmock=	gtest
402_DP_gmock_main=	gmock
403_DP_gtest_main=	gtest
404_DP_devstat=	kvm
405_DP_pam=	radius tacplus md util
406.if ${MK_KERBEROS} != "no" && ${MK_MITKRB5} != "no"
407_DP_pam+=	krb5
408.endif
409.if ${MK_OPENSSH} != "no"
410_DP_fido2+=	crypto z
411_DP_pam+=	ssh
412.endif
413.if ${MK_NIS} != "no"
414_DP_pam+=	ypclnt
415.endif
416.if ${MK_KERBEROS} != "no"
417.if ${MK_MITKRB5} != "no"
418# _DP_krb5support=	no dependencies except for libc
419# _DP_verto=		no dependencies except for libc
420# _DP_apputils=		no dependencies except for libc
421_DP_com_err=		krb5support
422_DP_k5crypto=		com_err krb5support crypto
423_DP_gssapi_krb5=	krb5 k5crypto com_err krb5profile krb5support
424_DP_kadm5clnt_mit=	gssrpc gssapi_krb5 krb5 k5crypto krb5support com_err krb5profile
425_DP_kadm5srv_mit=	krb5profile gssrpc gssapi_krb5 kdb5 krb5 k5crypto krb5support com_err
426_DP_kdb5=		gssrpc krb5 k5crypto com_err krb5support gssapi_krb5 krb5profile
427_DP_krad=		krb5 k5crypto com_err krb5profile krb5support verto
428_DP_krb5=		krb5profile k5crypto com_err krb5support
429_DP_gssrpc=		gssapi_krb5 krb5 k5crypto com_err krb5support
430.else
431_DP_roken=	crypt
432_DP_kadm5clnt=	com_err krb5 roken
433_DP_kadm5srv=	com_err hdb krb5 roken
434_DP_heimntlm=	crypto com_err krb5 roken
435_DP_hx509=	asn1 com_err crypto roken wind
436_DP_hdb=	asn1 com_err krb5 roken sqlite3 heimbase
437_DP_asn1=	com_err roken
438_DP_kdc=	roken hdb hx509 krb5 heimntlm asn1 crypto
439_DP_wind=	com_err roken
440_DP_heimbase=	pthread
441_DP_heimipcc=	heimbase roken pthread
442_DP_heimipcs=	heimbase roken pthread
443_DP_kafs5=	asn1 krb5 roken
444_DP_krb5=	asn1 com_err crypt crypto hx509 roken wind heimbase heimipcc
445_DP_gssapi_krb5=	gssapi krb5 crypto roken asn1 com_err
446.endif
447.endif
448_DP_lzma=	md pthread
449_DP_ucl=	m
450_DP_vmmapi=	util
451_DP_opencsd=	cxxrt
452_DP_ctf=	spl z
453_DP_dtrace=	ctf elf proc pthread rtld_db xo
454_DP_xo=		util
455_DP_ztest=	geom m nvpair umem zpool pthread avl zfs_core spl zutil zfs icp
456# The libc dependencies are not strictly needed but are defined to make the
457# assert happy.
458_DP_c=		compiler_rt sys
459# Use libssp_nonshared only on i386 and power*.  Other archs emit direct calls
460# to __stack_chk_fail, not __stack_chk_fail_local provided by libssp_nonshared.
461.if ${MK_SSP} != "no" && \
462    (${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH:Mpower*} != "")
463_DP_c+=		ssp_nonshared
464.endif
465_DP_stats=	sbuf pthread
466_DP_stdthreads=	pthread
467_DP_sys=	compiler_rt
468# Use libssp_nonshared only on i386 and power*.  Other archs emit direct calls
469# to __stack_chk_fail, not __stack_chk_fail_local provided by libssp_nonshared.
470.if ${MK_SSP} != "no" && \
471    (${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH:Mpower*} != "")
472_DP_sys+=	ssp_nonshared
473.endif
474.if !defined(BOOTSTRAPPING)
475_DP_thr=	c sys
476_DP_pthread=	${_DP_thr}
477.endif
478_DP_tacplus=	md pam
479_DP_ncursesw=	tinfow
480_DP_formw=	ncursesw
481_DP_nvpair=	spl
482_DP_panelw=	ncursesw
483.if ${MK_MITKRB5} == "no"
484_DP_rpcsec_gss=	gssapi
485.else
486_DP_rpcsec_gss=	gssapi_krb5
487.endif
488_DP_smb=	kiconv
489_DP_ulog=	md
490_DP_fifolog=	z
491_DP_ipf=	kvm
492_DP_uvmem=	pthread
493_DP_zfs=	md pthread rt umem util m avl bsdxml crypto geom nvpair \
494	z zfs_core zutil
495_DP_zfsbootenv= zfs nvpair
496_DP_zfs_core=	nvpair spl zutil
497_DP_zpool=	md pthread z icp spl nvpair avl umem
498_DP_zutil=	avl geom m
499_DP_be=		zfs spl nvpair zfsbootenv
500_DP_netmap=
501_DP_ifconfig=	m
502_DP_pfctl=	nv
503_DP_krb5ss=		edit
504
505# OFED support
506.if ${MK_OFED} != "no"
507_DP_cxgb4=	ibverbs pthread
508_DP_ibcm=	ibverbs
509_DP_ibmad=	ibumad
510_DP_ibnetdisc=	osmcomp ibmad ibumad
511_DP_ibumad=
512_DP_ibverbs=
513_DP_irdma=	ibverbs pthread
514_DP_mlx4=	ibverbs pthread
515_DP_mlx5=	ibverbs pthread
516_DP_bnxtre=	ibverbs pthread
517_DP_rdmacm=	ibverbs
518_DP_osmcomp=	pthread
519_DP_opensm=	pthread
520_DP_osmvendor=	ibumad pthread
521.endif
522
523# Define special cases
524LDADD_supcplusplus=	-lsupc++
525LIBATF_C=	${LIBDESTDIR}${LIBDIR_BASE}/libprivateatf-c.a
526LIBATF_CXX=	${LIBDESTDIR}${LIBDIR_BASE}/libprivateatf-c++.a
527LDADD_atf_c=	-lprivateatf-c
528LDADD_atf_cxx=	-lprivateatf-c++
529
530LIBGMOCK=	${LIBDESTDIR}${LIBDIR_BASE}/libprivategmock.a
531LIBGMOCK_MAIN=	${LIBDESTDIR}${LIBDIR_BASE}/libprivategmock_main.a
532LIBGTEST=	${LIBDESTDIR}${LIBDIR_BASE}/libprivategtest.a
533LIBGTEST_MAIN=	${LIBDESTDIR}${LIBDIR_BASE}/libprivategtest_main.a
534LDADD_gmock=	-lprivategmock
535LDADD_gtest=	-lprivategtest
536LDADD_gmock_main= -lprivategmock_main
537LDADD_gtest_main= -lprivategtest_main
538
539.for _l in ${_PRIVATELIBS}
540LIB${_l:tu}?=	${LIBDESTDIR}${LIBDIR_BASE}/libprivate${_l}.a
541.endfor
542
543.if ${MK_PIE} != "no"
544PIE_SUFFIX=	_pie
545.endif
546
547.for _l in ${_LIBRARIES}
548.if ${_INTERNALLIBS:M${_l}} || !defined(SYSROOT)
549LDADD_${_l}_L+=		-L${LIB${_l:tu}DIR}
550.endif
551DPADD_${_l}?=	${LIB${_l:tu}}
552.if ${_PRIVATELIBS:M${_l}}
553LDADD_${_l}?=	${LDADD_${_l}_L} -lprivate${_l}
554.elif ${_INTERNALLIBS:M${_l}}
555LDADD_${_l}?=	${LDADD_${_l}_L} -l${_l:S/${PIE_SUFFIX}//}${PIE_SUFFIX}
556.else
557LDADD_${_l}?=	${LDADD_${_l}_L} -l${_l}
558.endif
559# Add in all dependencies for static linkage.
560# Bootstrapping from non-FreeBSD needs special handling, since it overrides
561# NO_SHARED back to yes despite only building static versions of bootstrap
562# libraries (see tools/build/mk/Makefile.boot.pre).
563.if defined(_DP_${_l}) && (${_INTERNALLIBS:M${_l}} || \
564    (defined(NO_SHARED) && ${NO_SHARED:tl} != "no") || \
565    (defined(BOOTSTRAPPING) && ${.MAKE.OS} != "FreeBSD"))
566.for _d in ${_DP_${_l}}
567DPADD_${_l}+=	${DPADD_${_d}}
568LDADD_${_l}+=	${LDADD_${_d}}
569.endfor
570.endif
571.endfor
572
573# These are special cases where the library is broken and anything that uses
574# it needs to add more dependencies.  Broken usually means that it has a
575# cyclic dependency and cannot link its own dependencies.  This is bad, please
576# fix the library instead.
577# Unless the library itself is broken then the proper place to define
578# dependencies is _DP_* above.
579
580# libatf-c++ exposes libatf-c abi hence we need to explicit link to atf_c for
581# atf_cxx
582DPADD_atf_cxx+=	${DPADD_atf_c}
583LDADD_atf_cxx+=	${LDADD_atf_c}
584
585DPADD_gmock+=	${DPADD_gtest}
586LDADD_gmock+=	${LDADD_gtest}
587
588DPADD_gmock_main+=	${DPADD_gmock}
589LDADD_gmock_main+=	${LDADD_gmock}
590
591DPADD_gtest_main+=	${DPADD_gtest}
592LDADD_gtest_main+=	${LDADD_gtest}
593
594# Detect LDADD/DPADD that should be LIBADD, before modifying LDADD here.
595_BADLDADD=
596.for _l in ${LDADD:M-l*:N-l*/*:C,^-l,,}
597.if ${_LIBRARIES:M${_l}} && !${_PRIVATELIBS:M${_l}}
598_BADLDADD+=	${_l}
599.endif
600.endfor
601.if !empty(_BADLDADD)
602.error ${.CURDIR}: These libraries should be LIBADD+=foo rather than DPADD/LDADD+=-lfoo: ${_BADLDADD}
603.endif
604
605.for _l in ${LIBADD}
606DPADD+=		${DPADD_${_l}}
607LDADD+=		${LDADD_${_l}}
608.endfor
609
610_LIB_OBJTOP?=	${OBJTOP}
611# INTERNALLIB definitions.
612LIBDIFFDIR=	${_LIB_OBJTOP}/lib/libdiff
613LIBDIFF?=	${LIBDIFFDIR}/libdiff${PIE_SUFFIX}.a
614
615LIBELFTCDIR=	${_LIB_OBJTOP}/lib/libelftc
616LIBELFTC?=	${LIBELFTCDIR}/libelftc${PIE_SUFFIX}.a
617
618LIBFDTDIR=	${_LIB_OBJTOP}/lib/libfdt
619LIBFDT?=	${LIBFDTDIR}/libfdt${PIE_SUFFIX}.a
620
621LIBLUADIR=	${_LIB_OBJTOP}/lib/liblua
622LIBLUA?=	${LIBLUADIR}/liblua${PIE_SUFFIX}.a
623
624LIBLUTOKDIR=	${_LIB_OBJTOP}/lib/liblutok
625LIBLUTOK?=	${LIBLUTOKDIR}/liblutok${PIE_SUFFIX}.a
626
627LIBPEDIR=	${_LIB_OBJTOP}/lib/libpe
628LIBPE?=		${LIBPEDIR}/libpe${PIE_SUFFIX}.a
629
630LIBOPENBSDDIR=	${_LIB_OBJTOP}/lib/libopenbsd
631LIBOPENBSD?=	${LIBOPENBSDDIR}/libopenbsd${PIE_SUFFIX}.a
632
633LIBSMDIR=	${_LIB_OBJTOP}/lib/libsm
634LIBSM?=		${LIBSMDIR}/libsm${PIE_SUFFIX}.a
635
636LIBSMDBDIR=	${_LIB_OBJTOP}/lib/libsmdb
637LIBSMDB?=	${LIBSMDBDIR}/libsmdb${PIE_SUFFIX}.a
638
639LIBSMUTILDIR=	${_LIB_OBJTOP}/lib/libsmutil
640LIBSMUTIL?=	${LIBSMUTILDIR}/libsmutil${PIE_SUFFIX}.a
641
642LIBSYSDIR=	${_LIB_OBJTOP}/lib/libsys
643LIBSYS?=	${LIBSYSDIR}/libsys${PIE_SUFFIX}.a
644
645LIBNETBSDDIR?=	${_LIB_OBJTOP}/lib/libnetbsd
646LIBNETBSD?=	${LIBNETBSDDIR}/libnetbsd${PIE_SUFFIX}.a
647
648LIBVERSDIR?=	${_LIB_OBJTOP}/kerberos5/lib/libvers
649LIBVERS?=	${LIBVERSDIR}/libvers${PIE_SUFFIX}.a
650
651LIBSLDIR=	${_LIB_OBJTOP}/kerberos5/lib/libsl
652LIBSL?=		${LIBSLDIR}/libsl${PIE_SUFFIX}.a
653
654LIBIFCONFIGDIR=	${_LIB_OBJTOP}/lib/libifconfig
655LIBIFCONFIG?=	${LIBIFCONFIGDIR}/libifconfig${PIE_SUFFIX}.a
656
657LIBIPFDIR=	${_LIB_OBJTOP}/sbin/ipf/libipf
658LIBIPF?=	${LIBIPFDIR}/libipf${PIE_SUFFIX}.a
659
660LIBNVDIR=	${_LIB_OBJTOP}/lib/libnv
661LIBNV?=		${LIBNVDIR}/libnv${PIE_SUFFIX}.a
662
663LIBISCSIUTILDIR=	${_LIB_OBJTOP}/lib/libiscsiutil
664LIBISCSIUTIL?=	${LIBISCSIUTILDIR}/libiscsiutil${PIE_SUFFIX}.a
665
666LIBNVMFDIR=	${_LIB_OBJTOP}/lib/libnvmf
667LIBNVMF?=	${LIBNVMFDIR}/libnvmf${PIE_SUFFIX}.a
668
669LIBTELNETDIR=	${_LIB_OBJTOP}/lib/libtelnet
670LIBTELNET?=	${LIBTELNETDIR}/libtelnet${PIE_SUFFIX}.a
671
672LIBCRONDIR=	${_LIB_OBJTOP}/usr.sbin/cron/lib
673LIBCRON?=	${LIBCRONDIR}/libcron${PIE_SUFFIX}.a
674
675LIBDERDIR=	${_LIB_OBJTOP}/lib/libder
676LIBDER?=	${LIBDERDIR}/libder${PIE_SUFFIX}.a
677
678LIBNTPDIR=	${_LIB_OBJTOP}/usr.sbin/ntp/libntp
679LIBNTP?=	${LIBNTPDIR}/libntp${PIE_SUFFIX}.a
680
681LIBNTPEVENTDIR=	${_LIB_OBJTOP}/usr.sbin/ntp/libntpevent
682LIBNTPEVENT?=	${LIBNTPEVENTDIR}/libntpevent${PIE_SUFFIX}.a
683
684LIBOPTSDIR=	${_LIB_OBJTOP}/usr.sbin/ntp/libopts
685LIBOPTS?=	${LIBOPTSDIR}/libopts${PIE_SUFFIX}.a
686
687LIBPARSEDIR=	${_LIB_OBJTOP}/usr.sbin/ntp/libparse
688LIBPARSE?=	${LIBPARSEDIR}/libparse${PIE_SUFFIX}.a
689
690LIBPFCTLDIR=	${_LIB_OBJTOP}/lib/libpfctl
691LIBPFCTL?=	${LIBPFCTLDIR}/libpfctl${PIE_SUFFIX}.a
692
693LIBLPRDIR=	${_LIB_OBJTOP}/usr.sbin/lpr/common_source
694LIBLPR?=	${LIBLPRDIR}/liblpr${PIE_SUFFIX}.a
695
696LIBFIFOLOGDIR=	${_LIB_OBJTOP}/usr.sbin/fifolog/lib
697LIBFIFOLOG?=	${LIBFIFOLOGDIR}/libfifolog${PIE_SUFFIX}.a
698
699LIBBSNMPTOOLSDIR=	${_LIB_OBJTOP}/usr.sbin/bsnmpd/tools/libbsnmptools
700LIBBSNMPTOOLS?=	${LIBBSNMPTOOLSDIR}/libbsnmptools${PIE_SUFFIX}.a
701
702LIBBE?=		${LIBBEDIR}/libbe${PIE_SUFFIX}.a
703
704LIBPKGECCDIR=	${_LIB_OBJTOP}/secure/lib/libpkgecc
705LIBPKGECC?=	${LIBPKGECCDIR}/libpkgecc${PIE_SUFFIX}.a
706
707LIBPMCSTATDIR=	${_LIB_OBJTOP}/lib/libpmcstat
708LIBPMCSTAT?=	${LIBPMCSTATDIR}/libpmcstat${PIE_SUFFIX}.a
709
710LIBUTIL++DIR=	${_LIB_OBJTOP}/lib/libutil++
711LIBUTIL++?=	${LIBUTIL++DIR}/libutil++${PIE_SUFFIX}.a
712
713LIBWPAAPDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/ap
714LIBWPAAP?=	${LIBWPAAPDIR}/libwpaap${PIE_SUFFIX}.a
715
716LIBWPACOMMONDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/common
717LIBWPACOMMON?=	${LIBWPACOMMONDIR}/libwpacommon${PIE_SUFFIX}.a
718
719LIBWPACRYPTODIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/crypto
720LIBWPACRYPTO?=	${LIBWPACRYPTODIR}/libwpacrypto${PIE_SUFFIX}.a
721
722LIBWPADRIVERSDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/drivers
723LIBWPADRIVERS?=	${LIBWPADRIVERSDIR}/libwpadrivers${PIE_SUFFIX}.a
724
725LIBWPAEAP_COMMONDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/eap_common
726LIBWPAEAP_COMMON?=	${LIBWPAEAP_COMMONDIR}/libwpaeap_common${PIE_SUFFIX}.a
727
728LIBWPAEAP_PEERDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/eap_peer
729LIBWPAEAP_PEER?=	${LIBWPAEAP_PEERDIR}/libwpaeap_peer${PIE_SUFFIX}.a
730
731LIBWPAEAP_SERVERDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/eap_server
732LIBWPAEAP_SERVER?=	${LIBWPAEAP_SERVERDIR}/libwpaeap_server${PIE_SUFFIX}.a
733
734LIBWPAEAPOL_AUTHDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/eapol_auth
735LIBWPAEAPOL_AUTH?=	${LIBWPAEAPOL_AUTHDIR}/libwpaeapol_auth${PIE_SUFFIX}.a
736
737LIBWPAEAPOL_SUPPDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/eapol_supp
738LIBWPAEAPOL_SUPP?=	${LIBWPAEAPOL_SUPPDIR}/libwpaeapol_supp${PIE_SUFFIX}.a
739
740LIBWPAL2_PACKETDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/l2_packet
741LIBWPAL2_PACKET?=	${LIBWPAL2_PACKETDIR}/libwpal2_packet${PIE_SUFFIX}.a
742
743LIBWPAPASNDIR=		${_LIB_OBJTOP}/usr.sbin/wpa/src/pasn
744LIBWPAPASN?=		${LIBWPAPASNDIR}/libwpapasn${PIE_SUFFIX}.a
745
746LIBWPARADIUSDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/radius
747LIBWPARADIUS?=	${LIBWPARADIUSDIR}/libwparadius${PIE_SUFFIX}.a
748
749LIBWPARSN_SUPPDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/rsn_supp
750LIBWPARSN_SUPP?=	${LIBWPARSN_SUPPDIR}/libwparsn_supp${PIE_SUFFIX}.a
751
752LIBWPATLSDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/tls
753LIBWPATLS?=	${LIBWPATLSDIR}/libwpatls${PIE_SUFFIX}.a
754
755LIBWPAUTILSDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/utils
756LIBWPAUTILS?=	${LIBWPAUTILSDIR}/libwpautils${PIE_SUFFIX}.a
757
758LIBWPAWPSDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/wps
759LIBWPAWPS?=	${LIBWPAWPSDIR}/libwpawps${PIE_SUFFIX}.a
760
761LIBC_NOSSP_PICDIR=	${_LIB_OBJTOP}/lib/libc
762LIBC_NOSSP_PIC?=	${LIBC_NOSSP_PICDIR}/libc_nossp_pic.a
763
764LIBSYS_PICDIR=	${_LIB_OBJTOP}/lib/libsys
765LIBSYS_PIC?=	${LIBSYS_PICDIR}/libsys_pic.a
766
767LIBSAMPLERATEDIR?=	${_LIB_OBJTOP}/lib/libsamplerate
768LIBSAMPLERATE?=	${LIBSAMPLERATEDIR}/libsamplerate${PIE_SUFFIX}.a
769
770LIBUVMEMDIR=	${OBJTOP}/lib/libuvmem
771LIBUVMEM?=	${LIBUVMEMDIR}/libuvmem${PIE_SUFFIX}.a
772
773# Define a directory for each library.  This is useful for adding -L in when
774# not using a --sysroot or for meta mode bootstrapping when there is no
775# Makefile.depend.  These are sorted by directory.
776LIBAVLDIR=	${_LIB_OBJTOP}/cddl/lib/libavl
777LIBCTFDIR=	${_LIB_OBJTOP}/cddl/lib/libctf
778LIBDTRACEDIR=	${_LIB_OBJTOP}/cddl/lib/libdtrace
779LIBICPDIR=	${_LIB_OBJTOP}/cddl/lib/libicp
780LIBICP?=	${LIBICPDIR}/libicp${PIE_SUFFIX}.a
781LIBICP_RESCUEDIR=	${_LIB_OBJTOP}/cddl/lib/libicp_rescue
782LIBICP_RESCUE?=	${LIBICP_RESCUEDIR}/libicp_rescue${PIE_SUFFIX}.a
783LIBNVPAIRDIR=	${_LIB_OBJTOP}/cddl/lib/libnvpair
784LIBNVPAIR?=	${LIBNVPAIRDIR}/libnvpair${PIE_SUFFIX}.a
785LIBUMEMDIR=	${_LIB_OBJTOP}/cddl/lib/libumem
786LIBZDBDIR=	${_LIB_OBJTOP}/cddl/lib/libzdb
787LIBZDB?=	${LIBZDBDIR}/libzdb${PIE_SUFFIX}.a
788LIBZFSDIR=	${_LIB_OBJTOP}/cddl/lib/libzfs
789LIBZFS?=	${LIBZFSDIR}/libzfs${PIE_SUFFIX}.a
790LIBZFS_COREDIR=	${_LIB_OBJTOP}/cddl/lib/libzfs_core
791LIBZFS_CORE?=	${LIBZFS_COREDIR}/libzfs_core${PIE_SUFFIX}.a
792LIBZFSBOOTENVDIR=	${_LIB_OBJTOP}/cddl/lib/libzfsbootenv
793LIBZFSBOOTENV?=	${LIBZFSBOOTENVDIR}/libzfsbootenv${PIE_SUFFIX}.a
794LIBZPOOLDIR=	${_LIB_OBJTOP}/cddl/lib/libzpool
795LIBZPOOL?=	${LIBZPOOLDIR}/libzpool${PIE_SUFFIX}.a
796LIBZUTILDIR=	${_LIB_OBJTOP}/cddl/lib/libzutil
797LIBZUTIL?=	${LIBZUTILDIR}/libzutil${PIE_SUFFIX}.a
798
799# OFED support
800LIBCXGB4DIR=	${_LIB_OBJTOP}/lib/ofed/libcxgb4
801LIBIBCMDIR=	${_LIB_OBJTOP}/lib/ofed/libibcm
802LIBIBMADDIR=	${_LIB_OBJTOP}/lib/ofed/libibmad
803LIBIBNETDISCDIR=${_LIB_OBJTOP}/lib/ofed/libibnetdisc
804LIBIBUMADDIR=	${_LIB_OBJTOP}/lib/ofed/libibumad
805LIBIBVERBSDIR=	${_LIB_OBJTOP}/lib/ofed/libibverbs
806LIBIRDMADIR=	${_LIB_OBJTOP}/lib/ofed/libirdma
807LIBMLX4DIR=	${_LIB_OBJTOP}/lib/ofed/libmlx4
808LIBMLX5DIR=	${_LIB_OBJTOP}/lib/ofed/libmlx5
809LIBBNXTREDIR=	${_LIB_OBJTOP}/lib/ofed/libbnxtre
810LIBRDMACMDIR=	${_LIB_OBJTOP}/lib/ofed/librdmacm
811LIBOSMCOMPDIR=	${_LIB_OBJTOP}/lib/ofed/complib
812LIBOPENSMDIR=	${_LIB_OBJTOP}/lib/ofed/libopensm
813LIBOSMVENDORDIR=${_LIB_OBJTOP}/lib/ofed/libvendor
814
815LIBDIALOGDIR=	${_LIB_OBJTOP}/gnu/lib/libdialog
816LIBSSPDIR=	${_LIB_OBJTOP}/lib/libssp
817LIBSSP_NONSHAREDDIR=	${_LIB_OBJTOP}/lib/libssp_nonshared
818.if ${MK_MITKRB5} != "no"
819LIBAPPUTILSDIR=		${_LIB_OBJTOP}/krb5/lib/apputils
820LIBAPPUTILS?=		${LIBAPPUTILSDIR}/libapputils${PIE_SUFFIX}.a
821LIBGSSAPI_KRB5DIR=	${_LIB_OBJTOP}/krb5/lib/gssapi
822LIBGSSAPI_KRB5?=	${LIBGSSAPI_KRB5DIR}/libgssapi_krb5${PIE_SUFFIX}.a
823LIBGSSRPCDIR=		${_LIB_OBJTOP}/krb5/lib/rpc
824LIBGSSRPC?=		${LIBGSSRPCDIR}/libgssrpc${PIE_SUFFIX}.a
825LIBK5CRYPTODIR=		${_LIB_OBJTOP}/krb5/lib/crypto
826LIBK5CRYPTO?=		${LIBK5CRYPTODIR}/libk5crypto${PIE_SUFFIX}.a
827LIBK5GSSRPCDIR=		${_LIB_OBJTOP}/krb5/lib/rpc
828LIBK5GSSRPC?=		${LIBK5GSSRPCDIR}/libgssrpc${PIE_SUFFIX}.a
829LIBKADM5CLNT_MITDIR=	${_LIB_OBJTOP}/krb5/lib/kadm5clnt
830LIBKADM5CLNT_MIT?=	${LIBKADM5CLNT_MITDIR}/libkadm5clnt_mit${PIE_SUFFIX}.a
831LIBKADM5SRV_MITDIR=	${_LIB_OBJTOP}/krb5/lib/kadm5srv
832LIBKADM5SRV_MIT?=	${LIBKADM5SRV_MITDIR}/libkadm5srv_mit${PIE_SUFFIX}.a
833LIBKADMIN_COMMONDIR=	${_LIB_OBJTOP}/krb5/lib/kadmin_common
834LIBKADMIN_COMMON?=	${LIBKADMIN_COMMONDIR}/libkadmin_common${PIE_SUFFIX}.a
835LIBKDB5DIR=		${_LIB_OBJTOP}/krb5/lib/kdb
836LIBKDB5?=		${LIBKDB5DIR}/libkdb5${PIE_SUFFIX}.a
837LIBKPROP_UTILDIR=	${_LIB_OBJTOP}/krb5/lib/kprop_util
838LIBKPROP_UTIL?=		${LIBKPROP_UTILDIR}/libkprop_util${PIE_SUFFIX}.a
839LIBKRADDIR=		${_LIB_OBJTOP}/krb5/lib/krad
840LIBKRAD?=		${LIBKRADDIR}/libkrad${PIE_SUFFIX}.a
841LIBKRB5DIR=		${_LIB_OBJTOP}/krb5/lib/krb5
842LIBKRB5?=		${LIBKRB5DIR}/libkrb5${PIE_SUFFIX}.a
843LIBKRB5SSDIR=		${_LIB_OBJTOP}/krb5/util/ss
844LIBKRB5SS?=		${LIBKRB5SUPPORTDIR}/libkrb5ss${PIE_SUFFIX}.a
845LIBKRB5SUPPORTDIR=	${_LIB_OBJTOP}/krb5/util/support
846LIBKRB5SUPPORT?=	${LIBKRB5SUPPORTDIR}/libkrb5support${PIE_SUFFIX}.a
847LIBKRB5PROFILEDIR=	${_LIB_OBJTOP}/krb5/util/profile
848LIBKRB5PROFILE?=	${LIBPROFILEDIR}/libkrb5profile${PIE_SUFFIX}.a
849LIBVERTODIR=		${_LIB_OBJTOP}/krb5/util/verto
850LIBVERTO?=		${LIBVERTODIR}/libverto${PIE_SUFFIX}.a
851.else
852LIBASN1DIR=	${_LIB_OBJTOP}/kerberos5/lib/libasn1
853LIBGSSAPI_KRB5DIR=	${_LIB_OBJTOP}/kerberos5/lib/libgssapi_krb5
854LIBGSSAPI_NTLMDIR=	${_LIB_OBJTOP}/kerberos5/lib/libgssapi_ntlm
855LIBGSSAPI_SPNEGODIR=	${_LIB_OBJTOP}/kerberos5/lib/libgssapi_spnego
856LIBHDBDIR=	${_LIB_OBJTOP}/kerberos5/lib/libhdb
857LIBHEIMBASEDIR=	${_LIB_OBJTOP}/kerberos5/lib/libheimbase
858LIBHEIMIPCCDIR=	${_LIB_OBJTOP}/kerberos5/lib/libheimipcc
859LIBHEIMIPCSDIR=	${_LIB_OBJTOP}/kerberos5/lib/libheimipcs
860LIBHEIMNTLMDIR=	${_LIB_OBJTOP}/kerberos5/lib/libheimntlm
861LIBHX509DIR=	${_LIB_OBJTOP}/kerberos5/lib/libhx509
862LIBKADM5CLNTDIR=	${_LIB_OBJTOP}/kerberos5/lib/libkadm5clnt
863LIBKADM5SRVDIR=	${_LIB_OBJTOP}/kerberos5/lib/libkadm5srv
864LIBKAFS5DIR=	${_LIB_OBJTOP}/kerberos5/lib/libkafs5
865LIBKDCDIR=	${_LIB_OBJTOP}/kerberos5/lib/libkdc
866LIBKRB5DIR=	${_LIB_OBJTOP}/kerberos5/lib/libkrb5
867LIBROKENDIR=	${_LIB_OBJTOP}/kerberos5/lib/libroken
868LIBWINDDIR=	${_LIB_OBJTOP}/kerberos5/lib/libwind
869.endif
870LIBATF_CDIR=	${_LIB_OBJTOP}/lib/atf/libatf-c
871LIBATF_CXXDIR=	${_LIB_OBJTOP}/lib/atf/libatf-c++
872LIBGMOCKDIR=	${_LIB_OBJTOP}/lib/googletest/gmock
873LIBGMOCK_MAINDIR=	${_LIB_OBJTOP}/lib/googletest/gmock_main
874LIBGTESTDIR=	${_LIB_OBJTOP}/lib/googletest/gtest
875LIBGTEST_MAINDIR=	${_LIB_OBJTOP}/lib/googletest/gtest_main
876LIBALIASDIR=	${_LIB_OBJTOP}/lib/libalias/libalias
877LIBBLACKLISTDIR=	${_LIB_OBJTOP}/lib/libblacklist
878LIBBLOCKLISTDIR=	${_LIB_OBJTOP}/lib/libblocklist
879LIBBLOCKSRUNTIMEDIR=	${_LIB_OBJTOP}/lib/libblocksruntime
880LIBBSNMPDIR=	${_LIB_OBJTOP}/lib/libbsnmp/libbsnmp
881LIBCASPERDIR=	${_LIB_OBJTOP}/lib/libcasper/libcasper
882LIBCAP_DNSDIR=	${_LIB_OBJTOP}/lib/libcasper/services/cap_dns
883LIBCAP_GRPDIR=	${_LIB_OBJTOP}/lib/libcasper/services/cap_grp
884LIBCAP_NETDIR=	${_LIB_OBJTOP}/lib/libcasper/services/cap_net
885LIBCAP_PWDDIR=	${_LIB_OBJTOP}/lib/libcasper/services/cap_pwd
886LIBCAP_SYSCTLDIR=	${_LIB_OBJTOP}/lib/libcasper/services/cap_sysctl
887LIBCAP_SYSLOGDIR=	${_LIB_OBJTOP}/lib/libcasper/services/cap_syslog
888LIBCBORDIR=	${_LIB_OBJTOP}/lib/libcbor
889LIBBSDXMLDIR=	${_LIB_OBJTOP}/lib/libexpat
890LIBFIDO2DIR=	${_LIB_OBJTOP}/lib/libfido2
891LIBKVMDIR=	${_LIB_OBJTOP}/lib/libkvm
892LIBPTHREADDIR=	${_LIB_OBJTOP}/lib/libthr
893LIBMDIR=	${_LIB_OBJTOP}/lib/msun
894LIBFORMWDIR=	${_LIB_OBJTOP}/lib/ncurses/form
895LIBMENUWDIR=	${_LIB_OBJTOP}/lib/ncurses/menu
896LIBNCURSESWDIR=	${_LIB_OBJTOP}/lib/ncurses/ncurses
897LIBTINFOWDIR=	${_LIB_OBJTOP}/lib/ncurses/tinfo
898LIBPANELWDIR=	${_LIB_OBJTOP}/lib/ncurses/panel
899LIBCRYPTODIR=	${_LIB_OBJTOP}/secure/lib/libcrypto
900LIBSPLDIR=	${_LIB_OBJTOP}/cddl/lib/libspl
901LIBSSHDIR=	${_LIB_OBJTOP}/secure/lib/libssh
902LIBSSLDIR=	${_LIB_OBJTOP}/secure/lib/libssl
903LIBTEKENDIR=	${_LIB_OBJTOP}/sys/teken/libteken
904LIBEGACYDIR=	${_LIB_OBJTOP}/tools/build
905LIBLNDIR=	${_LIB_OBJTOP}/usr.bin/lex/lib
906
907LIBTERMCAPWDIR=	${LIBTINFOWDIR}
908
909.-include <site.src.libnames.mk>
910
911# Default other library directories to lib/libNAME.
912.for lib in ${_LIBRARIES}
913LIB${lib:tu}DIR?=	${OBJTOP}/lib/lib${lib}
914.endfor
915
916# Validate that listed LIBADD are valid.
917.for _l in ${LIBADD}
918.if empty(_LIBRARIES:M${_l})
919_BADLIBADD+= ${_l}
920.endif
921.endfor
922.if !empty(_BADLIBADD)
923.error ${.CURDIR}: Invalid LIBADD used which may need to be added to ${_this:T}: ${_BADLIBADD}
924.endif
925
926# Sanity check that libraries are defined here properly when building them.
927.if defined(LIB) && ${_LIBRARIES:M${LIB}} != ""
928.if !empty(LIBADD) && \
929    (!defined(_DP_${LIB}) || ${LIBADD:O:u} != ${_DP_${LIB}:O:u})
930.error ${.CURDIR}: Missing or incorrect _DP_${LIB} entry in ${_this:T}.  Should match LIBADD for ${LIB} ('${LIBADD}' vs '${_DP_${LIB}}')
931.endif
932# Note that OBJTOP is not yet defined here but for the purpose of the check
933# it is fine as it resolves to the SRC directory.
934.if !defined(LIB${LIB:tu}DIR) || !exists(${SRCTOP}/${LIB${LIB:tu}DIR:S,^${OBJTOP}/,,})
935.error ${.CURDIR}: Missing or incorrect value for LIB${LIB:tu}DIR in ${_this:T}: ${LIB${LIB:tu}DIR:S,^${OBJTOP}/,,}
936.endif
937.if ${_INTERNALLIBS:M${LIB}} != "" && !defined(LIB${LIB:tu})
938.error ${.CURDIR}: Missing value for LIB${LIB:tu} in ${_this:T}.  Likely should be: LIB${LIB:tu}?= $${LIB${LIB:tu}DIR}/lib${LIB}.a
939.endif
940.endif
941
942.endif	# !target(__<src.libnames.mk>__)
943