1# $FreeBSD$ 2# 3# The include file <src.libnames.mk> define library names suitable 4# for INTERNALLIB and PRIVATELIB definition 5 6.if !target(__<bsd.init.mk>__) 7.error src.libnames.mk cannot be included directly. 8.endif 9 10.if !target(__<src.libnames.mk>__) 11__<src.libnames.mk>__: 12 13.include <src.opts.mk> 14 15_PRIVATELIBS= \ 16 atf_c \ 17 atf_cxx \ 18 bsdstat \ 19 devdctl \ 20 event \ 21 gmock \ 22 gtest \ 23 gmock_main \ 24 gtest_main \ 25 heimipcc \ 26 heimipcs \ 27 ldns \ 28 sqlite3 \ 29 ssh \ 30 ucl \ 31 unbound \ 32 zstd 33 34_INTERNALLIBS= \ 35 amu \ 36 bsnmptools \ 37 c_nossp_pic \ 38 cron \ 39 elftc \ 40 fifolog \ 41 ifconfig \ 42 ipf \ 43 lpr \ 44 lua \ 45 lutok \ 46 netbsd \ 47 ntp \ 48 ntpevent \ 49 openbsd \ 50 opts \ 51 parse \ 52 pe \ 53 pmcstat \ 54 sl \ 55 sm \ 56 smdb \ 57 smutil \ 58 telnet \ 59 vers 60 61_LIBRARIES= \ 62 ${_PRIVATELIBS} \ 63 ${_INTERNALLIBS} \ 64 ${LOCAL_LIBRARIES} \ 65 80211 \ 66 alias \ 67 archive \ 68 asn1 \ 69 auditd \ 70 avl \ 71 be \ 72 begemot \ 73 bluetooth \ 74 bsdxml \ 75 bsm \ 76 bsnmp \ 77 bz2 \ 78 c \ 79 c_pic \ 80 calendar \ 81 cam \ 82 casper \ 83 cap_dns \ 84 cap_fileargs \ 85 cap_grp \ 86 cap_pwd \ 87 cap_sysctl \ 88 cap_syslog \ 89 com_err \ 90 compiler_rt \ 91 crypt \ 92 crypto \ 93 ctf \ 94 cuse \ 95 cxxrt \ 96 devctl \ 97 devdctl \ 98 devinfo \ 99 devstat \ 100 dialog \ 101 dl \ 102 dpv \ 103 dtrace \ 104 dwarf \ 105 edit \ 106 efivar \ 107 elf \ 108 execinfo \ 109 fetch \ 110 figpar \ 111 geom \ 112 gnuregex \ 113 gpio \ 114 gssapi \ 115 gssapi_krb5 \ 116 hdb \ 117 heimbase \ 118 heimntlm \ 119 heimsqlite \ 120 hx509 \ 121 ipsec \ 122 ipt \ 123 jail \ 124 kadm5clnt \ 125 kadm5srv \ 126 kafs5 \ 127 kdc \ 128 kiconv \ 129 krb5 \ 130 kvm \ 131 l \ 132 lzma \ 133 m \ 134 magic \ 135 md \ 136 memstat \ 137 mp \ 138 mt \ 139 ncurses \ 140 ncursesw \ 141 netgraph \ 142 ngatm \ 143 nv \ 144 nvpair \ 145 opencsd \ 146 opie \ 147 pam \ 148 panel \ 149 panelw \ 150 pcap \ 151 pcsclite \ 152 pjdlog \ 153 pmc \ 154 proc \ 155 procstat \ 156 pthread \ 157 radius \ 158 regex \ 159 roken \ 160 rpcsec_gss \ 161 rpcsvc \ 162 rt \ 163 rtld_db \ 164 sbuf \ 165 sdp \ 166 sm \ 167 smb \ 168 ssl \ 169 ssp_nonshared \ 170 stats \ 171 stdthreads \ 172 supcplusplus \ 173 sysdecode \ 174 tacplus \ 175 termcap \ 176 termcapw \ 177 ufs \ 178 ugidfw \ 179 ulog \ 180 umem \ 181 usb \ 182 usbhid \ 183 util \ 184 uutil \ 185 vmmapi \ 186 wind \ 187 wrap \ 188 xo \ 189 y \ 190 ypclnt \ 191 z \ 192 zfs_core \ 193 zfs \ 194 zpool \ 195 196.if ${MK_BLACKLIST} != "no" 197_LIBRARIES+= \ 198 blacklist \ 199 200.endif 201 202.if ${MK_OFED} != "no" 203_LIBRARIES+= \ 204 cxgb4 \ 205 ibcm \ 206 ibmad \ 207 ibnetdisc \ 208 ibumad \ 209 ibverbs \ 210 mlx4 \ 211 mlx5 \ 212 rdmacm \ 213 osmcomp \ 214 opensm \ 215 osmvendor 216.endif 217 218.if ${MK_BEARSSL} == "yes" 219_INTERNALLIBS+= \ 220 bearssl \ 221 secureboot \ 222 223LIBBEARSSL?= ${LIBBEARSSLDIR}/libbearssl${PIE_SUFFIX}.a 224LIBSECUREBOOT?= ${LIBSECUREBOOTDIR}/libsecureboot${PIE_SUFFIX}.a 225.endif 226 227.if ${MK_VERIEXEC} == "yes" 228_INTERNALLIBS+= veriexec 229 230LIBVERIEXEC?= ${LIBVERIEXECDIR}/libveriexec${PIE_SUFFIX}.a 231.endif 232 233# Each library's LIBADD needs to be duplicated here for static linkage of 234# 2nd+ order consumers. Auto-generating this would be better. 235_DP_80211= sbuf bsdxml 236_DP_archive= z bz2 lzma bsdxml zstd 237_DP_zstd= pthread 238.if ${MK_BLACKLIST} != "no" 239_DP_blacklist+= pthread 240.endif 241_DP_crypto= pthread 242.if ${MK_OPENSSL} != "no" 243_DP_archive+= crypto 244.else 245_DP_archive+= md 246.endif 247_DP_sqlite3= pthread 248_DP_ssl= crypto 249_DP_ssh= crypto crypt z 250.if ${MK_LDNS} != "no" 251_DP_ssh+= ldns 252.endif 253_DP_edit= ncursesw 254.if ${MK_OPENSSL} != "no" 255_DP_bsnmp= crypto 256.endif 257_DP_geom= bsdxml sbuf 258_DP_cam= sbuf 259_DP_kvm= elf 260_DP_casper= nv 261_DP_cap_dns= nv 262_DP_cap_fileargs= nv 263_DP_cap_grp= nv 264_DP_cap_pwd= nv 265_DP_cap_sysctl= nv 266_DP_cap_syslog= nv 267.if ${MK_OFED} != "no" 268_DP_pcap= ibverbs mlx5 269.endif 270_DP_pjdlog= util 271_DP_opie= md 272_DP_usb= pthread 273_DP_unbound= ssl crypto pthread 274_DP_rt= pthread 275.if ${MK_OPENSSL} == "no" 276_DP_radius= md 277.else 278_DP_radius= crypto 279.endif 280_DP_rtld_db= elf procstat 281_DP_procstat= kvm util elf 282.if ${MK_CXX} == "yes" 283.if ${MK_LIBCPLUSPLUS} != "no" 284_DP_proc= cxxrt 285.else 286_DP_proc= supcplusplus 287.endif 288.endif 289.if ${MK_CDDL} != "no" 290_DP_proc+= ctf 291.endif 292_DP_proc+= elf procstat rtld_db util 293_DP_mp= crypto 294_DP_memstat= kvm 295_DP_magic= z 296_DP_mt= sbuf bsdxml 297_DP_ldns= ssl crypto 298_DP_lua= m 299_DP_lutok= lua 300.if ${MK_OPENSSL} != "no" 301_DP_fetch= ssl crypto 302.else 303_DP_fetch= md 304.endif 305_DP_execinfo= elf 306_DP_dwarf= elf 307_DP_dpv= dialog figpar util ncursesw 308_DP_dialog= ncursesw m 309_DP_cuse= pthread 310_DP_atf_cxx= atf_c 311_DP_gtest= pthread 312_DP_gmock= gtest 313_DP_gmock_main= gmock 314_DP_gtest_main= gtest 315_DP_devstat= kvm 316_DP_pam= radius tacplus opie md util 317.if ${MK_KERBEROS} != "no" 318_DP_pam+= krb5 319.endif 320.if ${MK_OPENSSH} != "no" 321_DP_pam+= ssh 322.endif 323.if ${MK_NIS} != "no" 324_DP_pam+= ypclnt 325.endif 326_DP_roken= crypt 327_DP_kadm5clnt= com_err krb5 roken 328_DP_kadm5srv= com_err hdb krb5 roken 329_DP_heimntlm= crypto com_err krb5 roken 330_DP_hx509= asn1 com_err crypto roken wind 331_DP_hdb= asn1 com_err krb5 roken sqlite3 332_DP_asn1= com_err roken 333_DP_kdc= roken hdb hx509 krb5 heimntlm asn1 crypto 334_DP_wind= com_err roken 335_DP_heimbase= pthread 336_DP_heimipcc= heimbase roken pthread 337_DP_heimipcs= heimbase roken pthread 338_DP_kafs5= asn1 krb5 roken 339_DP_krb5+= asn1 com_err crypt crypto hx509 roken wind heimbase heimipcc 340_DP_gssapi_krb5+= gssapi krb5 crypto roken asn1 com_err 341_DP_lzma= pthread 342_DP_ucl= m 343_DP_vmmapi= util 344_DP_opencsd= cxxrt 345_DP_ctf= z 346_DP_dtrace= ctf elf proc pthread rtld_db 347_DP_xo= util 348# The libc dependencies are not strictly needed but are defined to make the 349# assert happy. 350_DP_c= compiler_rt 351.if ${MK_SSP} != "no" && \ 352 (${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH:Mpower*} != "") 353_DP_c+= ssp_nonshared 354.endif 355_DP_stats= sbuf pthread 356_DP_stdthreads= pthread 357_DP_tacplus= md 358_DP_panel= ncurses 359_DP_panelw= ncursesw 360_DP_rpcsec_gss= gssapi 361_DP_smb= kiconv 362_DP_ulog= md 363_DP_fifolog= z 364_DP_ipf= kvm 365_DP_zfs= md pthread umem util uutil m nvpair avl bsdxml geom nvpair z \ 366 zfs_core 367_DP_zfs_core= nvpair 368_DP_zpool= md pthread z nvpair avl umem 369_DP_be= zfs nvpair 370 371# OFED support 372.if ${MK_OFED} != "no" 373_DP_cxgb4= ibverbs pthread 374_DP_ibcm= ibverbs 375_DP_ibmad= ibumad 376_DP_ibnetdisc= osmcomp ibmad ibumad 377_DP_ibumad= 378_DP_ibverbs= 379_DP_mlx4= ibverbs pthread 380_DP_mlx5= ibverbs pthread 381_DP_rdmacm= ibverbs 382_DP_osmcomp= pthread 383_DP_opensm= pthread 384_DP_osmvendor= ibumad pthread 385.endif 386 387# Define special cases 388LDADD_supcplusplus= -lsupc++ 389LIBATF_C= ${LIBDESTDIR}${LIBDIR_BASE}/libprivateatf-c.a 390LIBATF_CXX= ${LIBDESTDIR}${LIBDIR_BASE}/libprivateatf-c++.a 391LDADD_atf_c= -lprivateatf-c 392LDADD_atf_cxx= -lprivateatf-c++ 393 394LIBGMOCK= ${LIBDESTDIR}${LIBDIR_BASE}/libprivategmock.a 395LIBGMOCK_MAIN= ${LIBDESTDIR}${LIBDIR_BASE}/libprivategmock_main.a 396LIBGTEST= ${LIBDESTDIR}${LIBDIR_BASE}/libprivategtest.a 397LIBGTEST_MAIN= ${LIBDESTDIR}${LIBDIR_BASE}/libprivategtest_main.a 398LDADD_gmock= -lprivategmock 399LDADD_gtest= -lprivategtest 400LDADD_gmock_main= -lprivategmock_main 401LDADD_gtest_main= -lprivategtest_main 402 403.for _l in ${_PRIVATELIBS} 404LIB${_l:tu}?= ${LIBDESTDIR}${LIBDIR_BASE}/libprivate${_l}.a 405.endfor 406 407.if ${MK_PIE} != "no" 408PIE_SUFFIX= _pie 409.endif 410 411.for _l in ${_LIBRARIES} 412.if ${_INTERNALLIBS:M${_l}} || !defined(SYSROOT) 413LDADD_${_l}_L+= -L${LIB${_l:tu}DIR} 414.endif 415DPADD_${_l}?= ${LIB${_l:tu}} 416.if ${_PRIVATELIBS:M${_l}} 417LDADD_${_l}?= -lprivate${_l} 418.elif ${_INTERNALLIBS:M${_l}} 419LDADD_${_l}?= ${LDADD_${_l}_L} -l${_l:S/${PIE_SUFFIX}//}${PIE_SUFFIX} 420.else 421LDADD_${_l}?= ${LDADD_${_l}_L} -l${_l} 422.endif 423# Add in all dependencies for static linkage. 424.if defined(_DP_${_l}) && (${_INTERNALLIBS:M${_l}} || \ 425 (defined(NO_SHARED) && ${NO_SHARED:tl} != "no")) 426.for _d in ${_DP_${_l}} 427DPADD_${_l}+= ${DPADD_${_d}} 428LDADD_${_l}+= ${LDADD_${_d}} 429.endfor 430.endif 431.endfor 432 433# These are special cases where the library is broken and anything that uses 434# it needs to add more dependencies. Broken usually means that it has a 435# cyclic dependency and cannot link its own dependencies. This is bad, please 436# fix the library instead. 437# Unless the library itself is broken then the proper place to define 438# dependencies is _DP_* above. 439 440# libatf-c++ exposes libatf-c abi hence we need to explicit link to atf_c for 441# atf_cxx 442DPADD_atf_cxx+= ${DPADD_atf_c} 443LDADD_atf_cxx+= ${LDADD_atf_c} 444 445DPADD_gmock+= ${DPADD_gtest} 446LDADD_gmock+= ${LDADD_gtest} 447 448DPADD_gmock_main+= ${DPADD_gmock} 449LDADD_gmock_main+= ${LDADD_gmock} 450 451DPADD_gtest_main+= ${DPADD_gtest} 452LDADD_gtest_main+= ${LDADD_gtest} 453 454# Detect LDADD/DPADD that should be LIBADD, before modifying LDADD here. 455_BADLDADD= 456.for _l in ${LDADD:M-l*:N-l*/*:C,^-l,,} 457.if ${_LIBRARIES:M${_l}} && !${_PRIVATELIBS:M${_l}} 458_BADLDADD+= ${_l} 459.endif 460.endfor 461.if !empty(_BADLDADD) 462.error ${.CURDIR}: These libraries should be LIBADD+=foo rather than DPADD/LDADD+=-lfoo: ${_BADLDADD} 463.endif 464 465.for _l in ${LIBADD} 466DPADD+= ${DPADD_${_l}} 467LDADD+= ${LDADD_${_l}} 468.endfor 469 470_LIB_OBJTOP?= ${OBJTOP} 471# INTERNALLIB definitions. 472LIBELFTCDIR= ${_LIB_OBJTOP}/lib/libelftc 473LIBELFTC?= ${LIBELFTCDIR}/libelftc${PIE_SUFFIX}.a 474 475LIBLUADIR= ${_LIB_OBJTOP}/lib/liblua 476LIBLUA?= ${LIBLUADIR}/liblua${PIE_SUFFIX}.a 477 478LIBLUTOKDIR= ${_LIB_OBJTOP}/lib/liblutok 479LIBLUTOK?= ${LIBLUTOKDIR}/liblutok${PIE_SUFFIX}.a 480 481LIBPEDIR= ${_LIB_OBJTOP}/lib/libpe 482LIBPE?= ${LIBPEDIR}/libpe${PIE_SUFFIX}.a 483 484LIBOPENBSDDIR= ${_LIB_OBJTOP}/lib/libopenbsd 485LIBOPENBSD?= ${LIBOPENBSDDIR}/libopenbsd${PIE_SUFFIX}.a 486 487LIBSMDIR= ${_LIB_OBJTOP}/lib/libsm 488LIBSM?= ${LIBSMDIR}/libsm${PIE_SUFFIX}.a 489 490LIBSMDBDIR= ${_LIB_OBJTOP}/lib/libsmdb 491LIBSMDB?= ${LIBSMDBDIR}/libsmdb${PIE_SUFFIX}.a 492 493LIBSMUTILDIR= ${_LIB_OBJTOP}/lib/libsmutil 494LIBSMUTIL?= ${LIBSMUTILDIR}/libsmutil${PIE_SUFFIX}.a 495 496LIBNETBSDDIR?= ${_LIB_OBJTOP}/lib/libnetbsd 497LIBNETBSD?= ${LIBNETBSDDIR}/libnetbsd${PIE_SUFFIX}.a 498 499LIBVERSDIR?= ${_LIB_OBJTOP}/kerberos5/lib/libvers 500LIBVERS?= ${LIBVERSDIR}/libvers${PIE_SUFFIX}.a 501 502LIBSLDIR= ${_LIB_OBJTOP}/kerberos5/lib/libsl 503LIBSL?= ${LIBSLDIR}/libsl${PIE_SUFFIX}.a 504 505LIBIFCONFIGDIR= ${_LIB_OBJTOP}/lib/libifconfig 506LIBIFCONFIG?= ${LIBIFCONFIGDIR}/libifconfig${PIE_SUFFIX}.a 507 508LIBIPFDIR= ${_LIB_OBJTOP}/sbin/ipf/libipf 509LIBIPF?= ${LIBIPFDIR}/libipf${PIE_SUFFIX}.a 510 511LIBTELNETDIR= ${_LIB_OBJTOP}/lib/libtelnet 512LIBTELNET?= ${LIBTELNETDIR}/libtelnet${PIE_SUFFIX}.a 513 514LIBCRONDIR= ${_LIB_OBJTOP}/usr.sbin/cron/lib 515LIBCRON?= ${LIBCRONDIR}/libcron${PIE_SUFFIX}.a 516 517LIBNTPDIR= ${_LIB_OBJTOP}/usr.sbin/ntp/libntp 518LIBNTP?= ${LIBNTPDIR}/libntp${PIE_SUFFIX}.a 519 520LIBNTPEVENTDIR= ${_LIB_OBJTOP}/usr.sbin/ntp/libntpevent 521LIBNTPEVENT?= ${LIBNTPEVENTDIR}/libntpevent${PIE_SUFFIX}.a 522 523LIBOPTSDIR= ${_LIB_OBJTOP}/usr.sbin/ntp/libopts 524LIBOPTS?= ${LIBOPTSDIR}/libopts${PIE_SUFFIX}.a 525 526LIBPARSEDIR= ${_LIB_OBJTOP}/usr.sbin/ntp/libparse 527LIBPARSE?= ${LIBPARSEDIR}/libparse${PIE_SUFFIX}.a 528 529LIBLPRDIR= ${_LIB_OBJTOP}/usr.sbin/lpr/common_source 530LIBLPR?= ${LIBLPRDIR}/liblpr${PIE_SUFFIX}.a 531 532LIBFIFOLOGDIR= ${_LIB_OBJTOP}/usr.sbin/fifolog/lib 533LIBFIFOLOG?= ${LIBFIFOLOGDIR}/libfifolog${PIE_SUFFIX}.a 534 535LIBBSNMPTOOLSDIR= ${_LIB_OBJTOP}/usr.sbin/bsnmpd/tools/libbsnmptools 536LIBBSNMPTOOLS?= ${LIBBSNMPTOOLSDIR}/libbsnmptools${PIE_SUFFIX}.a 537 538LIBAMUDIR= ${_LIB_OBJTOP}/usr.sbin/amd/libamu 539LIBAMU?= ${LIBAMUDIR}/libamu${PIE_SUFFIX}.a 540 541LIBBE?= ${LIBBEDIR}/libbe${PIE_SUFFIX}.a 542 543LIBPMCSTATDIR= ${_LIB_OBJTOP}/lib/libpmcstat 544LIBPMCSTAT?= ${LIBPMCSTATDIR}/libpmcstat${PIE_SUFFIX}.a 545 546LIBC_NOSSP_PICDIR= ${_LIB_OBJTOP}/lib/libc 547LIBC_NOSSP_PIC?= ${LIBC_NOSSP_PICDIR}/libc_nossp_pic.a 548 549# Define a directory for each library. This is useful for adding -L in when 550# not using a --sysroot or for meta mode bootstrapping when there is no 551# Makefile.depend. These are sorted by directory. 552LIBAVLDIR= ${OBJTOP}/cddl/lib/libavl 553LIBCTFDIR= ${OBJTOP}/cddl/lib/libctf 554LIBDTRACEDIR= ${OBJTOP}/cddl/lib/libdtrace 555LIBNVPAIRDIR= ${OBJTOP}/cddl/lib/libnvpair 556LIBUMEMDIR= ${OBJTOP}/cddl/lib/libumem 557LIBUUTILDIR= ${OBJTOP}/cddl/lib/libuutil 558LIBZFSDIR= ${OBJTOP}/cddl/lib/libzfs 559LIBZFS_COREDIR= ${OBJTOP}/cddl/lib/libzfs_core 560LIBZPOOLDIR= ${OBJTOP}/cddl/lib/libzpool 561 562# OFED support 563LIBCXGB4DIR= ${OBJTOP}/lib/ofed/libcxgb4 564LIBIBCMDIR= ${OBJTOP}/lib/ofed/libibcm 565LIBIBMADDIR= ${OBJTOP}/lib/ofed/libibmad 566LIBIBNETDISCDIR=${OBJTOP}/lib/ofed/libibnetdisc 567LIBIBUMADDIR= ${OBJTOP}/lib/ofed/libibumad 568LIBIBVERBSDIR= ${OBJTOP}/lib/ofed/libibverbs 569LIBMLX4DIR= ${OBJTOP}/lib/ofed/libmlx4 570LIBMLX5DIR= ${OBJTOP}/lib/ofed/libmlx5 571LIBRDMACMDIR= ${OBJTOP}/lib/ofed/librdmacm 572LIBOSMCOMPDIR= ${OBJTOP}/lib/ofed/complib 573LIBOPENSMDIR= ${OBJTOP}/lib/ofed/libopensm 574LIBOSMVENDORDIR=${OBJTOP}/lib/ofed/libvendor 575 576LIBDIALOGDIR= ${OBJTOP}/gnu/lib/libdialog 577LIBGNUREGEXDIR= ${OBJTOP}/gnu/lib/libregex 578LIBSSPDIR= ${OBJTOP}/lib/libssp 579LIBSSP_NONSHAREDDIR= ${OBJTOP}/lib/libssp_nonshared 580LIBASN1DIR= ${OBJTOP}/kerberos5/lib/libasn1 581LIBGSSAPI_KRB5DIR= ${OBJTOP}/kerberos5/lib/libgssapi_krb5 582LIBGSSAPI_NTLMDIR= ${OBJTOP}/kerberos5/lib/libgssapi_ntlm 583LIBGSSAPI_SPNEGODIR= ${OBJTOP}/kerberos5/lib/libgssapi_spnego 584LIBHDBDIR= ${OBJTOP}/kerberos5/lib/libhdb 585LIBHEIMBASEDIR= ${OBJTOP}/kerberos5/lib/libheimbase 586LIBHEIMIPCCDIR= ${OBJTOP}/kerberos5/lib/libheimipcc 587LIBHEIMIPCSDIR= ${OBJTOP}/kerberos5/lib/libheimipcs 588LIBHEIMNTLMDIR= ${OBJTOP}/kerberos5/lib/libheimntlm 589LIBHX509DIR= ${OBJTOP}/kerberos5/lib/libhx509 590LIBKADM5CLNTDIR= ${OBJTOP}/kerberos5/lib/libkadm5clnt 591LIBKADM5SRVDIR= ${OBJTOP}/kerberos5/lib/libkadm5srv 592LIBKAFS5DIR= ${OBJTOP}/kerberos5/lib/libkafs5 593LIBKDCDIR= ${OBJTOP}/kerberos5/lib/libkdc 594LIBKRB5DIR= ${OBJTOP}/kerberos5/lib/libkrb5 595LIBROKENDIR= ${OBJTOP}/kerberos5/lib/libroken 596LIBWINDDIR= ${OBJTOP}/kerberos5/lib/libwind 597LIBATF_CDIR= ${OBJTOP}/lib/atf/libatf-c 598LIBATF_CXXDIR= ${OBJTOP}/lib/atf/libatf-c++ 599LIBGMOCKDIR= ${OBJTOP}/lib/googletest/gmock 600LIBGMOCK_MAINDIR= ${OBJTOP}/lib/googletest/gmock_main 601LIBGTESTDIR= ${OBJTOP}/lib/googletest/gtest 602LIBGTEST_MAINDIR= ${OBJTOP}/lib/googletest/gtest_main 603LIBALIASDIR= ${OBJTOP}/lib/libalias/libalias 604LIBBLACKLISTDIR= ${OBJTOP}/lib/libblacklist 605LIBBLOCKSRUNTIMEDIR= ${OBJTOP}/lib/libblocksruntime 606LIBBSNMPDIR= ${OBJTOP}/lib/libbsnmp/libbsnmp 607LIBCASPERDIR= ${OBJTOP}/lib/libcasper/libcasper 608LIBCAP_DNSDIR= ${OBJTOP}/lib/libcasper/services/cap_dns 609LIBCAP_GRPDIR= ${OBJTOP}/lib/libcasper/services/cap_grp 610LIBCAP_PWDDIR= ${OBJTOP}/lib/libcasper/services/cap_pwd 611LIBCAP_SYSCTLDIR= ${OBJTOP}/lib/libcasper/services/cap_sysctl 612LIBCAP_SYSLOGDIR= ${OBJTOP}/lib/libcasper/services/cap_syslog 613LIBBSDXMLDIR= ${OBJTOP}/lib/libexpat 614LIBKVMDIR= ${OBJTOP}/lib/libkvm 615LIBPTHREADDIR= ${OBJTOP}/lib/libthr 616LIBMDIR= ${OBJTOP}/lib/msun 617LIBFORMDIR= ${OBJTOP}/lib/ncurses/form 618LIBFORMLIBWDIR= ${OBJTOP}/lib/ncurses/formw 619LIBMENUDIR= ${OBJTOP}/lib/ncurses/menu 620LIBMENULIBWDIR= ${OBJTOP}/lib/ncurses/menuw 621LIBNCURSESDIR= ${OBJTOP}/lib/ncurses/ncurses 622LIBNCURSESWDIR= ${OBJTOP}/lib/ncurses/ncursesw 623LIBPANELDIR= ${OBJTOP}/lib/ncurses/panel 624LIBPANELWDIR= ${OBJTOP}/lib/ncurses/panelw 625LIBCRYPTODIR= ${OBJTOP}/secure/lib/libcrypto 626LIBSSHDIR= ${OBJTOP}/secure/lib/libssh 627LIBSSLDIR= ${OBJTOP}/secure/lib/libssl 628LIBTEKENDIR= ${OBJTOP}/sys/teken/libteken 629LIBEGACYDIR= ${OBJTOP}/tools/build 630LIBLNDIR= ${OBJTOP}/usr.bin/lex/lib 631 632LIBTERMCAPDIR= ${LIBNCURSESDIR} 633LIBTERMCAPWDIR= ${LIBNCURSESWDIR} 634 635# Default other library directories to lib/libNAME. 636.for lib in ${_LIBRARIES} 637LIB${lib:tu}DIR?= ${OBJTOP}/lib/lib${lib} 638.endfor 639 640# Validate that listed LIBADD are valid. 641.for _l in ${LIBADD} 642.if empty(_LIBRARIES:M${_l}) 643_BADLIBADD+= ${_l} 644.endif 645.endfor 646.if !empty(_BADLIBADD) 647.error ${.CURDIR}: Invalid LIBADD used which may need to be added to ${_this:T}: ${_BADLIBADD} 648.endif 649 650# Sanity check that libraries are defined here properly when building them. 651.if defined(LIB) && ${_LIBRARIES:M${LIB}} != "" 652.if !empty(LIBADD) && \ 653 (!defined(_DP_${LIB}) || ${LIBADD:O:u} != ${_DP_${LIB}:O:u}) 654.error ${.CURDIR}: Missing or incorrect _DP_${LIB} entry in ${_this:T}. Should match LIBADD for ${LIB} ('${LIBADD}' vs '${_DP_${LIB}}') 655.endif 656# Note that OBJTOP is not yet defined here but for the purpose of the check 657# it is fine as it resolves to the SRC directory. 658.if !defined(LIB${LIB:tu}DIR) || !exists(${SRCTOP}/${LIB${LIB:tu}DIR:S,^${OBJTOP}/,,}) 659.error ${.CURDIR}: Missing or incorrect value for LIB${LIB:tu}DIR in ${_this:T}: ${LIB${LIB:tu}DIR:S,^${OBJTOP}/,,} 660.endif 661.if ${_INTERNALLIBS:M${LIB}} != "" && !defined(LIB${LIB:tu}) 662.error ${.CURDIR}: Missing value for LIB${LIB:tu} in ${_this:T}. Likely should be: LIB${LIB:tu}?= $${LIB${LIB:tu}DIR}/lib${LIB}.a 663.endif 664.endif 665 666.endif # !target(__<src.libnames.mk>__) 667