Page MenuHomeFreeBSD

D28765.diff
No OneTemporary

D28765.diff

Index: Makefile.inc1
===================================================================
--- Makefile.inc1
+++ Makefile.inc1
@@ -1608,6 +1608,12 @@
KRNLOBJDIR= ${OBJTOP}${KERNSRCDIR:C,^${.CURDIR},,}
KERNCONFDIR?= ${KRNLCONFDIR}
+.if ${MK_REPRODUCIBLE_BUILD} != "no"
+REPRODUCIBLE_KRNLOBJDIR= ${REPRODUCIBLE_OBJTOP}${KERNSRCDIR:C,^${.CURDIR},,}
+.else
+REPRODUCIBLE_KRNLOBJDIR= ${KRNLOBJDIR}
+.endif
+
BUILDKERNELS=
INSTALLKERNEL=
.if defined(NO_INSTALLKERNEL)
@@ -1690,7 +1696,8 @@
@echo "--------------------------------------------------------------"
@echo ">>> stage 2.2: rebuilding the object tree"
@echo "--------------------------------------------------------------"
- ${_+_}cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} obj
+ ${_+_}cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} obj \
+ REPRODUCIBLE_KOBJDIR=${REPRODUCIBLE_KRNLOBJDIR}/${_kernel}
.endif
@echo
@echo "--------------------------------------------------------------"
@@ -1701,7 +1708,8 @@
@echo "--------------------------------------------------------------"
@echo ">>> stage 3.1: building everything"
@echo "--------------------------------------------------------------"
- ${_+_}cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} all -DNO_MODULES_OBJ
+ ${_+_}cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} all -DNO_MODULES_OBJ \
+ REPRODUCIBLE_KOBJDIR=${REPRODUCIBLE_KRNLOBJDIR}/${_kernel}
@echo "--------------------------------------------------------------"
@echo ">>> Kernel build for ${_kernel} completed on `LC_ALL=C date`"
@echo "--------------------------------------------------------------"
Index: sys/conf/kern.post.mk
===================================================================
--- sys/conf/kern.post.mk
+++ sys/conf/kern.post.mk
@@ -346,6 +346,18 @@
.depend: .PRECIOUS ${SRCS}
_MAP_DEBUG_PREFIX= yes
+.if ${MK_REPRODUCIBLE_BUILD} != "no"
+_sysroot=${CC:M--sysroot=*:[-1]:S,--sysroot=,,}
+_map_sysdir=${REPRODUCIBLE_SYSDIR}
+CFLAGS+= -ffile-prefix-map=${_sysroot}/=/
+CFLAGS+= -ffile-prefix-map=${SYSDIR}=${_map_sysdir}
+.if defined(REPRODUCIBLE_KOBJDIR) && \
+ "${REPRODUCIBLE_KOBJDIR}" != "${.OBJDIR}"
+CFLAGS+= -ffile-prefix-map=${.OBJDIR}=${REPRODUCIBLE_KOBJDIR}
+.endif
+.else
+_map_sysdir=${SYSDIR}
+.endif
_ILINKS= machine
.if ${MACHINE} != ${MACHINE_CPUARCH} && ${MACHINE} != "arm64"
@@ -363,9 +375,9 @@
.endif
.if defined(_MAP_DEBUG_PREFIX)
.if ${_link} == "machine"
-CFLAGS+= -fdebug-prefix-map=./machine=${SYSDIR}/${MACHINE}/include
+CFLAGS+= -ffile-prefix-map=./machine=${_map_sysdir}/${MACHINE}/include
.else
-CFLAGS+= -fdebug-prefix-map=./${_link}=${SYSDIR}/${_link}/include
+CFLAGS+= -ffile-prefix-map=./${_link}=${_map_sysdir}/${_link}/include
.endif
.endif
.endfor
Index: sys/conf/kern.pre.mk
===================================================================
--- sys/conf/kern.pre.mk
+++ sys/conf/kern.pre.mk
@@ -26,6 +26,8 @@
# The kernel build always expects .OBJDIR=.CURDIR.
.OBJDIR: ${.CURDIR}
+# This gets fed by Makefile.inc1 iff we're doing a reproducible build.
+REPRODUCIBLE_KOBJDIR?= ${.CURDIR}
.if defined(NO_OBJWALK) || ${MK_AUTO_OBJ} == "yes"
NO_OBJWALK= t
@@ -345,6 +347,9 @@
# them.
MKMODULESENV+= MAKEOBJDIRPREFIX=${.OBJDIR}/modules KMODDIR=${KODIR}
+.if ${MK_REPRODUCIBLE_BUILD} != "no"
+MKMODULESENV+= REPRODUCIBLE_MODOBJDIR=${REPRODUCIBLE_KOBJDIR}/modules
+.endif
MKMODULESENV+= MACHINE_CPUARCH=${MACHINE_CPUARCH}
MKMODULESENV+= MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH}
MKMODULESENV+= MODULES_EXTRA="${MODULES_EXTRA}" WITHOUT_MODULES="${WITHOUT_MODULES}"
Index: sys/conf/kmod.mk
===================================================================
--- sys/conf/kmod.mk
+++ sys/conf/kmod.mk
@@ -272,6 +272,18 @@
.endif
_MAP_DEBUG_PREFIX= yes
+.if ${MK_REPRODUCIBLE_BUILD} != "no"
+_sysroot=${CC:M--sysroot=*:[-1]:S,--sysroot=,,}
+_map_sysdir=${REPRODUCIBLE_SYSDIR}
+CFLAGS+= -ffile-prefix-map=${_sysroot}/=/
+CFLAGS+= -ffile-prefix-map=${SYSDIR}=${_map_sysdir}
+.if defined(REPRODUCIBLE_MODOBJDIR) && \
+ "${REPRODUCIBLE_MODOBJDIR}${REPRODUCIBLE_SYSDIR}" != "${MAKEOBJDIRPREFIX}${SYSDIR}"
+CFLAGS+= -ffile-prefix-map=${MAKEOBJDIRPREFIX}${SYSDIR}=${REPRODUCIBLE_MODOBJDIR}${REPRODUCIBLE_SYSDIR}
+.endif
+.else
+_map_sysdir=${SYSDIR}
+.endif
_ILINKS=machine
.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
@@ -293,9 +305,9 @@
.endif
.if defined(_MAP_DEBUG_PREFIX)
.if ${_link} == "machine"
-CFLAGS+= -fdebug-prefix-map=./machine=${SYSDIR}/${MACHINE}/include
+CFLAGS+= -ffile-prefix-map=./machine=${_map_sysdir}/${MACHINE}/include
.else
-CFLAGS+= -fdebug-prefix-map=./${_link}=${SYSDIR}/${_link}/include
+CFLAGS+= -ffile-prefix-map=./${_link}=${_map_sysdir}/${_link}/include
.endif
.endif
.endfor

File Metadata

Mime Type
text/plain
Expires
Sat, May 16, 2:15 AM (8 h, 41 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33107536
Default Alt Text
D28765.diff (4 KB)

Event Timeline