#       $NetBSD: Makefile.makedev,v 1.19 2014/08/10 05:56:36 matt Exp $
#
# Makefile snippet to add ${MAKEDEVTARGETS} devices to the mtree list
# (if set), otherwise copy .OBJDIR-of-etc/MAKEDEV to ./dev
#
# If this is to be used with Makefile.image, then this file should be
# .include-d first.
#
# Required variables:
#       NETBSDSRCDIR    top level of src tree (set by <bsd.own.mk>)
#       MACHINE         machine name (set externally by build framework)
#
# Optional variables:
#       MAKEDEVTARGETS  targets to create with .OBJDIR-of-etc/MAKEDEV
#
# Variables modified by this:
#       MAKEDEVSCRIPT   path to .OBJDIR-of-etc/MAKEDEV
#       MTREECONF       may get "devices.spec" added
#       LISTS           may get "list.makedev" added
#       IMAGEDEPENDS    may get ${MAKEDEVSCRIPT} added
#       PARSELISTENV    may get MAKEDEVSCRIPT=... added
#

if !defined(_MAKEFILE_MAKEDEV_)
_MAKEFILE_MAKEDEV_=1


MAKEDEVSPEC?=   devices.spec

_MAKEDEVOBJDIR!=cd ${NETBSDSRCDIR}/etc && ${PRINTOBJDIR}
MAKEDEVSCRIPT=  ${_MAKEDEVOBJDIR}/MAKEDEV

CLEANFILES+=    ${MAKEDEVSPEC} ${MAKEDEVSPEC}.tmp


if defined(MAKEDEVTARGETS)

#
#       MAKEDEVTARGETS is set; add those devices to the mtree spec that's
#       used to build the file system
#
MTREECONF+=     ${MAKEDEVSPEC}

if exists(${NETBSDSRCDIR}/etc/etc.${MACHINE_CPU}/MAKEDEV.conf)
MAKEDEV_MACHINE=${MACHINE_CPU}
else
MAKEDEV_MACHINE=${MACHINE}
endif

${MAKEDEVSPEC}: ${MAKEDEVSCRIPT} Makefile \
               ${NETBSDSRCDIR}/etc/etc.${MAKEDEV_MACHINE}/MAKEDEV.conf

       ${_MKTARGET_CREATE}
       rm -f ${.TARGET} ${.TARGET}.tmp
       MACHINE=${MAKEDEV_MACHINE:Q} MACHINE_ARCH=${MACHINE_ARCH:Q} \
           ${HOST_SH} ${MAKEDEVSCRIPT} -s ${MAKEDEVTARGETS} \
           > ${.TARGET}.tmp
       ${TOOL_SED} -e '/^\. type=dir/d' -e 's,^\.,./dev,' ${.TARGET}.tmp \
           | sort -o ${.TARGET}

else    # ! MAKEDEVTARGETS

#
#       MAKEDEVTARGETS isn't set; copy in /dev/MAKEDEV and rely upon
#       init(8) to mount an mfs /dev and recreate the devices by
#       (effectively) running "cd /dev ; ./MAKEDEV all"
#
LISTS+=         ${DISTRIBDIR}/common/list.makedev
IMAGEDEPENDS+=  ${MAKEDEVSCRIPT}
PARSELISTENV+=  MAKEDEVSCRIPT=${MAKEDEVSCRIPT:Q}

${MAKEDEVSPEC}: .PHONY

endif   # ! MAKEDEVTARGETS


endif   # _MAKEFILE_MAKEDEV_