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