1# 2# The include file <src.libnames.mk> define library names suitable 3# for INTERNALLIB and PRIVATELIB definition 4 5.if !target(__<bsd.init.mk>__) 6.error src.libnames.mk cannot be included directly. 7.endif 8 9.if !target(__<src.libnames.mk>__) 10__<src.libnames.mk>__: .NOTMAIN 11 12.include <src.opts.mk> 13 14_PRIVATELIBS= \ 15 atf_c \ 16 atf_cxx \ 17 auditd \ 18 bsddialog \ 19 bsdstat \ 20 cbor \ 21 devdctl \ 22 event1 \ 23 fido2 \ 24 gmock \ 25 gtest \ 26 gmock_main \ 27 gtest_main \ 28 heimipcc \ 29 heimipcs \ 30 kldelf \ 31 ldns \ 32 opencsd \ 33 pkgconf \ 34 samplerate \ 35 sqlite3 \ 36 ssh \ 37 ucl \ 38 unbound \ 39 yaml \ 40 zstd 41 42# Let projects based on FreeBSD append to _PRIVATELIBS 43# by maintaining their own LOCAL_PRIVATELIBS list. 44_PRIVATELIBS+= ${LOCAL_PRIVATELIBS} 45 46_INTERNALLIBS= \ 47 amu \ 48 apputils \ 49 bsnmptools \ 50 c_nossp_pic \ 51 cron \ 52 der \ 53 diff \ 54 elftc \ 55 fdt \ 56 fifolog \ 57 ifconfig \ 58 ipf \ 59 iscsiutil \ 60 kadmin_common \ 61 kprop_util \ 62 krb5apputils \ 63 krb5profile \ 64 krb5ss \ 65 lpr \ 66 lua \ 67 lutok \ 68 netbsd \ 69 ntp \ 70 ntpevent \ 71 nvmf \ 72 openbsd \ 73 opts \ 74 parse \ 75 pe \ 76 pfctl \ 77 pkgecc \ 78 pmcstat \ 79 sl \ 80 sm \ 81 smdb \ 82 smutil \ 83 telnet \ 84 util++ \ 85 vers \ 86 wpaap \ 87 wpacommon \ 88 wpacrypto \ 89 wpadrivers \ 90 wpaeap_common \ 91 wpaeap_peer \ 92 wpaeap_server \ 93 wpaeapol_auth \ 94 wpaeapol_supp \ 95 wpal2_packet \ 96 wpapasn \ 97 wparadius \ 98 wparsn_supp \ 99 wpatls \ 100 wpautils \ 101 wpawps 102 103# Let projects based on FreeBSD append to _INTERNALLIBS 104# by maintaining their own LOCAL_INTERNALLIBS list. 105_INTERNALLIBS+= ${LOCAL_INTERNALLIBS} 106 107_LIBRARIES= \ 108 ${_PRIVATELIBS} \ 109 ${_INTERNALLIBS} \ 110 ${LOCAL_LIBRARIES} \ 111 80211 \ 112 9p \ 113 alias \ 114 archive \ 115 asn1 \ 116 avl \ 117 BlocksRuntime \ 118 be \ 119 begemot \ 120 bluetooth \ 121 bsdxml \ 122 bsm \ 123 bsnmp \ 124 bz2 \ 125 c \ 126 c_pic \ 127 calendar \ 128 cam \ 129 casper \ 130 cap_dns \ 131 cap_fileargs \ 132 cap_grp \ 133 cap_net \ 134 cap_netdb \ 135 cap_pwd \ 136 cap_sysctl \ 137 cap_syslog \ 138 com_err \ 139 compiler_rt \ 140 crypt \ 141 crypto \ 142 ctf \ 143 cuse \ 144 cxxrt \ 145 devctl \ 146 devdctl \ 147 devinfo \ 148 devstat \ 149 dl \ 150 dtrace \ 151 dwarf \ 152 edit \ 153 efivar \ 154 elf \ 155 execinfo \ 156 fetch \ 157 formw \ 158 geom \ 159 gpio \ 160 gssapi \ 161 gssapi_krb5 \ 162 gssrpc \ 163 hdb \ 164 heimbase \ 165 heimntlm \ 166 heimsqlite \ 167 hx509 \ 168 icp \ 169 ipsec \ 170 ipt \ 171 jail \ 172 k5crypto \ 173 kadm5 \ 174 kadmin_common \ 175 kafs5 \ 176 kdb5 \ 177 kdc \ 178 kiconv \ 179 krad \ 180 krb5 \ 181 krb5profile \ 182 krb5support \ 183 kvm \ 184 l \ 185 lzma \ 186 m \ 187 magic \ 188 md \ 189 memstat \ 190 mp \ 191 mt \ 192 ncursesw \ 193 netgraph \ 194 netmap \ 195 ngatm \ 196 nv \ 197 nvpair \ 198 opencsd \ 199 pam \ 200 panel \ 201 panelw \ 202 pcap \ 203 pcsclite \ 204 pjdlog \ 205 pmc \ 206 proc \ 207 procstat \ 208 pthread \ 209 radius \ 210 regex \ 211 roken \ 212 rpcsec_gss \ 213 rpcsvc \ 214 rt \ 215 rtld_db \ 216 sbuf \ 217 sdp \ 218 sm \ 219 smb \ 220 spl \ 221 ssl \ 222 ssp_nonshared \ 223 stats \ 224 stdthreads \ 225 supcplusplus \ 226 sys \ 227 sysdecode \ 228 tacplus \ 229 termcapw \ 230 tinfow \ 231 ufs \ 232 ugidfw \ 233 ulog \ 234 umem \ 235 usb \ 236 usbhid \ 237 util \ 238 uvmem \ 239 verto \ 240 vmmapi \ 241 wind \ 242 wrap \ 243 xo \ 244 y \ 245 ypclnt \ 246 z \ 247 zdb \ 248 zfs_core \ 249 zfs \ 250 zfsbootenv \ 251 zpool \ 252 zutil 253 254.if ${MK_KERBEROS} != "no" && ${MK_MITKRB5} != "no" 255_LIBRARIES+= \ 256 kadm5clnt_mit \ 257 kadm5srv_mit 258.else 259_LIBRARIES+= \ 260 kadm5clnt \ 261 kadm5srv 262.endif 263 264.if ${MK_BLACKLIST} != "no" 265_LIBRARIES+= \ 266 blacklist 267.endif 268 269.if ${MK_BLOCKLIST} != "no" 270_LIBRARIES+= \ 271 blocklist 272.endif 273 274.if ${MK_OFED} != "no" 275_LIBRARIES+= \ 276 cxgb4 \ 277 ibcm \ 278 ibmad \ 279 ibnetdisc \ 280 ibumad \ 281 ibverbs \ 282 irdma \ 283 mlx4 \ 284 mlx5 \ 285 bnxtre \ 286 rdmacm \ 287 osmcomp \ 288 opensm \ 289 osmvendor 290.endif 291 292.if ${MK_BEARSSL} == "yes" 293_LIBRARIES+= \ 294 bearssl \ 295 secureboot \ 296 297LIBBEARSSL?= ${LIBBEARSSLDIR}/libbearssl.a 298LIBSECUREBOOT?= ${LIBSECUREBOOTDIR}/libsecureboot.a 299.endif 300 301.if ${MK_VERIEXEC} == "yes" 302_LIBRARIES+= veriexec 303 304LIBVERIEXEC?= ${LIBVERIEXECDIR}/libveriexec.a 305.endif 306 307# Each library's LIBADD needs to be duplicated here for static linkage of 308# 2nd+ order consumers. Auto-generating this would be better. 309_DP_80211= sbuf bsdxml 310_DP_9p= sbuf 311.if ${MK_CASPER} != "no" 312_DP_9p+= casper cap_pwd cap_grp 313.endif 314 315# XXX: Not bootstrapped so uses host version on non-FreeBSD, so don't use a 316# FreeBSD-specific dependency list 317.if ${.MAKE.OS} == "FreeBSD" || !defined(BOOTSTRAPPING) 318_DP_archive= z bz2 lzma bsdxml zstd 319.endif 320_DP_atf_cxx= atf_c 321_DP_avl= spl 322_DP_be= zfs spl nvpair zfsbootenv 323_DP_bsddialog= ncursesw tinfow 324.if ${MK_OPENSSL} != "no" 325_DP_bsnmp= crypto 326.endif 327# The libc dependencies are not strictly needed but are defined to make the 328# assert happy. 329_DP_c= compiler_rt sys 330# Use libssp_nonshared only on i386 and power*. Other archs emit direct calls 331# to __stack_chk_fail, not __stack_chk_fail_local provided by libssp_nonshared. 332.if ${MK_SSP} != "no" && \ 333 (${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH:Mpower*} != "") 334_DP_c+= ssp_nonshared 335.endif 336_DP_cam= sbuf 337_DP_cap_dns= nv 338_DP_cap_fileargs= nv 339_DP_cap_grp= nv 340_DP_cap_pwd= nv 341_DP_cap_sysctl= nv 342_DP_cap_syslog= nv 343_DP_casper= nv 344# See comment by _DP_archive above 345.if ${.MAKE.OS} == "FreeBSD" || !defined(BOOTSTRAPPING) 346.if ${MK_OPENSSL} != "no" 347_DP_archive+= crypto 348.else 349_DP_archive+= md 350.endif 351.endif 352_DP_ctf= spl z 353_DP_crypt= md 354_DP_crypto= pthread 355_DP_cuse= pthread 356.if ${MK_BLACKLIST} != "no" 357_DP_blacklist+= pthread 358.endif 359.if ${MK_BLOCKLIST} != "no" 360_DP_blocklist+= pthread 361.endif 362_DP_devstat= kvm 363_DP_dtrace= ctf elf proc pthread rtld_db xo 364_DP_dwarf= elf z 365_DP_edit= tinfow 366_DP_execinfo= elf 367.if ${MK_OPENSSL} != "no" 368_DP_fetch= ssl crypto 369.else 370_DP_fetch= md 371.endif 372.if ${MK_OPENSSH} != "no" 373_DP_fido2+= crypto z 374.endif 375_DP_fifolog= z 376_DP_formw= ncursesw 377_DP_geom= bsdxml sbuf 378_DP_gmock= gtest 379_DP_gmock_main= gmock 380_DP_gtest= pthread regex 381_DP_gtest_main= gtest 382_DP_ifconfig= m 383_DP_ipf= kvm 384_DP_iscsiutil= md 385_DP_kldelf= elf 386_DP_krb5ss= edit 387_DP_kvm= elf 388_DP_ldns= ssl crypto 389_DP_lua= m 390_DP_lutok= lua 391_DP_lzma= md pthread 392_DP_magic= z 393_DP_memstat= kvm 394_DP_mp= crypto 395_DP_mt= sbuf bsdxml 396_DP_ncursesw= tinfow 397_DP_netmap= 398_DP_nvmf= nv 399_DP_nvpair= spl 400_DP_opencsd= cxxrt 401_DP_panelw= ncursesw 402_DP_pam= radius tacplus md util 403.if ${MK_KERBEROS} != "no" && ${MK_MITKRB5} != "no" 404_DP_pam+= krb5 405.endif 406.if ${MK_OPENSSH} != "no" 407_DP_pam+= ssh 408.endif 409.if ${MK_NIS} != "no" 410_DP_pam+= ypclnt 411.endif 412_DP_pfctl= nv 413_DP_pjdlog= util 414_DP_proc= cxxrt 415.if ${MK_CTF} != "no" 416_DP_proc+= ctf 417.endif 418_DP_proc+= elf procstat rtld_db util z 419_DP_procstat= kvm util elf 420.if ${MK_OPENSSL} == "no" 421_DP_radius= md 422.else 423_DP_radius= crypto 424.endif 425_DP_rt= pthread 426_DP_rtld_db= elf procstat 427_DP_smb= kiconv 428_DP_sqlite3= pthread 429_DP_ssl= pthread crypto 430_DP_ssh= crypto crypt z 431.if ${MK_LDNS} != "no" 432_DP_ssh+= ldns 433.endif 434_DP_stats= sbuf pthread 435_DP_stdthreads= pthread 436_DP_sys= compiler_rt 437# Use libssp_nonshared only on i386 and power*. Other archs emit direct calls 438# to __stack_chk_fail, not __stack_chk_fail_local provided by libssp_nonshared. 439.if ${MK_SSP} != "no" && \ 440 (${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH:Mpower*} != "") 441_DP_sys+= ssp_nonshared 442.endif 443.if !defined(BOOTSTRAPPING) 444_DP_thr= c sys 445_DP_pthread= ${_DP_thr} 446.endif 447_DP_tacplus= md pam 448_DP_ucl= m 449_DP_ulog= md 450_DP_unbound= ssl crypto pthread 451_DP_usb= pthread 452_DP_uvmem= pthread 453_DP_vmmapi= util 454_DP_xo= util 455_DP_zfs= md pthread rt umem util m avl bsdxml crypto geom nvpair \ 456 z zfs_core zutil 457_DP_zfs_core= nvpair spl zutil 458_DP_zfsbootenv= zfs nvpair 459_DP_zpool= md pthread z icp spl nvpair avl umem 460_DP_zstd= pthread 461_DP_ztest= geom m nvpair umem zpool pthread avl zfs_core spl zutil zfs icp 462_DP_zutil= avl geom m 463 464# Kerberos support 465.if ${MK_KERBEROS} != "no" 466.if ${MK_MITKRB5} != "no" 467# _DP_krb5support= no dependencies except for libc 468# _DP_verto= no dependencies except for libc 469# _DP_apputils= no dependencies except for libc 470_DP_com_err= krb5support 471_DP_gssapi_krb5= krb5 k5crypto com_err krb5profile krb5support 472_DP_gssrpc= gssapi_krb5 krb5 k5crypto com_err krb5support 473_DP_k5crypto= com_err krb5support crypto 474_DP_kadm5clnt_mit= gssrpc gssapi_krb5 krb5 k5crypto krb5support com_err krb5profile 475_DP_kadm5srv_mit= krb5profile gssrpc gssapi_krb5 kdb5 krb5 k5crypto krb5support com_err 476_DP_kdb5= gssrpc krb5 k5crypto com_err krb5support gssapi_krb5 krb5profile 477_DP_krad= krb5 k5crypto com_err krb5profile krb5support verto 478_DP_krb5= krb5profile k5crypto com_err krb5support 479.else 480_DP_asn1= com_err roken 481_DP_gssapi_krb5= gssapi krb5 crypto roken asn1 com_err 482_DP_hdb= asn1 com_err krb5 roken sqlite3 heimbase 483_DP_heimbase= pthread 484_DP_heimipcc= heimbase roken pthread 485_DP_heimipcs= heimbase roken pthread 486_DP_heimntlm= crypto com_err krb5 roken 487_DP_hx509= asn1 com_err crypto roken wind 488_DP_kadm5clnt= com_err krb5 roken 489_DP_kadm5srv= com_err hdb krb5 roken 490_DP_kafs5= asn1 krb5 roken 491_DP_kdc= roken hdb hx509 krb5 heimntlm asn1 crypto 492_DP_krb5= asn1 com_err crypt crypto hx509 roken wind heimbase heimipcc 493_DP_roken= crypt 494_DP_wind= com_err roken 495.endif 496.endif 497.if ${MK_MITKRB5} == "no" 498_DP_rpcsec_gss= gssapi 499.else 500_DP_rpcsec_gss= gssapi_krb5 501.endif 502_DP_smb= kiconv 503_DP_ulog= md 504_DP_fifolog= z 505_DP_ipf= kvm 506_DP_uvmem= pthread 507_DP_zfs= md pthread rt umem util m avl bsdxml crypto geom nvpair \ 508 z zfs_core zutil 509_DP_zfsbootenv= zfs nvpair 510_DP_zfs_core= nvpair spl zutil 511_DP_zpool= md pthread z icp spl nvpair avl umem 512_DP_zutil= avl geom m 513_DP_be= zfs spl nvpair zfsbootenv 514_DP_netmap= 515_DP_ifconfig= m 516_DP_pfctl= nv 517_DP_krb5ss= edit 518 519# OFED support 520.if ${MK_OFED} != "no" 521_DP_bnxtre= ibverbs pthread 522_DP_cxgb4= ibverbs pthread 523_DP_ibcm= ibverbs 524_DP_ibmad= ibumad 525_DP_ibnetdisc= osmcomp ibmad ibumad 526_DP_ibumad= 527_DP_ibverbs= 528_DP_irdma= ibverbs pthread 529_DP_mlx4= ibverbs pthread 530_DP_mlx5= ibverbs pthread 531_DP_opensm= pthread 532_DP_osmcomp= pthread 533_DP_osmvendor= ibumad pthread 534_DP_pcap= ibverbs mlx5 bnxtre 535_DP_rdmacm= ibverbs 536.endif 537 538# Define special cases 539LDADD_supcplusplus= -lsupc++ 540LIBATF_C= ${LIBDESTDIR}${LIBDIR_BASE}/libprivateatf-c.a 541LIBATF_CXX= ${LIBDESTDIR}${LIBDIR_BASE}/libprivateatf-c++.a 542LDADD_atf_c= -lprivateatf-c 543LDADD_atf_cxx= -lprivateatf-c++ 544 545LIBGMOCK= ${LIBDESTDIR}${LIBDIR_BASE}/libprivategmock.a 546LIBGMOCK_MAIN= ${LIBDESTDIR}${LIBDIR_BASE}/libprivategmock_main.a 547LIBGTEST= ${LIBDESTDIR}${LIBDIR_BASE}/libprivategtest.a 548LIBGTEST_MAIN= ${LIBDESTDIR}${LIBDIR_BASE}/libprivategtest_main.a 549LDADD_gmock= -lprivategmock 550LDADD_gtest= -lprivategtest 551LDADD_gmock_main= -lprivategmock_main 552LDADD_gtest_main= -lprivategtest_main 553 554.for _l in ${_PRIVATELIBS} 555LIB${_l:tu}?= ${LIBDESTDIR}${LIBDIR_BASE}/libprivate${_l}.a 556.endfor 557 558.if ${MK_PIE} != "no" 559PIE_SUFFIX= _pie 560.endif 561 562.for _l in ${_LIBRARIES} 563.if ${_INTERNALLIBS:M${_l}} || !defined(SYSROOT) 564LDADD_${_l}_L+= -L${LIB${_l:tu}DIR} 565.endif 566DPADD_${_l}?= ${LIB${_l:tu}} 567.if ${_PRIVATELIBS:M${_l}} 568LDADD_${_l}?= ${LDADD_${_l}_L} -lprivate${_l} 569.elif ${_INTERNALLIBS:M${_l}} 570LDADD_${_l}?= ${LDADD_${_l}_L} -l${_l:S/${PIE_SUFFIX}//}${PIE_SUFFIX} 571.else 572LDADD_${_l}?= ${LDADD_${_l}_L} -l${_l} 573.endif 574# Add in all dependencies for static linkage. 575# Bootstrapping from non-FreeBSD needs special handling, since it overrides 576# NO_SHARED back to yes despite only building static versions of bootstrap 577# libraries (see tools/build/mk/Makefile.boot.pre). 578.if defined(_DP_${_l}) && (${_INTERNALLIBS:M${_l}} || \ 579 (defined(NO_SHARED) && ${NO_SHARED:tl} != "no") || \ 580 (defined(BOOTSTRAPPING) && ${.MAKE.OS} != "FreeBSD")) 581.for _d in ${_DP_${_l}} 582DPADD_${_l}+= ${DPADD_${_d}} 583LDADD_${_l}+= ${LDADD_${_d}} 584.endfor 585.endif 586.endfor 587 588# These are special cases where the library is broken and anything that uses 589# it needs to add more dependencies. Broken usually means that it has a 590# cyclic dependency and cannot link its own dependencies. This is bad, please 591# fix the library instead. 592# Unless the library itself is broken then the proper place to define 593# dependencies is _DP_* above. 594 595# libatf-c++ exposes libatf-c abi hence we need to explicit link to atf_c for 596# atf_cxx 597DPADD_atf_cxx+= ${DPADD_atf_c} 598LDADD_atf_cxx+= ${LDADD_atf_c} 599 600DPADD_gmock+= ${DPADD_gtest} 601LDADD_gmock+= ${LDADD_gtest} 602 603DPADD_gmock_main+= ${DPADD_gmock} 604LDADD_gmock_main+= ${LDADD_gmock} 605 606DPADD_gtest_main+= ${DPADD_gtest} 607LDADD_gtest_main+= ${LDADD_gtest} 608 609# Detect LDADD/DPADD that should be LIBADD, before modifying LDADD here. 610_BADLDADD= 611.for _l in ${LDADD:M-l*:N-l*/*:C,^-l,,} 612.if ${_LIBRARIES:M${_l}} && !${_PRIVATELIBS:M${_l}} 613_BADLDADD+= ${_l} 614.endif 615.endfor 616.if !empty(_BADLDADD) 617.error ${.CURDIR}: These libraries should be LIBADD+=foo rather than DPADD/LDADD+=-lfoo: ${_BADLDADD} 618.endif 619 620.for _l in ${LIBADD} 621DPADD+= ${DPADD_${_l}} 622LDADD+= ${LDADD_${_l}} 623.endfor 624 625_LIB_OBJTOP?= ${OBJTOP} 626# INTERNALLIB definitions. 627LIBDIFFDIR= ${_LIB_OBJTOP}/lib/libdiff 628LIBDIFF?= ${LIBDIFFDIR}/libdiff${PIE_SUFFIX}.a 629 630LIBELFTCDIR= ${_LIB_OBJTOP}/lib/libelftc 631LIBELFTC?= ${LIBELFTCDIR}/libelftc${PIE_SUFFIX}.a 632 633LIBFDTDIR= ${_LIB_OBJTOP}/lib/libfdt 634LIBFDT?= ${LIBFDTDIR}/libfdt${PIE_SUFFIX}.a 635 636LIBLUADIR= ${_LIB_OBJTOP}/lib/liblua 637LIBLUA?= ${LIBLUADIR}/liblua${PIE_SUFFIX}.a 638 639LIBLUTOKDIR= ${_LIB_OBJTOP}/lib/liblutok 640LIBLUTOK?= ${LIBLUTOKDIR}/liblutok${PIE_SUFFIX}.a 641 642LIBPEDIR= ${_LIB_OBJTOP}/lib/libpe 643LIBPE?= ${LIBPEDIR}/libpe${PIE_SUFFIX}.a 644 645LIBOPENBSDDIR= ${_LIB_OBJTOP}/lib/libopenbsd 646LIBOPENBSD?= ${LIBOPENBSDDIR}/libopenbsd${PIE_SUFFIX}.a 647 648LIBSMDIR= ${_LIB_OBJTOP}/lib/libsm 649LIBSM?= ${LIBSMDIR}/libsm${PIE_SUFFIX}.a 650 651LIBSMDBDIR= ${_LIB_OBJTOP}/lib/libsmdb 652LIBSMDB?= ${LIBSMDBDIR}/libsmdb${PIE_SUFFIX}.a 653 654LIBSMUTILDIR= ${_LIB_OBJTOP}/lib/libsmutil 655LIBSMUTIL?= ${LIBSMUTILDIR}/libsmutil${PIE_SUFFIX}.a 656 657LIBSYSDIR= ${_LIB_OBJTOP}/lib/libsys 658LIBSYS?= ${LIBSYSDIR}/libsys${PIE_SUFFIX}.a 659 660LIBNETBSDDIR?= ${_LIB_OBJTOP}/lib/libnetbsd 661LIBNETBSD?= ${LIBNETBSDDIR}/libnetbsd${PIE_SUFFIX}.a 662 663LIBVERSDIR?= ${_LIB_OBJTOP}/kerberos5/lib/libvers 664LIBVERS?= ${LIBVERSDIR}/libvers${PIE_SUFFIX}.a 665 666LIBSLDIR= ${_LIB_OBJTOP}/kerberos5/lib/libsl 667LIBSL?= ${LIBSLDIR}/libsl${PIE_SUFFIX}.a 668 669LIBIFCONFIGDIR= ${_LIB_OBJTOP}/lib/libifconfig 670LIBIFCONFIG?= ${LIBIFCONFIGDIR}/libifconfig${PIE_SUFFIX}.a 671 672LIBIPFDIR= ${_LIB_OBJTOP}/sbin/ipf/libipf 673LIBIPF?= ${LIBIPFDIR}/libipf${PIE_SUFFIX}.a 674 675LIBNVDIR= ${_LIB_OBJTOP}/lib/libnv 676LIBNV?= ${LIBNVDIR}/libnv${PIE_SUFFIX}.a 677 678LIBISCSIUTILDIR= ${_LIB_OBJTOP}/lib/libiscsiutil 679LIBISCSIUTIL?= ${LIBISCSIUTILDIR}/libiscsiutil${PIE_SUFFIX}.a 680 681LIBNVMFDIR= ${_LIB_OBJTOP}/lib/libnvmf 682LIBNVMF?= ${LIBNVMFDIR}/libnvmf${PIE_SUFFIX}.a 683 684LIBTELNETDIR= ${_LIB_OBJTOP}/lib/libtelnet 685LIBTELNET?= ${LIBTELNETDIR}/libtelnet${PIE_SUFFIX}.a 686 687LIBCRONDIR= ${_LIB_OBJTOP}/usr.sbin/cron/lib 688LIBCRON?= ${LIBCRONDIR}/libcron${PIE_SUFFIX}.a 689 690LIBDERDIR= ${_LIB_OBJTOP}/lib/libder 691LIBDER?= ${LIBDERDIR}/libder${PIE_SUFFIX}.a 692 693LIBNTPDIR= ${_LIB_OBJTOP}/usr.sbin/ntp/libntp 694LIBNTP?= ${LIBNTPDIR}/libntp${PIE_SUFFIX}.a 695 696LIBNTPEVENTDIR= ${_LIB_OBJTOP}/usr.sbin/ntp/libntpevent 697LIBNTPEVENT?= ${LIBNTPEVENTDIR}/libntpevent${PIE_SUFFIX}.a 698 699LIBOPTSDIR= ${_LIB_OBJTOP}/usr.sbin/ntp/libopts 700LIBOPTS?= ${LIBOPTSDIR}/libopts${PIE_SUFFIX}.a 701 702LIBPARSEDIR= ${_LIB_OBJTOP}/usr.sbin/ntp/libparse 703LIBPARSE?= ${LIBPARSEDIR}/libparse${PIE_SUFFIX}.a 704 705LIBPFCTLDIR= ${_LIB_OBJTOP}/lib/libpfctl 706LIBPFCTL?= ${LIBPFCTLDIR}/libpfctl${PIE_SUFFIX}.a 707 708LIBLPRDIR= ${_LIB_OBJTOP}/usr.sbin/lpr/common_source 709LIBLPR?= ${LIBLPRDIR}/liblpr${PIE_SUFFIX}.a 710 711LIBFIFOLOGDIR= ${_LIB_OBJTOP}/usr.sbin/fifolog/lib 712LIBFIFOLOG?= ${LIBFIFOLOGDIR}/libfifolog${PIE_SUFFIX}.a 713 714LIBBSNMPTOOLSDIR= ${_LIB_OBJTOP}/usr.sbin/bsnmpd/tools/libbsnmptools 715LIBBSNMPTOOLS?= ${LIBBSNMPTOOLSDIR}/libbsnmptools${PIE_SUFFIX}.a 716 717LIBBE?= ${LIBBEDIR}/libbe${PIE_SUFFIX}.a 718 719LIBPKGECCDIR= ${_LIB_OBJTOP}/secure/lib/libpkgecc 720LIBPKGECC?= ${LIBPKGECCDIR}/libpkgecc${PIE_SUFFIX}.a 721 722LIBPMCSTATDIR= ${_LIB_OBJTOP}/lib/libpmcstat 723LIBPMCSTAT?= ${LIBPMCSTATDIR}/libpmcstat${PIE_SUFFIX}.a 724 725LIBUTIL++DIR= ${_LIB_OBJTOP}/lib/libutil++ 726LIBUTIL++?= ${LIBUTIL++DIR}/libutil++${PIE_SUFFIX}.a 727 728LIBWPAAPDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/ap 729LIBWPAAP?= ${LIBWPAAPDIR}/libwpaap${PIE_SUFFIX}.a 730 731LIBWPACOMMONDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/common 732LIBWPACOMMON?= ${LIBWPACOMMONDIR}/libwpacommon${PIE_SUFFIX}.a 733 734LIBWPACRYPTODIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/crypto 735LIBWPACRYPTO?= ${LIBWPACRYPTODIR}/libwpacrypto${PIE_SUFFIX}.a 736 737LIBWPADRIVERSDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/drivers 738LIBWPADRIVERS?= ${LIBWPADRIVERSDIR}/libwpadrivers${PIE_SUFFIX}.a 739 740LIBWPAEAP_COMMONDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/eap_common 741LIBWPAEAP_COMMON?= ${LIBWPAEAP_COMMONDIR}/libwpaeap_common${PIE_SUFFIX}.a 742 743LIBWPAEAP_PEERDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/eap_peer 744LIBWPAEAP_PEER?= ${LIBWPAEAP_PEERDIR}/libwpaeap_peer${PIE_SUFFIX}.a 745 746LIBWPAEAP_SERVERDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/eap_server 747LIBWPAEAP_SERVER?= ${LIBWPAEAP_SERVERDIR}/libwpaeap_server${PIE_SUFFIX}.a 748 749LIBWPAEAPOL_AUTHDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/eapol_auth 750LIBWPAEAPOL_AUTH?= ${LIBWPAEAPOL_AUTHDIR}/libwpaeapol_auth${PIE_SUFFIX}.a 751 752LIBWPAEAPOL_SUPPDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/eapol_supp 753LIBWPAEAPOL_SUPP?= ${LIBWPAEAPOL_SUPPDIR}/libwpaeapol_supp${PIE_SUFFIX}.a 754 755LIBWPAL2_PACKETDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/l2_packet 756LIBWPAL2_PACKET?= ${LIBWPAL2_PACKETDIR}/libwpal2_packet${PIE_SUFFIX}.a 757 758LIBWPAPASNDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/pasn 759LIBWPAPASN?= ${LIBWPAPASNDIR}/libwpapasn${PIE_SUFFIX}.a 760 761LIBWPARADIUSDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/radius 762LIBWPARADIUS?= ${LIBWPARADIUSDIR}/libwparadius${PIE_SUFFIX}.a 763 764LIBWPARSN_SUPPDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/rsn_supp 765LIBWPARSN_SUPP?= ${LIBWPARSN_SUPPDIR}/libwparsn_supp${PIE_SUFFIX}.a 766 767LIBWPATLSDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/tls 768LIBWPATLS?= ${LIBWPATLSDIR}/libwpatls${PIE_SUFFIX}.a 769 770LIBWPAUTILSDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/utils 771LIBWPAUTILS?= ${LIBWPAUTILSDIR}/libwpautils${PIE_SUFFIX}.a 772 773LIBWPAWPSDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/wps 774LIBWPAWPS?= ${LIBWPAWPSDIR}/libwpawps${PIE_SUFFIX}.a 775 776LIBC_NOSSP_PICDIR= ${_LIB_OBJTOP}/lib/libc 777LIBC_NOSSP_PIC?= ${LIBC_NOSSP_PICDIR}/libc_nossp_pic.a 778 779LIBSYS_PICDIR= ${_LIB_OBJTOP}/lib/libsys 780LIBSYS_PIC?= ${LIBSYS_PICDIR}/libsys_pic.a 781 782LIBSAMPLERATEDIR?= ${_LIB_OBJTOP}/lib/libsamplerate 783LIBSAMPLERATE?= ${LIBSAMPLERATEDIR}/libsamplerate${PIE_SUFFIX}.a 784 785LIBUVMEMDIR= ${OBJTOP}/lib/libuvmem 786LIBUVMEM?= ${LIBUVMEMDIR}/libuvmem${PIE_SUFFIX}.a 787 788# Define a directory for each library. This is useful for adding -L in when 789# not using a --sysroot or for meta mode bootstrapping when there is no 790# Makefile.depend. These are sorted by directory. 791LIBAVLDIR= ${_LIB_OBJTOP}/cddl/lib/libavl 792LIBCTFDIR= ${_LIB_OBJTOP}/cddl/lib/libctf 793LIBDTRACEDIR= ${_LIB_OBJTOP}/cddl/lib/libdtrace 794LIBICPDIR= ${_LIB_OBJTOP}/cddl/lib/libicp 795LIBICP?= ${LIBICPDIR}/libicp${PIE_SUFFIX}.a 796LIBICP_RESCUEDIR= ${_LIB_OBJTOP}/cddl/lib/libicp_rescue 797LIBICP_RESCUE?= ${LIBICP_RESCUEDIR}/libicp_rescue${PIE_SUFFIX}.a 798LIBNVPAIRDIR= ${_LIB_OBJTOP}/cddl/lib/libnvpair 799LIBNVPAIR?= ${LIBNVPAIRDIR}/libnvpair${PIE_SUFFIX}.a 800LIBUMEMDIR= ${_LIB_OBJTOP}/cddl/lib/libumem 801LIBZDBDIR= ${_LIB_OBJTOP}/cddl/lib/libzdb 802LIBZDB?= ${LIBZDBDIR}/libzdb${PIE_SUFFIX}.a 803LIBZFSDIR= ${_LIB_OBJTOP}/cddl/lib/libzfs 804LIBZFS?= ${LIBZFSDIR}/libzfs${PIE_SUFFIX}.a 805LIBZFS_COREDIR= ${_LIB_OBJTOP}/cddl/lib/libzfs_core 806LIBZFS_CORE?= ${LIBZFS_COREDIR}/libzfs_core${PIE_SUFFIX}.a 807LIBZFSBOOTENVDIR= ${_LIB_OBJTOP}/cddl/lib/libzfsbootenv 808LIBZFSBOOTENV?= ${LIBZFSBOOTENVDIR}/libzfsbootenv${PIE_SUFFIX}.a 809LIBZPOOLDIR= ${_LIB_OBJTOP}/cddl/lib/libzpool 810LIBZPOOL?= ${LIBZPOOLDIR}/libzpool${PIE_SUFFIX}.a 811LIBZUTILDIR= ${_LIB_OBJTOP}/cddl/lib/libzutil 812LIBZUTIL?= ${LIBZUTILDIR}/libzutil${PIE_SUFFIX}.a 813 814# OFED support 815LIBCXGB4DIR= ${_LIB_OBJTOP}/lib/ofed/libcxgb4 816LIBIBCMDIR= ${_LIB_OBJTOP}/lib/ofed/libibcm 817LIBIBMADDIR= ${_LIB_OBJTOP}/lib/ofed/libibmad 818LIBIBNETDISCDIR=${_LIB_OBJTOP}/lib/ofed/libibnetdisc 819LIBIBUMADDIR= ${_LIB_OBJTOP}/lib/ofed/libibumad 820LIBIBVERBSDIR= ${_LIB_OBJTOP}/lib/ofed/libibverbs 821LIBIRDMADIR= ${_LIB_OBJTOP}/lib/ofed/libirdma 822LIBMLX4DIR= ${_LIB_OBJTOP}/lib/ofed/libmlx4 823LIBMLX5DIR= ${_LIB_OBJTOP}/lib/ofed/libmlx5 824LIBBNXTREDIR= ${_LIB_OBJTOP}/lib/ofed/libbnxtre 825LIBRDMACMDIR= ${_LIB_OBJTOP}/lib/ofed/librdmacm 826LIBOSMCOMPDIR= ${_LIB_OBJTOP}/lib/ofed/complib 827LIBOPENSMDIR= ${_LIB_OBJTOP}/lib/ofed/libopensm 828LIBOSMVENDORDIR=${_LIB_OBJTOP}/lib/ofed/libvendor 829 830LIBSSPDIR= ${_LIB_OBJTOP}/lib/libssp 831LIBSSP_NONSHAREDDIR= ${_LIB_OBJTOP}/lib/libssp_nonshared 832.if ${MK_MITKRB5} != "no" 833LIBAPPUTILSDIR= ${_LIB_OBJTOP}/krb5/lib/apputils 834LIBAPPUTILS?= ${LIBAPPUTILSDIR}/libapputils${PIE_SUFFIX}.a 835LIBGSSAPI_KRB5DIR= ${_LIB_OBJTOP}/krb5/lib/gssapi 836LIBGSSAPI_KRB5?= ${LIBGSSAPI_KRB5DIR}/libgssapi_krb5${PIE_SUFFIX}.a 837LIBGSSRPCDIR= ${_LIB_OBJTOP}/krb5/lib/rpc 838LIBGSSRPC?= ${LIBGSSRPCDIR}/libgssrpc${PIE_SUFFIX}.a 839LIBK5CRYPTODIR= ${_LIB_OBJTOP}/krb5/lib/crypto 840LIBK5CRYPTO?= ${LIBK5CRYPTODIR}/libk5crypto${PIE_SUFFIX}.a 841LIBK5GSSRPCDIR= ${_LIB_OBJTOP}/krb5/lib/rpc 842LIBK5GSSRPC?= ${LIBK5GSSRPCDIR}/libgssrpc${PIE_SUFFIX}.a 843LIBKADM5CLNT_MITDIR= ${_LIB_OBJTOP}/krb5/lib/kadm5clnt 844LIBKADM5CLNT_MIT?= ${LIBKADM5CLNT_MITDIR}/libkadm5clnt_mit${PIE_SUFFIX}.a 845LIBKADM5SRV_MITDIR= ${_LIB_OBJTOP}/krb5/lib/kadm5srv 846LIBKADM5SRV_MIT?= ${LIBKADM5SRV_MITDIR}/libkadm5srv_mit${PIE_SUFFIX}.a 847LIBKADMIN_COMMONDIR= ${_LIB_OBJTOP}/krb5/lib/kadmin_common 848LIBKADMIN_COMMON?= ${LIBKADMIN_COMMONDIR}/libkadmin_common${PIE_SUFFIX}.a 849LIBKDB5DIR= ${_LIB_OBJTOP}/krb5/lib/kdb 850LIBKDB5?= ${LIBKDB5DIR}/libkdb5${PIE_SUFFIX}.a 851LIBKPROP_UTILDIR= ${_LIB_OBJTOP}/krb5/lib/kprop_util 852LIBKPROP_UTIL?= ${LIBKPROP_UTILDIR}/libkprop_util${PIE_SUFFIX}.a 853LIBKRADDIR= ${_LIB_OBJTOP}/krb5/lib/krad 854LIBKRAD?= ${LIBKRADDIR}/libkrad${PIE_SUFFIX}.a 855LIBKRB5DIR= ${_LIB_OBJTOP}/krb5/lib/krb5 856LIBKRB5?= ${LIBKRB5DIR}/libkrb5${PIE_SUFFIX}.a 857LIBKRB5SSDIR= ${_LIB_OBJTOP}/krb5/util/ss 858LIBKRB5SS?= ${LIBKRB5SUPPORTDIR}/libkrb5ss${PIE_SUFFIX}.a 859LIBKRB5SUPPORTDIR= ${_LIB_OBJTOP}/krb5/util/support 860LIBKRB5SUPPORT?= ${LIBKRB5SUPPORTDIR}/libkrb5support${PIE_SUFFIX}.a 861LIBKRB5PROFILEDIR= ${_LIB_OBJTOP}/krb5/util/profile 862LIBKRB5PROFILE?= ${LIBPROFILEDIR}/libkrb5profile${PIE_SUFFIX}.a 863LIBVERTODIR= ${_LIB_OBJTOP}/krb5/util/verto 864LIBVERTO?= ${LIBVERTODIR}/libverto${PIE_SUFFIX}.a 865.else 866LIBASN1DIR= ${_LIB_OBJTOP}/kerberos5/lib/libasn1 867LIBGSSAPI_KRB5DIR= ${_LIB_OBJTOP}/kerberos5/lib/libgssapi_krb5 868LIBGSSAPI_NTLMDIR= ${_LIB_OBJTOP}/kerberos5/lib/libgssapi_ntlm 869LIBGSSAPI_SPNEGODIR= ${_LIB_OBJTOP}/kerberos5/lib/libgssapi_spnego 870LIBHDBDIR= ${_LIB_OBJTOP}/kerberos5/lib/libhdb 871LIBHEIMBASEDIR= ${_LIB_OBJTOP}/kerberos5/lib/libheimbase 872LIBHEIMIPCCDIR= ${_LIB_OBJTOP}/kerberos5/lib/libheimipcc 873LIBHEIMIPCSDIR= ${_LIB_OBJTOP}/kerberos5/lib/libheimipcs 874LIBHEIMNTLMDIR= ${_LIB_OBJTOP}/kerberos5/lib/libheimntlm 875LIBHX509DIR= ${_LIB_OBJTOP}/kerberos5/lib/libhx509 876LIBKADM5CLNTDIR= ${_LIB_OBJTOP}/kerberos5/lib/libkadm5clnt 877LIBKADM5SRVDIR= ${_LIB_OBJTOP}/kerberos5/lib/libkadm5srv 878LIBKAFS5DIR= ${_LIB_OBJTOP}/kerberos5/lib/libkafs5 879LIBKDCDIR= ${_LIB_OBJTOP}/kerberos5/lib/libkdc 880LIBKRB5DIR= ${_LIB_OBJTOP}/kerberos5/lib/libkrb5 881LIBROKENDIR= ${_LIB_OBJTOP}/kerberos5/lib/libroken 882LIBWINDDIR= ${_LIB_OBJTOP}/kerberos5/lib/libwind 883.endif 884LIBATF_CDIR= ${_LIB_OBJTOP}/lib/atf/libatf-c 885LIBATF_CXXDIR= ${_LIB_OBJTOP}/lib/atf/libatf-c++ 886LIBGMOCKDIR= ${_LIB_OBJTOP}/lib/googletest/gmock 887LIBGMOCK_MAINDIR= ${_LIB_OBJTOP}/lib/googletest/gmock_main 888LIBGTESTDIR= ${_LIB_OBJTOP}/lib/googletest/gtest 889LIBGTEST_MAINDIR= ${_LIB_OBJTOP}/lib/googletest/gtest_main 890LIBALIASDIR= ${_LIB_OBJTOP}/lib/libalias/libalias 891LIBBLACKLISTDIR= ${_LIB_OBJTOP}/lib/libblacklist 892LIBBLOCKLISTDIR= ${_LIB_OBJTOP}/lib/libblocklist 893LIBBLOCKSRUNTIMEDIR= ${_LIB_OBJTOP}/lib/libblocksruntime 894LIBBSNMPDIR= ${_LIB_OBJTOP}/lib/libbsnmp/libbsnmp 895LIBCASPERDIR= ${_LIB_OBJTOP}/lib/libcasper/libcasper 896LIBCAP_DNSDIR= ${_LIB_OBJTOP}/lib/libcasper/services/cap_dns 897LIBCAP_GRPDIR= ${_LIB_OBJTOP}/lib/libcasper/services/cap_grp 898LIBCAP_NETDIR= ${_LIB_OBJTOP}/lib/libcasper/services/cap_net 899LIBCAP_PWDDIR= ${_LIB_OBJTOP}/lib/libcasper/services/cap_pwd 900LIBCAP_SYSCTLDIR= ${_LIB_OBJTOP}/lib/libcasper/services/cap_sysctl 901LIBCAP_SYSLOGDIR= ${_LIB_OBJTOP}/lib/libcasper/services/cap_syslog 902LIBCBORDIR= ${_LIB_OBJTOP}/lib/libcbor 903LIBBSDXMLDIR= ${_LIB_OBJTOP}/lib/libexpat 904LIBFIDO2DIR= ${_LIB_OBJTOP}/lib/libfido2 905LIBKVMDIR= ${_LIB_OBJTOP}/lib/libkvm 906LIBPTHREADDIR= ${_LIB_OBJTOP}/lib/libthr 907LIBMDIR= ${_LIB_OBJTOP}/lib/msun 908LIBFORMWDIR= ${_LIB_OBJTOP}/lib/ncurses/form 909LIBMENUWDIR= ${_LIB_OBJTOP}/lib/ncurses/menu 910LIBNCURSESWDIR= ${_LIB_OBJTOP}/lib/ncurses/ncurses 911LIBTINFOWDIR= ${_LIB_OBJTOP}/lib/ncurses/tinfo 912LIBPANELWDIR= ${_LIB_OBJTOP}/lib/ncurses/panel 913LIBCRYPTODIR= ${_LIB_OBJTOP}/secure/lib/libcrypto 914LIBSPLDIR= ${_LIB_OBJTOP}/cddl/lib/libspl 915LIBSSHDIR= ${_LIB_OBJTOP}/secure/lib/libssh 916LIBSSLDIR= ${_LIB_OBJTOP}/secure/lib/libssl 917LIBTEKENDIR= ${_LIB_OBJTOP}/sys/teken/libteken 918LIBEGACYDIR= ${_LIB_OBJTOP}/tools/build 919LIBLNDIR= ${_LIB_OBJTOP}/usr.bin/lex/lib 920 921LIBTERMCAPWDIR= ${LIBTINFOWDIR} 922 923.-include <site.src.libnames.mk> 924 925# Default other library directories to lib/libNAME. 926.for lib in ${_LIBRARIES} 927LIB${lib:tu}DIR?= ${OBJTOP}/lib/lib${lib} 928.endfor 929 930# Validate that listed LIBADD are valid. 931.for _l in ${LIBADD} 932.if empty(_LIBRARIES:M${_l}) 933_BADLIBADD+= ${_l} 934.endif 935.endfor 936.if !empty(_BADLIBADD) 937.error ${.CURDIR}: Invalid LIBADD used which may need to be added to ${_this:T}: ${_BADLIBADD} 938.endif 939 940# Sanity check that libraries are defined here properly when building them. 941.if defined(LIB) && ${_LIBRARIES:M${LIB}} != "" 942.if !empty(LIBADD) && \ 943 (!defined(_DP_${LIB}) || ${LIBADD:O:u} != ${_DP_${LIB}:O:u}) 944.error ${.CURDIR}: Missing or incorrect _DP_${LIB} entry in ${_this:T}. Should match LIBADD for ${LIB} ('${LIBADD}' vs '${_DP_${LIB}}') 945.endif 946# Note that OBJTOP is not yet defined here but for the purpose of the check 947# it is fine as it resolves to the SRC directory. 948.if !defined(LIB${LIB:tu}DIR) || !exists(${SRCTOP}/${LIB${LIB:tu}DIR:S,^${OBJTOP}/,,}) 949.error ${.CURDIR}: Missing or incorrect value for LIB${LIB:tu}DIR in ${_this:T}: ${LIB${LIB:tu}DIR:S,^${OBJTOP}/,,} 950.endif 951.if ${_INTERNALLIBS:M${LIB}} != "" && !defined(LIB${LIB:tu}) 952.error ${.CURDIR}: Missing value for LIB${LIB:tu} in ${_this:T}. Likely should be: LIB${LIB:tu}?= $${LIB${LIB:tu}DIR}/lib${LIB}.a 953.endif 954.endif 955 956.endif # !target(__<src.libnames.mk>__) 957