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