xref: /freebsd/share/mk/src.libnames.mk (revision 40dbb06fa73cac37d57563c07e55efd0cabbd488)
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_atf_cxx=	atf_c
323_DP_avl=	spl
324_DP_be=		zfs spl nvpair zfsbootenv
325_DP_bsddialog=	ncursesw tinfow
326.if ${MK_OPENSSL} != "no"
327_DP_bsnmp=	crypto
328.endif
329# The libc dependencies are not strictly needed but are defined to make the
330# assert happy.
331_DP_c=		compiler_rt sys
332# Use libssp_nonshared only on i386 and power*.  Other archs emit direct calls
333# to __stack_chk_fail, not __stack_chk_fail_local provided by libssp_nonshared.
334.if ${MK_SSP} != "no" && \
335    (${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH:Mpower*} != "")
336_DP_c+=		ssp_nonshared
337.endif
338_DP_cam=	sbuf
339_DP_cap_dns=	nv
340_DP_cap_fileargs=	nv
341_DP_cap_grp=	nv
342_DP_cap_pwd=	nv
343_DP_cap_sysctl=	nv
344_DP_cap_syslog=	nv
345_DP_casper=	nv
346# See comment by _DP_archive above
347.if ${.MAKE.OS} == "FreeBSD" || !defined(BOOTSTRAPPING)
348.if ${MK_OPENSSL} != "no"
349_DP_archive+=	crypto
350.else
351_DP_archive+=	md
352.endif
353.endif
354_DP_ctf=	spl z
355_DP_crypt=	md
356_DP_crypto=	pthread
357_DP_cuse=	pthread
358.if ${MK_BLACKLIST} != "no"
359_DP_blacklist+=	pthread
360.endif
361.if ${MK_BLOCKLIST} != "no"
362_DP_blocklist+=	pthread
363.endif
364_DP_devstat=	kvm
365_DP_dialog=	tinfow ncursesw m
366_DP_dpv=	dialog figpar util tinfow ncursesw
367_DP_dtrace=	ctf elf proc pthread rtld_db xo
368_DP_dwarf=	elf z
369_DP_edit=	tinfow
370_DP_execinfo=	elf
371.if ${MK_OPENSSL} != "no"
372_DP_fetch=	ssl crypto
373.else
374_DP_fetch=	md
375.endif
376.if ${MK_OPENSSH} != "no"
377_DP_fido2+=	crypto z
378.endif
379_DP_fifolog=	z
380_DP_formw=	ncursesw
381_DP_geom=	bsdxml sbuf
382_DP_gmock=	gtest
383_DP_gmock_main=	gmock
384_DP_gtest=	pthread regex
385_DP_gtest_main=	gtest
386_DP_ifconfig=	m
387_DP_ipf=	kvm
388_DP_iscsiutil=	md
389_DP_kldelf=	elf
390_DP_krb5ss=	edit
391_DP_kvm=	elf
392_DP_ldns=	ssl crypto
393_DP_lua=	m
394_DP_lutok=	lua
395_DP_lzma=	md pthread
396_DP_magic=	z
397_DP_memstat=	kvm
398_DP_mp=		crypto
399_DP_mt=		sbuf bsdxml
400_DP_ncursesw=	tinfow
401_DP_netmap=
402_DP_nvmf=	nv
403_DP_nvpair=	spl
404_DP_opencsd=	cxxrt
405_DP_panelw=	ncursesw
406_DP_pam=	radius tacplus md util
407.if ${MK_KERBEROS} != "no" && ${MK_MITKRB5} != "no"
408_DP_pam+=	krb5
409.endif
410.if ${MK_OPENSSH} != "no"
411_DP_pam+=	ssh
412.endif
413.if ${MK_NIS} != "no"
414_DP_pam+=	ypclnt
415.endif
416_DP_pfctl=	nv
417_DP_pjdlog=	util
418_DP_proc=	cxxrt
419.if ${MK_CDDL} != "no"
420_DP_proc+=	ctf
421.endif
422_DP_proc+=	elf procstat rtld_db util z
423_DP_procstat=	kvm util elf
424.if ${MK_OPENSSL} == "no"
425_DP_radius=	md
426.else
427_DP_radius=	crypto
428.endif
429_DP_rt=		pthread
430_DP_rtld_db=	elf procstat
431_DP_smb=	kiconv
432_DP_sqlite3=	pthread
433_DP_ssl=	pthread crypto
434_DP_ssh=	crypto crypt z
435.if ${MK_LDNS} != "no"
436_DP_ssh+=	ldns
437.endif
438_DP_stats=	sbuf pthread
439_DP_stdthreads=	pthread
440_DP_sys=	compiler_rt
441# Use libssp_nonshared only on i386 and power*.  Other archs emit direct calls
442# to __stack_chk_fail, not __stack_chk_fail_local provided by libssp_nonshared.
443.if ${MK_SSP} != "no" && \
444    (${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH:Mpower*} != "")
445_DP_sys+=	ssp_nonshared
446.endif
447.if !defined(BOOTSTRAPPING)
448_DP_thr=	c sys
449_DP_pthread=	${_DP_thr}
450.endif
451_DP_tacplus=	md pam
452_DP_ucl=	m
453_DP_ulog=	md
454_DP_unbound=	ssl crypto pthread
455_DP_usb=	pthread
456_DP_uvmem=	pthread
457_DP_vmmapi=	util
458_DP_xo=		util
459_DP_zfs=	md pthread rt umem util m avl bsdxml crypto geom nvpair \
460	z zfs_core zutil
461_DP_zfs_core=	nvpair spl zutil
462_DP_zfsbootenv= zfs nvpair
463_DP_zpool=	md pthread z icp spl nvpair avl umem
464_DP_zstd=	pthread
465_DP_ztest=	geom m nvpair umem zpool pthread avl zfs_core spl zutil zfs icp
466_DP_zutil=	avl geom m
467
468# Kerberos support
469.if ${MK_KERBEROS} != "no"
470.if ${MK_MITKRB5} != "no"
471# _DP_krb5support=	no dependencies except for libc
472# _DP_verto=		no dependencies except for libc
473# _DP_apputils=		no dependencies except for libc
474_DP_com_err=		krb5support
475_DP_gssapi_krb5=	krb5 k5crypto com_err krb5profile krb5support
476_DP_gssrpc=		gssapi_krb5 krb5 k5crypto com_err krb5support
477_DP_k5crypto=		com_err krb5support crypto
478_DP_kadm5clnt_mit=	gssrpc gssapi_krb5 krb5 k5crypto krb5support com_err krb5profile
479_DP_kadm5srv_mit=	krb5profile gssrpc gssapi_krb5 kdb5 krb5 k5crypto krb5support com_err
480_DP_kdb5=		gssrpc krb5 k5crypto com_err krb5support gssapi_krb5 krb5profile
481_DP_krad=		krb5 k5crypto com_err krb5profile krb5support verto
482_DP_krb5=		krb5profile k5crypto com_err krb5support
483.else
484_DP_asn1=	com_err roken
485_DP_gssapi_krb5=	gssapi krb5 crypto roken asn1 com_err
486_DP_hdb=	asn1 com_err krb5 roken sqlite3 heimbase
487_DP_heimbase=	pthread
488_DP_heimipcc=	heimbase roken pthread
489_DP_heimipcs=	heimbase roken pthread
490_DP_heimntlm=	crypto com_err krb5 roken
491_DP_hx509=	asn1 com_err crypto roken wind
492_DP_kadm5clnt=	com_err krb5 roken
493_DP_kadm5srv=	com_err hdb krb5 roken
494_DP_kafs5=	asn1 krb5 roken
495_DP_kdc=	roken hdb hx509 krb5 heimntlm asn1 crypto
496_DP_krb5=	asn1 com_err crypt crypto hx509 roken wind heimbase heimipcc
497_DP_roken=	crypt
498_DP_wind=	com_err roken
499.endif
500.endif
501.if ${MK_MITKRB5} == "no"
502_DP_rpcsec_gss=	gssapi
503.else
504_DP_rpcsec_gss=	gssapi_krb5
505.endif
506_DP_smb=	kiconv
507_DP_ulog=	md
508_DP_fifolog=	z
509_DP_ipf=	kvm
510_DP_uvmem=	pthread
511_DP_zfs=	md pthread rt umem util m avl bsdxml crypto geom nvpair \
512	z zfs_core zutil
513_DP_zfsbootenv= zfs nvpair
514_DP_zfs_core=	nvpair spl zutil
515_DP_zpool=	md pthread z icp spl nvpair avl umem
516_DP_zutil=	avl geom m
517_DP_be=		zfs spl nvpair zfsbootenv
518_DP_netmap=
519_DP_ifconfig=	m
520_DP_pfctl=	nv
521_DP_krb5ss=		edit
522
523# OFED support
524.if ${MK_OFED} != "no"
525_DP_bnxtre=	ibverbs pthread
526_DP_cxgb4=	ibverbs pthread
527_DP_ibcm=	ibverbs
528_DP_ibmad=	ibumad
529_DP_ibnetdisc=	osmcomp ibmad ibumad
530_DP_ibumad=
531_DP_ibverbs=
532_DP_irdma=	ibverbs pthread
533_DP_mlx4=	ibverbs pthread
534_DP_mlx5=	ibverbs pthread
535_DP_opensm=	pthread
536_DP_osmcomp=	pthread
537_DP_osmvendor=	ibumad pthread
538_DP_pcap=	ibverbs mlx5 bnxtre
539_DP_rdmacm=	ibverbs
540.endif
541
542# Define special cases
543LDADD_supcplusplus=	-lsupc++
544LIBATF_C=	${LIBDESTDIR}${LIBDIR_BASE}/libprivateatf-c.a
545LIBATF_CXX=	${LIBDESTDIR}${LIBDIR_BASE}/libprivateatf-c++.a
546LDADD_atf_c=	-lprivateatf-c
547LDADD_atf_cxx=	-lprivateatf-c++
548
549LIBGMOCK=	${LIBDESTDIR}${LIBDIR_BASE}/libprivategmock.a
550LIBGMOCK_MAIN=	${LIBDESTDIR}${LIBDIR_BASE}/libprivategmock_main.a
551LIBGTEST=	${LIBDESTDIR}${LIBDIR_BASE}/libprivategtest.a
552LIBGTEST_MAIN=	${LIBDESTDIR}${LIBDIR_BASE}/libprivategtest_main.a
553LDADD_gmock=	-lprivategmock
554LDADD_gtest=	-lprivategtest
555LDADD_gmock_main= -lprivategmock_main
556LDADD_gtest_main= -lprivategtest_main
557
558.for _l in ${_PRIVATELIBS}
559LIB${_l:tu}?=	${LIBDESTDIR}${LIBDIR_BASE}/libprivate${_l}.a
560.endfor
561
562.if ${MK_PIE} != "no"
563PIE_SUFFIX=	_pie
564.endif
565
566.for _l in ${_LIBRARIES}
567.if ${_INTERNALLIBS:M${_l}} || !defined(SYSROOT)
568LDADD_${_l}_L+=		-L${LIB${_l:tu}DIR}
569.endif
570DPADD_${_l}?=	${LIB${_l:tu}}
571.if ${_PRIVATELIBS:M${_l}}
572LDADD_${_l}?=	${LDADD_${_l}_L} -lprivate${_l}
573.elif ${_INTERNALLIBS:M${_l}}
574LDADD_${_l}?=	${LDADD_${_l}_L} -l${_l:S/${PIE_SUFFIX}//}${PIE_SUFFIX}
575.else
576LDADD_${_l}?=	${LDADD_${_l}_L} -l${_l}
577.endif
578# Add in all dependencies for static linkage.
579# Bootstrapping from non-FreeBSD needs special handling, since it overrides
580# NO_SHARED back to yes despite only building static versions of bootstrap
581# libraries (see tools/build/mk/Makefile.boot.pre).
582.if defined(_DP_${_l}) && (${_INTERNALLIBS:M${_l}} || \
583    (defined(NO_SHARED) && ${NO_SHARED:tl} != "no") || \
584    (defined(BOOTSTRAPPING) && ${.MAKE.OS} != "FreeBSD"))
585.for _d in ${_DP_${_l}}
586DPADD_${_l}+=	${DPADD_${_d}}
587LDADD_${_l}+=	${LDADD_${_d}}
588.endfor
589.endif
590.endfor
591
592# These are special cases where the library is broken and anything that uses
593# it needs to add more dependencies.  Broken usually means that it has a
594# cyclic dependency and cannot link its own dependencies.  This is bad, please
595# fix the library instead.
596# Unless the library itself is broken then the proper place to define
597# dependencies is _DP_* above.
598
599# libatf-c++ exposes libatf-c abi hence we need to explicit link to atf_c for
600# atf_cxx
601DPADD_atf_cxx+=	${DPADD_atf_c}
602LDADD_atf_cxx+=	${LDADD_atf_c}
603
604DPADD_gmock+=	${DPADD_gtest}
605LDADD_gmock+=	${LDADD_gtest}
606
607DPADD_gmock_main+=	${DPADD_gmock}
608LDADD_gmock_main+=	${LDADD_gmock}
609
610DPADD_gtest_main+=	${DPADD_gtest}
611LDADD_gtest_main+=	${LDADD_gtest}
612
613# Detect LDADD/DPADD that should be LIBADD, before modifying LDADD here.
614_BADLDADD=
615.for _l in ${LDADD:M-l*:N-l*/*:C,^-l,,}
616.if ${_LIBRARIES:M${_l}} && !${_PRIVATELIBS:M${_l}}
617_BADLDADD+=	${_l}
618.endif
619.endfor
620.if !empty(_BADLDADD)
621.error ${.CURDIR}: These libraries should be LIBADD+=foo rather than DPADD/LDADD+=-lfoo: ${_BADLDADD}
622.endif
623
624.for _l in ${LIBADD}
625DPADD+=		${DPADD_${_l}}
626LDADD+=		${LDADD_${_l}}
627.endfor
628
629_LIB_OBJTOP?=	${OBJTOP}
630# INTERNALLIB definitions.
631LIBDIFFDIR=	${_LIB_OBJTOP}/lib/libdiff
632LIBDIFF?=	${LIBDIFFDIR}/libdiff${PIE_SUFFIX}.a
633
634LIBELFTCDIR=	${_LIB_OBJTOP}/lib/libelftc
635LIBELFTC?=	${LIBELFTCDIR}/libelftc${PIE_SUFFIX}.a
636
637LIBFDTDIR=	${_LIB_OBJTOP}/lib/libfdt
638LIBFDT?=	${LIBFDTDIR}/libfdt${PIE_SUFFIX}.a
639
640LIBLUADIR=	${_LIB_OBJTOP}/lib/liblua
641LIBLUA?=	${LIBLUADIR}/liblua${PIE_SUFFIX}.a
642
643LIBLUTOKDIR=	${_LIB_OBJTOP}/lib/liblutok
644LIBLUTOK?=	${LIBLUTOKDIR}/liblutok${PIE_SUFFIX}.a
645
646LIBPEDIR=	${_LIB_OBJTOP}/lib/libpe
647LIBPE?=		${LIBPEDIR}/libpe${PIE_SUFFIX}.a
648
649LIBOPENBSDDIR=	${_LIB_OBJTOP}/lib/libopenbsd
650LIBOPENBSD?=	${LIBOPENBSDDIR}/libopenbsd${PIE_SUFFIX}.a
651
652LIBSMDIR=	${_LIB_OBJTOP}/lib/libsm
653LIBSM?=		${LIBSMDIR}/libsm${PIE_SUFFIX}.a
654
655LIBSMDBDIR=	${_LIB_OBJTOP}/lib/libsmdb
656LIBSMDB?=	${LIBSMDBDIR}/libsmdb${PIE_SUFFIX}.a
657
658LIBSMUTILDIR=	${_LIB_OBJTOP}/lib/libsmutil
659LIBSMUTIL?=	${LIBSMUTILDIR}/libsmutil${PIE_SUFFIX}.a
660
661LIBSYSDIR=	${_LIB_OBJTOP}/lib/libsys
662LIBSYS?=	${LIBSYSDIR}/libsys${PIE_SUFFIX}.a
663
664LIBNETBSDDIR?=	${_LIB_OBJTOP}/lib/libnetbsd
665LIBNETBSD?=	${LIBNETBSDDIR}/libnetbsd${PIE_SUFFIX}.a
666
667LIBVERSDIR?=	${_LIB_OBJTOP}/kerberos5/lib/libvers
668LIBVERS?=	${LIBVERSDIR}/libvers${PIE_SUFFIX}.a
669
670LIBSLDIR=	${_LIB_OBJTOP}/kerberos5/lib/libsl
671LIBSL?=		${LIBSLDIR}/libsl${PIE_SUFFIX}.a
672
673LIBIFCONFIGDIR=	${_LIB_OBJTOP}/lib/libifconfig
674LIBIFCONFIG?=	${LIBIFCONFIGDIR}/libifconfig${PIE_SUFFIX}.a
675
676LIBIPFDIR=	${_LIB_OBJTOP}/sbin/ipf/libipf
677LIBIPF?=	${LIBIPFDIR}/libipf${PIE_SUFFIX}.a
678
679LIBNVDIR=	${_LIB_OBJTOP}/lib/libnv
680LIBNV?=		${LIBNVDIR}/libnv${PIE_SUFFIX}.a
681
682LIBISCSIUTILDIR=	${_LIB_OBJTOP}/lib/libiscsiutil
683LIBISCSIUTIL?=	${LIBISCSIUTILDIR}/libiscsiutil${PIE_SUFFIX}.a
684
685LIBNVMFDIR=	${_LIB_OBJTOP}/lib/libnvmf
686LIBNVMF?=	${LIBNVMFDIR}/libnvmf${PIE_SUFFIX}.a
687
688LIBTELNETDIR=	${_LIB_OBJTOP}/lib/libtelnet
689LIBTELNET?=	${LIBTELNETDIR}/libtelnet${PIE_SUFFIX}.a
690
691LIBCRONDIR=	${_LIB_OBJTOP}/usr.sbin/cron/lib
692LIBCRON?=	${LIBCRONDIR}/libcron${PIE_SUFFIX}.a
693
694LIBDERDIR=	${_LIB_OBJTOP}/lib/libder
695LIBDER?=	${LIBDERDIR}/libder${PIE_SUFFIX}.a
696
697LIBNTPDIR=	${_LIB_OBJTOP}/usr.sbin/ntp/libntp
698LIBNTP?=	${LIBNTPDIR}/libntp${PIE_SUFFIX}.a
699
700LIBNTPEVENTDIR=	${_LIB_OBJTOP}/usr.sbin/ntp/libntpevent
701LIBNTPEVENT?=	${LIBNTPEVENTDIR}/libntpevent${PIE_SUFFIX}.a
702
703LIBOPTSDIR=	${_LIB_OBJTOP}/usr.sbin/ntp/libopts
704LIBOPTS?=	${LIBOPTSDIR}/libopts${PIE_SUFFIX}.a
705
706LIBPARSEDIR=	${_LIB_OBJTOP}/usr.sbin/ntp/libparse
707LIBPARSE?=	${LIBPARSEDIR}/libparse${PIE_SUFFIX}.a
708
709LIBPFCTLDIR=	${_LIB_OBJTOP}/lib/libpfctl
710LIBPFCTL?=	${LIBPFCTLDIR}/libpfctl${PIE_SUFFIX}.a
711
712LIBLPRDIR=	${_LIB_OBJTOP}/usr.sbin/lpr/common_source
713LIBLPR?=	${LIBLPRDIR}/liblpr${PIE_SUFFIX}.a
714
715LIBFIFOLOGDIR=	${_LIB_OBJTOP}/usr.sbin/fifolog/lib
716LIBFIFOLOG?=	${LIBFIFOLOGDIR}/libfifolog${PIE_SUFFIX}.a
717
718LIBBSNMPTOOLSDIR=	${_LIB_OBJTOP}/usr.sbin/bsnmpd/tools/libbsnmptools
719LIBBSNMPTOOLS?=	${LIBBSNMPTOOLSDIR}/libbsnmptools${PIE_SUFFIX}.a
720
721LIBBE?=		${LIBBEDIR}/libbe${PIE_SUFFIX}.a
722
723LIBPKGECCDIR=	${_LIB_OBJTOP}/secure/lib/libpkgecc
724LIBPKGECC?=	${LIBPKGECCDIR}/libpkgecc${PIE_SUFFIX}.a
725
726LIBPMCSTATDIR=	${_LIB_OBJTOP}/lib/libpmcstat
727LIBPMCSTAT?=	${LIBPMCSTATDIR}/libpmcstat${PIE_SUFFIX}.a
728
729LIBUTIL++DIR=	${_LIB_OBJTOP}/lib/libutil++
730LIBUTIL++?=	${LIBUTIL++DIR}/libutil++${PIE_SUFFIX}.a
731
732LIBWPAAPDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/ap
733LIBWPAAP?=	${LIBWPAAPDIR}/libwpaap${PIE_SUFFIX}.a
734
735LIBWPACOMMONDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/common
736LIBWPACOMMON?=	${LIBWPACOMMONDIR}/libwpacommon${PIE_SUFFIX}.a
737
738LIBWPACRYPTODIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/crypto
739LIBWPACRYPTO?=	${LIBWPACRYPTODIR}/libwpacrypto${PIE_SUFFIX}.a
740
741LIBWPADRIVERSDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/drivers
742LIBWPADRIVERS?=	${LIBWPADRIVERSDIR}/libwpadrivers${PIE_SUFFIX}.a
743
744LIBWPAEAP_COMMONDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/eap_common
745LIBWPAEAP_COMMON?=	${LIBWPAEAP_COMMONDIR}/libwpaeap_common${PIE_SUFFIX}.a
746
747LIBWPAEAP_PEERDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/eap_peer
748LIBWPAEAP_PEER?=	${LIBWPAEAP_PEERDIR}/libwpaeap_peer${PIE_SUFFIX}.a
749
750LIBWPAEAP_SERVERDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/eap_server
751LIBWPAEAP_SERVER?=	${LIBWPAEAP_SERVERDIR}/libwpaeap_server${PIE_SUFFIX}.a
752
753LIBWPAEAPOL_AUTHDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/eapol_auth
754LIBWPAEAPOL_AUTH?=	${LIBWPAEAPOL_AUTHDIR}/libwpaeapol_auth${PIE_SUFFIX}.a
755
756LIBWPAEAPOL_SUPPDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/eapol_supp
757LIBWPAEAPOL_SUPP?=	${LIBWPAEAPOL_SUPPDIR}/libwpaeapol_supp${PIE_SUFFIX}.a
758
759LIBWPAL2_PACKETDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/l2_packet
760LIBWPAL2_PACKET?=	${LIBWPAL2_PACKETDIR}/libwpal2_packet${PIE_SUFFIX}.a
761
762LIBWPAPASNDIR=		${_LIB_OBJTOP}/usr.sbin/wpa/src/pasn
763LIBWPAPASN?=		${LIBWPAPASNDIR}/libwpapasn${PIE_SUFFIX}.a
764
765LIBWPARADIUSDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/radius
766LIBWPARADIUS?=	${LIBWPARADIUSDIR}/libwparadius${PIE_SUFFIX}.a
767
768LIBWPARSN_SUPPDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/rsn_supp
769LIBWPARSN_SUPP?=	${LIBWPARSN_SUPPDIR}/libwparsn_supp${PIE_SUFFIX}.a
770
771LIBWPATLSDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/tls
772LIBWPATLS?=	${LIBWPATLSDIR}/libwpatls${PIE_SUFFIX}.a
773
774LIBWPAUTILSDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/utils
775LIBWPAUTILS?=	${LIBWPAUTILSDIR}/libwpautils${PIE_SUFFIX}.a
776
777LIBWPAWPSDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/wps
778LIBWPAWPS?=	${LIBWPAWPSDIR}/libwpawps${PIE_SUFFIX}.a
779
780LIBC_NOSSP_PICDIR=	${_LIB_OBJTOP}/lib/libc
781LIBC_NOSSP_PIC?=	${LIBC_NOSSP_PICDIR}/libc_nossp_pic.a
782
783LIBSYS_PICDIR=	${_LIB_OBJTOP}/lib/libsys
784LIBSYS_PIC?=	${LIBSYS_PICDIR}/libsys_pic.a
785
786LIBSAMPLERATEDIR?=	${_LIB_OBJTOP}/lib/libsamplerate
787LIBSAMPLERATE?=	${LIBSAMPLERATEDIR}/libsamplerate${PIE_SUFFIX}.a
788
789LIBUVMEMDIR=	${OBJTOP}/lib/libuvmem
790LIBUVMEM?=	${LIBUVMEMDIR}/libuvmem${PIE_SUFFIX}.a
791
792# Define a directory for each library.  This is useful for adding -L in when
793# not using a --sysroot or for meta mode bootstrapping when there is no
794# Makefile.depend.  These are sorted by directory.
795LIBAVLDIR=	${_LIB_OBJTOP}/cddl/lib/libavl
796LIBCTFDIR=	${_LIB_OBJTOP}/cddl/lib/libctf
797LIBDTRACEDIR=	${_LIB_OBJTOP}/cddl/lib/libdtrace
798LIBICPDIR=	${_LIB_OBJTOP}/cddl/lib/libicp
799LIBICP?=	${LIBICPDIR}/libicp${PIE_SUFFIX}.a
800LIBICP_RESCUEDIR=	${_LIB_OBJTOP}/cddl/lib/libicp_rescue
801LIBICP_RESCUE?=	${LIBICP_RESCUEDIR}/libicp_rescue${PIE_SUFFIX}.a
802LIBNVPAIRDIR=	${_LIB_OBJTOP}/cddl/lib/libnvpair
803LIBNVPAIR?=	${LIBNVPAIRDIR}/libnvpair${PIE_SUFFIX}.a
804LIBUMEMDIR=	${_LIB_OBJTOP}/cddl/lib/libumem
805LIBZDBDIR=	${_LIB_OBJTOP}/cddl/lib/libzdb
806LIBZDB?=	${LIBZDBDIR}/libzdb${PIE_SUFFIX}.a
807LIBZFSDIR=	${_LIB_OBJTOP}/cddl/lib/libzfs
808LIBZFS?=	${LIBZFSDIR}/libzfs${PIE_SUFFIX}.a
809LIBZFS_COREDIR=	${_LIB_OBJTOP}/cddl/lib/libzfs_core
810LIBZFS_CORE?=	${LIBZFS_COREDIR}/libzfs_core${PIE_SUFFIX}.a
811LIBZFSBOOTENVDIR=	${_LIB_OBJTOP}/cddl/lib/libzfsbootenv
812LIBZFSBOOTENV?=	${LIBZFSBOOTENVDIR}/libzfsbootenv${PIE_SUFFIX}.a
813LIBZPOOLDIR=	${_LIB_OBJTOP}/cddl/lib/libzpool
814LIBZPOOL?=	${LIBZPOOLDIR}/libzpool${PIE_SUFFIX}.a
815LIBZUTILDIR=	${_LIB_OBJTOP}/cddl/lib/libzutil
816LIBZUTIL?=	${LIBZUTILDIR}/libzutil${PIE_SUFFIX}.a
817
818# OFED support
819LIBCXGB4DIR=	${_LIB_OBJTOP}/lib/ofed/libcxgb4
820LIBIBCMDIR=	${_LIB_OBJTOP}/lib/ofed/libibcm
821LIBIBMADDIR=	${_LIB_OBJTOP}/lib/ofed/libibmad
822LIBIBNETDISCDIR=${_LIB_OBJTOP}/lib/ofed/libibnetdisc
823LIBIBUMADDIR=	${_LIB_OBJTOP}/lib/ofed/libibumad
824LIBIBVERBSDIR=	${_LIB_OBJTOP}/lib/ofed/libibverbs
825LIBIRDMADIR=	${_LIB_OBJTOP}/lib/ofed/libirdma
826LIBMLX4DIR=	${_LIB_OBJTOP}/lib/ofed/libmlx4
827LIBMLX5DIR=	${_LIB_OBJTOP}/lib/ofed/libmlx5
828LIBBNXTREDIR=	${_LIB_OBJTOP}/lib/ofed/libbnxtre
829LIBRDMACMDIR=	${_LIB_OBJTOP}/lib/ofed/librdmacm
830LIBOSMCOMPDIR=	${_LIB_OBJTOP}/lib/ofed/complib
831LIBOPENSMDIR=	${_LIB_OBJTOP}/lib/ofed/libopensm
832LIBOSMVENDORDIR=${_LIB_OBJTOP}/lib/ofed/libvendor
833
834LIBDIALOGDIR=	${_LIB_OBJTOP}/gnu/lib/libdialog
835LIBSSPDIR=	${_LIB_OBJTOP}/lib/libssp
836LIBSSP_NONSHAREDDIR=	${_LIB_OBJTOP}/lib/libssp_nonshared
837.if ${MK_MITKRB5} != "no"
838LIBAPPUTILSDIR=		${_LIB_OBJTOP}/krb5/lib/apputils
839LIBAPPUTILS?=		${LIBAPPUTILSDIR}/libapputils${PIE_SUFFIX}.a
840LIBGSSAPI_KRB5DIR=	${_LIB_OBJTOP}/krb5/lib/gssapi
841LIBGSSAPI_KRB5?=	${LIBGSSAPI_KRB5DIR}/libgssapi_krb5${PIE_SUFFIX}.a
842LIBGSSRPCDIR=		${_LIB_OBJTOP}/krb5/lib/rpc
843LIBGSSRPC?=		${LIBGSSRPCDIR}/libgssrpc${PIE_SUFFIX}.a
844LIBK5CRYPTODIR=		${_LIB_OBJTOP}/krb5/lib/crypto
845LIBK5CRYPTO?=		${LIBK5CRYPTODIR}/libk5crypto${PIE_SUFFIX}.a
846LIBK5GSSRPCDIR=		${_LIB_OBJTOP}/krb5/lib/rpc
847LIBK5GSSRPC?=		${LIBK5GSSRPCDIR}/libgssrpc${PIE_SUFFIX}.a
848LIBKADM5CLNT_MITDIR=	${_LIB_OBJTOP}/krb5/lib/kadm5clnt
849LIBKADM5CLNT_MIT?=	${LIBKADM5CLNT_MITDIR}/libkadm5clnt_mit${PIE_SUFFIX}.a
850LIBKADM5SRV_MITDIR=	${_LIB_OBJTOP}/krb5/lib/kadm5srv
851LIBKADM5SRV_MIT?=	${LIBKADM5SRV_MITDIR}/libkadm5srv_mit${PIE_SUFFIX}.a
852LIBKADMIN_COMMONDIR=	${_LIB_OBJTOP}/krb5/lib/kadmin_common
853LIBKADMIN_COMMON?=	${LIBKADMIN_COMMONDIR}/libkadmin_common${PIE_SUFFIX}.a
854LIBKDB5DIR=		${_LIB_OBJTOP}/krb5/lib/kdb
855LIBKDB5?=		${LIBKDB5DIR}/libkdb5${PIE_SUFFIX}.a
856LIBKPROP_UTILDIR=	${_LIB_OBJTOP}/krb5/lib/kprop_util
857LIBKPROP_UTIL?=		${LIBKPROP_UTILDIR}/libkprop_util${PIE_SUFFIX}.a
858LIBKRADDIR=		${_LIB_OBJTOP}/krb5/lib/krad
859LIBKRAD?=		${LIBKRADDIR}/libkrad${PIE_SUFFIX}.a
860LIBKRB5DIR=		${_LIB_OBJTOP}/krb5/lib/krb5
861LIBKRB5?=		${LIBKRB5DIR}/libkrb5${PIE_SUFFIX}.a
862LIBKRB5SSDIR=		${_LIB_OBJTOP}/krb5/util/ss
863LIBKRB5SS?=		${LIBKRB5SUPPORTDIR}/libkrb5ss${PIE_SUFFIX}.a
864LIBKRB5SUPPORTDIR=	${_LIB_OBJTOP}/krb5/util/support
865LIBKRB5SUPPORT?=	${LIBKRB5SUPPORTDIR}/libkrb5support${PIE_SUFFIX}.a
866LIBKRB5PROFILEDIR=	${_LIB_OBJTOP}/krb5/util/profile
867LIBKRB5PROFILE?=	${LIBPROFILEDIR}/libkrb5profile${PIE_SUFFIX}.a
868LIBVERTODIR=		${_LIB_OBJTOP}/krb5/util/verto
869LIBVERTO?=		${LIBVERTODIR}/libverto${PIE_SUFFIX}.a
870.else
871LIBASN1DIR=	${_LIB_OBJTOP}/kerberos5/lib/libasn1
872LIBGSSAPI_KRB5DIR=	${_LIB_OBJTOP}/kerberos5/lib/libgssapi_krb5
873LIBGSSAPI_NTLMDIR=	${_LIB_OBJTOP}/kerberos5/lib/libgssapi_ntlm
874LIBGSSAPI_SPNEGODIR=	${_LIB_OBJTOP}/kerberos5/lib/libgssapi_spnego
875LIBHDBDIR=	${_LIB_OBJTOP}/kerberos5/lib/libhdb
876LIBHEIMBASEDIR=	${_LIB_OBJTOP}/kerberos5/lib/libheimbase
877LIBHEIMIPCCDIR=	${_LIB_OBJTOP}/kerberos5/lib/libheimipcc
878LIBHEIMIPCSDIR=	${_LIB_OBJTOP}/kerberos5/lib/libheimipcs
879LIBHEIMNTLMDIR=	${_LIB_OBJTOP}/kerberos5/lib/libheimntlm
880LIBHX509DIR=	${_LIB_OBJTOP}/kerberos5/lib/libhx509
881LIBKADM5CLNTDIR=	${_LIB_OBJTOP}/kerberos5/lib/libkadm5clnt
882LIBKADM5SRVDIR=	${_LIB_OBJTOP}/kerberos5/lib/libkadm5srv
883LIBKAFS5DIR=	${_LIB_OBJTOP}/kerberos5/lib/libkafs5
884LIBKDCDIR=	${_LIB_OBJTOP}/kerberos5/lib/libkdc
885LIBKRB5DIR=	${_LIB_OBJTOP}/kerberos5/lib/libkrb5
886LIBROKENDIR=	${_LIB_OBJTOP}/kerberos5/lib/libroken
887LIBWINDDIR=	${_LIB_OBJTOP}/kerberos5/lib/libwind
888.endif
889LIBATF_CDIR=	${_LIB_OBJTOP}/lib/atf/libatf-c
890LIBATF_CXXDIR=	${_LIB_OBJTOP}/lib/atf/libatf-c++
891LIBGMOCKDIR=	${_LIB_OBJTOP}/lib/googletest/gmock
892LIBGMOCK_MAINDIR=	${_LIB_OBJTOP}/lib/googletest/gmock_main
893LIBGTESTDIR=	${_LIB_OBJTOP}/lib/googletest/gtest
894LIBGTEST_MAINDIR=	${_LIB_OBJTOP}/lib/googletest/gtest_main
895LIBALIASDIR=	${_LIB_OBJTOP}/lib/libalias/libalias
896LIBBLACKLISTDIR=	${_LIB_OBJTOP}/lib/libblacklist
897LIBBLOCKLISTDIR=	${_LIB_OBJTOP}/lib/libblocklist
898LIBBLOCKSRUNTIMEDIR=	${_LIB_OBJTOP}/lib/libblocksruntime
899LIBBSNMPDIR=	${_LIB_OBJTOP}/lib/libbsnmp/libbsnmp
900LIBCASPERDIR=	${_LIB_OBJTOP}/lib/libcasper/libcasper
901LIBCAP_DNSDIR=	${_LIB_OBJTOP}/lib/libcasper/services/cap_dns
902LIBCAP_GRPDIR=	${_LIB_OBJTOP}/lib/libcasper/services/cap_grp
903LIBCAP_NETDIR=	${_LIB_OBJTOP}/lib/libcasper/services/cap_net
904LIBCAP_PWDDIR=	${_LIB_OBJTOP}/lib/libcasper/services/cap_pwd
905LIBCAP_SYSCTLDIR=	${_LIB_OBJTOP}/lib/libcasper/services/cap_sysctl
906LIBCAP_SYSLOGDIR=	${_LIB_OBJTOP}/lib/libcasper/services/cap_syslog
907LIBCBORDIR=	${_LIB_OBJTOP}/lib/libcbor
908LIBBSDXMLDIR=	${_LIB_OBJTOP}/lib/libexpat
909LIBFIDO2DIR=	${_LIB_OBJTOP}/lib/libfido2
910LIBKVMDIR=	${_LIB_OBJTOP}/lib/libkvm
911LIBPTHREADDIR=	${_LIB_OBJTOP}/lib/libthr
912LIBMDIR=	${_LIB_OBJTOP}/lib/msun
913LIBFORMWDIR=	${_LIB_OBJTOP}/lib/ncurses/form
914LIBMENUWDIR=	${_LIB_OBJTOP}/lib/ncurses/menu
915LIBNCURSESWDIR=	${_LIB_OBJTOP}/lib/ncurses/ncurses
916LIBTINFOWDIR=	${_LIB_OBJTOP}/lib/ncurses/tinfo
917LIBPANELWDIR=	${_LIB_OBJTOP}/lib/ncurses/panel
918LIBCRYPTODIR=	${_LIB_OBJTOP}/secure/lib/libcrypto
919LIBSPLDIR=	${_LIB_OBJTOP}/cddl/lib/libspl
920LIBSSHDIR=	${_LIB_OBJTOP}/secure/lib/libssh
921LIBSSLDIR=	${_LIB_OBJTOP}/secure/lib/libssl
922LIBTEKENDIR=	${_LIB_OBJTOP}/sys/teken/libteken
923LIBEGACYDIR=	${_LIB_OBJTOP}/tools/build
924LIBLNDIR=	${_LIB_OBJTOP}/usr.bin/lex/lib
925
926LIBTERMCAPWDIR=	${LIBTINFOWDIR}
927
928.-include <site.src.libnames.mk>
929
930# Default other library directories to lib/libNAME.
931.for lib in ${_LIBRARIES}
932LIB${lib:tu}DIR?=	${OBJTOP}/lib/lib${lib}
933.endfor
934
935# Validate that listed LIBADD are valid.
936.for _l in ${LIBADD}
937.if empty(_LIBRARIES:M${_l})
938_BADLIBADD+= ${_l}
939.endif
940.endfor
941.if !empty(_BADLIBADD)
942.error ${.CURDIR}: Invalid LIBADD used which may need to be added to ${_this:T}: ${_BADLIBADD}
943.endif
944
945# Sanity check that libraries are defined here properly when building them.
946.if defined(LIB) && ${_LIBRARIES:M${LIB}} != ""
947.if !empty(LIBADD) && \
948    (!defined(_DP_${LIB}) || ${LIBADD:O:u} != ${_DP_${LIB}:O:u})
949.error ${.CURDIR}: Missing or incorrect _DP_${LIB} entry in ${_this:T}.  Should match LIBADD for ${LIB} ('${LIBADD}' vs '${_DP_${LIB}}')
950.endif
951# Note that OBJTOP is not yet defined here but for the purpose of the check
952# it is fine as it resolves to the SRC directory.
953.if !defined(LIB${LIB:tu}DIR) || !exists(${SRCTOP}/${LIB${LIB:tu}DIR:S,^${OBJTOP}/,,})
954.error ${.CURDIR}: Missing or incorrect value for LIB${LIB:tu}DIR in ${_this:T}: ${LIB${LIB:tu}DIR:S,^${OBJTOP}/,,}
955.endif
956.if ${_INTERNALLIBS:M${LIB}} != "" && !defined(LIB${LIB:tu})
957.error ${.CURDIR}: Missing value for LIB${LIB:tu} in ${_this:T}.  Likely should be: LIB${LIB:tu}?= $${LIB${LIB:tu}DIR}/lib${LIB}.a
958.endif
959.endif
960
961.endif	# !target(__<src.libnames.mk>__)
962