217 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
			
		
		
	
	
			217 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
# Makefile for ramdisk image
 | 
						|
.include <bsd.own.mk>
 | 
						|
 | 
						|
USE_BITCODE:=no
 | 
						|
 | 
						|
install:
 | 
						|
 | 
						|
all:
 | 
						|
 | 
						|
# Add a few defines we are going to use during the image
 | 
						|
# creation to determine what features and binaries to include
 | 
						|
# in the final image
 | 
						|
# ACPI            do we have/include the acpi binary
 | 
						|
# RAMDISK_SMALL   is the script called with MKSMALL=yes
 | 
						|
# DYNAMIC         does the ramdisk contain dynamic binaries?
 | 
						|
RAMDISK_INC_ACPI=	0
 | 
						|
RAMDISK_SMALL=		0
 | 
						|
RAMDISK_DYNAMIC=	0
 | 
						|
 | 
						|
RAMDISK_DEFINES= \
 | 
						|
	-DRAMDISK_INC_ACPI=${RAMDISK_INC_ACPI} \
 | 
						|
	-DRAMDISK_SMALL=${RAMDISK_SMALL} \
 | 
						|
	-DRAMDISK_DYNAMIC=${RAMDISK_DYNAMIC}
 | 
						|
 | 
						|
# The name of the proto file to use
 | 
						|
PROTO=			proto
 | 
						|
 | 
						|
# Common to all architectures
 | 
						|
ETC=			system.conf group
 | 
						|
EXTRA=			rc
 | 
						|
PROTO_FILES=		proto.common.etc
 | 
						|
PROTO_FILES+=		proto.common.dynamic
 | 
						|
PROGRAMS=		# defined
 | 
						|
PROGRAMS+=		fsck_mfs
 | 
						|
dir.fsck_mfs:=	minix/commands/fsck.mfs
 | 
						|
PROGRAMS+=		grep
 | 
						|
dir.grep:=	minix/commands/grep
 | 
						|
PROGRAMS+=		input
 | 
						|
dir.input:=	minix/servers/input
 | 
						|
PROGRAMS+=		loadramdisk
 | 
						|
dir.loadramdisk:=	minix/commands/loadramdisk
 | 
						|
PROGRAMS+=		mfs
 | 
						|
dir.mfs:=	minix/fs/mfs
 | 
						|
PROGRAMS+=		mount
 | 
						|
dir.mount:=	minix/commands/mount
 | 
						|
PROGRAMS+=		procfs
 | 
						|
dir.procfs:=	minix/fs/procfs
 | 
						|
PROGRAMS+=		service
 | 
						|
dir.service:=	minix/commands/service
 | 
						|
PROGRAMS+=		sh
 | 
						|
dir.sh:=	bin/sh
 | 
						|
PROGRAMS+=		sysenv
 | 
						|
dir.sysenv:=	minix/commands/sysenv
 | 
						|
PROGRAMS+=		umount
 | 
						|
dir.umount:=	minix/commands/umount
 | 
						|
 | 
						|
.if ${MKSMALL} != "yes"
 | 
						|
RAMDISK_SMALL=		1
 | 
						|
.endif
 | 
						|
 | 
						|
.if ${MACHINE_ARCH} == "i386"
 | 
						|
ETC+=			rs.single
 | 
						|
PROGRAMS+=		at_wini
 | 
						|
dir.at_wini:=	minix/drivers/storage/at_wini
 | 
						|
PROGRAMS+=		floppy
 | 
						|
dir.floppy:=	minix/drivers/storage/floppy
 | 
						|
PROGRAMS+=		pci
 | 
						|
dir.pci:=	minix/drivers/bus/pci
 | 
						|
PROGRAMS+=		pckbd
 | 
						|
dir.pckbd:=	minix/drivers/hid/pckbd
 | 
						|
PROGRAMS+=		cdprobe
 | 
						|
dir.cdprobe:=	minix/commands/cdprobe
 | 
						|
PROGRAMS+=		pwd_mkdb
 | 
						|
dir.pwd_mkdb:=	usr.sbin/pwd_mkdb
 | 
						|
 | 
						|
.if ${MKSMALL} != "yes"
 | 
						|
PROGRAMS+=		ahci
 | 
						|
dir.ahci:=	minix/drivers/storage/ahci
 | 
						|
PROGRAMS+=		virtio_blk
 | 
						|
