xref: /freebsd/sys/conf/dtb.mk (revision 38069501)
1# $FreeBSD$
2#
3# The include file <dtb.mk> handles building and installing dtb files.
4#
5# +++ variables +++
6#
7# DTC		The Device Tree Compiler to use
8#
9# DTS		List of the dts files to build and install.
10#
11# DTBDIR	Base path for dtb modules [/boot/dtb]
12#
13# DTBOWN	.dtb file owner. [${BINOWN}]
14#
15# DTBGRP	.dtb file group. [${BINGRP}]
16#
17# DTBMODE	Module file mode. [${BINMODE}]
18#
19# DESTDIR	The tree where the module gets installed. [not set]
20#
21# +++ targets +++
22#
23# 	install:
24#               install the kernel module; if the Makefile
25#               does not itself define the target install, the targets
26#               beforeinstall and afterinstall may also be used to cause
27#               actions immediately before and after the install target
28#		is executed.
29#
30
31.include <bsd.init.mk>
32# Grab all the options for a kernel build. For backwards compat, we need to
33# do this after bsd.own.mk.
34.include "kern.opts.mk"
35
36DTC?=		dtc
37
38# Search for kernel source tree in standard places.
39.for _dir in ${.CURDIR}/../.. ${.CURDIR}/../../.. /sys /usr/src/sys
40.if !defined(SYSDIR) && exists(${_dir}/kern/)
41SYSDIR=	${_dir:tA}
42.endif
43.endfor
44.if !defined(SYSDIR) || !exists(${SYSDIR}/kern/)
45.error "can't find kernel source tree"
46.endif
47
48.SUFFIXES: .dtb .dts
49
50.PATH: ${SYSDIR}/gnu/dts/${MACHINE} ${SYSDIR}/boot/fdt/dts/${MACHINE}
51
52DTB=${DTS:R:S/$/.dtb/}
53
54all: ${DTB}
55
56.if defined(DTS)
57.export DTC
58.for _dts in ${DTS}
59${_dts:R:S/$/.dtb/}:	${_dts} ${OP_META}
60	@echo Generating ${.TARGET} from ${_dts}
61	@${SYSDIR}/tools/fdt/make_dtb.sh ${SYSDIR} ${_dts} ${.OBJDIR}
62CLEANFILES+=${_dts:R:S/$/.dtb/}
63.endfor
64.endif
65
66.if !target(install)
67.if !target(realinstall)
68realinstall: _dtbinstall
69.ORDER: beforeinstall _kmodinstall
70_dtbinstall:
71# Need to create this because installkernel doesn't invoke mtree with BSD.root.mtree
72# to make sure the tree is setup properly. We don't recreate it to avoid duplicate
73# entries in the NO_ROOT case.
74	test -d ${DESTDIR}${DTBDIR} || ${INSTALL} -d -o ${DTBOWN} -g ${DTBGRP} ${DESTDIR}${DTBDIR}
75.for _dtb in ${DTB}
76	${INSTALL} -o ${DTBOWN} -g ${DTBGRP} -m ${DTBMODE} \
77	    ${_INSTALLFLAGS} ${_dtb} ${DESTDIR}${DTBDIR}/
78.endfor
79.endif # !target(realinstall)
80.endif # !target(install)
81
82.include <bsd.dep.mk>
83.include <bsd.obj.mk>
84.include <bsd.links.mk>
85