ifndef CUBETYPE
CUBETYPE=CUBE3
endif
include make.in
CFLAGS+= -fverbose-asm -DMULTI_SEM  -D$(CUBETYPE) -g
TOOLS=/projects/robot/tools
PREFIX=.
include settings.in
OBJ-KERNEL=kernel/sys_var.o kernel/e_handle.o kernel/ptimer.o kernel/context.o kernel/kerror.o kernel/schedule.o kernel/trap.o kernel/list.o kernel/ivtab.o kernel/sleep.o kernel/softreset.o
OBJ-TEST=kernel/sys_var.o kernel/io_duart.o kernel/e_handle.o kernel/kerror.o 
#OBJ-INIT=init/init.o init/readcmd.o init/tpuisrw.o init/tputest.o init/schedtest.o init/i2ctest.o init/radiotest.o init/listtest.o init/hwinfot.o init/fbintest.o init/resettest.o init/floattest.o init/cplusplus.o
OBJ-INIT=init/init.o init/readcmd.o init/tpuisrw.o init/tputest.o init/schedtest.o init/i2ctest.o init/radiotest.o init/listtest.o init/hwinfot.o init/fbintest.o init/resettest.o init/floattest.o init/sleeptest.o init/panictest.o init/xdrtest.o init/rcjtest.o init/ttytest.o init/rgtest.o init/irq4wrap.o init/camtest.o init/flashtest.o init/timetest.o init/spitest.o
OBJ-HARDWARE=drivers/hardware/RCJ.o drivers/hardware/RG.o
OBJ-TTY=drivers/tty/ttyio.o drivers/tty/io_sci.o drivers/tty/sciWrapper.o drivers/tty/io_duart.o drivers/tty/duartWrapper.o 
OBJ-SPI=drivers/spi/qsm.o drivers/spi/qspiWrapper.o drivers/spi/spi.o
OBJ-FASTBIN=drivers/fastbin/fastbin.o
OBJ-FLASH=drivers/flash/flash.o  
OBJ-TPU=drivers/tpu/tpud.o 
OBJ-I2C=drivers/i2c/i2cd.o drivers/i2c/i2caint.o drivers/i2c/i2cbint.o drivers/i2c/analog.o drivers/i2c/digital.o
OBJ-ICONTROL=drivers/icontrol/icontrolWrapper.o drivers/icontrol/icontrol.o drivers/icontrol/sincos.o
OBJ-DRIVERS=$(OBJ-FLASH) $(OBJ-TPU) $(OBJ-I2C) $(OBJ-FASTBIN) $(OBJ-TTY) $(OBJ-SPI) $(OBJ-HARDWARE)
OBJ-CUBE=libc/kio.o libc/close.o libc/fstat.o libc/kill.o libc/print.o libc/stat.o libc/putnum.o libc/lseek.o libc/read.o libc/unlink.o libc/isatty.o libc/open.o libc/sbrk.o libc/write.o libc/getpid.o libc/cubereent.o
OBJ-NET=net/network.o net/rsm.o
OBJ-XDR=net/rpc/xdr.o net/rpc/xdr_array.o net/rpc/xdr_float.o net/rpc/xdr_mem.o net/rpc/xdr_reference.o net/rpc/xdr_stdio.o
;OBJ-XDR=net/rpc/xdr.o net/rpc/xdr_array.o net/rpc/xdr_float.o net/rpc/xdr_mem.o net/rpc/xdr_rec.o net/rpc/xdr_reference.o net/rpc/xdr_stdio.o
TEST_LINKSCRIPT=test.ld_sun
OBJ-ALL=$(OBJ-KERNEL) $(OBJ-NET) $(OBJ-DRIVERS) $(OBJ-CUBE) config/config.o

all: .license lib init.abs init.tw

gdb:
	gdb-bdm.elf -d kernel -d init -d drivers/hardware -d drivers/tty -d drivers/i2c -d net -d libc init.coff

.license: 
	./showlicense

xdr: $(OBJ-XDR)

 
lib: libcubeos.a libcubexdr.a

indent: 
	find . -name \*.c -ls -exec indent {} \;

stats: 
	find . -name \*.c -exec cat {} \;|wc
	find . -name \*.h -exec cat {} \;|wc
	find . -name \*.S -exec cat {} \;|wc

