# Makefile for MemTest-86
#
# Author:		Chris Brady
# Created:		January 1, 1996

#
# Path for the floppy disk device
#
FDISK=/dev/fd0

CC=gcc
#
# gcc compiler options, these settings should suffice
#
CCFLAGS=-Wall -march=i486 -O -fomit-frame-pointer

AS=as

OBJS=head.o main.o test.o init.o lib.o patn.o screen_buffer.o config.o memsize.o

all: memtest.bin

test.o: test.c test.h defs.h config.h
	$(CC) -c $(CCFLAGS) test.c

main.o: main.c test.h defs.h
	$(CC) -c $(CCFLAGS) main.c

init.o: init.c test.h defs.h io.h config.h
	$(CC) -c $(CCFLAGS) init.c

memsize.o: memsize.c test.h defs.h config.h
	$(CC) -c $(CCFLAGS) memsize.c

lib.o: lib.c test.h defs.h io.h screen_buffer.h serial.h config.h
	$(CC) -c $(CCFLAGS) lib.c

screen_buffer.o: screen_buffer.c screen_buffer.h test.h config.h
	$(CC) -c $(CCFLAGS) screen_buffer.c

patn.o: patn.c
	$(CC) -c $(CCFLAGS) patn.c

config.o: config.c test.h
	$(CC) -c $(CCFLAGS) config.c

head.s: head.S
	$(CC) -E -traditional $< -o $@

head.o: head.s
	$(AS) -o $@ $<

makedefs: makedefs.c defs.h
	$(CC) $(CCFLAGS) makedefs.c -o $@

defs.lds: makedefs
	./makedefs > $@

low.o: $(OBJS) low.lds defs.lds
	$(LD) -T low.lds -o $@ -Map low_mapfile $(OBJS)
	strip $@

high.o: $(OBJS) high.lds defs.lds
	$(LD) -T high.lds -o $@ -Map high_mapfile $(OBJS)
	strip $@

memtest: low.o high.o memtest.lds defs.lds
	$(LD) -s -T memtest.lds low.o high.o -o $@

memtest.out: memtest
	$(LD) -s --oformat binary -e 0 -o $@ $<

bootsect.s: bootsect.S defs.h
	$(CC) -E -traditional $< -o $@

bootsect.o: bootsect.s
	$(AS) -o $@ $<

bootsect: bootsect.o
	$(LD) -Ttext 0x0 -s --oformat binary -e _main -o $@ $<

setup.s: setup.S config.h defs.h
	$(CC) -E -traditional $< -o $@

setup.o: setup.s
	$(AS) -o $@ $<

setup: setup.o
	$(LD) -Ttext 0x0 --oformat binary -e start -o $@ $<

memtest.bin: memtest.out bootsect setup
	cat bootsect setup memtest.out > $@


clean:
	rm -f *.o *.s memtest.bin bootsect setup low_mapfile high_mapfile \
		memtest memtest.out makedefs defs.lds

wormkill: 
	rm -f *~

install: all
	dd <memtest.bin >$(FDISK) bs=8192

install-bin:
	dd <precomp.bin >$(FDISK) bs=8192
