Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Jun 2025 02:51:58 GMT
From:      Cy Schubert <cy@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 7e35117eb07f - main - Makefile: Hook MIT KRB5 into the build
Message-ID:  <202506160251.55G2pwx4063231@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202506160251.55G2pwx4063231>