# Makefile for user programs used for testing
# $Revision: 1.9 $

#CC_PREFIX = i386-elf-
CC = $(CC_PREFIX)gcc
CFLAGS = -Wall
LD = $(CC_PREFIX)ld
OBJCOPY = $(CC_PREFIX)objcopy
RANLIB = $(CC_PREFIX)ranlib
MKUPROG = perl ../mkuprog

# FIXME: need better way to figure out unix vs. windows
ifeq ($(OS),Windows_NT)
ENTRY = __Entry
else
ENTRY = _Entry
endif

PROGS = a.exe b.exe c.exe

all: $(PROGS)
	../buildFat/buildFat ../hd.img $(PROGS)

%.o : %.c
	$(CC) $(CFLAGS) -c $<

%.exe : %.o libuser.a
	$(LD) -o $@ -Ttext 0x0 -e $(ENTRY) $*.o libuser.a

# Library of user mode routines and syscall wrappers;
# essentially a very simple libc.
libuser.a : libuser.o ../string.o
	ar ruv $@ libuser.o ../string.o
	$(RANLIB) $@ || true

../string.o : dummy
	cd .. && $(MAKE) string.o

dummy :

clean :
	rm -f *.exe *.o *.a *.bin $(UPROGS)
