NetBSD/distrib/common/Makefile.minirootkmod

57 lines
1.9 KiB
Makefile

# $NetBSD: Makefile.minirootkmod,v 1.3 2014/08/05 15:40:58 apb Exp $
#
# Makefile snippet to build a miniroot kernel module (e.g. miniroot.kmod)
#
# Required variables:
# NETBSDSRCDIR top level of src tree (set by <bsd.own.mk>)
#
# Optional variables:
# MINIROOT Basename of the kernel module to be created.
# ".kmod" will be appended to get the file name.
# [default: miniroot]
# RAMDISK Basename of the ramdisk to be embedded in the
# kernel module. This is used as both a directory
# name (${.CURDIR}/../ramdisks/${RAMDISK}) and
# as a file name within the .OBJDIR of that
# directory (${RAMDISK}.fs). [default: ramdisk]
#
MINIROOT?= miniroot
RAMDISK?= ramdisk
.include <bsd.own.mk>
.include "${.PARSEDIR}/Makefile.distrib"
MKMAN= no
PROG= ${MINIROOT}.kmod
# SRCMOD is a skeleton version of miniroot.kmod, without an embedded ramdisk.
# It should already have been created by "make install" in
# .../sys/modules/miniroot, and its name includes literal "miniroot",
# not variable ${MINIROOT}.
#
# DSTMOD is a copy of SRCMOD that is modified to include an embedded ramdisk.
# It will be created by rules in this Makefile.
#
# RAMDISKFS is the ramdisk image to be included inside DSTMOD. It should
# already have been created by the Makefile in RAMDISKSRCDIR.
#
SRCMOD= ${DESTDIR}/stand/${MACHINE}/${MODULEVER}/modules/miniroot/miniroot.kmod
DSTMOD= ${.OBJDIR}/${MINIROOT}.kmod
RAMDISKSRCDIR= ${.CURDIR}/../ramdisks/${RAMDISK}
RAMDISKOBJDIR!= cd ${RAMDISKSRCDIR} && ${PRINTOBJDIR}
RAMDISKFS= ${RAMDISKOBJDIR}/${RAMDISK}.fs
${MINIROOT}.kmod: ${RAMDISKFS} ${SRCMOD}
${OBJCOPY} --add-section miniroot=${RAMDISKFS} \
--set-section-flags miniroot=alloc,contents,load,data \
${SRCMOD} ${DSTMOD}.tmp
${TOOL_GZIP_N} -9c < ${DSTMOD}.tmp > ${DSTMOD}
rm -f ${DSTMOD}.tmp
.include <bsd.prog.mk>
release: ${PROG}
${HOST_INSTALL_FILE} -m ${BINMODE} ${PROG} \
${RELEASEDIR}/${RELEASEMACHINEDIR}/installation/miniroot/