xref: /freebsd/share/mk/src.libnames.mk (revision 6ba2210ee039f2f12878c217bcf058e9c8b26b29)
1# $FreeBSD$
2#
3# The include file <src.libnames.mk> define library names suitable
4# for INTERNALLIB and PRIVATELIB definition
5
6.if !target(__<bsd.init.mk>__)
7.error src.libnames.mk cannot be included directly.
8.endif
9
10.if !target(__<src.libnames.mk>__)
11__<src.libnames.mk>__:
12
13.include <src.opts.mk>
14
15_PRIVATELIBS=	\
16		atf_c \
17		atf_cxx \
18		auditd \
19		bsdstat \
20		cbor \
21		devdctl \
22		event1 \
23		gmock \
24		gtest \
25		gmock_main \
26		gtest_main \
27		heimipcc \
28		heimipcs \
29		ldns \
30		sqlite3 \
31		ssh \
32		ucl \
33		unbound \
34		zstd
35
36_INTERNALLIBS=	\
37		amu \
38		bsnmptools \
39		c_nossp_pic \
40		cron \
41		elftc \
42		fifolog \
43		ifconfig \
44		ipf \
45		lpr \
46		lua \
47		lutok \
48		netbsd \
49		ntp \
50		ntpevent \
51		openbsd \
52		opts \
53		parse \
54		pe \
55		pfctl \
56		pmcstat \
57		sl \
58		sm \
59		smdb \
60		smutil \
61		telnet \
62		vers \
63		wpaap \
64		wpacommon \
65		wpacrypto \
66		wpadrivers \
67		wpaeap_common \
68		wpaeap_peer \
69		wpaeap_server \
70		wpaeapol_auth \
71		wpaeapol_supp \
72		wpal2_packet \
73		wparadius \
74		wparsn_supp \
75		wpatls \
76		wpautils \
77		wpawps
78
79_LIBRARIES=	\
80		${_PRIVATELIBS} \
81		${_INTERNALLIBS} \
82		${LOCAL_LIBRARIES} \
83		80211 \
84		9p \
85		alias \
86		archive \
87		asn1 \
88		avl \
89		be \
90		begemot \
91		bluetooth \
92		bsdxml \
93		bsm \
94		bsnmp \
95		bz2 \
96		c \
97		c_pic \
98		calendar \
99		cam \
100		casper \
101		cap_dns \
102		cap_fileargs \
103		cap_grp \
104		cap_net \
105		cap_netdb \
106		cap_pwd \
107		cap_sysctl \
108		cap_syslog \
109		com_err \
110		compiler_rt \
111		crypt \
112		crypto \
113		ctf \
114		cuse \
115		cxxrt \
116		devctl \
117		devdctl \
118		devinfo \
119		devstat \
120		dialog \
121		dl \
122		dpv \
123		dtrace \
124		dwarf \
125		edit \
126		efivar \
127		elf \
128		execinfo \
129		fetch \
130		figpar \
131		geom \
132		gpio \
133		gssapi \
134		gssapi_krb5 \
135		hdb \
136		heimbase \
137		heimntlm \
138		heimsqlite \
139		hx509 \
140		icp \
141		ipsec \
142		ipt \
143		jail \
144		kadm5clnt \
145		kadm5srv \
146		kafs5 \
147		kdc \
148		kiconv \
149		krb5 \
150		kvm \
151		l \
152		lzma \
153		m \
154		magic \
155		md \
156		memstat \
157		mp \
158		mt \
159		ncursesw \
160		netgraph \
161		netmap \
162		ngatm \
163		nv \
164		nvpair \
165		opencsd \
166		opie \
167		pam \
168		panel \
169		panelw \
170		pcap \
171		pcsclite \
172		pjdlog \
173		pmc \
174		proc \
175		procstat \
176		pthread \
177		radius \
178		regex \
179		roken \
180		rpcsec_gss \
181		rpcsvc \
182		rt \
183		rtld_db \
184		sbuf \
185		sdp \
186		sm \
187		smb \
188		spl \
189		ssl \
190		ssp_nonshared \
191		stats \
192		stdthreads \
193		supcplusplus \
194		sysdecode \
195		tacplus \
196		termcapw \
197		tinfow \
198		tpool \
199		ufs \
200		ugidfw \
201		ulog \
202		umem \
203		usb \
204		usbhid \
205		util \
206		uutil \
207		vmmapi \
208		wind \
209		wrap \
210		xo \
211		y \
212		ypclnt \
213		z \
214		zfs_core \
215		zfs \
216		zfsbootenv \
217		zpool \
218		zutil
219
220.if ${MK_BLACKLIST} != "no"
221_LIBRARIES+= \
222		blacklist \
223
224.endif
225
226.if ${MK_OFED} != "no"
227_LIBRARIES+= \
228		cxgb4 \
229		ibcm \
230		ibmad \
231		ibnetdisc \
232		ibumad \
233		ibverbs \
234		mlx4 \
235		mlx5 \
236		rdmacm \
237		osmcomp \
238		opensm \
239		osmvendor
240.endif
241
242.if ${MK_BEARSSL} == "yes"
243_LIBRARIES+= \
244		bearssl \
245		secureboot \
246
247LIBBEARSSL?=	${LIBBEARSSLDIR}/libbearssl.a
248LIBSECUREBOOT?=	${LIBSECUREBOOTDIR}/libsecureboot.a
249.endif
250
251.if ${MK_VERIEXEC} == "yes"
252_LIBRARIES+= veriexec
253
254LIBVERIEXEC?=	${LIBVERIEXECDIR}/libveriexec.a
255.endif
256
257# Each library's LIBADD needs to be duplicated here for static linkage of
258# 2nd+ order consumers.  Auto-generating this would be better.
259_DP_80211=	sbuf bsdxml
260_DP_9p=		sbuf
261_DP_archive=	z bz2 lzma bsdxml zstd
262_DP_zstd=	pthread
263.if ${MK_BLACKLIST} != "no"
264_DP_blacklist+=	pthread
265.endif
266_DP_crypto=	pthread
267.if ${MK_OPENSSL} != "no"
268_DP_archive+=	crypto
269.else
270_DP_archive+=	md
271.endif
272_DP_sqlite3=	pthread
273_DP_ssl=	crypto
274_DP_ssh=	crypto crypt z
275.if ${MK_LDNS} != "no"
276_DP_ssh+=	ldns
277.endif
278_DP_edit=	tinfow
279.if ${MK_OPENSSL} != "no"
280_DP_bsnmp=	crypto
281.endif
282_DP_geom=	bsdxml sbuf
283_DP_cam=	sbuf
284_DP_kvm=	elf
285_DP_casper=	nv
286_DP_cap_dns=	nv
287_DP_cap_fileargs=	nv
288_DP_cap_grp=	nv
289_DP_cap_pwd=	nv
290_DP_cap_sysctl=	nv
291_DP_cap_syslog=	nv
292.if ${MK_OFED} != "no"
293_DP_pcap=	ibverbs mlx5
294.endif
295_DP_pjdlog=	util
296_DP_opie=	md
297_DP_usb=	pthread
298_DP_unbound=	ssl crypto pthread
299_DP_rt=	pthread
300.if ${MK_OPENSSL} == "no"
301_DP_radius=	md
302.else
303_DP_radius=	crypto
304.endif
305_DP_rtld_db=	elf procstat
306_DP_procstat=	kvm util elf
307.if ${MK_CXX} == "yes"
308_DP_proc=	cxxrt
309.endif
310.if ${MK_CDDL} != "no"
311_DP_proc+=	ctf
312.endif
313_DP_proc+=	elf procstat rtld_db util
314_DP_mp=	crypto
315_DP_memstat=	kvm
316_DP_magic=	z
317_DP_mt=		sbuf bsdxml
318_DP_ldns=	ssl crypto
319_DP_lua=	m
320_DP_lutok=	lua
321.if ${MK_OPENSSL} != "no"
322_DP_fetch=	ssl crypto
323.else
324_DP_fetch=	md
325.endif
326_DP_execinfo=	elf
327_DP_dwarf=	elf
328_DP_dpv=	dialog figpar util tinfow ncursesw
329_DP_dialog=	tinfow ncursesw m
330_DP_cuse=	pthread
331_DP_atf_cxx=	atf_c
332_DP_gtest=	pthread regex
333_DP_gmock=	gtest
334_DP_gmock_main=	gmock
335_DP_gtest_main=	gtest
336_DP_devstat=	kvm
337_DP_pam=	radius tacplus opie md util
338.if ${MK_KERBEROS} != "no"
339_DP_pam+=	krb5
340.endif
341.if ${MK_OPENSSH} != "no"
342_DP_pam+=	ssh
343.endif
344.if ${MK_NIS} != "no"
345_DP_pam+=	ypclnt
346.endif
347_DP_roken=	crypt
348_DP_kadm5clnt=	com_err krb5 roken
349_DP_kadm5srv=	com_err hdb krb5 roken
350_DP_heimntlm=	crypto com_err krb5 roken
351_DP_hx509=	asn1 com_err crypto roken wind
352_DP_hdb=	asn1 com_err krb5 roken sqlite3
353_DP_asn1=	com_err roken
354_DP_kdc=	roken hdb hx509 krb5 heimntlm asn1 crypto
355_DP_wind=	com_err roken
356_DP_heimbase=	pthread
357_DP_heimipcc=	heimbase roken pthread
358_DP_heimipcs=	heimbase roken pthread
359_DP_kafs5=	asn1 krb5 roken
360_DP_krb5+=	asn1 com_err crypt crypto hx509 roken wind heimbase heimipcc
361_DP_gssapi_krb5+=	gssapi krb5 crypto roken asn1 com_err
362_DP_lzma=	md pthread
363_DP_ucl=	m
364_DP_vmmapi=	util
365_DP_opencsd=	cxxrt
366_DP_ctf=	spl z
367_DP_dtrace=	ctf elf proc pthread rtld_db
368_DP_xo=		util
369_DP_ztest=	geom m nvpair umem zpool pthread avl zfs_core spl zutil zfs uutil icp
370# The libc dependencies are not strictly needed but are defined to make the
371# assert happy.
372_DP_c=		compiler_rt
373.if ${MK_SSP} != "no" && \
374    (${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH:Mpower*} != "")
375_DP_c+=		ssp_nonshared
376.endif
377_DP_stats=	sbuf pthread
378_DP_stdthreads=	pthread
379_DP_tacplus=	md
380_DP_ncursesw=	tinfow
381_DP_panelw=	ncursesw
382_DP_rpcsec_gss=	gssapi
383_DP_smb=	kiconv
384_DP_ulog=	md
385_DP_fifolog=	z
386_DP_ipf=	kvm
387_DP_tpool=	spl
388_DP_uutil=	avl spl
389_DP_zfs=	md pthread umem util uutil m avl bsdxml crypto geom nvpair \
390	z zfs_core zutil
391_DP_zfsbootenv= zfs nvpair
392_DP_zfs_core=	nvpair
393_DP_zpool=	md pthread z icp spl nvpair avl umem
394_DP_zutil=	avl tpool
395_DP_be=		zfs spl nvpair zfsbootenv
396_DP_netmap=
397_DP_ifconfig=	m
398_DP_pfctl=	nv
399
400# OFED support
401.if ${MK_OFED} != "no"
402_DP_cxgb4=	ibverbs pthread
403_DP_ibcm=	ibverbs
404_DP_ibmad=	ibumad
405_DP_ibnetdisc=	osmcomp ibmad ibumad
406_DP_ibumad=
407_DP_ibverbs=
408_DP_mlx4=	ibverbs pthread
409_DP_mlx5=	ibverbs pthread
410_DP_rdmacm=	ibverbs
411_DP_osmcomp=	pthread
412_DP_opensm=	pthread
413_DP_osmvendor=	ibumad pthread
414.endif
415
416# Define special cases
417LDADD_supcplusplus=	-lsupc++
418LIBATF_C=	${LIBDESTDIR}${LIBDIR_BASE}/libprivateatf-c.a
419LIBATF_CXX=	${LIBDESTDIR}${LIBDIR_BASE}/libprivateatf-c++.a
420LDADD_atf_c=	-lprivateatf-c
421LDADD_atf_cxx=	-lprivateatf-c++
422
423LIBGMOCK=	${LIBDESTDIR}${LIBDIR_BASE}/libprivategmock.a
424LIBGMOCK_MAIN=	${LIBDESTDIR}${LIBDIR_BASE}/libprivategmock_main.a
425LIBGTEST=	${LIBDESTDIR}${LIBDIR_BASE}/libprivategtest.a
426LIBGTEST_MAIN=	${LIBDESTDIR}${LIBDIR_BASE}/libprivategtest_main.a
427LDADD_gmock=	-lprivategmock
428LDADD_gtest=	-lprivategtest
429LDADD_gmock_main= -lprivategmock_main
430LDADD_gtest_main= -lprivategtest_main
431
432.for _l in ${_PRIVATELIBS}
433LIB${_l:tu}?=	${LIBDESTDIR}${LIBDIR_BASE}/libprivate${_l}.a
434.endfor
435
436.if ${MK_PIE} != "no"
437PIE_SUFFIX=	_pie
438.endif
439
440.for _l in ${_LIBRARIES}
441.if ${_INTERNALLIBS:M${_l}} || !defined(SYSROOT)
442LDADD_${_l}_L+=		-L${LIB${_l:tu}DIR}
443.endif
444DPADD_${_l}?=	${LIB${_l:tu}}
445.if ${_PRIVATELIBS:M${_l}}
446LDADD_${_l}?=	-lprivate${_l}
447.elif ${_INTERNALLIBS:M${_l}}
448LDADD_${_l}?=	${LDADD_${_l}_L} -l${_l:S/${PIE_SUFFIX}//}${PIE_SUFFIX}
449.else
450LDADD_${_l}?=	${LDADD_${_l}_L} -l${_l}
451.endif
452# Add in all dependencies for static linkage.
453.if defined(_DP_${_l}) && (${_INTERNALLIBS:M${_l}} || \
454    (defined(NO_SHARED) && ${NO_SHARED:tl} != "no"))
455.for _d in ${_DP_${_l}}
456DPADD_${_l}+=	${DPADD_${_d}}
457LDADD_${_l}+=	${LDADD_${_d}}
458.endfor
459.endif
460.endfor
461
462# These are special cases where the library is broken and anything that uses
463# it needs to add more dependencies.  Broken usually means that it has a
464# cyclic dependency and cannot link its own dependencies.  This is bad, please
465# fix the library instead.
466# Unless the library itself is broken then the proper place to define
467# dependencies is _DP_* above.
468
469# libatf-c++ exposes libatf-c abi hence we need to explicit link to atf_c for
470# atf_cxx
471DPADD_atf_cxx+=	${DPADD_atf_c}
472LDADD_atf_cxx+=	${LDADD_atf_c}
473
474DPADD_gmock+=	${DPADD_gtest}
475LDADD_gmock+=	${LDADD_gtest}
476
477DPADD_gmock_main+=	${DPADD_gmock}
478LDADD_gmock_main+=	${LDADD_gmock}
479
480DPADD_gtest_main+=	${DPADD_gtest}
481LDADD_gtest_main+=	${LDADD_gtest}
482
483# Detect LDADD/DPADD that should be LIBADD, before modifying LDADD here.
484_BADLDADD=
485.for _l in ${LDADD:M-l*:N-l*/*:C,^-l,,}
486.if ${_LIBRARIES:M${_l}} && !${_PRIVATELIBS:M${_l}}
487_BADLDADD+=	${_l}
488.endif
489.endfor
490.if !empty(_BADLDADD)
491.error ${.CURDIR}: These libraries should be LIBADD+=foo rather than DPADD/LDADD+=-lfoo: ${_BADLDADD}
492.endif
493
494.for _l in ${LIBADD}
495DPADD+=		${DPADD_${_l}}
496LDADD+=		${LDADD_${_l}}
497.endfor
498
499_LIB_OBJTOP?=	${OBJTOP}
500# INTERNALLIB definitions.
501LIBELFTCDIR=	${_LIB_OBJTOP}/lib/libelftc
502LIBELFTC?=	${LIBELFTCDIR}/libelftc${PIE_SUFFIX}.a
503
504LIBLUADIR=	${_LIB_OBJTOP}/lib/liblua
505LIBLUA?=	${LIBLUADIR}/liblua${PIE_SUFFIX}.a
506
507LIBLUTOKDIR=	${_LIB_OBJTOP}/lib/liblutok
508LIBLUTOK?=	${LIBLUTOKDIR}/liblutok${PIE_SUFFIX}.a
509
510LIBPEDIR=	${_LIB_OBJTOP}/lib/libpe
511LIBPE?=		${LIBPEDIR}/libpe${PIE_SUFFIX}.a
512
513LIBOPENBSDDIR=	${_LIB_OBJTOP}/lib/libopenbsd
514LIBOPENBSD?=	${LIBOPENBSDDIR}/libopenbsd${PIE_SUFFIX}.a
515
516LIBSMDIR=	${_LIB_OBJTOP}/lib/libsm
517LIBSM?=		${LIBSMDIR}/libsm${PIE_SUFFIX}.a
518
519LIBSMDBDIR=	${_LIB_OBJTOP}/lib/libsmdb
520LIBSMDB?=	${LIBSMDBDIR}/libsmdb${PIE_SUFFIX}.a
521
522LIBSMUTILDIR=	${_LIB_OBJTOP}/lib/libsmutil
523LIBSMUTIL?=	${LIBSMUTILDIR}/libsmutil${PIE_SUFFIX}.a
524
525LIBNETBSDDIR?=	${_LIB_OBJTOP}/lib/libnetbsd
526LIBNETBSD?=	${LIBNETBSDDIR}/libnetbsd${PIE_SUFFIX}.a
527
528LIBVERSDIR?=	${_LIB_OBJTOP}/kerberos5/lib/libvers
529LIBVERS?=	${LIBVERSDIR}/libvers${PIE_SUFFIX}.a
530
531LIBSLDIR=	${_LIB_OBJTOP}/kerberos5/lib/libsl
532LIBSL?=		${LIBSLDIR}/libsl${PIE_SUFFIX}.a
533
534LIBIFCONFIGDIR=	${_LIB_OBJTOP}/lib/libifconfig
535LIBIFCONFIG?=	${LIBIFCONFIGDIR}/libifconfig${PIE_SUFFIX}.a
536
537LIBIPFDIR=	${_LIB_OBJTOP}/sbin/ipf/libipf
538LIBIPF?=	${LIBIPFDIR}/libipf${PIE_SUFFIX}.a
539
540LIBTELNETDIR=	${_LIB_OBJTOP}/lib/libtelnet
541LIBTELNET?=	${LIBTELNETDIR}/libtelnet${PIE_SUFFIX}.a
542
543LIBCRONDIR=	${_LIB_OBJTOP}/usr.sbin/cron/lib
544LIBCRON?=	${LIBCRONDIR}/libcron${PIE_SUFFIX}.a
545
546LIBNTPDIR=	${_LIB_OBJTOP}/usr.sbin/ntp/libntp
547LIBNTP?=	${LIBNTPDIR}/libntp${PIE_SUFFIX}.a
548
549LIBNTPEVENTDIR=	${_LIB_OBJTOP}/usr.sbin/ntp/libntpevent
550LIBNTPEVENT?=	${LIBNTPEVENTDIR}/libntpevent${PIE_SUFFIX}.a
551
552LIBOPTSDIR=	${_LIB_OBJTOP}/usr.sbin/ntp/libopts
553LIBOPTS?=	${LIBOPTSDIR}/libopts${PIE_SUFFIX}.a
554
555LIBPARSEDIR=	${_LIB_OBJTOP}/usr.sbin/ntp/libparse
556LIBPARSE?=	${LIBPARSEDIR}/libparse${PIE_SUFFIX}.a
557
558LIBPFCTL=	${_LIB_OBJTOP}/lib/libpfctl
559LIBPFCTL?=	${LIBPFCTLDIR}/libpfctl${PIE_SUFFIX}.a
560
561LIBLPRDIR=	${_LIB_OBJTOP}/usr.sbin/lpr/common_source
562LIBLPR?=	${LIBLPRDIR}/liblpr${PIE_SUFFIX}.a
563
564LIBFIFOLOGDIR=	${_LIB_OBJTOP}/usr.sbin/fifolog/lib
565LIBFIFOLOG?=	${LIBFIFOLOGDIR}/libfifolog${PIE_SUFFIX}.a
566
567LIBBSNMPTOOLSDIR=	${_LIB_OBJTOP}/usr.sbin/bsnmpd/tools/libbsnmptools
568LIBBSNMPTOOLS?=	${LIBBSNMPTOOLSDIR}/libbsnmptools${PIE_SUFFIX}.a
569
570LIBBE?=		${LIBBEDIR}/libbe${PIE_SUFFIX}.a
571
572LIBPMCSTATDIR=	${_LIB_OBJTOP}/lib/libpmcstat
573LIBPMCSTAT?=	${LIBPMCSTATDIR}/libpmcstat${PIE_SUFFIX}.a
574
575LIBWPAAPDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/ap
576LIBWPAAP?=	${LIBWPAAPDIR}/libwpaap${PIE_SUFFIX}.a
577
578LIBWPACOMMONDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/common
579LIBWPACOMMON?=	${LIBWPACOMMONDIR}/libwpacommon${PIE_SUFFIX}.a
580
581LIBWPACRYPTODIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/crypto
582LIBWPACRYPTO?=	${LIBWPACRYPTODIR}/libwpacrypto${PIE_SUFFIX}.a
583
584LIBWPADRIVERSDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/drivers
585LIBWPADRIVERS?=	${LIBWPADRIVERSDIR}/libwpadrivers${PIE_SUFFIX}.a
586
587LIBWPAEAP_COMMONDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/eap_common
588LIBWPAEAP_COMMON?=	${LIBWPAEAP_COMMONDIR}/libwpaeap_common${PIE_SUFFIX}.a
589
590LIBWPAEAP_PEERDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/eap_peer
591LIBWPAEAP_PEER?=	${LIBWPAEAP_PEERDIR}/libwpaeap_peer${PIE_SUFFIX}.a
592
593LIBWPAEAP_SERVERDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/eap_server
594LIBWPAEAP_SERVER?=	${LIBWPAEAP_SERVERDIR}/libwpaeap_server${PIE_SUFFIX}.a
595
596LIBWPAEAPOL_AUTHDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/eapol_auth
597LIBWPAEAPOL_AUTH?=	${LIBWPAEAPOL_AUTHDIR}/libwpaeapol_auth${PIE_SUFFIX}.a
598
599LIBWPAEAPOL_SUPPDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/eapol_supp
600LIBWPAEAPOL_SUPP?=	${LIBWPAEAPOL_SUPPDIR}/libwpaeapol_supp${PIE_SUFFIX}.a
601
602LIBWPAL2_PACKETDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/l2_packet
603LIBWPAL2_PACKET?=	${LIBWPAL2_PACKETDIR}/libwpal2_packet${PIE_SUFFIX}.a
604
605LIBWPARADIUSDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/radius
606LIBWPARADIUS?=	${LIBWPARADIUSDIR}/libwparadius${PIE_SUFFIX}.a
607
608LIBWPARSN_SUPPDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/rsn_supp
609LIBWPARSN_SUPP?=	${LIBWPARSN_SUPPDIR}/libwparsn_supp${PIE_SUFFIX}.a
610
611LIBWPATLSDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/tls
612LIBWPATLS?=	${LIBWPATLSDIR}/libwpatls${PIE_SUFFIX}.a
613
614LIBWPAUTILSDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/utils
615LIBWPAUTILS?=	${LIBWPAUTILSDIR}/libwpautils${PIE_SUFFIX}.a
616
617LIBWPAWPSDIR=	${_LIB_OBJTOP}/usr.sbin/wpa/src/wps
618LIBWPAWPS?=	${LIBWPAWPSDIR}/libwpawps${PIE_SUFFIX}.a
619
620LIBC_NOSSP_PICDIR=	${_LIB_OBJTOP}/lib/libc
621LIBC_NOSSP_PIC?=	${LIBC_NOSSP_PICDIR}/libc_nossp_pic.a
622
623# Define a directory for each library.  This is useful for adding -L in when
624# not using a --sysroot or for meta mode bootstrapping when there is no
625# Makefile.depend.  These are sorted by directory.
626LIBAVLDIR=	${OBJTOP}/cddl/lib/libavl
627LIBCTFDIR=	${OBJTOP}/cddl/lib/libctf
628LIBDTRACEDIR=	${OBJTOP}/cddl/lib/libdtrace
629LIBICPDIR=	${OBJTOP}/cddl/lib/libicp
630LIBNVPAIRDIR=	${OBJTOP}/cddl/lib/libnvpair
631LIBUMEMDIR=	${OBJTOP}/cddl/lib/libumem
632LIBUUTILDIR=	${OBJTOP}/cddl/lib/libuutil
633LIBZFSDIR=	${OBJTOP}/cddl/lib/libzfs
634LIBZFS_COREDIR=	${OBJTOP}/cddl/lib/libzfs_core
635LIBZFSBOOTENVDIR=	${OBJTOP}/cddl/lib/libzfsbootenv
636LIBZPOOLDIR=	${OBJTOP}/cddl/lib/libzpool
637LIBZUTILDIR=	${OBJTOP}/cddl/lib/libzutil
638LIBTPOOLDIR=	${OBJTOP}/cddl/lib/libtpool
639
640# OFED support
641LIBCXGB4DIR=	${OBJTOP}/lib/ofed/libcxgb4
642LIBIBCMDIR=	${OBJTOP}/lib/ofed/libibcm
643LIBIBMADDIR=	${OBJTOP}/lib/ofed/libibmad
644LIBIBNETDISCDIR=${OBJTOP}/lib/ofed/libibnetdisc
645LIBIBUMADDIR=	${OBJTOP}/lib/ofed/libibumad
646LIBIBVERBSDIR=	${OBJTOP}/lib/ofed/libibverbs
647LIBMLX4DIR=	${OBJTOP}/lib/ofed/libmlx4
648LIBMLX5DIR=	${OBJTOP}/lib/ofed/libmlx5
649LIBRDMACMDIR=	${OBJTOP}/lib/ofed/librdmacm
650LIBOSMCOMPDIR=	${OBJTOP}/lib/ofed/complib
651LIBOPENSMDIR=	${OBJTOP}/lib/ofed/libopensm
652LIBOSMVENDORDIR=${OBJTOP}/lib/ofed/libvendor
653
654LIBDIALOGDIR=	${OBJTOP}/gnu/lib/libdialog
655LIBSSPDIR=	${OBJTOP}/lib/libssp
656LIBSSP_NONSHAREDDIR=	${OBJTOP}/lib/libssp_nonshared
657LIBASN1DIR=	${OBJTOP}/kerberos5/lib/libasn1
658LIBGSSAPI_KRB5DIR=	${OBJTOP}/kerberos5/lib/libgssapi_krb5
659LIBGSSAPI_NTLMDIR=	${OBJTOP}/kerberos5/lib/libgssapi_ntlm
660LIBGSSAPI_SPNEGODIR=	${OBJTOP}/kerberos5/lib/libgssapi_spnego
661LIBHDBDIR=	${OBJTOP}/kerberos5/lib/libhdb
662LIBHEIMBASEDIR=	${OBJTOP}/kerberos5/lib/libheimbase
663LIBHEIMIPCCDIR=	${OBJTOP}/kerberos5/lib/libheimipcc
664LIBHEIMIPCSDIR=	${OBJTOP}/kerberos5/lib/libheimipcs
665LIBHEIMNTLMDIR=	${OBJTOP}/kerberos5/lib/libheimntlm
666LIBHX509DIR=	${OBJTOP}/kerberos5/lib/libhx509
667LIBKADM5CLNTDIR=	${OBJTOP}/kerberos5/lib/libkadm5clnt
668LIBKADM5SRVDIR=	${OBJTOP}/kerberos5/lib/libkadm5srv
669LIBKAFS5DIR=	${OBJTOP}/kerberos5/lib/libkafs5
670LIBKDCDIR=	${OBJTOP}/kerberos5/lib/libkdc
671LIBKRB5DIR=	${OBJTOP}/kerberos5/lib/libkrb5
672LIBROKENDIR=	${OBJTOP}/kerberos5/lib/libroken
673LIBWINDDIR=	${OBJTOP}/kerberos5/lib/libwind
674LIBATF_CDIR=	${OBJTOP}/lib/atf/libatf-c
675LIBATF_CXXDIR=	${OBJTOP}/lib/atf/libatf-c++
676LIBGMOCKDIR=	${OBJTOP}/lib/googletest/gmock
677LIBGMOCK_MAINDIR=	${OBJTOP}/lib/googletest/gmock_main
678LIBGTESTDIR=	${OBJTOP}/lib/googletest/gtest
679LIBGTEST_MAINDIR=	${OBJTOP}/lib/googletest/gtest_main
680LIBALIASDIR=	${OBJTOP}/lib/libalias/libalias
681LIBBLACKLISTDIR=	${OBJTOP}/lib/libblacklist
682LIBBLOCKSRUNTIMEDIR=	${OBJTOP}/lib/libblocksruntime
683LIBBSNMPDIR=	${OBJTOP}/lib/libbsnmp/libbsnmp
684LIBCASPERDIR=	${OBJTOP}/lib/libcasper/libcasper
685LIBCAP_DNSDIR=	${OBJTOP}/lib/libcasper/services/cap_dns
686LIBCAP_GRPDIR=	${OBJTOP}/lib/libcasper/services/cap_grp
687LIBCAP_NETDIR=	${OBJTOP}/lib/libcasper/services/cap_net
688LIBCAP_PWDDIR=	${OBJTOP}/lib/libcasper/services/cap_pwd
689LIBCAP_SYSCTLDIR=	${OBJTOP}/lib/libcasper/services/cap_sysctl
690LIBCAP_SYSLOGDIR=	${OBJTOP}/lib/libcasper/services/cap_syslog
691LIBCBORDIR=	${OBJTOP}/lib/libcbor
692LIBBSDXMLDIR=	${OBJTOP}/lib/libexpat
693LIBKVMDIR=	${OBJTOP}/lib/libkvm
694LIBPTHREADDIR=	${OBJTOP}/lib/libthr
695LIBMDIR=	${OBJTOP}/lib/msun
696LIBFORMWDIR=	${OBJTOP}/lib/ncurses/form
697LIBMENUWDIR=	${OBJTOP}/lib/ncurses/menu
698LIBNCURSESWDIR=	${OBJTOP}/lib/ncurses/ncurses
699LIBTINFOWDIR=	${OBJTOP}/lib/ncurses/tinfo
700LIBPANELWDIR=	${OBJTOP}/lib/ncurses/panel
701LIBCRYPTODIR=	${OBJTOP}/secure/lib/libcrypto
702LIBSPLDIR=	${OBJTOP}/cddl/lib/libspl
703LIBSSHDIR=	${OBJTOP}/secure/lib/libssh
704LIBSSLDIR=	${OBJTOP}/secure/lib/libssl
705LIBTEKENDIR=	${OBJTOP}/sys/teken/libteken
706LIBEGACYDIR=	${OBJTOP}/tools/build
707LIBLNDIR=	${OBJTOP}/usr.bin/lex/lib
708
709LIBTERMCAPWDIR=	${LIBTINFOWDIR}
710
711# Default other library directories to lib/libNAME.
712.for lib in ${_LIBRARIES}
713LIB${lib:tu}DIR?=	${OBJTOP}/lib/lib${lib}
714.endfor
715
716# Validate that listed LIBADD are valid.
717.for _l in ${LIBADD}
718.if empty(_LIBRARIES:M${_l})
719_BADLIBADD+= ${_l}
720.endif
721.endfor
722.if !empty(_BADLIBADD)
723.error ${.CURDIR}: Invalid LIBADD used which may need to be added to ${_this:T}: ${_BADLIBADD}
724.endif
725
726# Sanity check that libraries are defined here properly when building them.
727.if defined(LIB) && ${_LIBRARIES:M${LIB}} != ""
728.if !empty(LIBADD) && \
729    (!defined(_DP_${LIB}) || ${LIBADD:O:u} != ${_DP_${LIB}:O:u})
730.error ${.CURDIR}: Missing or incorrect _DP_${LIB} entry in ${_this:T}.  Should match LIBADD for ${LIB} ('${LIBADD}' vs '${_DP_${LIB}}')
731.endif
732# Note that OBJTOP is not yet defined here but for the purpose of the check
733# it is fine as it resolves to the SRC directory.
734.if !defined(LIB${LIB:tu}DIR) || !exists(${SRCTOP}/${LIB${LIB:tu}DIR:S,^${OBJTOP}/,,})
735.error ${.CURDIR}: Missing or incorrect value for LIB${LIB:tu}DIR in ${_this:T}: ${LIB${LIB:tu}DIR:S,^${OBJTOP}/,,}
736.endif
737.if ${_INTERNALLIBS:M${LIB}} != "" && !defined(LIB${LIB:tu})
738.error ${.CURDIR}: Missing value for LIB${LIB:tu} in ${_this:T}.  Likely should be: LIB${LIB:tu}?= $${LIB${LIB:tu}DIR}/lib${LIB}.a
739.endif
740.endif
741
742.endif	# !target(__<src.libnames.mk>__)
743