11.19Smatt#	$NetBSD: Makefile.makedev,v 1.19 2014/08/10 05:56:36 matt Exp $
21.1Slukem#
31.1Slukem# Makefile snippet to add ${MAKEDEVTARGETS} devices to the mtree list
41.14Stsutsui# (if set), otherwise copy .OBJDIR-of-etc/MAKEDEV to ./dev
51.4Slukem#
61.4Slukem# If this is to be used with Makefile.image, then this file should be
71.4Slukem# .include-d first.
81.1Slukem#
91.1Slukem# Required variables:
101.2Slukem#	NETBSDSRCDIR	top level of src tree (set by <bsd.own.mk>)
111.1Slukem#	MACHINE		machine name (set externally by build framework)
121.1Slukem#
131.1Slukem# Optional variables:
141.7Slukem#	MAKEDEVTARGETS	targets to create with .OBJDIR-of-etc/MAKEDEV
151.1Slukem#
161.1Slukem# Variables modified by this:
171.7Slukem#	MAKEDEVSCRIPT	path to .OBJDIR-of-etc/MAKEDEV
181.7Slukem#	MTREECONF	may get "devices.spec" added
191.7Slukem#	LISTS		may get "list.makedev" added
201.13Sapb#	IMAGEDEPENDS	may get ${MAKEDEVSCRIPT} added
211.13Sapb#	PARSELISTENV	may get MAKEDEVSCRIPT=... added
221.1Slukem#
231.1Slukem
241.5Slukem.if !defined(_MAKEFILE_MAKEDEV_)
251.5Slukem_MAKEFILE_MAKEDEV_=1
261.5Slukem
271.5Slukem
281.1SlukemMAKEDEVSPEC?=	devices.spec
291.1Slukem
301.7Slukem_MAKEDEVOBJDIR!=cd ${NETBSDSRCDIR}/etc && ${PRINTOBJDIR}
311.7SlukemMAKEDEVSCRIPT=	${_MAKEDEVOBJDIR}/MAKEDEV
321.7Slukem
331.1SlukemCLEANFILES+=	${MAKEDEVSPEC} ${MAKEDEVSPEC}.tmp
341.1Slukem
351.1Slukem
361.1Slukem.if defined(MAKEDEVTARGETS)
371.1Slukem
381.1Slukem#
391.1Slukem#	MAKEDEVTARGETS is set; add those devices to the mtree spec that's
401.1Slukem#	used to build the file system
411.1Slukem#
421.1SlukemMTREECONF+=	${MAKEDEVSPEC}
431.1Slukem
441.19Smatt.if exists(${NETBSDSRCDIR}/etc/etc.${MACHINE_CPU}/MAKEDEV.conf)
451.19SmattMAKEDEV_MACHINE=${MACHINE_CPU}
461.19Smatt.else
471.19SmattMAKEDEV_MACHINE=${MACHINE}
481.19Smatt.endif
491.19Smatt
501.18Smatt${MAKEDEVSPEC}:	${MAKEDEVSCRIPT} Makefile \
511.19Smatt		${NETBSDSRCDIR}/etc/etc.${MAKEDEV_MACHINE}/MAKEDEV.conf
521.18Smatt		
531.10Slukem	${_MKTARGET_CREATE}
541.16Snjoly	rm -f ${.TARGET} ${.TARGET}.tmp
551.19Smatt	MACHINE=${MAKEDEV_MACHINE:Q} MACHINE_ARCH=${MACHINE_ARCH:Q} \
561.9Slukem	    ${HOST_SH} ${MAKEDEVSCRIPT} -s ${MAKEDEVTARGETS} \
571.16Snjoly	    > ${.TARGET}.tmp
581.16Snjoly	${TOOL_SED} -e '/^\. type=dir/d' -e 's,^\.,./dev,' ${.TARGET}.tmp \
591.16Snjoly	    | sort -o ${.TARGET}
601.1Slukem
611.1Slukem.else	# ! MAKEDEVTARGETS
621.1Slukem
631.1Slukem#
641.1Slukem#	MAKEDEVTARGETS isn't set; copy in /dev/MAKEDEV and rely upon
651.3Slukem#	init(8) to mount an mfs /dev and recreate the devices by
661.3Slukem#	(effectively) running "cd /dev ; ./MAKEDEV all"
671.1Slukem#
681.1SlukemLISTS+=		${DISTRIBDIR}/common/list.makedev
691.13SapbIMAGEDEPENDS+=	${MAKEDEVSCRIPT}
701.7SlukemPARSELISTENV+=	MAKEDEVSCRIPT=${MAKEDEVSCRIPT:Q}
711.1Slukem
721.1Slukem${MAKEDEVSPEC}:	.PHONY
731.1Slukem
741.1Slukem.endif	# ! MAKEDEVTARGETS
751.5Slukem
761.5Slukem
771.5Slukem.endif	# _MAKEFILE_MAKEDEV_
78