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