xref: /freebsd/share/mk/src.libnames.mk (revision 82778970eeb24f1249945612d05923725f9baa4f)
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		krb5ss \
63		lpr \
64		lua \
65		lutok \
66		netbsd \
67		ntp \
68		ntpevent \
69		nvmf \
70		openbsd \
71		opts \
72		parse \
73		pe \
74		pfctl \
75		pkgecc \
76		pmcstat \
77		sl \
78		sm \
79		smdb \
80		smutil \
81		telnet \
82		util++ \
83		vers \
84		wpaap \
85		wpacommon \
86		wpacrypto \
87		wpadrivers \
88		wpaeap_common \
89		wpaeap_peer \
90		wpaeap_server \
91		wpaeapol_auth \
92		wpaeapol_supp \
93		wpal2_packet \
94		wpapasn \
95		wparadius \
96		wparsn_supp \
97		wpatls \
98		wpautils \
99		wpawps
100
101# Let projects based on FreeBSD append to _INTERNALLIBS
102# by maintaining their own LOCAL_INTERNALLIBS list.
103_INTERNALLIBS+=	${LOCAL_INTERNALLIBS}
104
105_LIBRARIES=	\
106		${_PRIVATELIBS} \
107		${_INTERNALLIBS} \
108		${LOCAL_LIBRARIES} \
109		80211 \
110		9p \
111		alias \
112		archive \
113		asn1 \
114		avl \
115		BlocksRuntime \
116		be \
117		begemot \
118		bluetooth \
119		bsdxml \
120		bsm \
121		bsnmp \
122		bz2 \
123		c \
124		c_pic \
125		calendar \
126		cam \
127		casper \
128		cap_dns \
129		cap_fileargs \
130		cap_grp \
131		cap_net \
132		cap_netdb \
133		cap_pwd \
134		cap_sysctl \
135		cap_syslog \
136		com_err \
137		compiler_rt \
138		crypt \
139		crypto \
140		ctf \
141		cuse \
142		cxxrt \
143		devctl \
144		devdctl \
145		devinfo \
146		devstat \
147		dialog \
148		dl \
149		dpv \
150		dtrace \
151		dwarf \
152		edit \
153		efivar \
154		elf \
155		execinfo \
156		fetch \
157		figpar \
158		formw \
159		geom \
160		gpio \
161		gssapi \
162		gssapi_krb5 \
163		gssrpc \
164		hdb \
165		heimbase \
166		heimntlm \
167		heimsqlite \
168		hx509 \
169		icp \
170		ipsec \
171		ipt \
172		jail \
173		k5crypto \
174		kadm5 \
175		kadmin_common \
176		kafs5 \
177		kdb5 \
178		kdc \
179		kiconv \
180		krad \
181		krb5 \
182		krb5profile \
183		krb5support \
184		kvm \
185		l \
186		lzma \
187		m \
188		magic \
189		md \
190		memstat \
191		mp \
192		mt \
193		ncursesw \
194		netgraph \
195		netmap \
196		ngatm \
197		nv \
198		nvpair \
199		opencsd \
200		pam \
201		panel \
202		panelw \
203		pcap \
204		pcsclite \
205		pjdlog \
206		pmc \
207		proc \
208		procstat \
209		pthread \
210		radius \
211		regex \
212		roken \
213		rpcsec_gss \
214		rpcsvc \
215		rt \
216		rtld_db \
217		sbuf \
218		sdp \
219		sm \
220		smb \
221		spl \
222		ssl \
223		ssp_nonshared \
224		stats \
225		stdthreads \
226		supcplusplus \
227		sys \
228		sysdecode \
229		tacplus \
230		termcapw \
231		tinfow \
232		tpool \
233		ufs \
234		ugidfw \
235		ulog \
236		umem \
237		usb \
238		usbhid \
239		util \
240		uutil \
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		rdmacm \
288		osmcomp \
289		opensm \
290		osmvendor
291.endif
292
293.if ${MK_BEARSSL} == "yes"
294_LIBRARIES+= \
295		bearssl \
296		secureboot \
297
298LIBBEARSSL?=	${LIBBEARSSLDIR}/libbearssl.a
299LIBSECUREBOOT?=	${LIBSECUREBOOTDIR}/libsecureboot.a
300.endif
301
302.if ${MK_VERIEXEC} == "yes"
303_LIBRARIES+= veriexec
304
305LIBVERIEXEC?=	${LIBVERIEXECDIR}/libveriexec.a
306.endif
307
308# Each library's LIBADD needs to be duplicated here for static linkage of
309# 2nd+ order consumers.  Auto-generating this would be better.
310_DP_80211=	sbuf bsdxml
311_DP_9p=		sbuf
312.if ${MK_CASPER} != "no"
313_DP_9p+=	casper cap_pwd cap_grp
314.endif
315
316# XXX: Not bootstrapped so uses host version on non-FreeBSD, so don't use a
317# FreeBSD-specific dependency list
318.if ${.MAKE.OS} == "FreeBSD" || !defined(BOOTSTRAPPING)
319_DP_archive=	z bz2 lzma bsdxml zstd
320.endif
321_DP_avl=	spl
322_DP_bsddialog=	ncursesw tinfow
323_DP_zstd=	pthread
324.if ${MK_BLACKLIST} != "no"
325_DP_blacklist+=	pthread
326.endif
327.if ${MK_BLOCKLIST} != "no"
328_DP_blocklist+=	pthread
329.endif
330_DP_crypto=	pthread
331# See comment by _DP_archive above
332.if ${.MAKE.OS} == "FreeBSD" || !defined(BOOTSTRAPPING)
333.if ${MK_OPENSSL} != "no"
334_DP_archive+=	crypto
335.else
336_DP_archive+=	md
337.endif
338.endif
339_DP_sqlite3=	pthread
340_DP_ssl=	pthread crypto
341_DP_ssh=	crypto crypt z
342.if ${MK_LDNS} != "no"
343_DP_ssh+=	ldns
344.endif
345_DP_edit=	tinfow
346.if ${MK_OPENSSL} != "no"
347_DP_bsnmp=	crypto
348.endif
349_DP_geom=	bsdxml sbuf
350_DP_cam=	sbuf
351_DP_kldelf=	elf
352_DP_kvm=	elf
353_DP_casper=	nv
354_DP_cap_dns=	nv
355_DP_cap_fileargs=	nv
356_DP_cap_grp=	nv
357_DP_cap_pwd=	nv
358_DP_cap_sysctl=	nv
359_DP_cap_syslog=	nv
360_DP_crypt=	md
361.if ${MK_OFED} != "no"
362_DP_pcap=	ibverbs mlx5
363.endif
364_DP_pjdlog=	util
365_DP_usb=	pthread
366_DP_unbound=	ssl crypto pthread
367_DP_rt=	pthread
368.if ${MK_OPENSSL} == "no"
369_DP_radius=	md
370.else
371_DP_radius=	crypto
372.endif
373_DP_rtld_db=	elf procstat
374_DP_procstat=	kvm util elf
375_DP_proc=	cxxrt
376.if ${MK_CDDL} != "no"
377_DP_proc+=	ctf
378.endif
379_DP_proc+=	elf procstat rtld_db util z
380_DP_mp=	crypto
381_DP_memstat=	kvm
382_DP_magic=	z
383_DP_mt=		sbuf bsdxml
384_DP_nvmf=	nv
385_DP_ldns=	ssl crypto
386_DP_lua=	m
387_DP_lutok=	lua
388.if ${MK_OPENSSL} != "no"
389_DP_fetch=	ssl crypto
390.else
391_DP_fetch=	md
392.endif
393_DP_execinfo=	elf
394_DP_dwarf=	elf z
395_DP_dpv=	dialog figpar util tinfow ncursesw
396_DP_dialog=	tinfow ncursesw m
397_DP_cuse=	pthread
398_DP_atf_cxx=	atf_c
399_DP_gtest=	pthread regex
400_DP_gmock=	gtest
401_DP_gmock_main=	gmock
402_DP_gtest_main=	gtest
403_DP_devstat=	kvm
404_DP_pam=	radius tacplus md util
405.if ${MK_KERBEROS} != "no" && ${MK_MITKRB5} != "no"
406_DP_pam+=	krb5
407.endif
408.if ${MK_OPENSSH} != "no"
409_DP_fido2+=	crypto z
410_DP_pam+=	ssh
411.endif
412.if ${MK_NIS} != "no"
413_DP_pam+=	ypclnt
414.endif
415.if ${MK_KERBEROS} != "no"
416.if ${MK_MITKRB5} != "no"
417# _DP_krb5support=	no dependencies except for libc
418# _DP_verto=		no dependencies except for libc
419# _DP_apputils=		no dependencies except for libc
420_DP_com_err=		krb5support
421_DP_k5crypto=		com_err krb5support crypto
422_DP_krb5profile=	com_err krb5support
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 uutil 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_tpool=	spl
493_DP_uutil=	avl spl
494_DP_zfs=	md pthread rt umem util uutil m avl bsdxml crypto geom nvpair \
495	z zfs_core zutil
496_DP_zfsbootenv= zfs nvpair
497_DP_zfs_core=	nvpair spl zutil
498_DP_zpool=	md pthread z icp spl nvpair avl umem
499_DP_zutil=	avl geom m tpool
500_DP_be=		zfs spl nvpair zfsbootenv
501_DP_netmap=
502_DP_ifconfig=	m
503_DP_pfctl=	nv
504_DP_krb5ss=		edit
505
506# OFED support
507.if ${MK_OFED} != "no"
508_DP_cxgb4=	ibverbs pthread
509_DP_ibcm=	ibverbs
510_DP_ibmad=	ibumad
511_DP_ibnetdisc=	osmcomp ibmad ibumad
512_DP_ibumad=
513_DP_ibverbs=
514_DP_irdma=	ibverbs pthread
515_DP_mlx4=	ibverbs pthread
516_DP_mlx5=	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
770# Define a directory for each library.  This is useful for adding -L in when
771# not using a --sysroot or for meta mode bootstrapping when there is no
772# Makefile.depend.  These are sorted by directory.
773LIBAVLDIR=	${_LIB_OBJTOP}/cddl/lib/libavl
774LIBCTFDIR=	${_LIB_OBJTOP}/cddl/lib/libctf
775LIBDTRACEDIR=	${_LIB_OBJTOP}/cddl/lib/libdtrace
776LIBICPDIR=	${_LIB_OBJTOP}/cddl/lib/libicp
777LIBICP?=	${LIBICPDIR}/libicp${PIE_SUFFIX}.a
778LIBICP_RESCUEDIR=	${_LIB_OBJTOP}/cddl/lib/libicp_rescue
779LIBICP_RESCUE?=	${LIBICP_RESCUEDIR}/libicp_rescue${PIE_SUFFIX}.a
780LIBNVPAIRDIR=	${_LIB_OBJTOP}/cddl/lib/libnvpair
781LIBNVPAIR?=	${LIBNVPAIRDIR}/libnvpair${PIE_SUFFIX}.a
782LIBUMEMDIR=	${_LIB_OBJTOP}/cddl/lib/libumem
783LIBUUTILDIR=	${_LIB_OBJTOP}/cddl/lib/libuutil
784LIBZDBDIR=	${_LIB_OBJTOP}/cddl/lib/libzdb
785LIBZDB?=	${LIBZDBDIR}/libzdb${PIE_SUFFIX}.a
786LIBZFSDIR=	${_LIB_OBJTOP}/cddl/lib/libzfs
787LIBZFS?=	${LIBZFSDIR}/libzfs${PIE_SUFFIX}.a
788LIBZFS_COREDIR=	${_LIB_OBJTOP}/cddl/lib/libzfs_core
789LIBZFS_CORE?=	${LIBZFS_COREDIR}/libzfs_core${PIE_SUFFIX}.a
790LIBZFSBOOTENVDIR=	${_LIB_OBJTOP}/cddl/lib/libzfsbootenv
791LIBZFSBOOTENV?=	${LIBZFSBOOTENVDIR}/libzfsbootenv${PIE_SUFFIX}.a
792LIBZPOOLDIR=	${_LIB_OBJTOP}/cddl/lib/libzpool
793LIBZPOOL?=	${LIBZPOOLDIR}/libzpool${PIE_SUFFIX}.a
794LIBZUTILDIR=	${_LIB_OBJTOP}/cddl/lib/libzutil
795LIBZUTIL?=	${LIBZUTILDIR}/libzutil${PIE_SUFFIX}.a
796LIBTPOOLDIR=	${_LIB_OBJTOP}/cddl/lib/libtpool
797
798# OFED support
799LIBCXGB4DIR=	${_LIB_OBJTOP}/lib/ofed/libcxgb4
800LIBIBCMDIR=	${_LIB_OBJTOP}/lib/ofed/libibcm
801LIBIBMADDIR=	${_LIB_OBJTOP}/lib/ofed/libibmad
802LIBIBNETDISCDIR=${_LIB_OBJTOP}/lib/ofed/libibnetdisc
803LIBIBUMADDIR=	${_LIB_OBJTOP}/lib/ofed/libibumad
804LIBIBVERBSDIR=	${_LIB_OBJTOP}/lib/ofed/libibverbs
805LIBIRDMADIR=	${_LIB_OBJTOP}/lib/ofed/libirdma
806LIBMLX4DIR=	${_LIB_OBJTOP}/lib/ofed/libmlx4
807LIBMLX5DIR=	${_LIB_OBJTOP}/lib/ofed/libmlx5
808LIBRDMACMDIR=	${_LIB_OBJTOP}/lib/ofed/librdmacm
809LIBOSMCOMPDIR=	${_LIB_OBJTOP}/lib/ofed/complib
810LIBOPENSMDIR=	${_LIB_OBJTOP}/lib/ofed/libopensm
811LIBOSMVENDORDIR=${_LIB_OBJTOP}/lib/ofed/libvendor
812
813LIBDIALOGDIR=	${_LIB_OBJTOP}/gnu/lib/libdialog
814LIBSSPDIR=	${_LIB_OBJTOP}/lib/libssp
815LIBSSP_NONSHAREDDIR=	${_LIB_OBJTOP}/lib/libssp_nonshared
816.if ${MK_MITKRB5} != "no"
817LIBAPPUTILSDIR=		${_LIB_OBJTOP}/krb5/lib/apputils
818LIBAPPUTILS?=		${LIBAPPUTILSDIR}/libapputils${PIE_SUFFIX}.a
819LIBGSSAPI_KRB5DIR=	${_LIB_OBJTOP}/krb5/lib/gssapi
820LIBGSSAPI_KRB5?=	${LIBGSSAPI_KRB5DIR}/libgssapi_krb5${PIE_SUFFIX}.a
821LIBGSSRPCDIR=		${_LIB_OBJTOP}/krb5/lib/rpc
822LIBGSSRPC?=		${LIBGSSRPCDIR}/libgssrpc${PIE_SUFFIX}.a
823LIBK5CRYPTODIR=		${_LIB_OBJTOP}/krb5/lib/crypto
824LIBK5CRYPTO?=		${LIBK5CRYPTODIR}/libk5crypto${PIE_SUFFIX}.a
825LIBK5GSSRPCDIR=		${_LIB_OBJTOP}/krb5/lib/rpc
826LIBK5GSSRPC?=		${LIBK5GSSRPCDIR}/libgssrpc${PIE_SUFFIX}.a
827LIBKADM5CLNT_MITDIR=	${_LIB_OBJTOP}/krb5/lib/kadm5clnt
828LIBKADM5CLNT_MIT?=	${LIBKADM5CLNT_MITDIR}/libkadm5clnt_mit${PIE_SUFFIX}.a
829LIBKADM5SRV_MITDIR=	${_LIB_OBJTOP}/krb5/lib/kadm5srv
830LIBKADM5SRV_MIT?=	${LIBKADM5SRV_MITDIR}/libkadm5srv_mit${PIE_SUFFIX}.a
831LIBKADMIN_COMMONDIR=	${_LIB_OBJTOP}/krb5/lib/kadmin_common
832LIBKADMIN_COMMON?=	${LIBKADMIN_COMMONDIR}/libkadmin_common${PIE_SUFFIX}.a
833LIBKDB5DIR=		${_LIB_OBJTOP}/krb5/lib/kdb
834LIBKDB5?=		${LIBKDB5DIR}/libkdb5${PIE_SUFFIX}.a
835LIBKPROP_UTILDIR=	${_LIB_OBJTOP}/krb5/lib/kprop_util
836LIBKPROP_UTIL?=		${LIBKPROP_UTILDIR}/libkprop_util${PIE_SUFFIX}.a
837LIBKRADDIR=		${_LIB_OBJTOP}/krb5/lib/krad
838LIBKRAD?=		${LIBKRADDIR}/libkrad${PIE_SUFFIX}.a
839LIBKRB5DIR=		${_LIB_OBJTOP}/krb5/lib/krb5
840LIBKRB5?=		${LIBKRB5DIR}/libkrb5${PIE_SUFFIX}.a
841LIBKRB5SSDIR=		${_LIB_OBJTOP}/krb5/util/ss
842LIBKRB5SS?=		${LIBKRB5SUPPORTDIR}/libkrb5ss${PIE_SUFFIX}.a
843LIBKRB5SUPPORTDIR=	${_LIB_OBJTOP}/krb5/util/support
844LIBKRB5SUPPORT?=	${LIBKRB5SUPPORTDIR}/libkrb5support${PIE_SUFFIX}.a
845LIBKRB5PROFILEDIR=	${_LIB_OBJTOP}/krb5/util/profile
846LIBKRB5PROFILE?=	${LIBPROFILEDIR}/libkrb5profile${PIE_SUFFIX}.a
847LIBVERTODIR=		${_LIB_OBJTOP}/krb5/util/verto
848LIBVERTO?=		${LIBVERTODIR}/libverto${PIE_SUFFIX}.a
849.else
850LIBASN1DIR=	${_LIB_OBJTOP}/kerberos5/lib/libasn1
851LIBGSSAPI_KRB5DIR=	${_LIB_OBJTOP}/kerberos5/lib/libgssapi_krb5
852LIBGSSAPI_NTLMDIR=	${_LIB_OBJTOP}/kerberos5/lib/libgssapi_ntlm
853LIBGSSAPI_SPNEGODIR=	${_LIB_OBJTOP}/kerberos5/lib/libgssapi_spnego
854LIBHDBDIR=	${_LIB_OBJTOP}/kerberos5/lib/libhdb
855LIBHEIMBASEDIR=	${_LIB_OBJTOP}/kerberos5/lib/libheimbase
856LIBHEIMIPCCDIR=	${_LIB_OBJTOP}/kerberos5/lib/libheimipcc
857LIBHEIMIPCSDIR=	${_LIB_OBJTOP}/kerberos5/lib/libheimipcs
858LIBHEIMNTLMDIR=	${_LIB_OBJTOP}/kerberos5/lib/libheimntlm
859LIBHX509DIR=	${_LIB_OBJTOP}/kerberos5/lib/libhx509
860LIBKADM5CLNTDIR=	${_LIB_OBJTOP}/kerberos5/lib/libkadm5clnt
861LIBKADM5SRVDIR=	${_LIB_OBJTOP}/kerberos5/lib/libkadm5srv
862LIBKAFS5DIR=	${_LIB_OBJTOP}/kerberos5/lib/libkafs5
863LIBKDCDIR=	${_LIB_OBJTOP}/kerberos5/lib/libkdc
864LIBKRB5DIR=	${_LIB_OBJTOP}/kerberos5/lib/libkrb5
865LIBROKENDIR=	${_LIB_OBJTOP}/kerberos5/lib/libroken
866LIBWINDDIR=	${_LIB_OBJTOP}/kerberos5/lib/libwind
867.endif
868LIBATF_CDIR=	${_LIB_OBJTOP}/lib/atf/libatf-c
869LIBATF_CXXDIR=	${_LIB_OBJTOP}/lib/atf/libatf-c++
870LIBGMOCKDIR=	${_LIB_OBJTOP}/lib/googletest/gmock
871LIBGMOCK_MAINDIR=	${_LIB_OBJTOP}/lib/googletest/gmock_main
872LIBGTESTDIR=	${_LIB_OBJTOP}/lib/googletest/gtest
873LIBGTEST_MAINDIR=	${_LIB_OBJTOP}/lib/googletest/gtest_main
874LIBALIASDIR=	${_LIB_OBJTOP}/lib/libalias/libalias
875LIBBLACKLISTDIR=	${_LIB_OBJTOP}/lib/libblacklist
876LIBBLOCKLISTDIR=	${_LIB_OBJTOP}/lib/libblocklist
877LIBBLOCKSRUNTIMEDIR=	${_LIB_OBJTOP}/lib/libblocksruntime
878LIBBSNMPDIR=	${_LIB_OBJTOP}/lib/libbsnmp/libbsnmp
879LIBCASPERDIR=	${_LIB_OBJTOP}/lib/libcasper/libcasper
880LIBCAP_DNSDIR=	${_LIB_OBJTOP}/lib/libcasper/services/cap_dns
881LIBCAP_GRPDIR=	${_LIB_OBJTOP}/lib/libcasper/services/cap_grp
882LIBCAP_NETDIR=	${_LIB_OBJTOP}/lib/libcasper/services/cap_net
883LIBCAP_PWDDIR=	${_LIB_OBJTOP}/lib/libcasper/services/cap_pwd
884LIBCAP_SYSCTLDIR=	${_LIB_OBJTOP}/lib/libcasper/services/cap_sysctl
885LIBCAP_SYSLOGDIR=	${_LIB_OBJTOP}/lib/libcasper/services/cap_syslog
886LIBCBORDIR=	${_LIB_OBJTOP}/lib/libcbor
887LIBBSDXMLDIR=	${_LIB_OBJTOP}/lib/libexpat
888LIBFIDO2DIR=	${_LIB_OBJTOP}/lib/libfido2
889LIBKVMDIR=	${_LIB_OBJTOP}/lib/libkvm
890LIBPTHREADDIR=	${_LIB_OBJTOP}/lib/libthr
891LIBMDIR=	${_LIB_OBJTOP}/lib/msun
892LIBFORMWDIR=	${_LIB_OBJTOP}/lib/ncurses/form
893LIBMENUWDIR=	${_LIB_OBJTOP}/lib/ncurses/menu
894LIBNCURSESWDIR=	${_LIB_OBJTOP}/lib/ncurses/ncurses
895LIBTINFOWDIR=	${_LIB_OBJTOP}/lib/ncurses/tinfo
896LIBPANELWDIR=	${_LIB_OBJTOP}/lib/ncurses/panel
897LIBCRYPTODIR=	${_LIB_OBJTOP}/secure/lib/libcrypto
898LIBSPLDIR=	${_LIB_OBJTOP}/cddl/lib/libspl
899LIBSSHDIR=	${_LIB_OBJTOP}/secure/lib/libssh
900LIBSSLDIR=	${_LIB_OBJTOP}/secure/lib/libssl
901LIBTEKENDIR=	${_LIB_OBJTOP}/sys/teken/libteken
902LIBEGACYDIR=	${_LIB_OBJTOP}/tools/build
903LIBLNDIR=	${_LIB_OBJTOP}/usr.bin/lex/lib
904
905LIBTERMCAPWDIR=	${LIBTINFOWDIR}
906
907.-include <site.src.libnames.mk>
908
909# Default other library directories to lib/libNAME.
910.for lib in ${_LIBRARIES}
911LIB${lib:tu}DIR?=	${OBJTOP}/lib/lib${lib}
912.endfor
913
914# Validate that listed LIBADD are valid.
915.for _l in ${LIBADD}
916.if empty(_LIBRARIES:M${_l})
917_BADLIBADD+= ${_l}
918.endif
919.endfor
920.if !empty(_BADLIBADD)
921.error ${.CURDIR}: Invalid LIBADD used which may need to be added to ${_this:T}: ${_BADLIBADD}
922.endif
923
924# Sanity check that libraries are defined here properly when building them.
925.if defined(LIB) && ${_LIBRARIES:M${LIB}} != ""
926.if !empty(LIBADD) && \
927    (!defined(_DP_${LIB}) || ${LIBADD:O:u} != ${_DP_${LIB}:O:u})
928.error ${.CURDIR}: Missing or incorrect _DP_${LIB} entry in ${_this:T}.  Should match LIBADD for ${LIB} ('${LIBADD}' vs '${_DP_${LIB}}')
929.endif
930# Note that OBJTOP is not yet defined here but for the purpose of the check
931# it is fine as it resolves to the SRC directory.
932.if !defined(LIB${LIB:tu}DIR) || !exists(${SRCTOP}/${LIB${LIB:tu}DIR:S,^${OBJTOP}/,,})
933.error ${.CURDIR}: Missing or incorrect value for LIB${LIB:tu}DIR in ${_this:T}: ${LIB${LIB:tu}DIR:S,^${OBJTOP}/,,}
934.endif
935.if ${_INTERNALLIBS:M${LIB}} != "" && !defined(LIB${LIB:tu})
936.error ${.CURDIR}: Missing value for LIB${LIB:tu} in ${_this:T}.  Likely should be: LIB${LIB:tu}?= $${LIB${LIB:tu}DIR}/lib${LIB}.a
937.endif
938.endif
939
940.endif	# !target(__<src.libnames.mk>__)
941