
#
# Makefile for Kalisto
#
#

CC_PREFIX=/opt/mips
CC_TARGET=mipsel-linux-gnu

CC = $(CC_PREFIX)/bin/$(CC_TARGET)-gcc
AS = $(CC_PREFIX)/bin/$(CC_TARGET)-as
LD = $(CC_PREFIX)/bin/$(CC_TARGET)-ld

#
# -G 0		... threshold for putting objects into small data/bss sections
# -mno-pic	... don't generate position independent code using $gp
# -mno-abicalls	... don't generate SVR4-style position independent code
# -fno-builtin  ... don't recognize built-in functions without __builtin_ prefix
#

CCFLAGS = -O2 -mips2 -G 0 -mno-abicalls -fno-pic -pipe -Wall -g3 
ASFLAGS = -O2 -mips3 -G 0 -mno-abicalls -fno-pic -fno-builtin -pipe -g3 -D__ASM__
LDFLAGS = -T binary.lds -G 0 -static -g

OFILES_KERNEL = \
	sys.o \
	malloc.o \
	thread.o \
	syscall.o \
	sched.o \
	exc.o \
	int.o \
	main.o \
	tlb.o \
	debug.o \
	keyboard.o \
	semaphore.o \
	mutex.o \
	tqueue.o \
	input.o \
	output.o \
	condvar.o \
	rwlock.o \
	timers.o 


all: loader.bin kernel.bin 

clean:
	rm -f *.o *.map
	rm -f *~

cleanall: clean
	rm -f *.bin

build: clean all

dep: 
	$(CC) -MM *.c *.S > .depend || rm -f .depend


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

.S.o:
	$(CC) $(ASFLAGS) -c $<


-include .depend


loader.bin: loader.o
	$(LD) $(LDFLAGS) loader.o -o loader.bin

kernel.bin: $(OFILES_KERNEL)
	$(LD) $(LDFLAGS) $(OFILES_KERNEL) -o kernel.bin -Map kernel.map

