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