xref: /netbsd-src/distrib/common/Makefile.makedev (revision 547b3a3b01258cc76b6903d55f3bbdd59e7003a6)
1#	$NetBSD: Makefile.makedev,v 1.19 2014/08/10 05:56:36 matt Exp $
2#
3# Makefile snippet to add ${MAKEDEVTARGETS} devices to the mtree list
4# (if set), otherwise copy .OBJDIR-of-etc/MAKEDEV to ./dev
5#
6# If this is to be used with Makefile.image, then this file should be
7# .include-d first.
8#
9# Required variables:
10#	NETBSDSRCDIR	top level of src tree (set by <bsd.own.mk>)
11#	MACHINE		machine name (set externally by build framework)
12#
13# Optional variables:
14#	MAKEDEVTARGETS	targets to create with .OBJDIR-of-etc/MAKEDEV
15#
16# Variables modified by this:
17#	MAKEDEVSCRIPT	path to .OBJDIR-of-etc/MAKEDEV
18#	MTREECONF	may get "devices.spec" added
19#	LISTS		may get "list.makedev" added
20#	IMAGEDEPENDS	may get ${MAKEDEVSCRIPT} added
21#	PARSELISTENV	may get MAKEDEVSCRIPT=... added
22#
23
24.if !defined(_MAKEFILE_MAKEDEV_)
25_MAKEFILE_MAKEDEV_=1
26
27
28MAKEDEVSPEC?=	devices.spec
29
30_MAKEDEVOBJDIR!=cd ${NETBSDSRCDIR}/etc && ${PRINTOBJDIR}
31MAKEDEVSCRIPT=	${_MAKEDEVOBJDIR}/MAKEDEV
32
33CLEANFILES+=	${MAKEDEVSPEC} ${MAKEDEVSPEC}.tmp
34
35
36.if defined(MAKEDEVTARGETS)
37
38#
39#	MAKEDEVTARGETS is set; add those devices to the mtree spec that's
40#	used to build the file system
41#
42MTREECONF+=	${MAKEDEVSPEC}
43
44.if exists(${NETBSDSRCDIR}/etc/etc.${MACHINE_CPU}/MAKEDEV.conf)
45MAKEDEV_MACHINE=${MACHINE_CPU}
46.else
47MAKEDEV_MACHINE=${MACHINE}
48.endif
49
50${MAKEDEVSPEC}:	${MAKEDEVSCRIPT} Makefile \
51		${NETBSDSRCDIR}/etc/etc.${MAKEDEV_MACHINE}/MAKEDEV.conf
52
53	${_MKTARGET_CREATE}
54	rm -f ${.TARGET} ${.TARGET}.tmp
55	MACHINE=${MAKEDEV_MACHINE:Q} MACHINE_ARCH=${MACHINE_ARCH:Q} \
56	    ${HOST_SH} ${MAKEDEVSCRIPT} -s ${MAKEDEVTARGETS} \
57	    > ${.TARGET}.tmp
58	${TOOL_SED} -e '/^\. type=dir/d' -e 's,^\.,./dev,' ${.TARGET}.tmp \
59	    | sort -o ${.TARGET}
60
61.else	# ! MAKEDEVTARGETS
62
63#
64#	MAKEDEVTARGETS isn't set; copy in /dev/MAKEDEV and rely upon
65#	init(8) to mount an mfs /dev and recreate the devices by
66#	(effectively) running "cd /dev ; ./MAKEDEV all"
67#
68LISTS+=		${DISTRIBDIR}/common/list.makedev
69IMAGEDEPENDS+=	${MAKEDEVSCRIPT}
70PARSELISTENV+=	MAKEDEVSCRIPT=${MAKEDEVSCRIPT:Q}
71
72${MAKEDEVSPEC}:	.PHONY
73
74.endif	# ! MAKEDEVTARGETS
75
76
77.endif	# _MAKEFILE_MAKEDEV_
78