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