# $Id: Makefile,v 1.35 1998/05/27 04:07:44 alanau Exp $
include $(TOP)/src/Makefile.conf

TOOLBIN=$(TOP)/bin
INCLUDE=-I$(TOP)/include
LIB=$(TOP)/lib64


CC=cc
CFLAGS= $(KCFLAGS) -D KDEBUG

ASFLAGS=$(KASFLAGS)
AS=as

#LINKADDR= a0020000 #32 bit uncached
#LINKADDR= ffffffffa0020000 # uncached
#LINKADDR= ffffffff80020000 #cached



LIBS= $(KERNELLIBS) -ll4
LDFLAGS=-N -mips3 -non_shared -nostdlib -L$(LIB) -T $(LINKADDR) -e __boot 
USERLDFLAGS=-mips3 -non_shared -nostdlib -L$(LIB)
USERCRT0=$(LIB)/crt0.o

PROCS=test_threads
TTOBJS=test_threads.o

TARGETS=subdirs version kernel64 mk_image post_kern install_kernel
OBJECTS=exc.o startup.o interrupts.o syscalls.o \
	panic.o cache_err.o schedule.o kmem.o asid.o tlb.o\
	debugger.o sigma0.o ipc.o version.o tcb.o 
SUBDIRS=libkern $(MACHSUBDIR) $(VM_CODE)
DEVS=drivers
OTHERDIRS=$(DEVS) #test

.SUFFIXES: .c .o .ms .s

all: $(TARGETS)

.s.o:
	$(AS) $(ASFLAGS) -o $*.o $*.s
.c.o:
	$(CC) $(CFLAGS) -c $*.c
.ms.o:
	$(M4) $*.ms > m4out.s && $(AS) $(ASFLAGS) -o $*.o m4out.s 
#&& rm m4out.s

kernel64: $(OBJECTS) $(KERNELLIBS)
	ld $(LDFLAGS) -o kernel64 $(OBJECTS) $(LIBS)

mk_image:
	$(TOOLBIN)/dit -i kernel64 kernel

install_kernel: kernel
#	rcp kernel murungal:/tftpboot
#	rcp kernel dazed:/tftpboot/kernel.kev
	rcp $(TOP)/src/kernel/kernel theremin:/tftpboot/kernel.alan

version:
	mv version.c version.bak
	awk -f newvers 	< version.bak >version.c


subdirs:
	@for i in $(SUBDIRS) ;\
	do \
	(cd $$i; \
	$(MAKE) $(MFLAGS) "CURRENT_DIR=$(CURRENT_DIR)/$$i" \
	'TOP=$(TOP)' all) ;\
	done
post_kern:
	@for i in $(OTHERDIRS) ;\
	do \
	(cd $$i; \
	$(MAKE) $(MFLAGS) "CURRENT_DIR=$(CURRENT_DIR)/$$i" \
	'TOP=$(TOP)' all) ;\
	done

clean:
	rm -f *.o kernel64 kernel
	@for i in $(SUBDIRS) $(OTHERDIRS);\
	do \
	(cd $$i; echo "making clean in $(CURRENT_DIR)/$$i."; \
	$(MAKE) $(MFLAGS) "CURRENT_DIR=$(CURRENT_DIR)/$$i" \
	'TOP=$(TOP)' clean) ;\
	done

realclean:
	rm -f *.o m4out.s kernel64 kernel *.bak *~
	@for i in $(SUBDIRS) $(OTHERDIRS) ;\
	do \
	(cd $$i; echo "making realclean in $(CURRENT_DIR)/$$i."; \
	$(MAKE) $(MFLAGS) "CURRENT_DIR=$(CURRENT_DIR)/$$i" \
	'TOP=$(TOP)' realclean) ;\
	done

dep:
	makedepend $(INCLUDE) *.c *.ms *.s
	@for i in $(SUBDIRS) $(OTHERDIRS)  ;\
	do \
	(cd $$i; echo "making dep in $(CURRENT_DIR)/$$i."; \
	$(MAKE) $(MFLAGS) "CURRENT_DIR=$(CURRENT_DIR)/$$i" \
	'TOP=$(TOP)' dep) ;\
	done

# DO NOT DELETE