removebaks: 
	find . -name \*.c~ -ls -exec /bin/rm {} \;

tar: indent removebaks clean all clean
	-rm ../src-old.tgz
	-mv ../src.tgz ../src-old.tgz
	( cd ..; gtar -zcvf src.tgz src )
		

kernel/crt0.o: kernel/ivtable.S

test/crt0.o: test/ivtable.S

libcubeos.a: $(OBJ-crt0) $(OBJ-ALL) $(LINKSCRIPT) Makefile
	-rm -f libcubeos.a
	$(AR) rcsv libcubeos.a $(OBJ-ALL)

libcubexdr.a: $(OBJ-XDR) Makefile
	-rm -f libcubexdr.a
	$(AR) rcsv libcubexdr.a $(OBJ-XDR)

libcubetest.a: $(OBJ-INIT) Makefile
	-rm -f libcubetest.a
	$(AR) rcsv libcubetest.a $(OBJ-INIT)

libcubeall.a: $(OBJ-crt0) $(OBJ-ALL) $(OBJ-XDR) $(OBJ-INIT) $(LINKSCRIPT) Makefile
	-rm -f libcubeall.a
	$(AR) rcsv libcubeall.a $(OBJ-crt0) $(OBJ-ALL) $(OBJ-XDR) $(OBJ-INIT)

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

.c.E:
	$(CC) $(CFLAGS) -E -c $< -o $@

.C.o:
	$(CPP) $(CFLAGS) -c $< -o $@

.S.o:
	$(CC) $(SFLAGS) -c $< -o $@

.coff.d:
	$(OBJDUMP) -d $< >$@

.dot.gif:
	dot -Tgif $< >$@

.dot.ps:
	dot -Tps $< >$@

.ps.epsi:
	ps2epsi  $< $>

init.coff: $(OBJ-crt0) $(OBJ-ALL) $(OBJ-INIT) $(LINKSCRIPT)
	$(LD) $(LD_OPT) -cref -Map  $*.map -o $@ $(OBJ-ALL) $(OBJ-INIT) -L. -lcubexdr -T$(LINKSCRIPT)

initl.coff: libcubeos.a $(OBJ-INIT) $(LINKSCRIPT)
	$(LD) $(LD_OPT) -Map  $*.map  -o $@ $(OBJ-INIT) -L. -lcubexdr -Tcubeos.ld_lib


.coff.abs:
	$(OBJCOPY) -O srec $< $@

.abs.tw:
	$(TOOLS)/s2tw $< $@


test: test.coff

test.coff: $(OBJ-TEST) $(TEST_LINKSCRIPT) test/ivtable.S test/crt0.o test/test.o test/kio.o test/doprnt.o test/bcopy.o
	$(LD) $(LD_OPT) -Map  $*.map -o $@ $(OBJ-TEST) test/test.o test/kio.o test/doprnt.o test/bcopy.o -T$(TEST_LINKSCRIPT)


clean:
	-rm -f net/*/*.o net/*.o init/*.o libc/*.o kernel/*.o drivers/*.o drivers/*/*.o *.coff *.bin *.d *.abs *.lib *.d *.map *.a *.tw

docs:
	doxygen Doxyfile

functionlist: libcubeos.a
	m68k-coff-nm  libcubeos.a | gawk '{if ($$2=="T") print $$3 "()";}'|sort|uniq >functionlist

varlist: libcubeos.a
	m68k-coff-nm  libcubeos.a | gawk '{if ( match ( $$2 , "[BCD]" ) > 0 ) print $$3;}'|sort |uniq >varlist

objectlist.dot: libcubeall.a  objectlist.awk
	m68k-coff-nm  libcubeall.a | gawk -f objectlist.awk >objectlist.dot

components.dot: libcubeall.a  objectlist.awk
	m68k-coff-nm  libcubeall.a | gawk -f component.awk >components1.dot
	cat components1.dot|sort|uniq >components2.dot
	cat comphdrdot components2.dot >components.dot
	echo "}" >>components.dot
	
init.dot: init.coff objectlist.awk
	m68k-coff-nm  init.coff  | gawk -f objectlist.awk >init.dot
	
