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