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