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