Home | History | Annotate | Line # | Download | only in common
      1 #	$NetBSD: Makefile.makedev,v 1.18 2012/08/10 05:22:22 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 
     28 MAKEDEVSPEC?=	devices.spec
     29 
     30 _MAKEDEVOBJDIR!=cd ${NETBSDSRCDIR}/etc && ${PRINTOBJDIR}
     31 MAKEDEVSCRIPT=	${_MAKEDEVOBJDIR}/MAKEDEV
     32 
     33 CLEANFILES+=	${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 #
     42 MTREECONF+=	${MAKEDEVSPEC}
     43 
     44 .if exists(${NETBSDSRCDIR}/etc/etc.${MACHINE_CPU}/MAKEDEV.conf)
     45 MAKEDEV_MACHINE=${MACHINE_CPU}
     46 .else
     47 MAKEDEV_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 #
     68 LISTS+=		${DISTRIBDIR}/common/list.makedev
     69 IMAGEDEPENDS+=	${MAKEDEVSCRIPT}
     70 PARSELISTENV+=	MAKEDEVSCRIPT=${MAKEDEVSCRIPT:Q}
     71 
     72 ${MAKEDEVSPEC}:	.PHONY
     73 
     74 .endif	# ! MAKEDEVTARGETS
     75 
     76 
     77 .endif	# _MAKEFILE_MAKEDEV_
     78