mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-11-07 04:36:52 -10:00
The "-f" dump option allows a dump of the Heimdal
KDC in a format that the MIT kdb5_util command can
load into a MIT KDC's database.
This makes transitioning from the Heimdal KDC to
the current MIT one feasible without having to
re-create the KDC database from scratch.
glebius@ did the initial work, cherry picking these
commits from the Heimdal sources on github and then doing
extensive merge conflict resolution and other fixes so
that it would build.
Heimdal commit fca5399 authored by Nico Williams:
Initial commit for second approach for multiple kvno. NOT TESTED!
Heimdal commit 57f1545 authored by Nico Williams:
Add support for writing to KDB and dumping HDB to MIT KDB dump format
Before this change Heimdal could read KDBs. Now it can write to
them too.
Heimdal can now also dump HDBs (including KDBs) in MIT format,
which can then be imported with kdb5_util load.
This is intended to help in migrations from MIT to Heimdal by
allowing migrations from Heimdal to MIT so that it is possible
to rollback from Heimdal to MIT should there be any issues. The
idea is to allow a) running Heimdal kdc/kadmind with a KDB, or
b) running Heimdal with an HDB converted from a KDB and then
rollback by dumping the HDB and loading a KDB.
Note that not all TL data types are supported, only two: last
password change and modify-by. This is the minimum necessary.
PKINIT users may need to add support for KRB5_TL_USER_CERTIFICATE,
and for databases with K/M history we may need to add KRB5_TL_MKVNO
support.
This resulted in a Heimdal kadmin that would dump
the KDC database in MIT format. However, there
were issues when this dump was loaded into the
current MIT KDC in FreeBSD current/15.0.
The changes I did to make the dump more useful are listed below:
When "-f MIT" is used for "kadmin -l dump" it writes
the dump out in MIT format. This dump format is understood
by the MIT kdb5_util command. The patch modifies the above
so that the MIT KDC's master key keytab file can be provided
as the argument to "-f" so that the principals are re-encrypted in
it. This allows any principal with at least one strong encryption
type key to work without needing a change_password.
The strong encryption types supported by the Heimdal KDC are:
aes256-cts-hmac-sha1-96
aes128-cts-hmac-sha1-96
The issues my changes address are:
- If there are weak encryption keys in a principal's entry,
MIT's kadmin.local will report that the principcal's entry
is incomplete or corrupted.
- The keys are encrypted in Heimdal's master key. The
"-d" option can be used on the "kadmin -l dump" to
de-encrypt them, but the passwords will not work on the
current MIT KDC.
To try and deal with the above issues, this patch modied the above to:
- Does not dump the weak keys.
- Re-encrypts the strong keys in MIT's master key if the argument
to "-f" is actually a filename which holds the MIT KDC's
master key keytab and not "MIT".
- For principals that only have weak keys, it generates
a fake strong key. This key will not work on the MIT
KDC, but the principal entry will work once a
change_password is done to it.
- It always generates a "modified_by" entry, faking one if
not already present in the Heimdal KDC database.
This was necessary, since the MIT kadmin will
report that the principal entry is "incomplete or
corrupted" without one.
It also fixed a problem where "get principal" no longer
worked after the initial patch was applied.
A man page update will be done as a separate commit.
I believe this commit is acceptable since the Heimdal
sources are now essentially deprecated in favor of the
MIT sources and that this new "-f" patch simplifies
the transition to the MIT KDC.
Discussed with: glebius, cy
MFC after: 3 days
932 lines
25 KiB
Makefile
932 lines
25 KiB
Makefile
#
|
|
# The include file <src.libnames.mk> define library names suitable
|
|
# for INTERNALLIB and PRIVATELIB definition
|
|
|
|
.if !target(__<bsd.init.mk>__)
|
|
.error src.libnames.mk cannot be included directly.
|
|
.endif
|
|
|
|
.if !target(__<src.libnames.mk>__)
|
|
__<src.libnames.mk>__: .NOTMAIN
|
|
|
|
.include <src.opts.mk>
|
|
|
|
_PRIVATELIBS= \
|
|
atf_c \
|
|
atf_cxx \
|
|
auditd \
|
|
bsddialog \
|
|
bsdstat \
|
|
cbor \
|
|
devdctl \
|
|
event1 \
|
|
fido2 \
|
|
gmock \
|
|
gtest \
|
|
gmock_main \
|
|
gtest_main \
|
|
heimipcc \
|
|
heimipcs \
|
|
kldelf \
|
|
ldns \
|
|
samplerate \
|
|
sqlite3 \
|
|
ssh \
|
|
ucl \
|
|
unbound \
|
|
yaml \
|
|
zstd
|
|
|
|
# Let projects based on FreeBSD append to _PRIVATELIBS
|
|
# by maintaining their own LOCAL_PRIVATELIBS list.
|
|
_PRIVATELIBS+= ${LOCAL_PRIVATELIBS}
|
|
|
|
_INTERNALLIBS= \
|
|
amu \
|
|
apputils \
|
|
bsnmptools \
|
|
c_nossp_pic \
|
|
cron \
|
|
der \
|
|
diff \
|
|
elftc \
|
|
fdt \
|
|
fifolog \
|
|
ifconfig \
|
|
ipf \
|
|
iscsiutil \
|
|
kadmin_common \
|
|
kprop_util \
|
|
krb5apputils \
|
|
krb5ss \
|
|
lpr \
|
|
lua \
|
|
lutok \
|
|
netbsd \
|
|
ntp \
|
|
ntpevent \
|
|
nvmf \
|
|
openbsd \
|
|
opts \
|
|
parse \
|
|
pe \
|
|
pfctl \
|
|
pkgecc \
|
|
pmcstat \
|
|
sl \
|
|
sm \
|
|
smdb \
|
|
smutil \
|
|
telnet \
|
|
util++ \
|
|
vers \
|
|
wpaap \
|
|
wpacommon \
|
|
wpacrypto \
|
|
wpadrivers \
|
|
wpaeap_common \
|
|
wpaeap_peer \
|
|
wpaeap_server \
|
|
wpaeapol_auth \
|
|
wpaeapol_supp \
|
|
wpal2_packet \
|
|
wpapasn \
|
|
wparadius \
|
|
wparsn_supp \
|
|
wpatls \
|
|
wpautils \
|
|
wpawps
|
|
|
|
# Let projects based on FreeBSD append to _INTERNALLIBS
|
|
# by maintaining their own LOCAL_INTERNALLIBS list.
|
|
_INTERNALLIBS+= ${LOCAL_INTERNALLIBS}
|
|
|
|
_LIBRARIES= \
|
|
${_PRIVATELIBS} \
|
|
${_INTERNALLIBS} \
|
|
${LOCAL_LIBRARIES} \
|
|
80211 \
|
|
9p \
|
|
alias \
|
|
archive \
|
|
asn1 \
|
|
avl \
|
|
BlocksRuntime \
|
|
be \
|
|
begemot \
|
|
bluetooth \
|
|
bsdxml \
|
|
bsm \
|
|
bsnmp \
|
|
bz2 \
|
|
c \
|
|
c_pic \
|
|
calendar \
|
|
cam \
|
|
casper \
|
|
cap_dns \
|
|
cap_fileargs \
|
|
cap_grp \
|
|
cap_net \
|
|
cap_netdb \
|
|
cap_pwd \
|
|
cap_sysctl \
|
|
cap_syslog \
|
|
com_err \
|
|
compiler_rt \
|
|
crypt \
|
|
crypto \
|
|
ctf \
|
|
cuse \
|
|
cxxrt \
|
|
devctl \
|
|
devdctl \
|
|
devinfo \
|
|
devstat \
|
|
dialog \
|
|
dl \
|
|
dpv \
|
|
dtrace \
|
|
dwarf \
|
|
edit \
|
|
efivar \
|
|
elf \
|
|
execinfo \
|
|
fetch \
|
|
figpar \
|
|
formw \
|
|
geom \
|
|
gpio \
|
|
gssapi \
|
|
gssapi_krb5 \
|
|
gssrpc \
|
|
hdb \
|
|
heimbase \
|
|
heimntlm \
|
|
heimsqlite \
|
|
hx509 \
|
|
icp \
|
|
ipsec \
|
|
ipt \
|
|
jail \
|
|
k5crypto \
|
|
kadm5 \
|
|
kadmin_common \
|
|
kafs5 \
|
|
kdb5 \
|
|
kdc \
|
|
kiconv \
|
|
krad \
|
|
krb5 \
|
|
krb5profile \
|
|
krb5support \
|
|
kvm \
|
|
l \
|
|
lzma \
|
|
m \
|
|
magic \
|
|
md \
|
|
memstat \
|
|
mp \
|
|
mt \
|
|
ncursesw \
|
|
netgraph \
|
|
netmap \
|
|
ngatm \
|
|
nv \
|
|
nvpair \
|
|
opencsd \
|
|
pam \
|
|
panel \
|
|
panelw \
|
|
pcap \
|
|
pcsclite \
|
|
pjdlog \
|
|
pmc \
|
|
proc \
|
|
procstat \
|
|
pthread \
|
|
radius \
|
|
regex \
|
|
roken \
|
|
rpcsec_gss \
|
|
rpcsvc \
|
|
rt \
|
|
rtld_db \
|
|
sbuf \
|
|
sdp \
|
|
sm \
|
|
smb \
|
|
spl \
|
|
ssl \
|
|
ssp_nonshared \
|
|
stats \
|
|
stdthreads \
|
|
supcplusplus \
|
|
sys \
|
|
sysdecode \
|
|
tacplus \
|
|
termcapw \
|
|
tinfow \
|
|
tpool \
|
|
ufs \
|
|
ugidfw \
|
|
ulog \
|
|
umem \
|
|
usb \
|
|
usbhid \
|
|
util \
|
|
uutil \
|
|
verto \
|
|
vmmapi \
|
|
wind \
|
|
wrap \
|
|
xo \
|
|
y \
|
|
ypclnt \
|
|
z \
|
|
zdb \
|
|
zfs_core \
|
|
zfs \
|
|
zfsbootenv \
|
|
zpool \
|
|
zutil
|
|
|
|
.if ${MK_KERBEROS} != "no" && ${MK_MITKRB5} != "no"
|
|
_LIBRARIES+= \
|
|
kadm5clnt_mit \
|
|
kadm5srv_mit
|
|
.else
|
|
_LIBRARIES+= \
|
|
kadm5clnt \
|
|
kadm5srv
|
|
.endif
|
|
|
|
.if ${MK_BLACKLIST} != "no"
|
|
_LIBRARIES+= \
|
|
blacklist \
|
|
|
|
.endif
|
|
|
|
.if ${MK_OFED} != "no"
|
|
_LIBRARIES+= \
|
|
cxgb4 \
|
|
ibcm \
|
|
ibmad \
|
|
ibnetdisc \
|
|
ibumad \
|
|
ibverbs \
|
|
irdma \
|
|
mlx4 \
|
|
mlx5 \
|
|
rdmacm \
|
|
osmcomp \
|
|
opensm \
|
|
osmvendor
|
|
.endif
|
|
|
|
.if ${MK_BEARSSL} == "yes"
|
|
_LIBRARIES+= \
|
|
bearssl \
|
|
secureboot \
|
|
|
|
LIBBEARSSL?= ${LIBBEARSSLDIR}/libbearssl.a
|
|
LIBSECUREBOOT?= ${LIBSECUREBOOTDIR}/libsecureboot.a
|
|
.endif
|
|
|
|
.if ${MK_VERIEXEC} == "yes"
|
|
_LIBRARIES+= veriexec
|
|
|
|
LIBVERIEXEC?= ${LIBVERIEXECDIR}/libveriexec.a
|
|
.endif
|
|
|
|
# Each library's LIBADD needs to be duplicated here for static linkage of
|
|
# 2nd+ order consumers. Auto-generating this would be better.
|
|
_DP_80211= sbuf bsdxml
|
|
_DP_9p= sbuf
|
|
.if ${MK_CASPER} != "no"
|
|
_DP_9p+= casper cap_pwd cap_grp
|
|
.endif
|
|
|
|
# XXX: Not bootstrapped so uses host version on non-FreeBSD, so don't use a
|
|
# FreeBSD-specific dependency list
|
|
.if ${.MAKE.OS} == "FreeBSD" || !defined(BOOTSTRAPPING)
|
|
_DP_archive= z bz2 lzma bsdxml zstd
|
|
.endif
|
|
_DP_avl= spl
|
|
_DP_bsddialog= ncursesw tinfow
|
|
_DP_zstd= pthread
|
|
.if ${MK_BLACKLIST} != "no"
|
|
_DP_blacklist+= pthread
|
|
.endif
|
|
_DP_crypto= pthread
|
|
# See comment by _DP_archive above
|
|
.if ${.MAKE.OS} == "FreeBSD" || !defined(BOOTSTRAPPING)
|
|
.if ${MK_OPENSSL} != "no"
|
|
_DP_archive+= crypto
|
|
.else
|
|
_DP_archive+= md
|
|
.endif
|
|
.endif
|
|
_DP_sqlite3= pthread
|
|
_DP_ssl= pthread crypto
|
|
_DP_ssh= crypto crypt z
|
|
.if ${MK_LDNS} != "no"
|
|
_DP_ssh+= ldns
|
|
.endif
|
|
_DP_edit= tinfow
|
|
.if ${MK_OPENSSL} != "no"
|
|
_DP_bsnmp= crypto
|
|
.endif
|
|
_DP_geom= bsdxml sbuf
|
|
_DP_cam= sbuf
|
|
_DP_kldelf= elf
|
|
_DP_kvm= elf
|
|
_DP_casper= nv
|
|
_DP_cap_dns= nv
|
|
_DP_cap_fileargs= nv
|
|
_DP_cap_grp= nv
|
|
_DP_cap_pwd= nv
|
|
_DP_cap_sysctl= nv
|
|
_DP_cap_syslog= nv
|
|
_DP_crypt= md
|
|
.if ${MK_OFED} != "no"
|
|
_DP_pcap= ibverbs mlx5
|
|
.endif
|
|
_DP_pjdlog= util
|
|
_DP_usb= pthread
|
|
_DP_unbound= ssl crypto pthread
|
|
_DP_rt= pthread
|
|
.if ${MK_OPENSSL} == "no"
|
|
_DP_radius= md
|
|
.else
|
|
_DP_radius= crypto
|
|
.endif
|
|
_DP_rtld_db= elf procstat
|
|
_DP_procstat= kvm util elf
|
|
_DP_proc= cxxrt
|
|
.if ${MK_CDDL} != "no"
|
|
_DP_proc+= ctf
|
|
.endif
|
|
_DP_proc+= elf procstat rtld_db util z
|
|
_DP_mp= crypto
|
|
_DP_memstat= kvm
|
|
_DP_magic= z
|
|
_DP_mt= sbuf bsdxml
|
|
_DP_nvmf= nv
|
|
_DP_ldns= ssl crypto
|
|
_DP_lua= m
|
|
_DP_lutok= lua
|
|
.if ${MK_OPENSSL} != "no"
|
|
_DP_fetch= ssl crypto
|
|
.else
|
|
_DP_fetch= md
|
|
.endif
|
|
_DP_execinfo= elf
|
|
_DP_dwarf= elf z
|
|
_DP_dpv= dialog figpar util tinfow ncursesw
|
|
_DP_dialog= tinfow ncursesw m
|
|
_DP_cuse= pthread
|
|
_DP_atf_cxx= atf_c
|
|
_DP_gtest= pthread regex
|
|
_DP_gmock= gtest
|
|
_DP_gmock_main= gmock
|
|
_DP_gtest_main= gtest
|
|
_DP_devstat= kvm
|
|
_DP_pam= radius tacplus md util
|
|
.if ${MK_KERBEROS} != "no" && ${MK_MITKRB5} != "no"
|
|
_DP_pam+= krb5
|
|
.endif
|
|
.if ${MK_OPENSSH} != "no"
|
|
_DP_fido2+= crypto z
|
|
_DP_pam+= ssh
|
|
.endif
|
|
.if ${MK_NIS} != "no"
|
|
_DP_pam+= ypclnt
|
|
.endif
|
|
.if ${MK_KERBEROS} != "no"
|
|
.if ${MK_MITKRB5} != "no"
|
|
# _DP_krb5support= no dependencies except for libc
|
|
# _DP_verto= no dependencies except for libc
|
|
# _DP_apputils= no dependencies except for libc
|
|
_DP_com_err= krb5support
|
|
_DP_k5crypto= com_err krb5support crypto
|
|
_DP_krb5profile= com_err krb5support
|
|
_DP_gssapi_krb5= krb5 k5crypto com_err krb5profile krb5support
|
|
_DP_kadm5clnt_mit= gssrpc gssapi_krb5 krb5 k5crypto krb5support com_err krb5profile
|
|
_DP_kadm5srv_mit= krb5profile gssrpc gssapi_krb5 kdb5 krb5 k5crypto krb5support com_err
|
|
_DP_kdb5= gssrpc krb5 k5crypto com_err krb5support gssapi_krb5 krb5profile
|
|
_DP_krad= krb5 k5crypto com_err krb5profile krb5support verto
|
|
_DP_krb5= krb5profile k5crypto com_err krb5support
|
|
_DP_gssrpc= gssapi_krb5 krb5 k5crypto com_err krb5support
|
|
.else
|
|
_DP_roken= crypt
|
|
_DP_kadm5clnt= com_err krb5 roken
|
|
_DP_kadm5srv= com_err hdb krb5 roken
|
|
_DP_heimntlm= crypto com_err krb5 roken
|
|
_DP_hx509= asn1 com_err crypto roken wind
|
|
_DP_hdb= asn1 com_err krb5 roken sqlite3 heimbase
|
|
_DP_asn1= com_err roken
|
|
_DP_kdc= roken hdb hx509 krb5 heimntlm asn1 crypto
|
|
_DP_wind= com_err roken
|
|
_DP_heimbase= pthread
|
|
_DP_heimipcc= heimbase roken pthread
|
|
_DP_heimipcs= heimbase roken pthread
|
|
_DP_kafs5= asn1 krb5 roken
|
|
_DP_krb5= asn1 com_err crypt crypto hx509 roken wind heimbase heimipcc
|
|
_DP_gssapi_krb5= gssapi krb5 crypto roken asn1 com_err
|
|
.endif
|
|
.endif
|
|
_DP_lzma= md pthread
|
|
_DP_ucl= m
|
|
_DP_vmmapi= util
|
|
_DP_opencsd= cxxrt
|
|
_DP_ctf= spl z
|
|
_DP_dtrace= ctf elf proc pthread rtld_db xo
|
|
_DP_xo= util
|
|
_DP_ztest= geom m nvpair umem zpool pthread avl zfs_core spl zutil zfs uutil icp
|
|
# The libc dependencies are not strictly needed but are defined to make the
|
|
# assert happy.
|
|
_DP_c= compiler_rt sys
|
|
# Use libssp_nonshared only on i386 and power*. Other archs emit direct calls
|
|
# to __stack_chk_fail, not __stack_chk_fail_local provided by libssp_nonshared.
|
|
.if ${MK_SSP} != "no" && \
|
|
(${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH:Mpower*} != "")
|
|
_DP_c+= ssp_nonshared
|
|
.endif
|
|
_DP_stats= sbuf pthread
|
|
_DP_stdthreads= pthread
|
|
_DP_sys= compiler_rt
|
|
# Use libssp_nonshared only on i386 and power*. Other archs emit direct calls
|
|
# to __stack_chk_fail, not __stack_chk_fail_local provided by libssp_nonshared.
|
|
.if ${MK_SSP} != "no" && \
|
|
(${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH:Mpower*} != "")
|
|
_DP_sys+= ssp_nonshared
|
|
.endif
|
|
.if !defined(BOOTSTRAPPING)
|
|
_DP_thr= c sys
|
|
_DP_pthread= ${_DP_thr}
|
|
.endif
|
|
_DP_tacplus= md pam
|
|
_DP_ncursesw= tinfow
|
|
_DP_formw= ncursesw
|
|
_DP_nvpair= spl
|
|
_DP_panelw= ncursesw
|
|
.if ${MK_MITKRB5} == "no"
|
|
_DP_rpcsec_gss= gssapi
|
|
.else
|
|
_DP_rpcsec_gss= gssapi_krb5
|
|
.endif
|
|
_DP_smb= kiconv
|
|
_DP_ulog= md
|
|
_DP_fifolog= z
|
|
_DP_ipf= kvm
|
|
_DP_tpool= spl
|
|
_DP_uutil= avl spl
|
|
_DP_zfs= md pthread rt umem util uutil m avl bsdxml crypto geom nvpair \
|
|
z zfs_core zutil
|
|
_DP_zfsbootenv= zfs nvpair
|
|
_DP_zfs_core= nvpair spl zutil
|
|
_DP_zpool= md pthread z icp spl nvpair avl umem
|
|
_DP_zutil= avl geom m tpool
|
|
_DP_be= zfs spl nvpair zfsbootenv
|
|
_DP_netmap=
|
|
_DP_ifconfig= m
|
|
_DP_pfctl= nv
|
|
_DP_krb5ss= edit
|
|
|
|
# OFED support
|
|
.if ${MK_OFED} != "no"
|
|
_DP_cxgb4= ibverbs pthread
|
|
_DP_ibcm= ibverbs
|
|
_DP_ibmad= ibumad
|
|
_DP_ibnetdisc= osmcomp ibmad ibumad
|
|
_DP_ibumad=
|
|
_DP_ibverbs=
|
|
_DP_irdma= ibverbs pthread
|
|
_DP_mlx4= ibverbs pthread
|
|
_DP_mlx5= ibverbs pthread
|
|
_DP_rdmacm= ibverbs
|
|
_DP_osmcomp= pthread
|
|
_DP_opensm= pthread
|
|
_DP_osmvendor= ibumad pthread
|
|
.endif
|
|
|
|
# Define special cases
|
|
LDADD_supcplusplus= -lsupc++
|
|
LIBATF_C= ${LIBDESTDIR}${LIBDIR_BASE}/libprivateatf-c.a
|
|
LIBATF_CXX= ${LIBDESTDIR}${LIBDIR_BASE}/libprivateatf-c++.a
|
|
LDADD_atf_c= -lprivateatf-c
|
|
LDADD_atf_cxx= -lprivateatf-c++
|
|
|
|
LIBGMOCK= ${LIBDESTDIR}${LIBDIR_BASE}/libprivategmock.a
|
|
LIBGMOCK_MAIN= ${LIBDESTDIR}${LIBDIR_BASE}/libprivategmock_main.a
|
|
LIBGTEST= ${LIBDESTDIR}${LIBDIR_BASE}/libprivategtest.a
|
|
LIBGTEST_MAIN= ${LIBDESTDIR}${LIBDIR_BASE}/libprivategtest_main.a
|
|
LDADD_gmock= -lprivategmock
|
|
LDADD_gtest= -lprivategtest
|
|
LDADD_gmock_main= -lprivategmock_main
|
|
LDADD_gtest_main= -lprivategtest_main
|
|
|
|
.for _l in ${_PRIVATELIBS}
|
|
LIB${_l:tu}?= ${LIBDESTDIR}${LIBDIR_BASE}/libprivate${_l}.a
|
|
.endfor
|
|
|
|
.if ${MK_PIE} != "no"
|
|
PIE_SUFFIX= _pie
|
|
.endif
|
|
|
|
.for _l in ${_LIBRARIES}
|
|
.if ${_INTERNALLIBS:M${_l}} || !defined(SYSROOT)
|
|
LDADD_${_l}_L+= -L${LIB${_l:tu}DIR}
|
|
.endif
|
|
DPADD_${_l}?= ${LIB${_l:tu}}
|
|
.if ${_PRIVATELIBS:M${_l}}
|
|
LDADD_${_l}?= ${LDADD_${_l}_L} -lprivate${_l}
|
|
.elif ${_INTERNALLIBS:M${_l}}
|
|
LDADD_${_l}?= ${LDADD_${_l}_L} -l${_l:S/${PIE_SUFFIX}//}${PIE_SUFFIX}
|
|
.else
|
|
LDADD_${_l}?= ${LDADD_${_l}_L} -l${_l}
|
|
.endif
|
|
# Add in all dependencies for static linkage.
|
|
# Bootstrapping from non-FreeBSD needs special handling, since it overrides
|
|
# NO_SHARED back to yes despite only building static versions of bootstrap
|
|
# libraries (see tools/build/mk/Makefile.boot.pre).
|
|
.if defined(_DP_${_l}) && (${_INTERNALLIBS:M${_l}} || \
|
|
(defined(NO_SHARED) && ${NO_SHARED:tl} != "no") || \
|
|
(defined(BOOTSTRAPPING) && ${.MAKE.OS} != "FreeBSD"))
|
|
.for _d in ${_DP_${_l}}
|
|
DPADD_${_l}+= ${DPADD_${_d}}
|
|
LDADD_${_l}+= ${LDADD_${_d}}
|
|
.endfor
|
|
.endif
|
|
.endfor
|
|
|
|
# These are special cases where the library is broken and anything that uses
|
|
# it needs to add more dependencies. Broken usually means that it has a
|
|
# cyclic dependency and cannot link its own dependencies. This is bad, please
|
|
# fix the library instead.
|
|
# Unless the library itself is broken then the proper place to define
|
|
# dependencies is _DP_* above.
|
|
|
|
# libatf-c++ exposes libatf-c abi hence we need to explicit link to atf_c for
|
|
# atf_cxx
|
|
DPADD_atf_cxx+= ${DPADD_atf_c}
|
|
LDADD_atf_cxx+= ${LDADD_atf_c}
|
|
|
|
DPADD_gmock+= ${DPADD_gtest}
|
|
LDADD_gmock+= ${LDADD_gtest}
|
|
|
|
DPADD_gmock_main+= ${DPADD_gmock}
|
|
LDADD_gmock_main+= ${LDADD_gmock}
|
|
|
|
DPADD_gtest_main+= ${DPADD_gtest}
|
|
LDADD_gtest_main+= ${LDADD_gtest}
|
|
|
|
# Detect LDADD/DPADD that should be LIBADD, before modifying LDADD here.
|
|
_BADLDADD=
|
|
.for _l in ${LDADD:M-l*:N-l*/*:C,^-l,,}
|
|
.if ${_LIBRARIES:M${_l}} && !${_PRIVATELIBS:M${_l}}
|
|
_BADLDADD+= ${_l}
|
|
.endif
|
|
.endfor
|
|
.if !empty(_BADLDADD)
|
|
.error ${.CURDIR}: These libraries should be LIBADD+=foo rather than DPADD/LDADD+=-lfoo: ${_BADLDADD}
|
|
.endif
|
|
|
|
.for _l in ${LIBADD}
|
|
DPADD+= ${DPADD_${_l}}
|
|
LDADD+= ${LDADD_${_l}}
|
|
.endfor
|
|
|
|
_LIB_OBJTOP?= ${OBJTOP}
|
|
# INTERNALLIB definitions.
|
|
LIBDIFFDIR= ${_LIB_OBJTOP}/lib/libdiff
|
|
LIBDIFF?= ${LIBDIFFDIR}/libdiff${PIE_SUFFIX}.a
|
|
|
|
LIBELFTCDIR= ${_LIB_OBJTOP}/lib/libelftc
|
|
LIBELFTC?= ${LIBELFTCDIR}/libelftc${PIE_SUFFIX}.a
|
|
|
|
LIBFDTDIR= ${_LIB_OBJTOP}/lib/libfdt
|
|
LIBFDT?= ${LIBFDTDIR}/libfdt${PIE_SUFFIX}.a
|
|
|
|
LIBLUADIR= ${_LIB_OBJTOP}/lib/liblua
|
|
LIBLUA?= ${LIBLUADIR}/liblua${PIE_SUFFIX}.a
|
|
|
|
LIBLUTOKDIR= ${_LIB_OBJTOP}/lib/liblutok
|
|
LIBLUTOK?= ${LIBLUTOKDIR}/liblutok${PIE_SUFFIX}.a
|
|
|
|
LIBPEDIR= ${_LIB_OBJTOP}/lib/libpe
|
|
LIBPE?= ${LIBPEDIR}/libpe${PIE_SUFFIX}.a
|
|
|
|
LIBOPENBSDDIR= ${_LIB_OBJTOP}/lib/libopenbsd
|
|
LIBOPENBSD?= ${LIBOPENBSDDIR}/libopenbsd${PIE_SUFFIX}.a
|
|
|
|
LIBSMDIR= ${_LIB_OBJTOP}/lib/libsm
|
|
LIBSM?= ${LIBSMDIR}/libsm${PIE_SUFFIX}.a
|
|
|
|
LIBSMDBDIR= ${_LIB_OBJTOP}/lib/libsmdb
|
|
LIBSMDB?= ${LIBSMDBDIR}/libsmdb${PIE_SUFFIX}.a
|
|
|
|
LIBSMUTILDIR= ${_LIB_OBJTOP}/lib/libsmutil
|
|
LIBSMUTIL?= ${LIBSMUTILDIR}/libsmutil${PIE_SUFFIX}.a
|
|
|
|
LIBSYSDIR= ${_LIB_OBJTOP}/lib/libsys
|
|
LIBSYS?= ${LIBSYSDIR}/libsys${PIE_SUFFIX}.a
|
|
|
|
LIBNETBSDDIR?= ${_LIB_OBJTOP}/lib/libnetbsd
|
|
LIBNETBSD?= ${LIBNETBSDDIR}/libnetbsd${PIE_SUFFIX}.a
|
|
|
|
LIBVERSDIR?= ${_LIB_OBJTOP}/kerberos5/lib/libvers
|
|
LIBVERS?= ${LIBVERSDIR}/libvers${PIE_SUFFIX}.a
|
|
|
|
LIBSLDIR= ${_LIB_OBJTOP}/kerberos5/lib/libsl
|
|
LIBSL?= ${LIBSLDIR}/libsl${PIE_SUFFIX}.a
|
|
|
|
LIBIFCONFIGDIR= ${_LIB_OBJTOP}/lib/libifconfig
|
|
LIBIFCONFIG?= ${LIBIFCONFIGDIR}/libifconfig${PIE_SUFFIX}.a
|
|
|
|
LIBIPFDIR= ${_LIB_OBJTOP}/sbin/ipf/libipf
|
|
LIBIPF?= ${LIBIPFDIR}/libipf${PIE_SUFFIX}.a
|
|
|
|
LIBNVDIR= ${_LIB_OBJTOP}/lib/libnv
|
|
LIBNV?= ${LIBNVDIR}/libnv${PIE_SUFFIX}.a
|
|
|
|
LIBISCSIUTILDIR= ${_LIB_OBJTOP}/lib/libiscsiutil
|
|
LIBISCSIUTIL?= ${LIBISCSIUTILDIR}/libiscsiutil${PIE_SUFFIX}.a
|
|
|
|
LIBNVMFDIR= ${_LIB_OBJTOP}/lib/libnvmf
|
|
LIBNVMF?= ${LIBNVMFDIR}/libnvmf${PIE_SUFFIX}.a
|
|
|
|
LIBTELNETDIR= ${_LIB_OBJTOP}/lib/libtelnet
|
|
LIBTELNET?= ${LIBTELNETDIR}/libtelnet${PIE_SUFFIX}.a
|
|
|
|
LIBCRONDIR= ${_LIB_OBJTOP}/usr.sbin/cron/lib
|
|
LIBCRON?= ${LIBCRONDIR}/libcron${PIE_SUFFIX}.a
|
|
|
|
LIBDERDIR= ${_LIB_OBJTOP}/lib/libder
|
|
LIBDER?= ${LIBDERDIR}/libder${PIE_SUFFIX}.a
|
|
|
|
LIBNTPDIR= ${_LIB_OBJTOP}/usr.sbin/ntp/libntp
|
|
LIBNTP?= ${LIBNTPDIR}/libntp${PIE_SUFFIX}.a
|
|
|
|
LIBNTPEVENTDIR= ${_LIB_OBJTOP}/usr.sbin/ntp/libntpevent
|
|
LIBNTPEVENT?= ${LIBNTPEVENTDIR}/libntpevent${PIE_SUFFIX}.a
|
|
|
|
LIBOPTSDIR= ${_LIB_OBJTOP}/usr.sbin/ntp/libopts
|
|
LIBOPTS?= ${LIBOPTSDIR}/libopts${PIE_SUFFIX}.a
|
|
|
|
LIBPARSEDIR= ${_LIB_OBJTOP}/usr.sbin/ntp/libparse
|
|
LIBPARSE?= ${LIBPARSEDIR}/libparse${PIE_SUFFIX}.a
|
|
|
|
LIBPFCTLDIR= ${_LIB_OBJTOP}/lib/libpfctl
|
|
LIBPFCTL?= ${LIBPFCTLDIR}/libpfctl${PIE_SUFFIX}.a
|
|
|
|
LIBLPRDIR= ${_LIB_OBJTOP}/usr.sbin/lpr/common_source
|
|
LIBLPR?= ${LIBLPRDIR}/liblpr${PIE_SUFFIX}.a
|
|
|
|
LIBFIFOLOGDIR= ${_LIB_OBJTOP}/usr.sbin/fifolog/lib
|
|
LIBFIFOLOG?= ${LIBFIFOLOGDIR}/libfifolog${PIE_SUFFIX}.a
|
|
|
|
LIBBSNMPTOOLSDIR= ${_LIB_OBJTOP}/usr.sbin/bsnmpd/tools/libbsnmptools
|
|
LIBBSNMPTOOLS?= ${LIBBSNMPTOOLSDIR}/libbsnmptools${PIE_SUFFIX}.a
|
|
|
|
LIBBE?= ${LIBBEDIR}/libbe${PIE_SUFFIX}.a
|
|
|
|
LIBPKGECCDIR= ${_LIB_OBJTOP}/secure/lib/libpkgecc
|
|
LIBPKGECC?= ${LIBPKGECCDIR}/libpkgecc${PIE_SUFFIX}.a
|
|
|
|
LIBPMCSTATDIR= ${_LIB_OBJTOP}/lib/libpmcstat
|
|
LIBPMCSTAT?= ${LIBPMCSTATDIR}/libpmcstat${PIE_SUFFIX}.a
|
|
|
|
LIBUTIL++DIR= ${_LIB_OBJTOP}/lib/libutil++
|
|
LIBUTIL++?= ${LIBUTIL++DIR}/libutil++${PIE_SUFFIX}.a
|
|
|
|
LIBWPAAPDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/ap
|
|
LIBWPAAP?= ${LIBWPAAPDIR}/libwpaap${PIE_SUFFIX}.a
|
|
|
|
LIBWPACOMMONDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/common
|
|
LIBWPACOMMON?= ${LIBWPACOMMONDIR}/libwpacommon${PIE_SUFFIX}.a
|
|
|
|
LIBWPACRYPTODIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/crypto
|
|
LIBWPACRYPTO?= ${LIBWPACRYPTODIR}/libwpacrypto${PIE_SUFFIX}.a
|
|
|
|
LIBWPADRIVERSDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/drivers
|
|
LIBWPADRIVERS?= ${LIBWPADRIVERSDIR}/libwpadrivers${PIE_SUFFIX}.a
|
|
|
|
LIBWPAEAP_COMMONDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/eap_common
|
|
LIBWPAEAP_COMMON?= ${LIBWPAEAP_COMMONDIR}/libwpaeap_common${PIE_SUFFIX}.a
|
|
|
|
LIBWPAEAP_PEERDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/eap_peer
|
|
LIBWPAEAP_PEER?= ${LIBWPAEAP_PEERDIR}/libwpaeap_peer${PIE_SUFFIX}.a
|
|
|
|
LIBWPAEAP_SERVERDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/eap_server
|
|
LIBWPAEAP_SERVER?= ${LIBWPAEAP_SERVERDIR}/libwpaeap_server${PIE_SUFFIX}.a
|
|
|
|
LIBWPAEAPOL_AUTHDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/eapol_auth
|
|
LIBWPAEAPOL_AUTH?= ${LIBWPAEAPOL_AUTHDIR}/libwpaeapol_auth${PIE_SUFFIX}.a
|
|
|
|
LIBWPAEAPOL_SUPPDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/eapol_supp
|
|
LIBWPAEAPOL_SUPP?= ${LIBWPAEAPOL_SUPPDIR}/libwpaeapol_supp${PIE_SUFFIX}.a
|
|
|
|
LIBWPAL2_PACKETDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/l2_packet
|
|
LIBWPAL2_PACKET?= ${LIBWPAL2_PACKETDIR}/libwpal2_packet${PIE_SUFFIX}.a
|
|
|
|
LIBWPAPASNDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/pasn
|
|
LIBWPAPASN?= ${LIBWPAPASNDIR}/libwpapasn${PIE_SUFFIX}.a
|
|
|
|
LIBWPARADIUSDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/radius
|
|
LIBWPARADIUS?= ${LIBWPARADIUSDIR}/libwparadius${PIE_SUFFIX}.a
|
|
|
|
LIBWPARSN_SUPPDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/rsn_supp
|
|
LIBWPARSN_SUPP?= ${LIBWPARSN_SUPPDIR}/libwparsn_supp${PIE_SUFFIX}.a
|
|
|
|
LIBWPATLSDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/tls
|
|
LIBWPATLS?= ${LIBWPATLSDIR}/libwpatls${PIE_SUFFIX}.a
|
|
|
|
LIBWPAUTILSDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/utils
|
|
LIBWPAUTILS?= ${LIBWPAUTILSDIR}/libwpautils${PIE_SUFFIX}.a
|
|
|
|
LIBWPAWPSDIR= ${_LIB_OBJTOP}/usr.sbin/wpa/src/wps
|
|
LIBWPAWPS?= ${LIBWPAWPSDIR}/libwpawps${PIE_SUFFIX}.a
|
|
|
|
LIBC_NOSSP_PICDIR= ${_LIB_OBJTOP}/lib/libc
|
|
LIBC_NOSSP_PIC?= ${LIBC_NOSSP_PICDIR}/libc_nossp_pic.a
|
|
|
|
LIBSYS_PICDIR= ${_LIB_OBJTOP}/lib/libsys
|
|
LIBSYS_PIC?= ${LIBSYS_PICDIR}/libsys_pic.a
|
|
|
|
LIBSAMPLERATEDIR?= ${_LIB_OBJTOP}/lib/libsamplerate
|
|
LIBSAMPLERATE?= ${LIBSAMPLERATEDIR}/libsamplerate${PIE_SUFFIX}.a
|
|
|
|
# Define a directory for each library. This is useful for adding -L in when
|
|
# not using a --sysroot or for meta mode bootstrapping when there is no
|
|
# Makefile.depend. These are sorted by directory.
|
|
LIBAVLDIR= ${_LIB_OBJTOP}/cddl/lib/libavl
|
|
LIBCTFDIR= ${_LIB_OBJTOP}/cddl/lib/libctf
|
|
LIBDTRACEDIR= ${_LIB_OBJTOP}/cddl/lib/libdtrace
|
|
LIBICPDIR= ${_LIB_OBJTOP}/cddl/lib/libicp
|
|
LIBICP?= ${LIBICPDIR}/libicp${PIE_SUFFIX}.a
|
|
LIBICP_RESCUEDIR= ${_LIB_OBJTOP}/cddl/lib/libicp_rescue
|
|
LIBICP_RESCUE?= ${LIBICP_RESCUEDIR}/libicp_rescue${PIE_SUFFIX}.a
|
|
LIBNVPAIRDIR= ${_LIB_OBJTOP}/cddl/lib/libnvpair
|
|
LIBNVPAIR?= ${LIBNVPAIRDIR}/libnvpair${PIE_SUFFIX}.a
|
|
LIBUMEMDIR= ${_LIB_OBJTOP}/cddl/lib/libumem
|
|
LIBUUTILDIR= ${_LIB_OBJTOP}/cddl/lib/libuutil
|
|
LIBZDBDIR= ${_LIB_OBJTOP}/cddl/lib/libzdb
|
|
LIBZDB?= ${LIBZDBDIR}/libzdb${PIE_SUFFIX}.a
|
|
LIBZFSDIR= ${_LIB_OBJTOP}/cddl/lib/libzfs
|
|
LIBZFS?= ${LIBZFSDIR}/libzfs${PIE_SUFFIX}.a
|
|
LIBZFS_COREDIR= ${_LIB_OBJTOP}/cddl/lib/libzfs_core
|
|
LIBZFS_CORE?= ${LIBZFS_COREDIR}/libzfs_core${PIE_SUFFIX}.a
|
|
LIBZFSBOOTENVDIR= ${_LIB_OBJTOP}/cddl/lib/libzfsbootenv
|
|
LIBZFSBOOTENV?= ${LIBZFSBOOTENVDIR}/libzfsbootenv${PIE_SUFFIX}.a
|
|
LIBZPOOLDIR= ${_LIB_OBJTOP}/cddl/lib/libzpool
|
|
LIBZPOOL?= ${LIBZPOOLDIR}/libzpool${PIE_SUFFIX}.a
|
|
LIBZUTILDIR= ${_LIB_OBJTOP}/cddl/lib/libzutil
|
|
LIBZUTIL?= ${LIBZUTILDIR}/libzutil${PIE_SUFFIX}.a
|
|
LIBTPOOLDIR= ${_LIB_OBJTOP}/cddl/lib/libtpool
|
|
|
|
# OFED support
|
|
LIBCXGB4DIR= ${_LIB_OBJTOP}/lib/ofed/libcxgb4
|
|
LIBIBCMDIR= ${_LIB_OBJTOP}/lib/ofed/libibcm
|
|
LIBIBMADDIR= ${_LIB_OBJTOP}/lib/ofed/libibmad
|
|
LIBIBNETDISCDIR=${_LIB_OBJTOP}/lib/ofed/libibnetdisc
|
|
LIBIBUMADDIR= ${_LIB_OBJTOP}/lib/ofed/libibumad
|
|
LIBIBVERBSDIR= ${_LIB_OBJTOP}/lib/ofed/libibverbs
|
|
LIBIRDMADIR= ${_LIB_OBJTOP}/lib/ofed/libirdma
|
|
LIBMLX4DIR= ${_LIB_OBJTOP}/lib/ofed/libmlx4
|
|
LIBMLX5DIR= ${_LIB_OBJTOP}/lib/ofed/libmlx5
|
|
LIBRDMACMDIR= ${_LIB_OBJTOP}/lib/ofed/librdmacm
|
|
LIBOSMCOMPDIR= ${_LIB_OBJTOP}/lib/ofed/complib
|
|
LIBOPENSMDIR= ${_LIB_OBJTOP}/lib/ofed/libopensm
|
|
LIBOSMVENDORDIR=${_LIB_OBJTOP}/lib/ofed/libvendor
|
|
|
|
LIBDIALOGDIR= ${_LIB_OBJTOP}/gnu/lib/libdialog
|
|
LIBSSPDIR= ${_LIB_OBJTOP}/lib/libssp
|
|
LIBSSP_NONSHAREDDIR= ${_LIB_OBJTOP}/lib/libssp_nonshared
|
|
.if ${MK_MITKRB5} != "no"
|
|
LIBAPPUTILSDIR= ${_LIB_OBJTOP}/krb5/lib/apputils
|
|
LIBAPPUTILS?= ${LIBAPPUTILSDIR}/libapputils${PIE_SUFFIX}.a
|
|
LIBGSSAPI_KRB5DIR= ${_LIB_OBJTOP}/krb5/lib/gssapi
|
|
LIBGSSAPI_KRB5?= ${LIBGSSAPI_KRB5DIR}/libgssapi_krb5${PIE_SUFFIX}.a
|
|
LIBGSSRPCDIR= ${_LIB_OBJTOP}/krb5/lib/rpc
|
|
LIBGSSRPC?= ${LIBGSSRPCDIR}/libgssrpc${PIE_SUFFIX}.a
|
|
LIBK5CRYPTODIR= ${_LIB_OBJTOP}/krb5/lib/crypto
|
|
LIBK5CRYPTO?= ${LIBK5CRYPTODIR}/libk5crypto${PIE_SUFFIX}.a
|
|
LIBK5GSSRPCDIR= ${_LIB_OBJTOP}/krb5/lib/rpc
|
|
LIBK5GSSRPC?= ${LIBK5GSSRPCDIR}/libgssrpc${PIE_SUFFIX}.a
|
|
LIBKADM5CLNT_MITDIR= ${_LIB_OBJTOP}/krb5/lib/kadm5clnt
|
|
LIBKADM5CLNT_MIT?= ${LIBKADM5CLNT_MITDIR}/libkadm5clnt_mit${PIE_SUFFIX}.a
|
|
LIBKADM5SRV_MITDIR= ${_LIB_OBJTOP}/krb5/lib/kadm5srv
|
|
LIBKADM5SRV_MIT?= ${LIBKADM5SRV_MITDIR}/libkadm5srv_mit${PIE_SUFFIX}.a
|
|
LIBKADMIN_COMMONDIR= ${_LIB_OBJTOP}/krb5/lib/kadmin_common
|
|
LIBKADMIN_COMMON?= ${LIBKADMIN_COMMONDIR}/libkadmin_common${PIE_SUFFIX}.a
|
|
LIBKDB5DIR= ${_LIB_OBJTOP}/krb5/lib/kdb
|
|
LIBKDB5?= ${LIBKDB5DIR}/libkdb5${PIE_SUFFIX}.a
|
|
LIBKPROP_UTILDIR= ${_LIB_OBJTOP}/krb5/lib/kprop_util
|
|
LIBKPROP_UTIL?= ${LIBKPROP_UTILDIR}/libkprop_util${PIE_SUFFIX}.a
|
|
LIBKRADDIR= ${_LIB_OBJTOP}/krb5/lib/krad
|
|
LIBKRAD?= ${LIBKRADDIR}/libkrad${PIE_SUFFIX}.a
|
|
LIBKRB5DIR= ${_LIB_OBJTOP}/krb5/lib/krb5
|
|
LIBKRB5?= ${LIBKRB5DIR}/libkrb5${PIE_SUFFIX}.a
|
|
LIBKRB5SSDIR= ${_LIB_OBJTOP}/krb5/util/ss
|
|
LIBKRB5SS?= ${LIBKRB5SUPPORTDIR}/libkrb5ss${PIE_SUFFIX}.a
|
|
LIBKRB5SUPPORTDIR= ${_LIB_OBJTOP}/krb5/util/support
|
|
LIBKRB5SUPPORT?= ${LIBKRB5SUPPORTDIR}/libkrb5support${PIE_SUFFIX}.a
|
|
LIBKRB5PROFILEDIR= ${_LIB_OBJTOP}/krb5/util/profile
|
|
LIBKRB5PROFILE?= ${LIBPROFILEDIR}/libkrb5profile${PIE_SUFFIX}.a
|
|
LIBVERTODIR= ${_LIB_OBJTOP}/krb5/util/verto
|
|
LIBVERTO?= ${LIBVERTODIR}/libverto${PIE_SUFFIX}.a
|
|
.else
|
|
LIBASN1DIR= ${_LIB_OBJTOP}/kerberos5/lib/libasn1
|
|
LIBGSSAPI_KRB5DIR= ${_LIB_OBJTOP}/kerberos5/lib/libgssapi_krb5
|
|
LIBGSSAPI_NTLMDIR= ${_LIB_OBJTOP}/kerberos5/lib/libgssapi_ntlm
|
|
LIBGSSAPI_SPNEGODIR= ${_LIB_OBJTOP}/kerberos5/lib/libgssapi_spnego
|
|
LIBHDBDIR= ${_LIB_OBJTOP}/kerberos5/lib/libhdb
|
|
LIBHEIMBASEDIR= ${_LIB_OBJTOP}/kerberos5/lib/libheimbase
|
|
LIBHEIMIPCCDIR= ${_LIB_OBJTOP}/kerberos5/lib/libheimipcc
|
|
LIBHEIMIPCSDIR= ${_LIB_OBJTOP}/kerberos5/lib/libheimipcs
|
|
LIBHEIMNTLMDIR= ${_LIB_OBJTOP}/kerberos5/lib/libheimntlm
|
|
LIBHX509DIR= ${_LIB_OBJTOP}/kerberos5/lib/libhx509
|
|
LIBKADM5CLNTDIR= ${_LIB_OBJTOP}/kerberos5/lib/libkadm5clnt
|
|
LIBKADM5SRVDIR= ${_LIB_OBJTOP}/kerberos5/lib/libkadm5srv
|
|
LIBKAFS5DIR= ${_LIB_OBJTOP}/kerberos5/lib/libkafs5
|
|
LIBKDCDIR= ${_LIB_OBJTOP}/kerberos5/lib/libkdc
|
|
LIBKRB5DIR= ${_LIB_OBJTOP}/kerberos5/lib/libkrb5
|
|
LIBROKENDIR= ${_LIB_OBJTOP}/kerberos5/lib/libroken
|
|
LIBWINDDIR= ${_LIB_OBJTOP}/kerberos5/lib/libwind
|
|
.endif
|
|
LIBATF_CDIR= ${_LIB_OBJTOP}/lib/atf/libatf-c
|
|
LIBATF_CXXDIR= ${_LIB_OBJTOP}/lib/atf/libatf-c++
|
|
LIBGMOCKDIR= ${_LIB_OBJTOP}/lib/googletest/gmock
|
|
LIBGMOCK_MAINDIR= ${_LIB_OBJTOP}/lib/googletest/gmock_main
|
|
LIBGTESTDIR= ${_LIB_OBJTOP}/lib/googletest/gtest
|
|
LIBGTEST_MAINDIR= ${_LIB_OBJTOP}/lib/googletest/gtest_main
|
|
LIBALIASDIR= ${_LIB_OBJTOP}/lib/libalias/libalias
|
|
LIBBLACKLISTDIR= ${_LIB_OBJTOP}/lib/libblacklist
|
|
LIBBLOCKSRUNTIMEDIR= ${_LIB_OBJTOP}/lib/libblocksruntime
|
|
LIBBSNMPDIR= ${_LIB_OBJTOP}/lib/libbsnmp/libbsnmp
|
|
LIBCASPERDIR= ${_LIB_OBJTOP}/lib/libcasper/libcasper
|
|
LIBCAP_DNSDIR= ${_LIB_OBJTOP}/lib/libcasper/services/cap_dns
|
|
LIBCAP_GRPDIR= ${_LIB_OBJTOP}/lib/libcasper/services/cap_grp
|
|
LIBCAP_NETDIR= ${_LIB_OBJTOP}/lib/libcasper/services/cap_net
|
|
LIBCAP_PWDDIR= ${_LIB_OBJTOP}/lib/libcasper/services/cap_pwd
|
|
LIBCAP_SYSCTLDIR= ${_LIB_OBJTOP}/lib/libcasper/services/cap_sysctl
|
|
LIBCAP_SYSLOGDIR= ${_LIB_OBJTOP}/lib/libcasper/services/cap_syslog
|
|
LIBCBORDIR= ${_LIB_OBJTOP}/lib/libcbor
|
|
LIBBSDXMLDIR= ${_LIB_OBJTOP}/lib/libexpat
|
|
LIBFIDO2DIR= ${_LIB_OBJTOP}/lib/libfido2
|
|
LIBKVMDIR= ${_LIB_OBJTOP}/lib/libkvm
|
|
LIBPTHREADDIR= ${_LIB_OBJTOP}/lib/libthr
|
|
LIBMDIR= ${_LIB_OBJTOP}/lib/msun
|
|
LIBFORMWDIR= ${_LIB_OBJTOP}/lib/ncurses/form
|
|
LIBMENUWDIR= ${_LIB_OBJTOP}/lib/ncurses/menu
|
|
LIBNCURSESWDIR= ${_LIB_OBJTOP}/lib/ncurses/ncurses
|
|
LIBTINFOWDIR= ${_LIB_OBJTOP}/lib/ncurses/tinfo
|
|
LIBPANELWDIR= ${_LIB_OBJTOP}/lib/ncurses/panel
|
|
LIBCRYPTODIR= ${_LIB_OBJTOP}/secure/lib/libcrypto
|
|
LIBSPLDIR= ${_LIB_OBJTOP}/cddl/lib/libspl
|
|
LIBSSHDIR= ${_LIB_OBJTOP}/secure/lib/libssh
|
|
LIBSSLDIR= ${_LIB_OBJTOP}/secure/lib/libssl
|
|
LIBTEKENDIR= ${_LIB_OBJTOP}/sys/teken/libteken
|
|
LIBEGACYDIR= ${_LIB_OBJTOP}/tools/build
|
|
LIBLNDIR= ${_LIB_OBJTOP}/usr.bin/lex/lib
|
|
|
|
LIBTERMCAPWDIR= ${LIBTINFOWDIR}
|
|
|
|
.-include <site.src.libnames.mk>
|
|
|
|
# Default other library directories to lib/libNAME.
|
|
.for lib in ${_LIBRARIES}
|
|
LIB${lib:tu}DIR?= ${OBJTOP}/lib/lib${lib}
|
|
.endfor
|
|
|
|
# Validate that listed LIBADD are valid.
|
|
.for _l in ${LIBADD}
|
|
.if empty(_LIBRARIES:M${_l})
|
|
_BADLIBADD+= ${_l}
|
|
.endif
|
|
.endfor
|
|
.if !empty(_BADLIBADD)
|
|
.error ${.CURDIR}: Invalid LIBADD used which may need to be added to ${_this:T}: ${_BADLIBADD}
|
|
.endif
|
|
|
|
# Sanity check that libraries are defined here properly when building them.
|
|
.if defined(LIB) && ${_LIBRARIES:M${LIB}} != ""
|
|
.if !empty(LIBADD) && \
|
|
(!defined(_DP_${LIB}) || ${LIBADD:O:u} != ${_DP_${LIB}:O:u})
|
|
.error ${.CURDIR}: Missing or incorrect _DP_${LIB} entry in ${_this:T}. Should match LIBADD for ${LIB} ('${LIBADD}' vs '${_DP_${LIB}}')
|
|
.endif
|
|
# Note that OBJTOP is not yet defined here but for the purpose of the check
|
|
# it is fine as it resolves to the SRC directory.
|
|
.if !defined(LIB${LIB:tu}DIR) || !exists(${SRCTOP}/${LIB${LIB:tu}DIR:S,^${OBJTOP}/,,})
|
|
.error ${.CURDIR}: Missing or incorrect value for LIB${LIB:tu}DIR in ${_this:T}: ${LIB${LIB:tu}DIR:S,^${OBJTOP}/,,}
|
|
.endif
|
|
.if ${_INTERNALLIBS:M${LIB}} != "" && !defined(LIB${LIB:tu})
|
|
.error ${.CURDIR}: Missing value for LIB${LIB:tu} in ${_this:T}. Likely should be: LIB${LIB:tu}?= $${LIB${LIB:tu}DIR}/lib${LIB}.a
|
|
.endif
|
|
.endif
|
|
|
|
.endif # !target(__<src.libnames.mk>__)
|