# Makefile for ramdisk image .include # Remove "drivers/ramdisk" component from path PROGROOT:= ${.OBJDIR:S,drivers/ramdisk,,} TOOL_PWD_MKDB?= ${NETBSDSRCDIR}/usr.sbin/pwd_mkdb/pwd_mkdb install: all: PROG_DRIVERS=at_wini floppy pci PROG_COMMANDS=cdprobe loadramdisk mount fsck.mfs sysenv sh \ service PROG_SERVERS=mfs procfs PROG_USRSBIN=pwd_mkdb PROGRAMS=$(PROG_DRIVERS) $(PROG_COMMANDS) $(PROG_SERVERS) $(PROG_USRSBIN) EXTRA=system.conf master.passwd rs.single PROTO_FILES=proto.common.etc proto.common.dynamic proto.sh proto.dev .if ${MKSMALL} != "yes" PROG_DRIVERS+= ahci PROG_SERVERS+= ext2 PROTO= proto .else PROTO= proto.small .endif .if ${MKACPI} != "no" PROG_DRIVERS+= acpi .endif CPPFLAGS+= -I${NETBSDSRCDIR}/servers CLEANFILES += $(PROGRAMS) $(SCRIPTS) $(EXTRA) image image.c t proto.gen CLEANFILES += $(LIBRARIES) CLEANFILES += ${.OBJDIR}/etc/* image: proto.gen $(EXTRA) mtab rc pwd.db spwd.db passwd ${TOOL_MKFSMFS} image proto.gen || { rm -f image; false; } # if fsck.mfs -s image | grep -q CLEAN; \ # then : ; \ # else echo "CLEAN sanity check of image failed." ; \ # echo "(Perhaps install current mkfs and fsck.)" ; \ # rm -f image; false; \ # fi # LSC ramdisk rc file != /etc/rc # mtab not empty!, force execution of the rule to ensure installation # Conditionnally execute the command if the target file already exists # I have to place .PHONY for the target to work as expected, but I cannot # execute the command during an in-tree build (= make xxx) .for file in rc mtab ${PROTO} ${PROTO_FILES} $(file): ${.CURDIR}/$(file) .PHONY [ -e $@ ] || ${INSTALL} $> $@ .endfor .for driver in $(PROG_DRIVERS) $(driver): ${PROGROOT}/drivers/$(driver)/$(driver) ${INSTALL} $> $@ ${PROGROOT}/drivers/$(driver)/$(driver): $(MAKE) -C ${NETBSDSRCDIR}/drivers/$(driver) $(driver) .endfor .for cmd in $(PROG_COMMANDS) .if $(cmd) == sh dir.$(cmd)=ash .else dir.$(cmd)=$(cmd) .endif $(cmd): ${PROGROOT}/commands/$(dir.$(cmd))/$(cmd) ${INSTALL} $> $@ ${PROGROOT}/commands/$(dir.$(cmd))/$(cmd): $(MAKE) -C ${NETBSDSRCDIR}/commands/$(dir.$(cmd)) $(cmd) .endfor .for etc in $(EXTRA) $(etc): ${NETBSDSRCDIR}/etc/$(etc) ${INSTALL} $> $@ .endfor .for cmd in $(PROG_USRSBIN) $(cmd): ${PROGROOT}/usr.sbin/$(cmd)/$(cmd) ${INSTALL} $> $@ ${PROGROOT}/usr.sbin/$(cmd)/$(cmd): $(MAKE) -C ${NETBSDSRCDIR}/usr.sbin/$(cmd) $(cmd) .endfor .for server in $(PROG_SERVERS) $(server): ${PROGROOT}/servers/$(server)/$(server) ${INSTALL} $> $@ ${PROGROOT}/servers/$(server)/$(server): $(MAKE) -C ${NETBSDSRCDIR}/servers/$(server) $(server) .endfor etc/master.passwd: ${NETBSDSRCDIR}/etc/master.passwd rm -rf ${.OBJDIR}/etc/ mkdir -p ${.OBJDIR}/etc ${INSTALL} $> $@ ${TOOL_PWD_MKDB} -V 0 -p -d . etc/master.passwd pwd.db spwd.db passwd: etc/master.passwd ${INSTALL} etc/${.TARGET} ${.TARGET} proto.gen: ${PROTO} ${PROTO_FILES} ${PROGRAMS} strip $(PROGRAMS) sh -e proto.sh ${PROTO} >${.OBJDIR}/${.TARGET} .include