Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F153223757
D19351.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
6 KB
Referenced Files
None
Subscribers
None
D19351.diff
View Options
Index: head/sys/conf/dtb.build.mk
===================================================================
--- head/sys/conf/dtb.build.mk
+++ head/sys/conf/dtb.build.mk
@@ -0,0 +1,77 @@
+# $FreeBSD$
+
+.include <bsd.init.mk>
+# Grab all the options for a kernel build. For backwards compat, we need to
+# do this after bsd.own.mk.
+.include "kern.opts.mk"
+
+DTC?= dtc
+
+.if !defined(SYSDIR)
+.if defined(S)
+SYSDIR= ${S}
+.else
+# Search for kernel source tree in standard places.
+.for _dir in ${.CURDIR}/../.. ${.CURDIR}/../../.. /sys /usr/src/sys
+.if exists(${_dir}/kern/)
+SYSDIR= ${_dir:tA}
+.endif
+.endfor
+.endif # defined(S)
+.endif # defined(SYSDIR)
+
+.if !defined(SYSDIR) || !exists(${SYSDIR}/kern/)
+.error "can't find kernel source tree"
+.endif
+
+DTB=${DTS:T:R:S/$/.dtb/}
+DTBO=${DTSO:T:R:S/$/.dtbo/}
+
+.SUFFIXES: .dtb .dts .dtbo .dtso
+.PATH.dts: ${SYSDIR}/gnu/dts/${MACHINE} ${SYSDIR}/dts/${MACHINE}
+.PATH.dtso: ${SYSDIR}/dts/${MACHINE}/overlays
+
+.export DTC ECHO
+
+.dts.dtb: ${OP_META}
+ @${ECHO} Generating ${.TARGET} from ${.IMPSRC}
+ @${SYSDIR}/tools/fdt/make_dtb.sh ${SYSDIR} ${.IMPSRC} ${.OBJDIR}
+
+.dtso.dtbo: ${OP_META}
+ @${ECHO} Generating ${.TARGET} from ${.IMPSRC}
+ @${SYSDIR}/tools/fdt/make_dtbo.sh ${SYSDIR} ${.IMPSRC} ${.OBJDIR}
+
+# Add dependencies on the source file so that out-of-tree things can be included
+# without any .PATH additions.
+.for _dts in ${DTS}
+${_dts:R:T}.dtb: ${_dts}
+.endfor
+
+.for _dtso in ${DTSO}
+${_dtso:R:T}.dtbo: ${_dtso}
+.endfor
+
+_dtbinstall:
+# Need to create this because installkernel doesn't invoke mtree with BSD.root.mtree
+# to make sure the tree is setup properly. We don't recreate it to avoid duplicate
+# entries in the NO_ROOT case.
+ test -d ${DESTDIR}${DTBDIR} || ${INSTALL} -d -o ${DTBOWN} -g ${DTBGRP} ${DESTDIR}${DTBDIR}
+.for _dtb in ${DTB}
+.if ${MACHINE_CPUARCH} == "aarch64"
+ # :H:T here to grab the vendor component of the DTB path in a way that
+ # allows out-of-tree DTS builds, too. We make the assumption that
+ # out-of-tree DTS will have a similar directory structure to in-tree,
+ # with .dts files appearing in a vendor/ directory.
+ test -d ${DESTDIR}${DTBDIR}/${_dtb:H:T} || ${INSTALL} -d -o ${DTBOWN} -g ${DTBGRP} ${DESTDIR}${DTBDIR}/${_dtb:H:T}
+ ${INSTALL} -o ${DTBOWN} -g ${DTBGRP} -m ${DTBMODE} \
+ ${_INSTALLFLAGS} ${_dtb:T} ${DESTDIR}${DTBDIR}/${_dtb:H:T}
+.else
+ ${INSTALL} -o ${DTBOWN} -g ${DTBGRP} -m ${DTBMODE} \
+ ${_INSTALLFLAGS} ${_dtb} ${DESTDIR}${DTBDIR}/
+.endif
+.endfor
+ test -d ${DESTDIR}${DTBODIR} || ${INSTALL} -d -o ${DTBOWN} -g ${DTBGRP} ${DESTDIR}${DTBODIR}
+.for _dtbo in ${DTBO}
+ ${INSTALL} -o ${DTBOWN} -g ${DTBGRP} -m ${DTBMODE} \
+ ${_INSTALLFLAGS} ${_dtbo} ${DESTDIR}${DTBODIR}/
+.endfor
Index: head/sys/conf/dtb.mk
===================================================================
--- head/sys/conf/dtb.mk
+++ head/sys/conf/dtb.mk
@@ -8,6 +8,8 @@
#
# DTS List of the dts files to build and install.
#
+# DTSO List of the dts overlay files to build and install.
+#
# DTBDIR Base path for dtb modules [/boot/dtb]
#
# DTBOWN .dtb file owner. [${BINOWN}]
@@ -20,7 +22,7 @@
#
# +++ targets +++
#
-# install:
+# install:
# install the kernel module; if the Makefile
# does not itself define the target install, the targets
# beforeinstall and afterinstall may also be used to cause
@@ -28,78 +30,15 @@
# is executed.
#
-.include <bsd.init.mk>
-# Grab all the options for a kernel build. For backwards compat, we need to
-# do this after bsd.own.mk.
-.include "kern.opts.mk"
+.include "dtb.build.mk"
-DTC?= dtc
-
-# Search for kernel source tree in standard places.
-.for _dir in ${.CURDIR}/../.. ${.CURDIR}/../../.. /sys /usr/src/sys
-.if !defined(SYSDIR) && exists(${_dir}/kern/)
-SYSDIR= ${_dir:tA}
-.endif
-.endfor
-.if !defined(SYSDIR) || !exists(${SYSDIR}/kern/)
-.error "can't find kernel source tree"
-.endif
-
-.SUFFIXES: .dtb .dts .dtbo .dtso
-
-.PATH: ${SYSDIR}/gnu/dts/${MACHINE} ${SYSDIR}/dts/${MACHINE} ${SYSDIR}/dts/${MACHINE}/overlays
-
-DTB=${DTS:R:S/$/.dtb/}
-DTBO=${DTSO:R:S/$/.dtbo/}
-
+.if !target(install) && !target(realinstall)
all: ${DTB} ${DTBO}
-
-.if defined(DTS)
-.export DTC ECHO
-.for _dts in ${DTS}
-${_dts:R:S/$/.dtb/}: ${_dts} ${OP_META}
- @${ECHO} Generating ${.TARGET} from ${_dts}
- @${SYSDIR}/tools/fdt/make_dtb.sh ${SYSDIR} ${_dts} ${.OBJDIR}
-CLEANFILES+=${_dts:R:S/$/.dtb/}
-.endfor
-.endif
-
-.if defined(DTSO)
-.export DTC ECHO
-.for _dtso in ${DTSO}
-${_dtso:R:S/$/.dtbo/}: ${_dtso} ${OP_META}
- @${ECHO} Generating ${.TARGET} from ${_dtso}
- @${SYSDIR}/tools/fdt/make_dtbo.sh ${SYSDIR} overlays/${_dtso} ${.OBJDIR}
-CLEANFILES+=${_dtso:R:S/$/.dtbo/}
-.endfor
-.endif
-
-.if !target(install)
-.if !target(realinstall)
realinstall: _dtbinstall
-.ORDER: beforeinstall _kmodinstall
-_dtbinstall:
-# Need to create this because installkernel doesn't invoke mtree with BSD.root.mtree
-# to make sure the tree is setup properly. We don't recreate it to avoid duplicate
-# entries in the NO_ROOT case.
- test -d ${DESTDIR}${DTBDIR} || ${INSTALL} -d -o ${DTBOWN} -g ${DTBGRP} ${DESTDIR}${DTBDIR}
-.for _dtb in ${DTB}
-.if ${MACHINE_CPUARCH} == "aarch64"
- test -d ${DESTDIR}${DTBDIR}/${_dtb:H} || ${INSTALL} -d -o ${DTBOWN} -g ${DTBGRP} ${DESTDIR}${DTBDIR}/${_dtb:H}
- ${INSTALL} -o ${DTBOWN} -g ${DTBGRP} -m ${DTBMODE} \
- ${_INSTALLFLAGS} ${_dtb:T} ${DESTDIR}${DTBDIR}/${_dtb:H}
-.else
- ${INSTALL} -o ${DTBOWN} -g ${DTBGRP} -m ${DTBMODE} \
- ${_INSTALLFLAGS} ${_dtb} ${DESTDIR}${DTBDIR}/
-.endif
-.endfor
- test -d ${DESTDIR}${DTBODIR} || ${INSTALL} -d -o ${DTBOWN} -g ${DTBGRP} ${DESTDIR}${DTBODIR}
-.for _dtbo in ${DTBO}
- ${INSTALL} -o ${DTBOWN} -g ${DTBGRP} -m ${DTBMODE} \
- ${_INSTALLFLAGS} ${_dtbo} ${DESTDIR}${DTBODIR}/
-.endfor
-.endif # !target(realinstall)
-.endif # !target(install)
+.ORDER: beforeinstall _dtbinstall
+
+CLEANFILES+=${DTB} ${DTBO}
+.endif # !target(install) && !target(realinstall)
.include <bsd.dep.mk>
.include <bsd.obj.mk>
Index: head/sys/conf/kern.post.mk
===================================================================
--- head/sys/conf/kern.post.mk
+++ head/sys/conf/kern.post.mk
@@ -8,6 +8,16 @@
# should be defined in the kern.pre.mk so that port makefiles can
# override or augment them.
+.if defined(DTS) || defined(DTSO)
+.include "dtb.build.mk"
+
+KERNEL_EXTRA+= ${DTB} ${DTBO}
+CLEAN+= ${DTB} ${DTBO}
+
+kernel-install: _dtbinstall
+.ORDER: beforeinstall _dtbinstall
+.endif
+
# In case the config had a makeoptions DESTDIR...
.if defined(DESTDIR)
MKMODULESENV+= DESTDIR="${DESTDIR}"
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Apr 20, 10:01 PM (3 h, 7 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31867533
Default Alt Text
D19351.diff (6 KB)
Attached To
Mode
D19351: Allow kernel config to specify DTS/DTSO to build, and out-of-tree support
Attached
Detach File
Event Timeline
Log In to Comment