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