git: 7e35117eb07f - main - Makefile: Hook MIT KRB5 into the build
Date: Mon, 16 Jun 2025 02:51:58 UTC
The branch main has been updated by cy:
URL: https://cgit.FreeBSD.org/src/commit/?id=7e35117eb07f86c385656ecc6a2a92093be98131
commit 7e35117eb07f86c385656ecc6a2a92093be98131
Author: Cy Schubert <cy@FreeBSD.org>
AuthorDate: 2025-06-11 02:57:54 +0000
Commit: Cy Schubert <cy@FreeBSD.org>
CommitDate: 2025-06-16 02:49:37 +0000
Makefile: Hook MIT KRB5 into the build
Add tests for MK_MITKRB5. If "yes" build MIT KRB5. If "no" build Heimdal.
The default is MK_MITKRB5 = no, added by "krb5: Add build plumbing".
At some point we will change the default to MK_MITKRB5 = yes. A ports
exp-run will need to be successfully run first.
Sponsored by: The FreeBSD Foundation
Differential revision: https://reviews.freebsd.org/D50815
---
Makefile.inc1 | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++
Makefile.libcompat | 4 +++
tools/build/Makefile | 64 +++++++++++++++++++++++++++++++++++++
3 files changed, 157 insertions(+)
diff --git a/Makefile.inc1 b/Makefile.inc1
index 588f95654e99..97bd81f3263f 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -429,8 +429,12 @@ SUBDIR+=cddl
.endif
SUBDIR+=gnu include
.if ${MK_KERBEROS} != "no"
+.if ${MK_MITKRB5} != "no"
+SUBDIR+=krb5
+.else
SUBDIR+=kerberos5
.endif
+.endif
.if ${MK_RESCUE} != "no"
SUBDIR+=rescue
.endif
@@ -2611,6 +2615,22 @@ ${_bt}-usr.bin/mkcsmapper: ${_bt}-usr.bin/yacc ${_bt_lex_depend}
.endif
.if ${MK_KERBEROS} != "no"
+.if ${MK_MITKRB5} != "no"
+_kerberos5_bootstrap_tools= \
+ krb5/util/build-tools \
+ krb5/util/compile_et \
+ krb5/util/support \
+ krb5/util/et \
+ lib/ncurses/tinfo \
+ lib/libedit \
+ krb5/util/ss \
+ krb5/util/profile \
+ krb5/util/verto
+# krb5/include \
+# krb5/lib/crypto \
+# krb5/lib/krb5 \
+# krb5/lib/gssapi
+.else
_kerberos5_bootstrap_tools= \
kerberos5/tools/make-roken \
kerberos5/lib/libroken \
@@ -2619,6 +2639,7 @@ _kerberos5_bootstrap_tools= \
kerberos5/tools/slc \
usr.bin/compile_et
+.endif
.ORDER: ${_kerberos5_bootstrap_tools:C/^/${_bt}-/g}
.for _tool in ${_kerberos5_bootstrap_tools}
${_bt}-${_tool}: ${_bt}-usr.bin/yacc ${_bt_lex_depend}
@@ -3185,6 +3206,8 @@ _prebuild_libs= ${_kerberos5_lib_libasn1} \
${_kerberos5_lib_libhx509} ${_kerberos5_lib_libkrb5} \
${_kerberos5_lib_libroken} \
${_kerberos5_lib_libwind} \
+ ${_krb5_util_et} \
+ ${_krb5_util_profile} \
lib/libbz2 ${_libcom_err} lib/libcrypt \
lib/libc++ \
lib/libelf lib/libexpat \
@@ -3197,6 +3220,18 @@ _prebuild_libs= ${_kerberos5_lib_libasn1} \
${_lib_casper} \
lib/ncurses/tinfo \
lib/ncurses/ncurses \
+ lib/libedit \
+ ${_krb5_util_ss} \
+ ${_krb5_util_support} \
+ ${_krb5_util_verto} \
+ ${_krb5_lib_krb5} \
+ ${_krb5_lib_crypto} \
+ ${_krb5_lib_gssapikrb5} \
+ ${_krb5_lib_gssrpc} \
+ ${_krb5_lib_kdb5} \
+ ${_krb5_lib_krad} \
+ ${_krb5_lib_kadm5srvmit} \
+ ${_krb5_lib_kadm5clntmit} \
lib/libpam/libpam lib/libthr \
${_lib_libradius} lib/libsbuf lib/libtacplus \
lib/libgeom \
@@ -3236,6 +3271,8 @@ _lib_libradius= lib/libradius
lib/ncurses/ncurses__L: lib/ncurses/tinfo__L
+lib/libedit__L: lib/ncurses/ncurses__L
+
.if ${MK_OFED} != "no"
_prebuild_libs+= \
lib/ofed/libibverbs \
@@ -3335,17 +3372,45 @@ secure/lib/libssh__L: lib/libz__L secure/lib/libcrypto__L lib/libcrypt__L
.if ${MK_LDNS} != "no"
secure/lib/libssh__L: lib/libldns__L
.endif
+
.if ${MK_GSSAPI} != "no" && ${MK_KERBEROS_SUPPORT} != "no"
+.if ${MK_MITKRB5} != "no"
+secure/lib/libssh__L: lib/libgssapi__L krb5/lib/krb5__L \
+ krb5/util/et__L lib/libmd__L krb5/util/support__L
+.else
secure/lib/libssh__L: lib/libgssapi__L kerberos5/lib/libkrb5__L \
kerberos5/lib/libhx509__L kerberos5/lib/libasn1__L lib/libcom_err__L \
lib/libmd__L kerberos5/lib/libroken__L
.endif
.endif
.endif
+.endif
_secure_lib= secure/lib
.endif
.if ${MK_KERBEROS} != "no"
+.if ${MK_MITKRB5} != "no"
+krb5/util/et__L: krb5/util/support__L
+krb5/util/profile__L: krb5/util/et__L krb5/util/support__L
+krb5/lib/crypto__L: krb5/util/et__L krb5/util/support__L \
+ secure/lib/libcrypto__L
+krb5/lib/gssapi__L: krb5/lib/krb5__L krb5/lib/crypto__L krb5/util/et__L \
+ krb5/util/support__L
+krb5/lib/kadm5clnt__L: krb5/util/profile__L krb5/lib/rpc__L \
+ krb5/lib/gssapi__L krb5/lib/krb5__L krb5/lib/crypto__L \
+ krb5/util/support__L krb5/util/et__L
+krb5/lib/kadm5srv__L: krb5/util/profile__L krb5/lib/rpc__L \
+ krb5/lib/gssapi__L krb5/lib/kdb__L krb5/lib/krb5 krb5/lib/crypto__L \
+ krb5/util/support__L krb5/util/et__L
+krb5/lib/kdb__L: krb5/util/profile__L krb5/lib/rpc__L krb5/lib/krb5__L \
+ krb5/lib/crypto__L krb5/util/et__L krb5/util/support__L krb5/lib/gssapi__L
+krb5/lib/krad__L: krb5/lib/krb5__L krb5/lib/crypto__L krb5/util/et__L \
+ krb5/util/support__L krb5/util/verto__L
+krb5/lib/krb5__L: krb5/util/profile__L krb5/lib/crypto__L krb5/util/et__L \
+ krb5/util/support__L
+krb5/lib/rpc__L: krb5/lib/gssapi__L krb5/lib/krb5__L krb5/lib/crypto__L \
+ krb5/util/et__L krb5/util/support__L
+.else
kerberos5/lib/libasn1__L: lib/libcom_err__L kerberos5/lib/libroken__L
kerberos5/lib/libhdb__L: kerberos5/lib/libasn1__L lib/libcom_err__L \
kerberos5/lib/libkrb5__L kerberos5/lib/libroken__L \
@@ -3363,6 +3428,7 @@ kerberos5/lib/libwind__L: kerberos5/lib/libroken__L lib/libcom_err__L
kerberos5/lib/libheimbase__L: lib/libthr__L
kerberos5/lib/libheimipcc__L: kerberos5/lib/libroken__L kerberos5/lib/libheimbase__L lib/libthr__L
.endif
+.endif
lib/libsqlite3__L: lib/libthr__L
@@ -3371,6 +3437,28 @@ _lib_libgssapi= lib/libgssapi
.endif
.if ${MK_KERBEROS} != "no"
+.if ${MK_MITKRB5} != "no"
+_krb5_util= krb5/util
+_krb5_util_build_tools= krb5/util/build-tools
+_krb5_util_compileet= krb5/util/compile_et
+_krb5_util_et= krb5/util/et
+_krb5_util_profile= krb5/util/profile
+_krb5_util_ss= krb5/util/ss
+_krb5_util_support= krb5/util/support
+_krb5_util_verto= krb5/util/verto
+_krb5_lib= krb5/lib
+_krb5_lib_krb5= krb5/lib/krb5
+_krb5_lib_kdb5= krb5/lib/kdb
+_krb5_lib_crypto= krb5/lib/crypto
+_krb5_lib_gssapikrb5= krb5/lib/gssapi
+_krb5_lib_gssrpc= krb5/lib/rpc
+_krb5_lib_apputils= krb5/lib/apputils
+_krb5_lib_kadm5clntmit= krb5/lib/kadm5clnt
+_krb5_lib_kadm5srvmit= krb5/lib/kadm5srv
+_krb5_lib_kadm_common= krb5/lib/kadm_common
+_krb5_lib_kproputil= krb5/lib/kprop_util
+_krb5_lib_krad= krb5/lib/krad
+.else
_kerberos5_lib= kerberos5/lib
_kerberos5_lib_libasn1= kerberos5/lib/libasn1
_kerberos5_lib_libhdb= kerberos5/lib/libhdb
@@ -3384,6 +3472,7 @@ _kerberos5_lib_libheimipcc= kerberos5/lib/libheimipcc
_kerberos5_lib_libwind= kerberos5/lib/libwind
_libcom_err= lib/libcom_err
.endif
+.endif
.if ${MK_NIS} != "no"
_lib_libypclnt= lib/libypclnt
diff --git a/Makefile.libcompat b/Makefile.libcompat
index 5675fa5eaff2..82ef4e9df0ac 100644
--- a/Makefile.libcompat
+++ b/Makefile.libcompat
@@ -91,7 +91,11 @@ _LC_LIBDIRS.yes= lib
_LC_LIBDIRS.yes+= gnu/lib
_LC_LIBDIRS.${MK_CDDL:tl}+= cddl/lib
_LC_LIBDIRS.${MK_CRYPT:tl}+= secure/lib
+.if ${MK_MITKRB5} != "no"
+_LC_LIBDIRS.${MK_KERBEROS:tl}+= krb5/lib
+.else
_LC_LIBDIRS.${MK_KERBEROS:tl}+= kerberos5/lib
+.endif
.if ${MK_FILE} != "no"
_libmagic= lib/libmagic
diff --git a/tools/build/Makefile b/tools/build/Makefile
index a9f4a84e6f7c..40ac498bfbb4 100644
--- a/tools/build/Makefile
+++ b/tools/build/Makefile
@@ -1,9 +1,18 @@
.PATH: ${.CURDIR}/../../include
+# XXX We need to include this to avoid installing MIT KRB5 includes on
+# XXX Heimdal systems. Remove the following line when Heimdal is finally
+# XXX removed.
+.include <src.opts.mk>
+
LIB= egacy
SRC=
INCSGROUPS= INCS SYSINCS CASPERINC UFSINCS FFSINCS MSDOSFSINCS DISKINCS
INCSGROUPS+= MACHINESYSINCS RPCINCS
+.if ${MK_MITKRB5} != "no"
+INCSGROUPS+= EDITINC K5GSSRPCINC GSSAPIINC
+INCSGROUPS+= K5GSSAPIINC K52GSSAPIINC KRB5INC
+.endif
INCS=
SYSINCSDIR= ${INCLUDEDIR}/sys
@@ -15,6 +24,16 @@ MSDOSFSINCSDIR= ${INCLUDEDIR}/fs/msdosfs
DISKINCSDIR= ${INCLUDEDIR}/sys/disk
MACHINESYSINCSDIR= ${INCLUDEDIR}/machine
RPCINCSDIR= ${INCLUDEDIR}/rpc
+.if ${MK_MITKRB5} != "no"
+EDITINCDIR= ${INCLUDEDIR}/edit/readline
+K5GSSRPCINCDIR= ${INCLUDEDIR}/gssrpc
+GSSAPIINCDIR= ${INCLUDEDIR}/gssapi
+K5GSSAPIINCDIR= ${INCLUDEDIR}/gssapi_krb5
+K52GSSAPIINCDIR=${INCLUDEDIR}/gssapi_krb5/gssapi
+KRB5INCDIR= ${INCLUDEDIR}/krb5
+KDB5INCDIR= ${INCLUDEDIR}/kdb5
+KADM5INCDIR= ${INCLUDEDIR}/kadm5
+.endif
BOOTSTRAPPING?= 0
@@ -256,6 +275,51 @@ CLEANFILES+= subr_capability.c
CASPERINC+= ${SRCTOP}/lib/libcasper/services/cap_fileargs/cap_fileargs.h
CASPERINC+= ${SRCTOP}/lib/libcasper/services/cap_net/cap_net.h
+.if ${MK_MITKRB5} != "no"
+EDITINC+= ${SRCTOP}/contrib/libedit/readline/readline.h
+K5GSSRPCINC+= ${SRCTOP}/crypto/krb5/src/include/gssrpc/auth.h
+K5GSSRPCINC+= ${SRCTOP}/crypto/krb5/src/include/gssrpc/auth_gss.h
+K5GSSRPCINC+= ${SRCTOP}/crypto/krb5/src/include/gssrpc/auth_gssapi.h
+K5GSSRPCINC+= ${SRCTOP}/crypto/krb5/src/include/gssrpc/auth_unix.h
+K5GSSRPCINC+= ${SRCTOP}/crypto/krb5/src/include/gssrpc/clnt.h
+K5GSSRPCINC+= ${SRCTOP}/crypto/krb5/src/include/gssrpc/netdb.h
+K5GSSRPCINC+= ${SRCTOP}/crypto/krb5/src/include/gssrpc/pmap_clnt.h
+K5GSSRPCINC+= ${SRCTOP}/crypto/krb5/src/include/gssrpc/pmap_prot.h
+K5GSSRPCINC+= ${SRCTOP}/crypto/krb5/src/include/gssrpc/pmap_rmt.h
+K5GSSRPCINC+= ${SRCTOP}/crypto/krb5/src/include/gssrpc/rpc_msg.h
+K5GSSRPCINC+= ${SRCTOP}/crypto/krb5/src/include/gssrpc/rpc.h
+K5GSSRPCINC+= ${SRCTOP}/crypto/krb5/src/include/gssrpc/svc_auth.h
+K5GSSRPCINC+= ${SRCTOP}/crypto/krb5/src/include/gssrpc/svc.h
+K5GSSRPCINC+= ${SRCTOP}/krb5/include/gssrpc/types.h
+K5GSSRPCINC+= ${SRCTOP}/crypto/krb5/src/include/gssrpc/xdr.h
+K5GSSRPCINC+= ${SRCTOP}/crypto/krb5/src/include/gssrpc/xdr.h
+GSSAPIINC+= ${SRCTOP}/crypto/krb5/src/lib/gssapi/krb5/gssapi_krb5.h
+GSSAPIINC+= ${SRCTOP}/crypto/krb5/src/lib/gssapi/generic/gssapi_alloc.h
+GSSAPIINC+= ${SRCTOP}/crypto/krb5/src/lib/gssapi/generic/gssapi_generic.h
+GSSAPIINC+= ${SRCTOP}/crypto/krb5/src/lib/gssapi/generic/gssapi_ext.h
+K5GSSAPIINC+= ${SRCTOP}/crypto/krb5/src/include/gssapi.h
+KRB5INC+= ${SRCTOP}/crypto/krb5/src/include/krb5/ccselect_plugin.h
+KRB5INC+= ${SRCTOP}/crypto/krb5/src/include/krb5/certauth_plugin.h
+KRB5INC+= ${SRCTOP}/crypto/krb5/src/include/krb5/clpreauth_plugin.h
+KRB5INC+= ${SRCTOP}/crypto/krb5/src/include/krb5/hostrealm_plugin.h
+KRB5INC+= ${SRCTOP}/crypto/krb5/src/include/krb5/kadm5_auth_plugin.h
+KRB5INC+= ${SRCTOP}/crypto/krb5/src/include/krb5/kadm5_hook_plugin.h
+KRB5INC+= ${SRCTOP}/crypto/krb5/src/include/krb5/kdcpolicy_plugin.h
+KRB5INC+= ${SRCTOP}/crypto/krb5/src/include/krb5/kdcpreauth_plugin.h
+KRB5INC+= ${SRCTOP}/crypto/krb5/src/include/krb5/localauth_plugin.h
+KRB5INC+= ${SRCTOP}/crypto/krb5/src/include/krb5/locate_plugin.h
+KRB5INC+= ${SRCTOP}/crypto/krb5/src/include/krb5/plugin.h
+KRB5INC+= ${SRCTOP}/crypto/krb5/src/include/krb5/preauth_plugin.h
+KRB5INC+= ${SRCTOP}/crypto/krb5/src/include/krb5/pwqual_plugin.h
+INCS+= ${SRCTOP}/crypto/krb5/src/include/gssapi.h
+INCS+= ${SRCTOP}/crypto/krb5/src/include/kdb.h
+INCS+= ${SRCTOP}/crypto/krb5/src/include/krb5.h
+INCS+= ${SRCTOP}/crypto/krb5/src/include/krad.h
+INCS+= ${SRCTOP}/crypto/krb5/src/util/et/com_err.h
+INCS+= ${SRCTOP}/crypto/krb5/src/util/verto/verto-module.h
+INCS+= ${SRCTOP}/crypto/krb5/src/util/verto/verto.h
+.endif
+
.if empty(SRCS)
SRCS= dummy.c
.endif