1#	$NetBSD: bsd.dtb.mk,v 1.3 2021/06/02 10:28:21 jmcneill Exp $
2
3.include <bsd.init.mk>
4.include <bsd.own.mk>
5
6##### Default values
7.if !defined(S)
8.   if defined(NETBSDSRCDIR)
9S=      ${NETBSDSRCDIR}/sys
10.   elif defined(BSDSRCDIR)
11S=      ${BSDSRCDIR}/sys
12.   else
13S=      /sys
14.   endif
15.endif
16
17##### Basic targets
18.PHONY:		dtbinstall dtblist dtb
19realinstall:	dtbinstall
20realall:	dtb
21
22DTSPADDING?=	1024
23
24.if !make(obj) && !make(clean) && !make(cleandir)
25.BEGIN::
26	-@mkdir -p ${.OBJDIR}/dts
27.for _arch in ${DTSGNUARCH}
28	-@ln -snf ${S:S@^../@../../@}/external/gpl2/dts/dist/arch/${_arch}/boot/dts ${.OBJDIR}/dts/${_arch}
29.endfor
30.endif
31
32DTSINC?=$S/external/gpl2/dts/dist/include
33.for _arch in ${DTSARCH}
34DTSDIR+=$S/arch/${_arch}/dts
35.endfor
36.for _arch in ${DTSGNUARCH}
37DTSDIR+=$S/external/gpl2/dts/dist/arch/${_arch}/boot/dts
38.if defined(DTSSUBDIR)
39DTSDIR+=$S/external/gpl2/dts/dist/arch/${_arch}/boot/dts/${DTSSUBDIR}
40.endif
41.endfor
42
43DTSPATH=${DTSINC} ${DTSDIR} ${.OBJDIR}/dts
44
45.SUFFIXES: .dtb .dts
46
47.dts.dtb:
48	${CPP} -P -xassembler-with-cpp ${DTSPATH:@v@-I ${v}@} \
49	    -include ${.IMPSRC} /dev/null | \
50	${TOOL_DTC} ${DTSPATH:@v@-i ${v}@} -I dts -O dtb \
51	    -p ${DTSPADDING} -b 0 -@ -o ${.TARGET}
52
53.PATH.dts: ${DTSDIR}
54
55DTB= 		 ${DTS:.dts=.dtb}
56
57dtb:		${DTB}
58
59.if defined(DTSSUBDIR)
60DTBINSTDIR=	${DTBDIR}/${DTSSUBDIR}
61.else
62DTBINSTDIR=	${DTBDIR}
63.endif
64
65dtbinstall:	dtb
66	${INSTALL_DIR} ${DESTDIR}${DTBINSTDIR}
67.for _dtb in ${DTB}
68	${_MKSHMSG_INSTALL} ${_dtb}
69	${_MKSHECHO} "${INSTALL_FILE} -o ${DTBOWN} -g ${DTBGRP} -m ${DTBMODE} \
70	    ${.OBJDIR}/${_dtb} ${DESTDIR}${DTBINSTDIR}"
71	${INSTALL_FILE} -o ${DTBOWN} -g ${DTBGRP} -m ${DTBMODE} \
72	    ${.OBJDIR}/${_dtb} ${DESTDIR}${DTBINSTDIR}
73.endfor
74.if defined(DTSSUBDIR)
75.for _dtb in ${DTB_NOSUBDIR}
76	${_MKSHMSG_INSTALL} ${_dtb}
77	${_MKSHECHO} "${INSTALL_FILE} -o ${DTBOWN} -g ${DTBGRP} -m ${DTBMODE} \
78	    ${.OBJDIR}/${_dtb} ${DESTDIR}${DTBDIR}"
79	${INSTALL_FILE} -o ${DTBOWN} -g ${DTBGRP} -m ${DTBMODE} \
80	    ${.OBJDIR}/${_dtb} ${DESTDIR}${DTBDIR}
81.endfor
82.endif
83
84dtblist:
85.if defined(DTSSUBDIR)
86	@echo ".${DTBINSTDIR}\t\tdtb-base-boot\tdtb" | \
87	    ${TOOL_SED} 's/\\t/	/g'
88.for _dtb in ${DTB_NOSUBDIR}
89	@echo ".${DTBDIR}/${_dtb}\t\tdtb-base-boot\tdtb" | \
90	    ${TOOL_SED} 's/\\t/	/g'
91.endfor
92.endif
93.for _dtb in ${DTB}
94	@echo ".${DTBINSTDIR}/${_dtb}\t\tdtb-base-boot\tdtb" | \
95	    ${TOOL_SED} 's/\\t/	/g'
96.endfor
97
98clean:  .PHONY
99	rm -f ${DTB}
100.for _arch in ${DTSGNUARCH}
101	rm -f dts/${_arch}
102.endfor
103	test -d dts && rmdir dts || true
104
105
106##### Pull in related .mk logic
107.include <bsd.obj.mk>
108.include <bsd.kinc.mk>
109