Add assertions that capture invalid configurations for new libraries.
Fix current findings. Given libfoo: - Ensure that a LIBFOO is set. For INTERNALLIBS advise setting this in src.libnames.mk, otherwise bsd.libnames.mk. - Ensure that a LIBFOODIR is properly set. - Ensure that _DP_foo is set and matches the LIBADD in the build of foo's own Makefile Sponsored by: EMC / Isilon Storage Division
This commit is contained in:
parent
056b7d85a4
commit
eaa435e794
@ -42,6 +42,7 @@ LIBCRYPT?= ${DESTDIR}${LIBDIR}/libcrypt.a
|
||||
LIBCRYPTO?= ${DESTDIR}${LIBDIR}/libcrypto.a
|
||||
LIBCTF?= ${DESTDIR}${LIBDIR}/libctf.a
|
||||
LIBCURSES?= ${DESTDIR}${LIBDIR}/libcurses.a
|
||||
LIBCUSE?= ${DESTDIR}${LIBDIR}/libcuse.a
|
||||
LIBDEVCTL?= ${DESTDIR}${LIBDIR}/libdevctl.a
|
||||
LIBDEVINFO?= ${DESTDIR}${LIBDIR}/libdevinfo.a
|
||||
LIBDEVSTAT?= ${DESTDIR}${LIBDIR}/libdevstat.a
|
||||
@ -98,6 +99,7 @@ LIBNVPAIR?= ${DESTDIR}${LIBDIR}/libnvpair.a
|
||||
LIBOPIE?= ${DESTDIR}${LIBDIR}/libopie.a
|
||||
LIBPAM?= ${DESTDIR}${LIBDIR}/libpam.a
|
||||
LIBPANEL?= ${DESTDIR}${LIBDIR}/libpanel.a
|
||||
LIBPANELW?= ${DESTDIR}${LIBDIR}/libpanelw.a
|
||||
LIBPCAP?= ${DESTDIR}${LIBDIR}/libpcap.a
|
||||
LIBPJDLOG?= ${DESTDIR}${LIBDIR}/libpjdlog.a
|
||||
LIBPMC?= ${DESTDIR}${LIBDIR}/libpmc.a
|
||||
@ -117,6 +119,7 @@ LIBSSL?= ${DESTDIR}${LIBDIR}/libssl.a
|
||||
LIBSSP_NONSHARED?= ${DESTDIR}${LIBDIR}/libssp_nonshared.a
|
||||
LIBSTAND?= ${DESTDIR}${LIBDIR}/libstand.a
|
||||
LIBSTDCPLUSPLUS?= ${DESTDIR}${LIBDIR}/libstdc++.a
|
||||
LIBSTDTHREADS?= ${DESTDIR}${LIBDIR}/libstdthreads.a
|
||||
LIBTACPLUS?= ${DESTDIR}${LIBDIR}/libtacplus.a
|
||||
LIBTERMCAP?= ${DESTDIR}${LIBDIR}/libtermcap.a
|
||||
LIBTERMCAPW?= ${DESTDIR}${LIBDIR}/libtermcapw.a
|
||||
@ -155,6 +158,13 @@ LDADD:= ${LDADD:N-lc} -lc
|
||||
|
||||
# Only do this for src builds.
|
||||
.if defined(SRCTOP)
|
||||
.if defined(_LIBRARIES) && defined(LIB) && \
|
||||
${_LIBRARIES:M${LIB}} != ""
|
||||
.if !defined(LIB${LIB:tu})
|
||||
.error ${.CURDIR}: Missing value for LIB${LIB:tu} in ${_this:T}. Likely should be: LIB${LIB:tu}?= $${DESTDIR}$${LIBDIR}/lib${LIB}.a
|
||||
.endif
|
||||
.endif
|
||||
|
||||
# Derive LIB*SRCDIR from LIB*DIR
|
||||
.for lib in ${_LIBRARIES}
|
||||
LIB${lib:tu}SRCDIR?= ${SRCTOP}/${LIB${lib:tu}DIR:S,^${OBJTOP}/,,}
|
||||
|
@ -163,6 +163,8 @@ _LIBRARIES= \
|
||||
ypclnt \
|
||||
z
|
||||
|
||||
# Each library's LIBADD needs to be duplicated here for static linkage of
|
||||
# 2nd+ order consumers.
|
||||
_DP_80211= sbuf bsdxml
|
||||
_DP_archive= z bz2 lzma bsdxml
|
||||
.if ${MK_OPENSSL} != "no"
|
||||
@ -170,6 +172,7 @@ _DP_archive+= crypto
|
||||
.else
|
||||
_DP_archive+= md
|
||||
.endif
|
||||
_DP_sqlite3= pthread
|
||||
_DP_ssl= crypto
|
||||
_DP_ssh= crypto crypt
|
||||
.if ${MK_LDNS} != "no"
|
||||
@ -217,7 +220,7 @@ _DP_fetch= md
|
||||
.endif
|
||||
_DP_execinfo= elf
|
||||
_DP_dwarf= elf
|
||||
_DP_dpv= dialog figpar util
|
||||
_DP_dpv= dialog figpar util ncursesw
|
||||
_DP_dialog= ncursesw m
|
||||
_DP_cuse= pthread
|
||||
_DP_atf_cxx= atf_c
|
||||
@ -232,16 +235,39 @@ _DP_pam+= ssh
|
||||
.if ${MK_NIS} != "no"
|
||||
_DP_pam+= ypclnt
|
||||
.endif
|
||||
_DP_krb5+= asn1 com_err crypt crypto hx509 roken wind heimbase heimipcc \
|
||||
pthread
|
||||
_DP_readline= ncursesw
|
||||
_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
|
||||
_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
|
||||
_DP_lzma= pthread
|
||||
_DP_ucl= m
|
||||
_DP_vmmapi= util
|
||||
_DP_ctf= z
|
||||
_DP_proc= rtld_db util
|
||||
_DP_dtrace= rtld_db pthread
|
||||
_DP_dtrace= ctf elf proc pthread rtld_db
|
||||
_DP_xo= util
|
||||
# The libc dependencies are not strictly needed but are defined to make the
|
||||
# assert happy.
|
||||
_DP_c= compiler_rt
|
||||
.if ${MK_SSP} != "no"
|
||||
_DP_c+= ssp_nonshared
|
||||
.endif
|
||||
_DP_stdthreads= pthread
|
||||
_DP_tacplus= md
|
||||
_DP_panel= ncurses
|
||||
_DP_panelw= ncursesw
|
||||
|
||||
# Define spacial cases
|
||||
LDADD_supcplusplus= -lsupc++
|
||||
@ -291,6 +317,7 @@ DPADD_dtrace+= ${DPADD_ctf} ${DPADD_elf} ${DPADD_proc}
|
||||
LDADD_dtrace+= ${LDADD_ctf} ${LDADD_elf} ${LDADD_proc}
|
||||
|
||||
# The following depends on libraries which are using pthread
|
||||
# XXX: These vars are always empty
|
||||
DPADD_hdb+= ${DPADD_pthread}
|
||||
LDADD_hdb+= ${LDADD_pthread}
|
||||
DPADD_kadm5srv+= ${DPADD_pthread}
|
||||
@ -306,9 +333,10 @@ LDADD+= ${LDADD_${_l}}
|
||||
.endfor
|
||||
|
||||
.if defined(DPADD) && ${DPADD:Mmissing-dpadd_*}
|
||||
.error Missing ${DPADD:Mmissing-dpadd_*:S/missing-dpadd_//:S/^/DPADD_/} variable add "${DPADD:Mmissing-dpadd_*:S/missing-dpadd_//}" to _LIBRARIES, _INTERNALLIBS, or _PRIVATELIBS and define "${DPADD:Mmissing-dpadd_*:S/missing-dpadd_//:S/^/LIB/:tu}".
|
||||
.error ${.CURDIR}: Missing ${DPADD:Mmissing-dpadd_*:S/missing-dpadd_//:S/^/DPADD_/} variable add "${DPADD:Mmissing-dpadd_*:S/missing-dpadd_//}" to _LIBRARIES, _INTERNALLIBS, or _PRIVATELIBS and define "${DPADD:Mmissing-dpadd_*:S/missing-dpadd_//:S/^/LIB/:tu}".
|
||||
.endif
|
||||
|
||||
# INTERNALLIB definitions.
|
||||
LIBELFTCDIR= ${OBJTOP}/lib/libelftc
|
||||
LIBELFTC?= ${LIBELFTCDIR}/libelftc.a
|
||||
|
||||
@ -352,7 +380,7 @@ LIBNTPEVENTDIR= ${OBJTOP}/usr.sbin/ntp/libntpevent
|
||||
LIBNTPEVENT?= ${LIBNTPEVENTDIR}/libntpevent.a
|
||||
|
||||
LIBOPTSDIR= ${OBJTOP}/usr.sbin/ntp/libopts
|
||||
LIBOTPS?= ${LIBOPTSDIR}/libopts.a
|
||||
LIBOPTS?= ${LIBOPTSDIR}/libopts.a
|
||||
|
||||
LIBPARSEDIR= ${OBJTOP}/usr.sbin/ntp/libparse
|
||||
LIBPARSE?= ${LIBPARSEDIR}/libparse.a
|
||||
@ -416,8 +444,10 @@ LIBFORMDIR= ${OBJTOP}/lib/ncurses/form
|
||||
LIBFORMLIBWDIR= ${OBJTOP}/lib/ncurses/formw
|
||||
LIBMENUDIR= ${OBJTOP}/lib/ncurses/menu
|
||||
LIBMENULIBWDIR= ${OBJTOP}/lib/ncurses/menuw
|
||||
LIBTERMCAPDIR= ${OBJTOP}/lib/ncurses/ncurses
|
||||
LIBTERMCAPWDIR= ${OBJTOP}/lib/ncurses/ncursesw
|
||||
LIBNCURSESDIR= ${OBJTOP}/lib/ncurses/ncurses
|
||||
LIBNCURSESWDIR= ${OBJTOP}/lib/ncurses/ncursesw
|
||||
LIBTERMCAPDIR= ${LIBNCURSESDIR}
|
||||
LIBTERMCAPWDIR= ${LIBNCURSESWDIR}
|
||||
LIBPANELDIR= ${OBJTOP}/lib/ncurses/panel
|
||||
LIBPANELWDIR= ${OBJTOP}/lib/ncurses/panelw
|
||||
LIBCRYPTODIR= ${OBJTOP}/secure/lib/libcrypto
|
||||
@ -432,4 +462,18 @@ LIBLNDIR= ${OBJTOP}/usr.bin/lex/lib
|
||||
LIB${lib:tu}DIR?= ${OBJTOP}/lib/lib${lib}
|
||||
.endfor
|
||||
|
||||
# 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})
|
||||
.info ${.CURDIR}: Missing or incorrect _DP_${LIB} entry in ${_this:T}. Should match LIBADD for ${LIB} ('${LIBADD}' vs '${_DP_${LIB}}')
|
||||
.endif
|
||||
.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>__)
|
||||
|
Loading…
x
Reference in New Issue
Block a user