git: 2fbed5e9ea84 - stable/14 - Make kldxref a bootstrap tool and use unconditionally

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Thu, 18 Jan 2024 22:31:45 UTC
The branch stable/14 has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=2fbed5e9ea843c6747fba6d3cd209c3d5860617a

commit 2fbed5e9ea843c6747fba6d3cd209c3d5860617a
Author:     Jessica Clarke <jrtc27@FreeBSD.org>
AuthorDate: 2023-12-13 21:43:10 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2024-01-18 22:30:06 +0000

    Make kldxref a bootstrap tool and use unconditionally
    
    Now that kldxref is a generic cross tool and can be built on non-FreeBSD
    we can bootstrap it during the build and thus remove the condition for
    whether it exists. We also need to make sure to add it to the METALOG
    for -DNO_ROOT builds.
    
    Reviewed by:    brooks, imp
    Differential Revision:  https://reviews.freebsd.org/D43051
    
    (cherry picked from commit ff7c12c1f17e52337169d8ce48433fae96a9c9db)
---
 Makefile.inc1        | 5 +++++
 sys/conf/kmod.mk     | 9 +++++----
 sys/modules/Makefile | 9 +++++----
 tools/build/Makefile | 2 ++
 4 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/Makefile.inc1 b/Makefile.inc1
index 857aed8e703c..3537cf5ac579 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -2409,8 +2409,12 @@ _bootstrap_tools_links+=m4 lex
 _elftoolchain_libs= lib/libelf lib/libdwarf lib/libzstd
 ${_bt}-lib/libelf: ${_bt_m4_depend}
 ${_bt}-lib/libdwarf: ${_bt_m4_depend}
+_bt_libelf_depend=${_bt}-lib/libelf
 .endif
 
+_kldxref=	usr.sbin/kldxref
+${_bt}-usr.sbin/kldxref: ${_bt_libelf_depend}
+
 # flua is required to regenerate syscall files.  It first appeared during the
 # 13.0-CURRENT cycle, thus needs to be built on -older releases and stable
 # branches.
@@ -2672,6 +2676,7 @@ bootstrap-tools: ${_bt}-links .PHONY
     ${_cat} \
     ${_kbdcontrol} \
     ${_elftoolchain_libs} \
+    ${_kldxref} \
     lib/libopenbsd \
     usr.bin/mandoc \
     usr.bin/rpcgen \
diff --git a/sys/conf/kmod.mk b/sys/conf/kmod.mk
index ce1e7a31a865..48872f88932d 100644
--- a/sys/conf/kmod.mk
+++ b/sys/conf/kmod.mk
@@ -361,10 +361,11 @@ afterinstall: _kldxref
 .ORDER: realinstall _kldxref
 .ORDER: _installlinks _kldxref
 _kldxref: .PHONY
-	@if type kldxref >/dev/null 2>&1; then \
-		${ECHO} ${KLDXREF_CMD} ${DESTDIR}${KMODDIR}; \
-		${KLDXREF_CMD} ${DESTDIR}${KMODDIR}; \
-	fi
+	${KLDXREF_CMD} ${DESTDIR}${KMODDIR}
+.if defined(NO_ROOT) && defined(METALOG)
+	echo ".${DISTBASE}${KMODDIR}/linker.hints type=file mode=0644 uname=root gname=wheel" | \
+	    cat -l >> ${METALOG}
+.endif
 .endif
 .endif # !target(realinstall)
 
diff --git a/sys/modules/Makefile b/sys/modules/Makefile
index 4b98c7ed6e0d..b34d20dd9147 100644
--- a/sys/modules/Makefile
+++ b/sys/modules/Makefile
@@ -909,10 +909,11 @@ SUBDIR:= ${SUBDIR:N${reject}}
 .if !defined(NO_XREF)
 .MAKEFLAGS+=	-DNO_XREF
 afterinstall: .PHONY
-	@if type kldxref >/dev/null 2>&1; then \
-		${ECHO} ${KLDXREF_CMD} ${DESTDIR}${KMODDIR}; \
-		${KLDXREF_CMD} ${DESTDIR}${KMODDIR}; \
-	fi
+	${KLDXREF_CMD} ${DESTDIR}${KMODDIR}
+.if defined(NO_ROOT) && defined(METALOG)
+	echo ".${DISTBASE}${KMODDIR}/linker.hints type=file mode=0644 uname=root gname=wheel" | \
+	    cat -l >> ${METALOG}
+.endif
 .endif
 
 SUBDIR:= ${SUBDIR:u:O}
diff --git a/tools/build/Makefile b/tools/build/Makefile
index bd573a38fc75..92f7d396825c 100644
--- a/tools/build/Makefile
+++ b/tools/build/Makefile
@@ -295,6 +295,8 @@ SYSINCS+=	${SRCTOP}/sys/sys/elf.h
 SYSINCS+=	${SRCTOP}/sys/sys/ctf.h
 # for kbdcontrol:
 SYSINCS+=	${SRCTOP}/sys/sys/kbio.h
+# for kldxref:
+SYSINCS+=	${SRCTOP}/sys/sys/module.h
 
 # We want to run the build with only ${WORLDTMP} in $PATH to ensure we don't
 # accidentally run tools that are incompatible but happen to be in $PATH.