dir.virtio_blk:= minix/drivers/storage/virtio_blk
 | 
						|
PROGRAMS+=		ext2
 | 
						|
dir.ext2:=	minix/fs/ext2
 | 
						|
.endif
 | 
						|
 | 
						|
.if ${MKACPI} != "no"
 | 
						|
RAMDISK_INC_ACPI= 1
 | 
						|
PROGRAMS+=		acpi
 | 
						|
dir.acpi:=	minix/drivers/power/acpi
 | 
						|
.endif
 | 
						|
.endif # ${MACHINE_ARCH} == "i386"
 | 
						|
 | 
						|
.if ${MACHINE_ARCH} == "earm"
 | 
						|
PROGRAMS+=		mmc
 | 
						|
dir.mmc:=	minix/drivers/storage/mmc
 | 
						|
.endif # ${MACHINE_ARCH} == "earm"
 | 
						|
 | 
						|
.if ${LDSTATIC} == "-dynamic"
 | 
						|
RAMDISK_DYNAMIC=	 1
 | 
						|
PROGRAMS+=		ld.elf_so
 | 
						|
PROG_LIBS+=		libc
 | 
						|
PROG_MINIXLIBS+=	libterminfo
 | 
						|
.endif
 | 
						|
 | 
						|
CPPFLAGS+= -I${NETBSDSRCDIR}/servers
 | 
						|
 | 
						|
# LSC We have to take care of not erasing the source file, so never add EXTRA
 | 
						|
# to CLEANFILES
 | 
						|
CLEANFILES += ${PROGRAMS} ${SCRIPTS} ${ETC} image image.c
 | 
						|
CLEANFILES += proto.gen proto.dev proto.dev.mtree
 | 
						|
CLEANFILES += ${PROG_LIBEXEC}
 | 
						|