debugger.o: /home/kevine/Work/mipsL4/include/kernel/kernel.h
debugger.o: /home/kevine/Work/mipsL4/include/kernel/types.h
debugger.o: /home/kevine/Work/mipsL4/include/l4/types.h
debugger.o: /home/kevine/Work/mipsL4/include/kernel/kutils.h
debugger.o: /home/kevine/Work/mipsL4/include/kernel/vm.h
debugger.o: /home/kevine/Work/mipsL4/include/l4/sigma0.h
debugger.o: /home/kevine/Work/mipsL4/include/alloca.h
debugger.o: /home/kevine/Work/mipsL4/include/r4kc0.h
ipc.o: /home/kevine/Work/mipsL4/include/kernel/kernel.h
ipc.o: /home/kevine/Work/mipsL4/include/kernel/types.h
ipc.o: /home/kevine/Work/mipsL4/include/l4/types.h
ipc.o: /home/kevine/Work/mipsL4/include/kernel/vm.h
ipc.o: /home/kevine/Work/mipsL4/include/kernel/panic.h
ipc.o: /home/kevine/Work/mipsL4/include/l4/ipc.h
kmem.o: /home/kevine/Work/mipsL4/include/kernel/kmem.h
kmem.o: /home/kevine/Work/mipsL4/include/kernel/types.h
kmem.o: /home/kevine/Work/mipsL4/include/kernel/panic.h
kmem.o: /home/kevine/Work/mipsL4/include/kernel/trace.h
kmem.o: /home/kevine/Work/mipsL4/include/kernel/kernel.h
kmem.o: /home/kevine/Work/mipsL4/include/kernel/types.h
kmem.o: /home/kevine/Work/mipsL4/include/l4/types.h
kmem.o: /home/kevine/Work/mipsL4/include/r4kc0.h
schedule.o: /home/kevine/Work/mipsL4/include/kernel/kernel.h
schedule.o: /home/kevine/Work/mipsL4/include/kernel/types.h
schedule.o: /home/kevine/Work/mipsL4/include/l4/types.h
schedule.o: /home/kevine/Work/mipsL4/include/kernel/panic.h
schedule.o: /home/kevine/Work/mipsL4/include/kernel/trace.h
sigma0.o: /home/kevine/Work/mipsL4/include/kernel/panic.h
sigma0.o: /home/kevine/Work/mipsL4/include/kernel/kmem.h
sigma0.o: /home/kevine/Work/mipsL4/include/kernel/types.h
sigma0.o: /home/kevine/Work/mipsL4/include/kernel/vm.h
sigma0.o: /home/kevine/Work/mipsL4/include/r4kc0.h
sigma0.o: /home/kevine/Work/mipsL4/include/kernel/trace.h
sigma0.o: /home/kevine/Work/mipsL4/include/kernel/kutils.h
sigma0.o: /home/kevine/Work/mipsL4/include/kernel/kernel.h
sigma0.o: /home/kevine/Work/mipsL4/include/kernel/types.h
sigma0.o: /home/kevine/Work/mipsL4/include/l4/types.h
sigma0.o: /home/kevine/Work/mipsL4/include/kernel/dit.h
sigma0.o: /home/kevine/Work/mipsL4/include/l4/ipc.h
sigma0.o: /home/kevine/Work/mipsL4/include/l4/syscalls.h
sigma0.o: /home/kevine/Work/mipsL4/include/l4/sigma0.h
tcb.o: /home/kevine/Work/mipsL4/include/kernel/kernel.h
tcb.o: /home/kevine/Work/mipsL4/include/kernel/types.h
tcb.o: /home/kevine/Work/mipsL4/include/l4/types.h
tcb.o: /home/kevine/Work/mipsL4/include/kernel/panic.h
tcb.o: /home/kevine/Work/mipsL4/include/kernel/kmem.h
tcb.o: /home/kevine/Work/mipsL4/include/kernel/types.h
tcb.o: /home/kevine/Work/mipsL4/include/r4kc0.h
version.o: /home/kevine/Work/mipsL4/include/l4/types.h
version.o: /home/kevine/Work/mipsL4/include/kernel/kernel.h
version.o: /home/kevine/Work/mipsL4/include/kernel/types.h
asid.o: /home/kevine/Work/mipsL4/include/asm.h
asid.o: /home/kevine/Work/mipsL4/include/regdef.h
asid.o: /home/kevine/Work/mipsL4/include/r4kc0.h
asid.o: /home/kevine/Work/mipsL4/include/kernel/kernel.h
asid.o: /home/kevine/Work/mipsL4/include/kernel/types.h
asid.o: /home/kevine/Work/mipsL4/include/l4/types.h
asid.o: /home/kevine/Work/mipsL4/include/kernel/machine.h
exc.o: /home/kevine/Work/mipsL4/include/asm.h
exc.o: /home/kevine/Work/mipsL4/include/regdef.h
exc.o: /home/kevine/Work/mipsL4/include/r4kc0.h
exc.o: /home/kevine/Work/mipsL4/include/kernel/panic.h
exc.o: /home/kevine/Work/mipsL4/include/kernel/machine.h
exc.o: /home/kevine/Work/mipsL4/include/kernel/kernel.h
exc.o: /home/kevine/Work/mipsL4/include/kernel/types.h
exc.o: /home/kevine/Work/mipsL4/include/l4/types.h
exc.o: /home/kevine/Work/mipsL4/include/l4/syscalls.h
exc.o: /home/kevine/Work/mipsL4/include/l4/ipc.h
interrupts.o: /home/kevine/Work/mipsL4/include/asm.h
interrupts.o: /home/kevine/Work/mipsL4/include/regdef.h
interrupts.o: /home/kevine/Work/mipsL4/include/l4/ipc.h
interrupts.o: /home/kevine/Work/mipsL4/include/l4/types.h
interrupts.o: /home/kevine/Work/mipsL4/include/l4/sigma0.h
interrupts.o: /home/kevine/Work/mipsL4/include/r4kc0.h
interrupts.o: /home/kevine/Work/mipsL4/include/kernel/machine.h
interrupts.o: /home/kevine/Work/mipsL4/include/kernel/panic.h
interrupts.o: /home/kevine/Work/mipsL4/include/kernel/kernel.h
interrupts.o: /home/kevine/Work/mipsL4/include/kernel/types.h
startup.o: /home/kevine/Work/mipsL4/include/regdef.h
startup.o: /home/kevine/Work/mipsL4/include/kernel/machine.h
startup.o: /home/kevine/Work/mipsL4/include/r4kc0.h
startup.o: /home/kevine/Work/mipsL4/include/asm.h
startup.o: /home/kevine/Work/mipsL4/include/kernel/kernel.h
startup.o: /home/kevine/Work/mipsL4/include/kernel/types.h
startup.o: /home/kevine/Work/mipsL4/include/l4/types.h
startup.o: /home/kevine/Work/mipsL4/include/kernel/dit.h
startup.o: /home/kevine/Work/mipsL4/include/l4/syscalls.h
startup.o: /home/kevine/Work/mipsL4/include/l4/sigma0.h
syscalls.o: /home/kevine/Work/mipsL4/include/kernel/kernel.h
syscalls.o: /home/kevine/Work/mipsL4/include/kernel/types.h
syscalls.o: /home/kevine/Work/mipsL4/include/l4/types.h
syscalls.o: /home/kevine/Work/mipsL4/include/kernel/panic.h
syscalls.o: /home/kevine/Work/mipsL4/include/asm.h
syscalls.o: /home/kevine/Work/mipsL4/include/regdef.h
syscalls.o: /home/kevine/Work/mipsL4/include/r4kc0.h
syscalls.o: /home/kevine/Work/mipsL4/include/kernel/machine.h
syscalls.o: /home/kevine/Work/mipsL4/include/l4/syscalls.h
syscalls.o: /home/kevine/Work/mipsL4/include/l4/ipc.h
tlb.o: /home/kevine/Work/mipsL4/include/asm.h
tlb.o: /home/kevine/Work/mipsL4/include/regdef.h
tlb.o: /home/kevine/Work/mipsL4/include/r4kc0.h
tlb.o: /home/kevine/Work/mipsL4/include/kernel/kernel.h
tlb.o: /home/kevine/Work/mipsL4/include/kernel/types.h
tlb.o: /home/kevine/Work/mipsL4/include/l4/types.h
tlb.o: /home/kevine/Work/mipsL4/include/kernel/machine.h
tlb.o: /home/kevine/Work/mipsL4/include/kernel/vm.h
cache_err.o: /home/kevine/Work/mipsL4/include/regdef.h
cache_err.o: /home/kevine/Work/mipsL4/include/kernel/machine.h
cache_err.o: /home/kevine/Work/mipsL4/include/kernel/kernel.h
cache_err.o: /home/kevine/Work/mipsL4/include/kernel/types.h
cache_err.o: /home/kevine/Work/mipsL4/include/l4/types.h
cache_err.o: /home/kevine/Work/mipsL4/include/r4kc0.h
cache_err.o: /home/kevine/Work/mipsL4/include/asm.h
panic.o: /home/kevine/Work/mipsL4/include/asm.h
panic.o: /home/kevine/Work/mipsL4/include/regdef.h
panic.o: /home/kevine/Work/mipsL4/include/r4kc0.h
panic.o: /home/kevine/Work/mipsL4/include/kernel/machine.h
panic.o: /home/kevine/Work/mipsL4/include/kernel/kernel.h
panic.o: /home/kevine/Work/mipsL4/include/kernel/types.h
panic.o: /home/kevine/Work/mipsL4/include/l4/types.h
