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.if ${MK_OPENSSL} != "no" 221_DP_archive+= crypto 222.else 223_DP_archive+= md 224.endif 225_DP_sqlite3= pthread 226_DP_ssl= crypto 227_DP_ssh= crypto crypt z 228.if ${MK_LDNS} != "no" 229_DP_ssh+= ldns 230.endif 231_DP_edit= ncursesw 232.if ${MK_OPENSSL} != "no" 233_DP_bsnmp= crypto 234.endif 235_DP_geom= bsdxml sbuf 236_DP_cam= sbuf 237_DP_kvm= elf 238_DP_casper= nv 239_DP_cap_dns= nv 240_DP_cap_grp= nv 241_DP_cap_pwd= nv 242_DP_cap_random= nv 243_DP_cap_sysctl= nv 244_DP_cap_syslog= nv 245.if ${MK_OFED} != "no" 246_DP_pcap= ibverbs mlx5 247.endif 248_DP_pjdlog= util 249_DP_opie= md 250_DP_usb= pthread 251_DP_unbound= ssl crypto pthread 252_DP_rt= pthread 253.if ${MK_OPENSSL} == "no" 254_DP_radius= md 255.else 256_DP_radius= crypto 257.endif 258_DP_rtld_db= elf procstat 259_DP_procstat= kvm util elf 260.if ${MK_CXX} == "yes" 261.if ${MK_LIBCPLUSPLUS} != "no" 262_DP_proc= cxxrt 263.else 264_DP_proc= supcplusplus 265.endif 266.endif 267.if ${MK_CDDL} != "no" 268_DP_proc+= ctf 269.endif 270_DP_proc+= elf procstat rtld_db util 271_DP_mp= crypto 272_DP_memstat= kvm 273_DP_magic= z 274_DP_mt= sbuf bsdxml 275_DP_ldns= crypto 276.if ${MK_OPENSSL} != "no" 277_DP_fetch= ssl crypto 278.else 279_DP_fetch= md 280.endif 281_DP_execinfo= elf 282_DP_dwarf= elf 283_DP_dpv= dialog figpar util ncursesw 284_DP_dialog= ncursesw m 285_DP_cuse= pthread 286_DP_atf_cxx= atf_c 287_DP_devstat= kvm 288_DP_pam= radius tacplus opie md util 289.if ${MK_KERBEROS} != "no" 290_DP_pam+= krb5 291.endif 292.if ${MK_OPENSSH} != "no" 293_DP_pam+= ssh 294.endif 295.if ${MK_NIS} != "no" 296_DP_pam+= ypclnt 297.endif 298_DP_roken= crypt 299_DP_kadm5clnt= com_err krb5 roken 300_DP_kadm5srv= com_err hdb krb5 roken 301_DP_heimntlm= crypto com_err krb5 roken 302_DP_hx509= asn1 com_err crypto roken wind 303_DP_hdb= asn1 com_err krb5 roken sqlite3 304_DP_asn1= com_err roken 305_DP_kdc= roken hdb hx509 krb5 heimntlm asn1 crypto 306_DP_wind= com_err roken 307_DP_heimbase= pthread 308_DP_heimipcc= heimbase roken pthread 309_DP_heimipcs= heimbase roken pthread 310_DP_kafs5= asn1 krb5 roken 311_DP_krb5+= asn1 com_err crypt crypto hx509 roken wind heimbase heimipcc 312_DP_gssapi_krb5+= gssapi krb5 crypto roken asn1 com_err 313_DP_lzma= pthread 314_DP_ucl= m 315_DP_vmmapi= util 316_DP_opencsd= cxxrt 317_DP_ctf= z 318_DP_dtrace= ctf elf proc pthread rtld_db 319_DP_xo= util 320# The libc dependencies are not strictly needed but are defined to make the 321# assert happy. 322_DP_c= compiler_rt 323.if ${MK_SSP} != "no" 324_DP_c+= ssp_nonshared 325.endif 326_DP_stdthreads= pthread 327_DP_tacplus= md 328_DP_panel= ncurses 329_DP_panelw= ncursesw 330_DP_rpcsec_gss= gssapi 331_DP_smb= kiconv 332_DP_ulog= md 333_DP_fifolog= z 334_DP_ipf= kvm 335_DP_zfs= md pthread umem util uutil m nvpair avl bsdxml geom nvpair z \ 336 zfs_core 337_DP_zfs_core= nvpair 338_DP_zpool= md pthread z nvpair avl umem 339_DP_be= zfs nvpair 340 341# OFED support 342.if ${MK_OFED} != "no" 343_DP_cxgb4= ibverbs pthread 344_DP_ibcm= ibverbs 345_DP_ibmad= ibumad 346_DP_ibnetdisc= osmcomp ibmad ibumad 347_DP_ibumad= 348_DP_ibverbs= 349_DP_mlx4= ibverbs pthread 350_DP_mlx5= ibverbs pthread 351_DP_rdmacm= ibverbs 352_DP_osmcomp= pthread 353_DP_opensm= pthread 354_DP_osmvendor= ibumad pthread 355.endif 356 357# Define special cases 358LDADD_supcplusplus= -lsupc++ 359LIBATF_C= ${LIBDESTDIR}${LIBDIR_BASE}/libprivateatf-c.a 360LIBATF_CXX= ${LIBDESTDIR}${LIBDIR_BASE}/libprivateatf-c++.a 361LDADD_atf_c= -lprivateatf-c 362LDADD_atf_cxx= -lprivateatf-c++ 363 364.for _l in ${_PRIVATELIBS} 365LIB${_l:tu}?= ${LIBDESTDIR}${LIBDIR_BASE}/libprivate${_l}.a 366.endfor 367 368.for _l in ${_LIBRARIES} 369.if ${_INTERNALLIBS:M${_l}} || !defined(SYSROOT) 370LDADD_${_l}_L+= -L${LIB${_l:tu}DIR} 371.endif 372DPADD_${_l}?= ${LIB${_l:tu}} 373.if ${_PRIVATELIBS:M${_l}} 374LDADD_${_l}?= -lprivate${_l} 375.else 376LDADD_${_l}?= ${LDADD_${_l}_L} -l${_l} 377.endif 378# Add in all dependencies for static linkage. 379.if defined(_DP_${_l}) && (${_INTERNALLIBS:M${_l}} || \ 380 (defined(NO_SHARED) && (${NO_SHARED} != "no" && ${NO_SHARED} != "NO"))) 381.for _d in ${_DP_${_l}} 382DPADD_${_l}+= ${DPADD_${_d}} 383LDADD_${_l}+= ${LDADD_${_d}} 384.endfor 385.endif 386.endfor 387 388# These are special cases where the library is broken and anything that uses 389# it needs to add more dependencies. Broken usually means that it has a 390# cyclic dependency and cannot link its own dependencies. This is bad, please 391# fix the library instead. 392# Unless the library itself is broken then the proper place to define 393# dependencies is _DP_* above. 394 395# libatf-c++ exposes libatf-c abi hence we need to explicit link to atf_c for 396# atf_cxx 397DPADD_atf_cxx+= ${DPADD_atf_c} 398LDADD_atf_cxx+= ${LDADD_atf_c} 399 400# Detect LDADD/DPADD that should be LIBADD, before modifying LDADD here. 401_BADLDADD= 402.for _l in ${LDADD:M-l*:N-l*/*:C,^-l,,} 403.if ${_LIBRARIES:M${_l}} && !${_PRIVATELIBS:M${_l}} 404_BADLDADD+= ${_l} 405.endif 406.endfor 407.if !empty(_BADLDADD) 408.error ${.CURDIR}: These libraries should be LIBADD+=foo rather than DPADD/LDADD+=-lfoo: ${_BADLDADD} 409.endif 410 411.for _l in ${LIBADD} 412DPADD+= ${DPADD_${_l}} 413LDADD+= ${LDADD_${_l}} 414.endfor 415 416# INTERNALLIB definitions. 417LIBELFTCDIR= ${OBJTOP}/lib/libelftc 418LIBELFTC?= ${LIBELFTCDIR}/libelftc.a 419 420LIBPEDIR= ${OBJTOP}/lib/libpe 421LIBPE?= ${LIBPEDIR}/libpe.a 422 423LIBOPENBSDDIR= ${OBJTOP}/lib/libopenbsd 424LIBOPENBSD?= ${LIBOPENBSDDIR}/libopenbsd.a 425 426LIBSMDIR= ${OBJTOP}/lib/libsm 427LIBSM?= ${LIBSMDIR}/libsm.a 428 429LIBSMDBDIR= ${OBJTOP}/lib/libsmdb 430LIBSMDB?= ${LIBSMDBDIR}/libsmdb.a 431 432LIBSMUTILDIR= ${OBJTOP}/lib/libsmutil 433LIBSMUTIL?= ${LIBSMUTILDIR}/libsmutil.a 434 435LIBNETBSDDIR?= ${OBJTOP}/lib/libnetbsd 436LIBNETBSD?= ${LIBNETBSDDIR}/libnetbsd.a 437 438LIBVERSDIR?= ${OBJTOP}/kerberos5/lib/libvers 439LIBVERS?= ${LIBVERSDIR}/libvers.a 440 441LIBSLDIR= ${OBJTOP}/kerberos5/lib/libsl 442LIBSL?= ${LIBSLDIR}/libsl.a 443 444LIBIPFDIR= ${OBJTOP}/sbin/ipf/libipf 445LIBIPF?= ${LIBIPFDIR}/libipf.a 446 447LIBTELNETDIR= ${OBJTOP}/lib/libtelnet 448LIBTELNET?= ${LIBTELNETDIR}/libtelnet.a 449 450LIBCRONDIR= ${OBJTOP}/usr.sbin/cron/lib 451LIBCRON?= ${LIBCRONDIR}/libcron.a 452 453LIBNTPDIR= ${OBJTOP}/usr.sbin/ntp/libntp 454LIBNTP?= ${LIBNTPDIR}/libntp.a 455 456LIBNTPEVENTDIR= ${OBJTOP}/usr.sbin/ntp/libntpevent 457LIBNTPEVENT?= ${LIBNTPEVENTDIR}/libntpevent.a 458 459LIBOPTSDIR= ${OBJTOP}/usr.sbin/ntp/libopts 460LIBOPTS?= ${LIBOPTSDIR}/libopts.a 461 462LIBPARSEDIR= ${OBJTOP}/usr.sbin/ntp/libparse 463LIBPARSE?= ${LIBPARSEDIR}/libparse.a 464 465LIBLPRDIR= ${OBJTOP}/usr.sbin/lpr/common_source 466LIBLPR?= ${LIBLPRDIR}/liblpr.a 467 468LIBFIFOLOGDIR= ${OBJTOP}/usr.sbin/fifolog/lib 469LIBFIFOLOG?= ${LIBFIFOLOGDIR}/libfifolog.a 470 471LIBBSNMPTOOLSDIR= ${OBJTOP}/usr.sbin/bsnmpd/tools/libbsnmptools 472LIBBSNMPTOOLS?= ${LIBBSNMPTOOLSDIR}/libbsnmptools.a 473 474LIBAMUDIR= ${OBJTOP}/usr.sbin/amd/libamu 475LIBAMU?= ${LIBAMUDIR}/libamu.a 476 477LIBBE?= ${LIBBEDIR}/libbe.a 478 479LIBPMCSTATDIR= ${OBJTOP}/lib/libpmcstat 480LIBPMCSTAT?= ${LIBPMCSTATDIR}/libpmcstat.a 481 482LIBC_NOSSP_PICDIR= ${OBJTOP}/lib/libc 483LIBC_NOSSP_PIC?= ${LIBC_NOSSP_PICDIR}/libc_nossp_pic.a 484 485# Define a directory for each library. This is useful for adding -L in when 486# not using a --sysroot or for meta mode bootstrapping when there is no 487# Makefile.depend. These are sorted by directory. 488LIBAVLDIR= ${OBJTOP}/cddl/lib/libavl 489LIBBEDIR= ${OBJTOP}/cddl/lib/libbe 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