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