ROOTDEV = # This must be your MINIX root file system
IMAGE = /system/minix.sys

b=/usr
l=$b/lib

CFLAGS = -F -D_POSIX_SOURCE -D_MINIX
LIB = $l/libc.a

# Rules for asld
CPPFLAGS = -P -DASLD -DQUIET -Ddata1=byte -Ddata2=word -Djmpf=jmpi \
	-Dcseg="seg cs" -Deseg="seg es"
.SUFFIXES: .x
.x.s:
	/usr/lib/cpp $(CPPFLAGS) $< | tr \! \| > $@

all:	Edit_me_please!! and comment out me :-)
  # Thanks a lot.
  # You must edit this file to select your own Minix root partition.
  # Please check or modify first line, then comment out or delete above line
  # to compile.

all:	init bootblok menu mxinstall mxboot

init:	$(LIB) init.s $l/head.s
	@asld -o init $l/head.s init.s $(LIB) $l/end.s
	@echo init done.

# bootblok.o is the source of the MINIX boot block.  The bootblock is the
# first 512 bytes on the image file and on the boot diskette.  When bootblok.o
# is assembled, it generates a short binary file (less than 400 bytes) that
# must be stripped of its header and copied to the file bootblok.  The dd
# command below does this.  If everything has been done right, the bootblok
# file should begin with the following 8 words, in hex:
# c0b8 8e07 33d8 b8f6 2fe0 c08e ff33 00b9
# The exact procedure for going from bootblok.o to the binary file stripped of
# its header is somewhat operating system dependent.  Some assemblers make
# an object (.o) file; others make an a.out file directly. If your boot 
# diskette does not start out by printing 'Booting MINIX X.Y' the problem is
# probably that you have not made a good boot block.
bootblok:	bootblok.s
	@asld -o a.out bootblok.s
	@dd if=a.out of=bootblok bs=16w skip=1 count=16 2>/dev/null
	@rm -f a.out
	@echo bootblok done.

bootblok.s: bootblok.x

build:	build.s
	cc -o build build.s
	@echo build done.

menu:	menu.s menu1.s
	@echo "Start linking menu. "
	asld -o menu menu1.s menu.s $(LIB) $l/end.s
	@echo menu done.

menu.s: menu.c
	cc -c $(CFLAGS) menu.c

menu1.s: menu1.x

mxinstall: mxinstall.c
	cc $(CFLAGS) -o mxinstall mxinstall.c
	@echo mxinstall done.

mxboot:	mxboot.s
	asld -o a.out mxboot.s
	dd if=a.out of=mxboot bs=16w skip=1 count=32 2>/dev/null
	@rm -f a.out
	@ls -l mxboot
	@getlf "pause...  Hit <Enter> to install"
	mxinstall $(ROOTDEV) mxboot

mxboot.s: mxboot.x

assistIPL: assistIPL.s
	asld -o a.out assistIPL.s
	dd if=a.out of=assistIPL bs=16w skip=1 count=16 2>/dev/null
	@rm -f a.out
	@echo "assistIPL done."

assistIPL.s: assistIPL.x

# 'make image'  combines the bootblock, kernel, memory manager, file 
# system, init and menu into a single file, called image.  Each of these pieces
# appears in the image file just as the original does on the disk, except that
# the header at the front is removed, and each piece is padded out to an
# integral multiple of 16 bytes.  Build also prints a message telling how big
# the various pieces (except menu) are.
#
# 'make net' does the same thing, only with the networking code from the
# 'amoeba directory included
#
image:	build bootblok init menu ../kernel/kernel ../mm/mm ../fs/fs
	@build bootblok ../kernel/kernel ../mm/mm ../fs/fs init menu $(IMAGE)
	@getlf "Insert blank diskette in drive 0 and hit return"
	@cp $(IMAGE) /dev/fd0

net:	build bootblok init menu
	@getlf "Insert blank diskette in drive 0 and hit return"
	@build bootblok ../amoeba/kernel/kernel ../amoeba/mm/mm \
		../amoeba/fs/fs init menu net_image
	@cp net_image /dev/fd0

clean:	
	@rm -f *.bak tmp *image init.s menu.s

tar:
	tar cv V2-mxpack.tar menu*.[xc] mxinstall.c V*.x bootblok.x \
		fdisk.cdif makefile

