xref: /freebsd/share/mk/src.libnames.mk (revision 05890ca018513401980415f735eca8c94aaa644a)
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		bsdstat \
19		devdctl \
20		event \
21		heimipcc \
22		heimipcs \
23		ifconfig \
24		ldns \
25		sqlite3 \
26		ssh \
27		ucl \
28		unbound \
29		zstd
30
31_INTERNALLIBS=	\
32		amu \
33		bsnmptools \
34		cron \
35		elftc \
36		fifolog \
37		ipf \
38		lpr \
39		netbsd \
40		ntp \
41		ntpevent \
42		openbsd \
43		opts \
44		parse \
45		pe \
46		pmcstat \
47		sl \
48		sm \
49		smdb \
50		smutil \
51		telnet \
52		vers
53
54_LIBRARIES=	\
55		${_PRIVATELIBS} \
56		${_INTERNALLIBS} \
57		${LOCAL_LIBRARIES} \
58		80211 \
59		alias \
60		archive \
61		asn1 \
62		auditd \
63		avl \
64		begemot \
65		bluetooth \
66		bsdxml \
67		bsm \
68		bsnmp \
69		bz2 \
70		c \
71		c_pic \
72		calendar \
73		cam \
74		casper \
75		cap_dns \
76		cap_grp \
77		cap_pwd \
78		cap_random \
79		cap_sysctl \
80		cap_syslog \
81		com_err \
82		compiler_rt \
83		crypt \
84		crypto \
85		ctf \
86		cuse \
87		cxxrt \
88		devctl \
89		devdctl \
90		devinfo \
91		devstat \
92		dialog \
93		dl \
94		dpv \
95		dtrace \
96		dwarf \
97		edit \
98		efivar \
99		elf \
100		execinfo \
101		fetch \
102		figpar \
103		geom \
104		gnuregex \
105		gpio \
106		gssapi \
107		gssapi_krb5 \
108		hdb \
109		heimbase \
110		heimntlm \
111		heimsqlite \
112		hx509 \
113		ipsec \
114		jail \
115		kadm5clnt \
116		kadm5srv \
117		kafs5 \
118		kdc \
119		kiconv \
120		krb5 \
121		kvm \
122		l \
123		lzma \
124		m \
125		magic \
126		md \
127		memstat \
128		mp \
129		mt \
130		nandfs \
131		ncurses \
132		ncursesw \
133		netgraph \
134		ngatm \
135		nv \
136		nvpair \
137		opie \
138		pam \
139		panel \
140		panelw \
141		pcap \
142		pcsclite \
143		pjdlog \
144		pmc \
145		proc \
146		procstat \
147		pthread \
148		radius \
149		regex \
150		roken \
151		rpcsec_gss \
152		rpcsvc \
153		rt \
154		rtld_db \
155		sbuf \
156		sdp \
157		sm \
158		smb \
159		ssl \
160		ssp_nonshared \
161		stdthreads \
162		supcplusplus \
163		sysdecode \
164		tacplus \
165		termcap \
166		termcapw \
167		ufs \
168		ugidfw \
169		ulog \
170		umem \
171		usb \
172		usbhid \
173		util \
174		uutil \
175		vmmapi \
176		wind \
177		wrap \
178		xo \
179		y \
180		ypclnt \
181		z \
182		zfs_core \
183		zfs \
184		zpool \
185
186.if ${MK_BLACKLIST} != "no"
187_LIBRARIES+= \
188		blacklist \
189
190.endif
191
192.if ${MK_OFED} != "no"
193_LIBRARIES+= \
194		cxgb4 \
195		ibcm \
196		ibmad \
197		ibnetdisc \
198		ibumad \
199		ibverbs \
200		mlx4 \
201		mlx5 \
202		rdmacm \
203		osmcomp \
204		opensm \
205		osmvendor
206.endif
207
208# Each library's LIBADD needs to be duplicated here for static linkage of
209# 2nd+ order consumers.  Auto-generating this would be better.
210_DP_80211=	sbuf bsdxml
211_DP_archive=	z bz2 lzma bsdxml
212_DP_zstd=	pthread
213.if ${MK_BLACKLIST} != "no"
214_DP_blacklist+=	pthread
215.endif
216.if ${MK_OPENSSL} != "no"
217_DP_archive+=	crypto
218.else
219_DP_archive+=	md
220.endif
221_DP_sqlite3=	pthread
222_DP_ssl=	crypto
223_DP_ssh=	crypto crypt z
224.if ${MK_LDNS} != "no"
225_DP_ssh+=	ldns
226.endif
227_DP_edit=	ncursesw
228.if ${MK_OPENSSL} != "no"
229_DP_bsnmp=	crypto
230.endif
231_DP_geom=	bsdxml sbuf
232_DP_cam=	sbuf
233_DP_kvm=	elf
234_DP_casper=	nv
235_DP_cap_dns=	nv
236_DP_cap_grp=	nv
237_DP_cap_pwd=	nv
238_DP_cap_random=	nv
239_DP_cap_sysctl=	nv
240_DP_cap_syslog=	nv
241_DP_pjdlog=	util
242_DP_opie=	md
243_DP_usb=	pthread
244_DP_unbound=	ssl crypto pthread
245_DP_rt=	pthread
246.if ${MK_OPENSSL} == "no"
247_DP_radius=	md
248.else
249_DP_radius=	crypto
250.endif
251_DP_rtld_db=	elf procstat
252_DP_procstat=	kvm util elf
253.if ${MK_CXX} == "yes"
254.if ${MK_LIBCPLUSPLUS} != "no"
255_DP_proc=	cxxrt
256.else
257_DP_proc=	supcplusplus
258.endif
259.endif
260.if ${MK_CDDL} != "no"
261_DP_proc+=	ctf
262.endif
263_DP_proc+=	elf procstat rtld_db util
264_DP_mp=	crypto
265_DP_memstat=	kvm
266_DP_magic=	z
267_DP_mt=		sbuf bsdxml
268_DP_ldns=	crypto
269.if ${MK_OPENSSL} != "no"
270_DP_fetch=	ssl crypto
271.else
272_DP_fetch=	md
273.endif
274_DP_execinfo=	elf
275_DP_dwarf=	elf
276_DP_dpv=	dialog figpar util ncursesw
277_DP_dialog=	ncursesw m
278_DP_cuse=	pthread
279_DP_atf_cxx=	atf_c
280_DP_devstat=	kvm
281_DP_pam=	radius tacplus opie md util
282.if ${MK_KERBEROS} != "no"
283_DP_pam+=	krb5
284.endif
285.if ${MK_OPENSSH} != "no"
286_DP_pam+=	ssh
287.endif
288.if ${MK_NIS} != "no"
289_DP_pam+=	ypclnt
290.endif
291_DP_roken=	crypt
292_DP_kadm5clnt=	com_err krb5 roken
293_DP_kadm5srv=	com_err hdb krb5 roken
294_DP_heimntlm=	crypto com_err krb5 roken
295_DP_hx509=	asn1 com_err crypto roken wind
296_DP_hdb=	asn1 com_err krb5 roken sqlite3
297_DP_asn1=	com_err roken
298_DP_kdc=	roken hdb hx509 krb5 heimntlm asn1 crypto
299_DP_wind=	com_err roken
300_DP_heimbase=	pthread
301_DP_heimipcc=	heimbase roken pthread
302_DP_heimipcs=	heimbase roken pthread
303_DP_kafs5=	asn1 krb5 roken
304_DP_krb5+=	asn1 com_err crypt crypto hx509 roken wind heimbase heimipcc
305_DP_gssapi_krb5+=	gssapi krb5 crypto roken asn1 com_err
306_DP_lzma=	pthread
307_DP_ucl=	m
308_DP_vmmapi=	util
309_DP_ctf=	z
310_DP_dtrace=	ctf elf proc pthread rtld_db
311_DP_xo=		util
312# The libc dependencies are not strictly needed but are defined to make the
313# assert happy.
314_DP_c=		compiler_rt
315.if ${MK_SSP} != "no"
316_DP_c+=		ssp_nonshared
317.endif
318_DP_stdthreads=	pthread
319_DP_tacplus=	md
320_DP_panel=	ncurses
321_DP_panelw=	ncursesw
322_DP_rpcsec_gss=	gssapi
323_DP_smb=	kiconv
324_DP_ulog=	md
325_DP_fifolog=	z
326_DP_ipf=	kvm
327_DP_zfs=	md pthread umem util uutil m nvpair avl bsdxml geom nvpair z \
328		zfs_core
329_DP_zfs_core=	nvpair
330_DP_zpool=	md pthread z nvpair avl umem
331
332# OFED support
333.if ${MK_OFED} != "no"
334_DP_cxgb4=	ibverbs pthread
335_DP_ibcm=	ibverbs
336_DP_ibmad=	ibumad
337_DP_ibnetdisc=	osmcomp ibmad ibumad
338_DP_ibumad=
339_DP_ibverbs=
340_DP_mlx4=	ibverbs pthread
341_DP_mlx5=	ibverbs pthread
342_DP_rdmacm=	ibverbs
343_DP_osmcomp=	pthread
344_DP_opensm=	pthread
345_DP_osmvendor=	ibumad pthread
346.endif
347
348# Define special cases
349LDADD_supcplusplus=	-lsupc++
350LIBATF_C=	${LIBDESTDIR}${LIBDIR_BASE}/libprivateatf-c.a
351LIBATF_CXX=	${LIBDESTDIR}${LIBDIR_BASE}/libprivateatf-c++.a
352LDADD_atf_c=	-lprivateatf-c
353LDADD_atf_cxx=	-lprivateatf-c++
354
355.for _l in ${_PRIVATELIBS}
356LIB${_l:tu}?=	${LIBDESTDIR}${LIBDIR_BASE}/libprivate${_l}.a
357.endfor
358
359.for _l in ${_LIBRARIES}
360.if ${_INTERNALLIBS:M${_l}} || !defined(SYSROOT)
361LDADD_${_l}_L+=		-L${LIB${_l:tu}DIR}
362.endif
363DPADD_${_l}?=	${LIB${_l:tu}}
364.if ${_PRIVATELIBS:M${_l}}
365LDADD_${_l}?=	-lprivate${_l}
366.else
367LDADD_${_l}?=	${LDADD_${_l}_L} -l${_l}
368.endif
369# Add in all dependencies for static linkage.
370.if defined(_DP_${_l}) && (${_INTERNALLIBS:M${_l}} || \
371    (defined(NO_SHARED) && (${NO_SHARED} != "no" && ${NO_SHARED} != "NO")))
372.for _d in ${_DP_${_l}}
373DPADD_${_l}+=	${DPADD_${_d}}
374LDADD_${_l}+=	${LDADD_${_d}}
375.endfor
376.endif
377.endfor
378
379# These are special cases where the library is broken and anything that uses
380# it needs to add more dependencies.  Broken usually means that it has a
381# cyclic dependency and cannot link its own dependencies.  This is bad, please
382# fix the library instead.
383# Unless the library itself is broken then the proper place to define
384# dependencies is _DP_* above.
385
386# libatf-c++ exposes libatf-c abi hence we need to explicit link to atf_c for
387# atf_cxx
388DPADD_atf_cxx+=	${DPADD_atf_c}
389LDADD_atf_cxx+=	${LDADD_atf_c}
390
391# Detect LDADD/DPADD that should be LIBADD, before modifying LDADD here.
392_BADLDADD=
393.for _l in ${LDADD:M-l*:N-l*/*:C,^-l,,}
394.if ${_LIBRARIES:M${_l}} && !${_PRIVATELIBS:M${_l}}
395_BADLDADD+=	${_l}
396.endif
397.endfor
398.if !empty(_BADLDADD)
399.error ${.CURDIR}: These libraries should be LIBADD+=foo rather than DPADD/LDADD+=-lfoo: ${_BADLDADD}
400.endif
401
402.for _l in ${LIBADD}
403DPADD+=		${DPADD_${_l}}
404LDADD+=		${LDADD_${_l}}
405.endfor
406
407# INTERNALLIB definitions.
408LIBELFTCDIR=	${OBJTOP}/lib/libelftc
409LIBELFTC?=	${LIBELFTCDIR}/libelftc.a
410
411LIBPEDIR=	${OBJTOP}/lib/libpe
412LIBPE?=		${LIBPEDIR}/libpe.a
413
414LIBOPENBSDDIR=	${OBJTOP}/lib/libopenbsd
415LIBOPENBSD?=	${LIBOPENBSDDIR}/libopenbsd.a
416
417LIBSMDIR=	${OBJTOP}/lib/libsm
418LIBSM?=		${LIBSMDIR}/libsm.a
419
420LIBSMDBDIR=	${OBJTOP}/lib/libsmdb
421LIBSMDB?=	${LIBSMDBDIR}/libsmdb.a
422
423LIBSMUTILDIR=	${OBJTOP}/lib/libsmutil
424LIBSMUTIL?=	${LIBSMUTILDIR}/libsmutil.a
425
426LIBNETBSDDIR?=	${OBJTOP}/lib/libnetbsd
427LIBNETBSD?=	${LIBNETBSDDIR}/libnetbsd.a
428
429LIBVERSDIR?=	${OBJTOP}/kerberos5/lib/libvers
430LIBVERS?=	${LIBVERSDIR}/libvers.a
431
432LIBSLDIR=	${OBJTOP}/kerberos5/lib/libsl
433LIBSL?=		${LIBSLDIR}/libsl.a
434
435LIBIPFDIR=	${OBJTOP}/sbin/ipf/libipf
436LIBIPF?=	${LIBIPFDIR}/libipf.a
437
438LIBTELNETDIR=	${OBJTOP}/lib/libtelnet
439LIBTELNET?=	${LIBTELNETDIR}/libtelnet.a
440
441LIBCRONDIR=	${OBJTOP}/usr.sbin/cron/lib
442LIBCRON?=	${LIBCRONDIR}/libcron.a
443
444LIBNTPDIR=	${OBJTOP}/usr.sbin/ntp/libntp
445LIBNTP?=	${LIBNTPDIR}/libntp.a
446
447LIBNTPEVENTDIR=	${OBJTOP}/usr.sbin/ntp/libntpevent
448LIBNTPEVENT?=	${LIBNTPEVENTDIR}/libntpevent.a
449
450LIBOPTSDIR=	${OBJTOP}/usr.sbin/ntp/libopts
451LIBOPTS?=	${LIBOPTSDIR}/libopts.a
452
453LIBPARSEDIR=	${OBJTOP}/usr.sbin/ntp/libparse
454LIBPARSE?=	${LIBPARSEDIR}/libparse.a
455
456LIBLPRDIR=	${OBJTOP}/usr.sbin/lpr/common_source
457LIBLPR?=	${LIBLPRDIR}/liblpr.a
458
459LIBFIFOLOGDIR=	${OBJTOP}/usr.sbin/fifolog/lib
460LIBFIFOLOG?=	${LIBFIFOLOGDIR}/libfifolog.a
461
462LIBBSNMPTOOLSDIR=	${OBJTOP}/usr.sbin/bsnmpd/tools/libbsnmptools
463LIBBSNMPTOOLS?=	${LIBBSNMPTOOLSDIR}/libbsnmptools.a
464
465LIBAMUDIR=	${OBJTOP}/usr.sbin/amd/libamu
466LIBAMU?=	${LIBAMUDIR}/libamu.a
467
468LIBPMCSTATDIR=	${OBJTOP}/lib/libpmcstat
469LIBPMCSTAT?=	${LIBPMCSTATDIR}/libpmcstat.a
470
471# Define a directory for each library.  This is useful for adding -L in when
472# not using a --sysroot or for meta mode bootstrapping when there is no
473# Makefile.depend.  These are sorted by directory.
474LIBAVLDIR=	${OBJTOP}/cddl/lib/libavl
475LIBCTFDIR=	${OBJTOP}/cddl/lib/libctf
476LIBDTRACEDIR=	${OBJTOP}/cddl/lib/libdtrace
477LIBNVPAIRDIR=	${OBJTOP}/cddl/lib/libnvpair
478LIBUMEMDIR=	${OBJTOP}/cddl/lib/libumem
479LIBUUTILDIR=	${OBJTOP}/cddl/lib/libuutil
480LIBZFSDIR=	${OBJTOP}/cddl/lib/libzfs
481LIBZFS_COREDIR=	${OBJTOP}/cddl/lib/libzfs_core
482LIBZPOOLDIR=	${OBJTOP}/cddl/lib/libzpool
483
484# OFED support
485LIBCXGB4DIR=	${OBJTOP}/contrib/ofed/libcxgb4
486LIBIBCMDIR=	${OBJTOP}/contrib/ofed/libibcm
487LIBIBMADDIR=	${OBJTOP}/contrib/ofed/libibmad
488LIBIBNETDISCDIR=${OBJTOP}/contrib/ofed/libibnetdisc
489LIBIBUMADDIR=	${OBJTOP}/contrib/ofed/libibumad
490LIBIBVERBSDIR=	${OBJTOP}/contrib/ofed/libibverbs
491LIBMLX4DIR=	${OBJTOP}/contrib/ofed/libmlx4
492LIBMLX5DIR=	${OBJTOP}/contrib/ofed/libmlx5
493LIBRDMACMDIR=	${OBJTOP}/contrib/ofed/librdmacm
494LIBOSMCOMPDIR=	${OBJTOP}/contrib/ofed/opensm/complib
495LIBOPENSMDIR=	${OBJTOP}/contrib/ofed/opensm/libopensm
496LIBOSMVENDORDIR=${OBJTOP}/contrib/ofed/opensm/libvendor
497
498LIBDIALOGDIR=	${OBJTOP}/gnu/lib/libdialog
499LIBGCOVDIR=	${OBJTOP}/gnu/lib/libgcov
500LIBGOMPDIR=	${OBJTOP}/gnu/lib/libgomp
501LIBGNUREGEXDIR=	${OBJTOP}/gnu/lib/libregex
502LIBSSPDIR=	${OBJTOP}/gnu/lib/libssp
503LIBSSP_NONSHAREDDIR=	${OBJTOP}/gnu/lib/libssp/libssp_nonshared
504LIBSUPCPLUSPLUSDIR=	${OBJTOP}/gnu/lib/libsupc++
505LIBASN1DIR=	${OBJTOP}/kerberos5/lib/libasn1
506LIBGSSAPI_KRB5DIR=	${OBJTOP}/kerberos5/lib/libgssapi_krb5
507LIBGSSAPI_NTLMDIR=	${OBJTOP}/kerberos5/lib/libgssapi_ntlm
508LIBGSSAPI_SPNEGODIR=	${OBJTOP}/kerberos5/lib/libgssapi_spnego
509LIBHDBDIR=	${OBJTOP}/kerberos5/lib/libhdb
510LIBHEIMBASEDIR=	${OBJTOP}/kerberos5/lib/libheimbase
511LIBHEIMIPCCDIR=	${OBJTOP}/kerberos5/lib/libheimipcc
512LIBHEIMIPCSDIR=	${OBJTOP}/kerberos5/lib/libheimipcs
513LIBHEIMNTLMDIR=	${OBJTOP}/kerberos5/lib/libheimntlm
514LIBHX509DIR=	${OBJTOP}/kerberos5/lib/libhx509
515LIBKADM5CLNTDIR=	${OBJTOP}/kerberos5/lib/libkadm5clnt
516LIBKADM5SRVDIR=	${OBJTOP}/kerberos5/lib/libkadm5srv
517LIBKAFS5DIR=	${OBJTOP}/kerberos5/lib/libkafs5
518LIBKDCDIR=	${OBJTOP}/kerberos5/lib/libkdc
519LIBKRB5DIR=	${OBJTOP}/kerberos5/lib/libkrb5
520LIBROKENDIR=	${OBJTOP}/kerberos5/lib/libroken
521LIBWINDDIR=	${OBJTOP}/kerberos5/lib/libwind
522LIBATF_CDIR=	${OBJTOP}/lib/atf/libatf-c
523LIBATF_CXXDIR=	${OBJTOP}/lib/atf/libatf-c++
524LIBALIASDIR=	${OBJTOP}/lib/libalias/libalias
525LIBBLACKLISTDIR=	${OBJTOP}/lib/libblacklist
526LIBBLOCKSRUNTIMEDIR=	${OBJTOP}/lib/libblocksruntime
527LIBBSNMPDIR=	${OBJTOP}/lib/libbsnmp/libbsnmp
528LIBCASPERDIR=	${OBJTOP}/lib/libcasper/libcasper
529LIBCAP_DNSDIR=	${OBJTOP}/lib/libcasper/services/cap_dns
530LIBCAP_GRPDIR=	${OBJTOP}/lib/libcasper/services/cap_grp
531LIBCAP_PWDDIR=	${OBJTOP}/lib/libcasper/services/cap_pwd
532LIBCAP_RANDOMDIR=	${OBJTOP}/lib/libcasper/services/cap_random
533LIBCAP_SYSCTLDIR=	${OBJTOP}/lib/libcasper/services/cap_sysctl
534LIBCAP_SYSLOGDIR=	${OBJTOP}/lib/libcasper/services/cap_syslog
535LIBBSDXMLDIR=	${OBJTOP}/lib/libexpat
536LIBKVMDIR=	${OBJTOP}/lib/libkvm
537LIBPTHREADDIR=	${OBJTOP}/lib/libthr
538LIBMDIR=	${OBJTOP}/lib/msun
539LIBFORMDIR=	${OBJTOP}/lib/ncurses/form
540LIBFORMLIBWDIR=	${OBJTOP}/lib/ncurses/formw
541LIBMENUDIR=	${OBJTOP}/lib/ncurses/menu
542LIBMENULIBWDIR=	${OBJTOP}/lib/ncurses/menuw
543LIBNCURSESDIR=	${OBJTOP}/lib/ncurses/ncurses
544LIBNCURSESWDIR=	${OBJTOP}/lib/ncurses/ncursesw
545LIBPANELDIR=	${OBJTOP}/lib/ncurses/panel
546LIBPANELWDIR=	${OBJTOP}/lib/ncurses/panelw
547LIBCRYPTODIR=	${OBJTOP}/secure/lib/libcrypto
548LIBSSHDIR=	${OBJTOP}/secure/lib/libssh
549LIBSSLDIR=	${OBJTOP}/secure/lib/libssl
550LIBTEKENDIR=	${OBJTOP}/sys/teken/libteken
551LIBEGACYDIR=	${OBJTOP}/tools/build
552LIBLNDIR=	${OBJTOP}/usr.bin/lex/lib
553
554LIBTERMCAPDIR=	${LIBNCURSESDIR}
555LIBTERMCAPWDIR=	${LIBNCURSESWDIR}
556
557# Default other library directories to lib/libNAME.
558.for lib in ${_LIBRARIES}
559LIB${lib:tu}DIR?=	${OBJTOP}/lib/lib${lib}
560.endfor
561
562# Validate that listed LIBADD are valid.
563.for _l in ${LIBADD}
564.if empty(_LIBRARIES:M${_l})
565_BADLIBADD+= ${_l}
566.endif
567.endfor
568.if !empty(_BADLIBADD)
569.error ${.CURDIR}: Invalid LIBADD used which may need to be added to ${_this:T}: ${_BADLIBADD}
570.endif
571
572# Sanity check that libraries are defined here properly when building them.
573.if defined(LIB) && ${_LIBRARIES:M${LIB}} != ""
574.if !empty(LIBADD) && \
575    (!defined(_DP_${LIB}) || ${LIBADD:O:u} != ${_DP_${LIB}:O:u})
576.error ${.CURDIR}: Missing or incorrect _DP_${LIB} entry in ${_this:T}.  Should match LIBADD for ${LIB} ('${LIBADD}' vs '${_DP_${LIB}}')
577.endif
578# Note that OBJTOP is not yet defined here but for the purpose of the check
579# it is fine as it resolves to the SRC directory.
580.if !defined(LIB${LIB:tu}DIR) || !exists(${SRCTOP}/${LIB${LIB:tu}DIR:S,^${OBJTOP}/,,})
581.error ${.CURDIR}: Missing or incorrect value for LIB${LIB:tu}DIR in ${_this:T}: ${LIB${LIB:tu}DIR:S,^${OBJTOP}/,,}
582.endif
583.if ${_INTERNALLIBS:M${LIB}} != "" && !defined(LIB${LIB:tu})
584.error ${.CURDIR}: Missing value for LIB${LIB:tu} in ${_this:T}.  Likely should be: LIB${LIB:tu}?= $${LIB${LIB:tu}DIR}/lib${LIB}.a
585.endif
586.endif
587
588.endif	# !target(__<src.libnames.mk>__)
589