CLEANFILES += ${.OBJDIR}/etc/*
 | 
						|
 | 
						|
#############################################################
 | 
						|
# LSC Below this point the rules should not be modified
 | 
						|
#############################################################
 | 
						|
 | 
						|
# Tool to bootstrap the password db
 | 
						|
TOOL_PWD_MKDB?= ${NETBSDSRCDIR}/usr.sbin/pwd_mkdb/pwd_mkdb
 | 
						|
 | 
						|
# Remove "drivers/storage/ramdisk" component from path
 | 
						|
PROGROOT:= ${.OBJDIR:S,/minix/drivers/storage/ramdisk,,}
 | 
						|
 | 
						|
# Generate dependencies rules for config files
 | 
						|
.for etc in ${ETC}
 | 
						|
etc/${etc}: ${NETBSDSRCDIR}/etc/${etc}
 | 
						|
	mkdir -p ${.OBJDIR}/etc
 | 
						|
	${INSTALL} $> $@
 | 
						|
.endfor
 | 
						|
 | 
						|
# LSC Force the regeneration of the proto file as it seems sometimes 
 | 
						|
# they are not copied over as needed.
 | 
						|
# LSC ramdisk rc file != /etc/rc
 | 
						|
# BJG if ${.CURDIR} == ${.OBJDIR}, we are building in-tree and install
 | 
						|
# shouldn't try to install the originals over the originals. Otherwise
 | 
						|
# we are building out-of-tree and the contents should be copied
 | 
						|
# unconditionally in case the contents have changed after the first copy.
 | 
						|
.if ${.CURDIR} != ${.OBJDIR}
 | 
						|
.for file in ${EXTRA} ${PROTO} ${PROTO_FILES}
 | 
						|
CLEANFILES += ${.OBJDIR}/${file}
 | 
						|
${file}: ${NETBSDSRCDIR}/minix/drivers/storage/ramdisk/${file} .PHONY
 | 
						|
	${INSTALL} $> $@
 | 
						|
.endfor
 | 
						|
.endif
 | 
						|
 | 
						|
# Generate dependencies rules for dynamic libraries, if needed
 | 
						|
.for lib in ${PROG_LIBS}
 | 
						|
PROGRAMS+= ${lib}.so.0
 | 
						|
CLEANFILES += ${lib}.so.0
 | 
						|
${lib}.so.0:${PROGROOT}/lib/${lib}/${lib}.so.0
 | 
						|
	${INSTALL} $> $@
 | 
						|
 | 
						|
# BJG - Don't invoke parallel Makes
 | 
						|
#${PROGROOT}/lib/${lib}/${lib}.so.0:
 | 
						|
#	${MAKE} -C ${NETBSDSRCDIR}/lib/${lib} all
 | 
						|
.endfor
 | 
						|
 | 
						|
.for lib in ${PROG_MINIXLIBS}
 | 
						|
PROGRAMS+= ${lib}.so.0
 | 
						|
CLEANFILES += ${lib}.so.0
 | 
						|
${lib}.so.0:${PROGROOT}/minix/lib/${lib}/${lib}.so.0
 | 
						|
	${INSTALL} $> $@
 | 
						|
 | 
						|
# BJG - Don't invoke parallel Makes
 | 
						|
#${PROGROOT}/minix/lib/${lib}/${lib}.so.0:
 | 
						|
#	${MAKE} -C ${NETBSDSRCDIR}/minix/lib/${lib} all
 | 
						|
.endfor
 | 
						|
 | 
						|
# Generate dependencies rules for binaries
 | 
						|
.for prog in ${PROGRAMS}
 | 
						|
${prog}: ${PROGROOT}/${dir.${prog}}/${prog}
 | 
						|
	${INSTALL} $> $@
 | 
						|
 | 
						|
# BJG - don't invoke parallel Makes
 | 
						|
#${PROGROOT}/${dir.${prog}}/${prog}:
 | 
						|
#	${MAKE} -C ${NETBSDSRCDIR}/${dir.${prog}} all
 | 
						|
.endfor # prog
 | 
						|
 | 
						|
realall image:	proto.gen ${ETC:C/^/etc\//} ${EXTRA} \
 | 
						|
		etc/master.passwd etc/pwd.db etc/spwd.db etc/passwd etc/group
 | 
						|
	${_MKMSG_CREATE} "Generating ramdisk image"
 | 
						|
	${TOOL_MKFSMFS} image proto.gen || { rm -f image; false; }
 | 
						|
 | 
						|
etc/pwd.db etc/spwd.db etc/passwd: etc/master.passwd
 | 
						|
 | 
						|
etc/master.passwd: ${NETBSDSRCDIR}/etc/master.passwd
 | 
						|
	mkdir -p ${.OBJDIR}/etc
 | 
						|
	${INSTALL} $> $@
 | 
						|
	${TOOL_PWD_MKDB} -V 0 -p -d . etc/master.passwd
 | 
						|
 | 
						|
proto.dev.mtree:
 | 
						|
	@echo ". type=dir uname=root gname=operator mode=0755" \
 | 
						|
		>${.TARGET}.tmp && \
 | 
						|
	echo "./dev type=dir uname=root gname=operator mode=0755" \
 | 
						|
		>>${.TARGET}.tmp && \
 | 
						|
	${NETBSDSRCDIR}/minix/commands/MAKEDEV/MAKEDEV.sh -m -r \
 | 
						|
		>> ${.TARGET}.tmp && mv ${.TARGET}.tmp ${.TARGET}
 | 
						|
 | 
						|
# We have to remove the two first entries of the generated proto file, as
 | 
						|
# well as the two last ones (closing $).
 | 
						|
# Do not forget to double $ so that make doesn't try to expand it.
 | 
						|
proto.dev: proto.dev.mtree etc/pwd.db etc/spwd.db etc/passwd etc/group
 | 
						|
	${TOOL_MTREE} -f ${.TARGET}.mtree -N ${.OBJDIR}/etc -C -K device | \
 | 
						|
		${TOOL_TOPROTO} | ${TOOL_SED} -e '1,4d' | \
 | 
						|
		${TOOL_SED} -e '$$d' |${TOOL_SED} -e '$$d' > ${.TARGET}.tmp
 | 
						|
	grep console ${.TARGET}.tmp	# sanity check; is there a console entry?
 | 
						|
	mv ${.TARGET}.tmp ${.TARGET}
 | 
						|
 | 
						|
proto.gen: ${PROTO} ${PROTO_FILES} proto.dev ${PROGRAMS}
 | 
						|
	${STRIP} ${PROGRAMS}
 | 
						|
	# We are using the c preprocessor to generate proto.gen
 | 
						|
	# used in the mkfs tool.
 | 
						|
	${TOOL_CAT} ${PROTO} | ${CC} \
 | 
						|
	    	${RAMDISK_DEFINES} \
 | 
						|
		-E - | grep -v "^$$" | grep -v "#" >${.TARGET}
 | 
						|
 | 
						|
.include <minix.service.mk>
 |