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 ifconfig \ 28 ldns \ 29 sqlite3 \ 30 ssh \ 31 ucl \ 32 unbound \ 33 zstd 34 35_INTERNALLIBS= \ 36 amu \ 37 bsnmptools \ 38 c_nossp_pic \ 39 cron \ 40 elftc \ 41 fifolog \ 42 ipf \ 43 lpr \ 44 lua \ 45 netbsd \ 46 ntp \ 47 ntpevent \ 48 openbsd \ 49 opts \ 50 parse \ 51 pe \ 52 pfctl \ 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_grp \ 85 cap_pwd \ 86 cap_random \ 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 nandfs \ 140 ncurses \ 141 ncursesw \ 142 netgraph \ 143 netmap \ 144 ngatm \ 145 nv \ 146 nvpair \ 147 opencsd \ 148 opie \ 149 pam \ 150 panel \ 151 panelw \ 152 pcap \ 153 pcsclite \ 154 pjdlog \ 155 pmc \ 156 proc \ 157 procstat \ 158 pthread \ 159 radius \ 160 regex \ 161 roken \ 162 rpcsec_gss \ 163 rpcsvc \ 164 rt \ 165 rtld_db \ 166 sbuf \ 167 sdp \ 168 sm \ 169 smb \ 170 ssl \ 171 ssp_nonshared \ 172 stdthreads \ 173 supcplusplus \ 174 sysdecode \ 175 tacplus \ 176 termcap \ 177 termcapw \ 178 ufs \ 179 ugidfw \ 180 ulog \ 181 umem \ 182 usb \ 183 usbhid \ 184 util \ 185 uutil \ 186 vmmapi \ 187 wind \ 188 wrap \ 189 xo \ 190 y \ 191 ypclnt \ 192 z \ 193 zfs_core \ 194 zfs \ 195 zpool \ 196 197.if ${MK_BLACKLIST} != "no" 198_LIBRARIES+= \ 199 blacklist \ 200 201.endif 202 203.if ${MK_OFED} != "no" 204_LIBRARIES+= \ 205 cxgb4 \ 206 ibcm \ 207 ibmad \ 208 ibnetdisc \ 209 ibumad \ 210 ibverbs \ 211 mlx4 \ 212 mlx5 \ 213 rdmacm \ 214 osmcomp \ 215 opensm \ 216 osmvendor 217.endif 218 219.if ${MK_BEARSSL} == "yes" 220_LIBRARIES+= \ 221 bearssl \ 222 secureboot \ 223 224LIBBEARSSL?= ${LIBBEARSSLDIR}/libbearssl.a 225LIBSECUREBOOT?= ${LIBSECUREBOOTDIR}/libsecureboot.a 226.endif 227 228.if ${MK_VERIEXEC} == "yes" 229_LIBRARIES+= veriexec 230 231LIBVERIEXEC?= ${LIBVERIEXECDIR}/libveriexec.a 232.endif 233 234# Each library's LIBADD needs to be duplicated here for static linkage of 235# 2nd+ order consumers. Auto-generating this would be better. 236_DP_80211= sbuf bsdxml 237_DP_archive= z bz2 lzma bsdxml 238_DP_zstd= pthread 239.if ${MK_BLACKLIST} != "no" 240_DP_blacklist+= pthread 241.endif 242_DP_crypto= pthread 243.if ${MK_OPENSSL} != "no" 244_DP_archive+= crypto 245.else 246_DP_archive+= md 247.endif 248_DP_sqlite3= pthread 249_DP_ssl= crypto 250_DP_ssh= crypto crypt z 251.if ${MK_LDNS} != "no" 252_DP_ssh+= ldns 253.endif 254_DP_edit= ncursesw 255.if ${MK_OPENSSL} != "no" 256_DP_bsnmp= crypto 257.endif 258_DP_geom= bsdxml sbuf 259_DP_cam= sbuf 260_DP_kvm= elf 261_DP_casper= nv 262_DP_cap_dns= nv 263_DP_cap_grp= nv 264_DP_cap_pwd= nv 265_DP_cap_random= nv 266_DP_cap_sysctl= nv 267_DP_cap_syslog= nv 268.if ${MK_OFED} != "no" 269_DP_pcap= ibverbs mlx5 270.endif 271_DP_pjdlog= util 272_DP_opie= md 273_DP_usb= pthread 274_DP_unbound= ssl crypto pthread 275_DP_rt= pthread 276.if ${MK_OPENSSL} == "no" 277_DP_radius= md 278.else 279_DP_radius= crypto 280.endif 281_DP_rtld_db= elf procstat 282_DP_procstat= kvm util elf 283.if ${MK_CXX} == "yes" 284.if ${MK_LIBCPLUSPLUS} != "no" 285_DP_proc= cxxrt 286.else 287_DP_proc= supcplusplus 288.endif 289.endif 290.if ${MK_CDDL} != "no" 291_DP_proc+= ctf 292.endif 293_DP_proc+= elf procstat rtld_db util 294_DP_mp= crypto 295_DP_memstat= kvm 296_DP_magic= z 297_DP_mt= sbuf bsdxml 298_DP_ldns= ssl crypto 299_DP_lua= m 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= md 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_DP_c+= ssp_nonshared 353.endif 354_DP_stdthreads= pthread 355_DP_tacplus= md 356_DP_panel= ncurses 357_DP_panelw= ncursesw 358_DP_rpcsec_gss= gssapi 359_DP_smb= kiconv 360_DP_ulog= md 361_DP_fifolog= z 362_DP_ipf= kvm 363_DP_zfs= md pthread umem util uutil m nvpair avl bsdxml geom nvpair z \ 364 zfs_core 365_DP_zfs_core= nvpair 366_DP_zpool= md pthread z nvpair avl umem 367_DP_be= zfs nvpair 368_DP_netmap= 369_DP_pfctl= nv 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# INTERNALLIB definitions. 471LIBELFTCDIR= ${OBJTOP}/lib/libelftc 472LIBELFTC?= ${LIBELFTCDIR}/libelftc${PIE_SUFFIX}.a 473 474LIBLUADIR= ${OBJTOP}/lib/liblua 475LIBLUA?= ${LIBLUADIR}/liblua${PIE_SUFFIX}.a 476 477LIBPEDIR= ${OBJTOP}/lib/libpe 478LIBPE?= ${LIBPEDIR}/libpe${PIE_SUFFIX}.a 479 480LIBOPENBSDDIR= ${OBJTOP}/lib/libopenbsd 481LIBOPENBSD?= ${LIBOPENBSDDIR}/libopenbsd${PIE_SUFFIX}.a 482 483LIBSMDIR= ${OBJTOP}/lib/libsm 484LIBSM?= ${LIBSMDIR}/libsm${PIE_SUFFIX}.a 485 486LIBSMDBDIR= ${OBJTOP}/lib/libsmdb 487LIBSMDB?= ${LIBSMDBDIR}/libsmdb${PIE_SUFFIX}.a 488 489LIBSMUTILDIR= ${OBJTOP}/lib/libsmutil 490LIBSMUTIL?= ${LIBSMUTILDIR}/libsmutil${PIE_SUFFIX}.a 491 492LIBNETBSDDIR?= ${OBJTOP}/lib/libnetbsd 493LIBNETBSD?= ${LIBNETBSDDIR}/libnetbsd${PIE_SUFFIX}.a 494 495LIBVERSDIR?= ${OBJTOP}/kerberos5/lib/libvers 496LIBVERS?= ${LIBVERSDIR}/libvers${PIE_SUFFIX}.a 497 498LIBSLDIR= ${OBJTOP}/kerberos5/lib/libsl 499LIBSL?= ${LIBSLDIR}/libsl${PIE_SUFFIX}.a 500 501LIBIPFDIR= ${OBJTOP}/sbin/ipf/libipf 502LIBIPF?= ${LIBIPFDIR}/libipf${PIE_SUFFIX}.a 503 504LIBTELNETDIR= ${OBJTOP}/lib/libtelnet 505LIBTELNET?= ${LIBTELNETDIR}/libtelnet${PIE_SUFFIX}.a 506 507LIBCRONDIR= ${OBJTOP}/usr.sbin/cron/lib 508LIBCRON?= ${LIBCRONDIR}/libcron${PIE_SUFFIX}.a 509 510LIBNTPDIR= ${OBJTOP}/usr.sbin/ntp/libntp 511LIBNTP?= ${LIBNTPDIR}/libntp${PIE_SUFFIX}.a 512 513LIBNTPEVENTDIR= ${OBJTOP}/usr.sbin/ntp/libntpevent 514LIBNTPEVENT?= ${LIBNTPEVENTDIR}/libntpevent${PIE_SUFFIX}.a 515 516LIBOPTSDIR= ${OBJTOP}/usr.sbin/ntp/libopts 517LIBOPTS?= ${LIBOPTSDIR}/libopts${PIE_SUFFIX}.a 518 519LIBPARSEDIR= ${OBJTOP}/usr.sbin/ntp/libparse 520LIBPARSE?= ${LIBPARSEDIR}/libparse${PIE_SUFFIX}.a 521 522LIBPFCTL= ${_LIB_OBJTOP}/lib/libpfctl 523LIBPFCTL?= ${LIBPFCTLDIR}/libpfctl${PIE_SUFFIX}.a 524 525LIBLPRDIR= ${OBJTOP}/usr.sbin/lpr/common_source 526LIBLPR?= ${LIBLPRDIR}/liblpr${PIE_SUFFIX}.a 527 528LIBFIFOLOGDIR= ${OBJTOP}/usr.sbin/fifolog/lib 529LIBFIFOLOG?= ${LIBFIFOLOGDIR}/libfifolog${PIE_SUFFIX}.a 530 531LIBBSNMPTOOLSDIR= ${OBJTOP}/usr.sbin/bsnmpd/tools/libbsnmptools 532LIBBSNMPTOOLS?= ${LIBBSNMPTOOLSDIR}/libbsnmptools${PIE_SUFFIX}.a 533 534LIBAMUDIR= ${OBJTOP}/usr.sbin/amd/libamu 535LIBAMU?= ${LIBAMUDIR}/libamu${PIE_SUFFIX}.a 536 537LIBBE?= ${LIBBEDIR}/libbe${PIE_SUFFIX}.a 538 539LIBPMCSTATDIR= ${OBJTOP}/lib/libpmcstat 540LIBPMCSTAT?= ${LIBPMCSTATDIR}/libpmcstat${PIE_SUFFIX}.a 541 542LIBC_NOSSP_PICDIR= ${OBJTOP}/lib/libc 543LIBC_NOSSP_PIC?= ${LIBC_NOSSP_PICDIR}/libc_nossp_pic.a 544 545# Define a directory for each library. This is useful for adding -L in when 546# not using a --sysroot or for meta mode bootstrapping when there is no 547# Makefile.depend. These are sorted by directory. 548LIBAVLDIR= ${OBJTOP}/cddl/lib/libavl 549LIBCTFDIR= ${OBJTOP}/cddl/lib/libctf 550LIBDTRACEDIR= ${OBJTOP}/cddl/lib/libdtrace 551LIBNVPAIRDIR= ${OBJTOP}/cddl/lib/libnvpair 552LIBUMEMDIR= ${OBJTOP}/cddl/lib/libumem 553LIBUUTILDIR= ${OBJTOP}/cddl/lib/libuutil 554LIBZFSDIR= ${OBJTOP}/cddl/lib/libzfs 555LIBZFS_COREDIR= ${OBJTOP}/cddl/lib/libzfs_core 556LIBZPOOLDIR= ${OBJTOP}/cddl/lib/libzpool 557 558# OFED support 559LIBCXGB4DIR= ${OBJTOP}/lib/ofed/libcxgb4 560LIBIBCMDIR= ${OBJTOP}/lib/ofed/libibcm 561LIBIBMADDIR= ${OBJTOP}/lib/ofed/libibmad 562LIBIBNETDISCDIR=${OBJTOP}/lib/ofed/libibnetdisc 563LIBIBUMADDIR= ${OBJTOP}/lib/ofed/libibumad 564LIBIBVERBSDIR= ${OBJTOP}/lib/ofed/libibverbs 565LIBMLX4DIR= ${OBJTOP}/lib/ofed/libmlx4 566LIBMLX5DIR= ${OBJTOP}/lib/ofed/libmlx5 567LIBRDMACMDIR= ${OBJTOP}/lib/ofed/librdmacm 568LIBOSMCOMPDIR= ${OBJTOP}/lib/ofed/complib 569LIBOPENSMDIR= ${OBJTOP}/lib/ofed/libopensm 570LIBOSMVENDORDIR=${OBJTOP}/lib/ofed/libvendor 571 572LIBDIALOGDIR= ${OBJTOP}/gnu/lib/libdialog 573LIBGCOVDIR= ${OBJTOP}/gnu/lib/libgcov 574LIBGOMPDIR= ${OBJTOP}/gnu/lib/libgomp 575LIBGNUREGEXDIR= ${OBJTOP}/gnu/lib/libregex 576LIBSSPDIR= ${OBJTOP}/lib/libssp 577LIBSSP_NONSHAREDDIR= ${OBJTOP}/lib/libssp_nonshared 578LIBSUPCPLUSPLUSDIR= ${OBJTOP}/gnu/lib/libsupc++ 579LIBASN1DIR= ${OBJTOP}/kerberos5/lib/libasn1 580LIBGSSAPI_KRB5DIR= ${OBJTOP}/kerberos5/lib/libgssapi_krb5 581LIBGSSAPI_NTLMDIR= ${OBJTOP}/kerberos5/lib/libgssapi_ntlm 582LIBGSSAPI_SPNEGODIR= ${OBJTOP}/kerberos5/lib/libgssapi_spnego 583LIBHDBDIR= ${OBJTOP}/kerberos5/lib/libhdb 584LIBHEIMBASEDIR= ${OBJTOP}/kerberos5/lib/libheimbase 585LIBHEIMIPCCDIR= ${OBJTOP}/kerberos5/lib/libheimipcc 586LIBHEIMIPCSDIR= ${OBJTOP}/kerberos5/lib/libheimipcs 587LIBHEIMNTLMDIR= ${OBJTOP}/kerberos5/lib/libheimntlm 588LIBHX509DIR= ${OBJTOP}/kerberos5/lib/libhx509 589LIBKADM5CLNTDIR= ${OBJTOP}/kerberos5/lib/libkadm5clnt 590LIBKADM5SRVDIR= ${OBJTOP}/kerberos5/lib/libkadm5srv 591LIBKAFS5DIR= ${OBJTOP}/kerberos5/lib/libkafs5 592LIBKDCDIR= ${OBJTOP}/kerberos5/lib/libkdc 593LIBKRB5DIR= ${OBJTOP}/kerberos5/lib/libkrb5 594LIBROKENDIR= ${OBJTOP}/kerberos5/lib/libroken 595LIBWINDDIR= ${OBJTOP}/kerberos5/lib/libwind 596LIBATF_CDIR= ${OBJTOP}/lib/atf/libatf-c 597LIBATF_CXXDIR= ${OBJTOP}/lib/atf/libatf-c++ 598LIBGMOCKDIR= ${OBJTOP}/lib/googletest/gmock 599LIBGMOCK_MAINDIR= ${OBJTOP}/lib/googletest/gmock_main 600LIBGTESTDIR= ${OBJTOP}/lib/googletest/gtest 601LIBGTEST_MAINDIR= ${OBJTOP}/lib/googletest/gtest_main 602LIBALIASDIR= ${OBJTOP}/lib/libalias/libalias 603LIBBLACKLISTDIR= ${OBJTOP}/lib/libblacklist 604LIBBLOCKSRUNTIMEDIR= ${OBJTOP}/lib/libblocksruntime 605LIBBSNMPDIR= ${OBJTOP}/lib/libbsnmp/libbsnmp 606LIBCASPERDIR= ${OBJTOP}/lib/libcasper/libcasper 607LIBCAP_DNSDIR= ${OBJTOP}/lib/libcasper/services/cap_dns 608LIBCAP_GRPDIR= ${OBJTOP}/lib/libcasper/services/cap_grp 609LIBCAP_PWDDIR= ${OBJTOP}/lib/libcasper/services/cap_pwd 610LIBCAP_RANDOMDIR= ${OBJTOP}/lib/libcasper/services/cap_random 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