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