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