1# $NetBSD: dts.mk,v 1.12 2019/04/24 20:53:10 christos Exp $
2
3DTSARCH?=${MACHINE_CPU}
4DTSGNUARCH?=${DTSARCH}
5DTSPADDING?=1024
6
7.if !make(obj) && !make(clean) && !make(cleandir)
8.BEGIN::
9	-@mkdir -p dts
10.for _arch in ${DTSGNUARCH}
11	-@ln -snf ${S:S@^../@../../@}/external/gpl2/dts/dist/arch/${_arch}/boot/dts dts/${_arch}
12.endfor
13.endif
14
15DTSINC?=$S/external/gpl2/dts/dist/include
16.for _arch in ${DTSARCH}
17DTSDIR+=$S/arch/${_arch}/dts
18.endfor
19.for _arch in ${DTSGNUARCH}
20DTSDIR+=$S/external/gpl2/dts/dist/arch/${_arch}/boot/dts
21.for _dir in ${DTSSUBDIR}
22.if exists($S/external/gpl2/dts/dist/arch/${_arch}/boot/dts/${_dir})
23DTSDIR+=$S/external/gpl2/dts/dist/arch/${_arch}/boot/dts/${_dir}
24.endif
25.endfor
26.endfor
27
28DTSPATH=${DTSINC} ${DTSDIR} ${DTS_OVERLAYDIR} dts
29
30.SUFFIXES: .dtd .dtdo .dtb .dtbo .dts
31
32.dts.dtd:
33	(${CPP} -P -xassembler-with-cpp ${DTSPATH:@v@-I ${v}@} \
34	    -include ${.IMPSRC} /dev/null | \
35	${TOOL_DTC} ${DTSPATH:@v@-i ${v}@} -I dts -O dtb \
36	    -p ${DTSPADDING} -b 0 -@ -o /dev/null -d /dev/stdout | \
37	${TOOL_SED} -e 's@/dev/null@${.TARGET:.dtd=.dtb}@' \
38	    -e 's@<stdin>@${.IMPSRC}@' && \
39	${CPP} -P -xassembler-with-cpp ${DTSPATH:@v@-I ${v}@} \
40	    -include ${.IMPSRC} -M /dev/null | \
41	${TOOL_SED} -e 's@null.o@${.TARGET:.dtd=.dtb}@' \
42	    -e 's@/dev/null@@') > ${.TARGET}
43
44.dts.dtdo:
45	(${CPP} -P -xassembler-with-cpp ${DTSPATH:@v@-I ${v}@} \
46	    -include ${.IMPSRC} /dev/null | \
47	${TOOL_DTC} ${DTSPATH:@v@-i ${v}@} -I dts -O dtb \
48	    -@ -o /dev/null -d /dev/stdout | \
49	${TOOL_SED} -e 's@/dev/null@${.TARGET:.dtdo=.dtbo}@' \
50	    -e 's@<stdin>@${.IMPSRC}@' && \
51	${CPP} -P -xassembler-with-cpp ${DTSPATH:@v@-I ${v}@} \
52	    -include ${.IMPSRC} -M /dev/null | \
53	${TOOL_SED} -e 's@null.o@${.TARGET:.dtdo=.dtbo}@' \
54	    -e 's@/dev/null@@') > ${.TARGET}
55
56.dts.dtb:
57	${CPP} -P -xassembler-with-cpp ${DTSPATH:@v@-I ${v}@} \
58	    -include ${.IMPSRC} /dev/null | \
59	${TOOL_DTC} ${DTSPATH:@v@-i ${v}@} -I dts -O dtb \
60	    -p ${DTSPADDING} -b 0 -@ -o ${.TARGET}
61
62.dts.dtbo:
63	${CPP} -P -xassembler-with-cpp ${DTSPATH:@v@-I ${v}@} \
64	    -include ${.IMPSRC} /dev/null | \
65	${TOOL_DTC} ${DTSPATH:@v@-i ${v}@} -I dts -O dtb \
66	    -@ -o ${.TARGET}
67
68.PATH.dts: ${DTSDIR} ${DTS_OVERLAYDIR}
69
70DEPS+= ${DTS:.dts=.dtd}
71DEPS+= ${DTS_OVERLAYS:.dts=.dtdo}
72DTB=  ${DTS:.dts=.dtb}
73DTBO= ${DTS_OVERLAYS:.dts=.dtbo}
74
75all: ${DTB} ${DTBO}
76