####################################################################
#
#      Vitor Santos, 20 Aug 1997
#
###################################################################

ASDP_DIR=/usr/local/ASDP

ASDP_INC      =$(ASDP_DIR)/include
ASDP_INC_EXTRA=$(ASDP_DIR)/include/oasys
ASDP_BIN      =$(ASDP_DIR)/bin
ASDP_LIB      =$(ASDP_DIR)/lib

TEST_HOME     = ./

#---------------------------------------------

SRCS = kernel.c generic.c laser.c
EXECUTABLE = robot

#---------------------------------------------

OBJS = $(SRCS:%.c=./%.$(OBJEXT))

#---------------------------------------------

S_ADDRESS=0x40000

MAKE    = make $(MFLAGS)
RM      = /bin/rm -f
RANLIB  = ranlib68
#This is for sformat
SFORMAT = $(ASDP_BIN)/sformat

SRECORD = m68k-coff-objcopy -O srec 
SREC_FILTER = dos2unix
SLOAD   = $(ASDP_BIN)/sload384

DISASSEMBLE=m68k-coff-objdump -D

DEFINE = -D__IeeeFloat

###

OBJEXT = o
LIBEXT  = olb    #library extension suffix
AR      = lib68
RANLIB = touch  # Empty RANLIB macro for oasys (since ranlib is not needed!)
ARFLAGS = -cvry
 
##### and makedepend flags
DEPENDFLAGS = -o.${OBJEXT}
 
CC  = m68k-coff-gcc
AS  = mk8k-coff-as
LD  = m68k-coff-ld
 
# Compiler flags.
CFLAGS = -c -m68040 -ansi -Wall
 
# Linker flags
LFLAGS = -e start -Ttext $(S_ADDRESS) -Map $(EXECUTABLE).map -nostdlib

#------------------------------------------------

INCLUDE = -I$(TEST_HOME)\
          -I$(ASDP_INC)\
		  -I$(ASDP_INC_EXTRA)

#--------------------------

# System libraries (albatros and robuter libs) 
ROBOTLIBS=\
\
$(ASDP_LIB)/libcrobu40.olb\
$(ASDP_LIB)/libncom40.olb\
$(ASDP_LIB)/libio40.olb\
$(ASDP_LIB)/libcpro40.olb\
$(ASDP_LIB)/libcalbh40.olb\
$(ASDP_LIB)/libcalbl40.olb\
$(ASDP_LIB)/libcstd40.olb\
\
$(ASDP_LIB)/libm40.olb \
$(ASDP_LIB)/libc40.olb\
$(ASDP_LIB)/libport840.olb

STARTOBJ = $(ASDP_LIB)/start40.obj 

#--------------------------

# now follow the several libraries in modules to be linked ....

LIBS      = $(ROBOTLIBS)

#-----------------------------------------------

.SUFFIXES: .c .$(OBJEXT) .$(LIBEXT) 

#implicit rule for the c sources
.c.$(OBJEXT):
	$(CC) $(CFLAGS) $(DEFINE) $(INCLUDE) $< 

#This must be the first real target if it is to be considered the default!

default: srecords  

compile: $(OBJS)

asm:
	$(CC) -S $(CFLAGS) $(DEFINE) $(INCLUDE) $(SRCS)

disasm: $(EXECUTABLE)
	$(DISASSEMBLE) $(EXECUTABLE) > tmp.s
	vi tmp.s

$(EXECUTABLE) link: $(OBJS) 
	@echo '~~~~~~~~~~~~~~~~~~~~~~ NOW LINKING ~~~~~~~~~~~~~~~~~~~~~~~'
	$(LD) $(LFLAGS) -o $(TEST_HOME)/$(EXECUTABLE) $(LNKFILE) $(STARTOBJ) $(OBJS) $(LIBS)
	@#$(LD) $(LFLAGS) -o $(TEST_HOME)/$(EXECUTABLE) $(LNKFILE) $(OBJS) $(STARTOBJ) $(LIBS)
	@echo '~~~~~~~~~~~~~~~~~~~ LINKING FINISHED ~~~~~~~~~~~~~~~~~~~~~~'

depend:
	makedepend -w120 $(DEPENDFLAGS) $(INCLUDE) $(DEFINE) $(SRCS)

load: $(EXECUTABLE).mx 
	$(SLOAD) -d $(SERIAL_PORT_TO_DOWNLOAD) -c "lo -e;" $(TEST_HOME)/$(EXECUTABLE).mx 
	@ echo "Start at "
	@ grep main $(EXECUTABLE).map

srecords $(EXECUTABLE).mx: $(EXECUTABLE)
	@ $(RM) tmp.mx
	$(SRECORD) $(TEST_HOME)/$(EXECUTABLE) tmp.mx
	$(SREC_FILTER) tmp.mx > $(EXECUTABLE).mx
	@ $(RM) tmp.mx
	@ echo "Start at "
	@ grep main $(EXECUTABLE).map | grep -v __
	@#$(SFORMAT) -o $(EXECUTABLE).mx $(TEST_HOME)/$(EXECUTABLE)

ftp: srecords
	putr

#----- housekeeping targets ----------------------

clean:
	$(RM) $(OBJS) $(EXECUTABLE) *.bak *.map *.cfr *.cfe *.run *.mx *.sym *.sr

erasebin: clean
	$(RM) $(EXECUTABLE)

# DO NOT DELETE THIS LINE -- make depend depends on it.

kernel.o: /usr/local/ASDP/include/libcstd.h /usr/local/ASDP/include/math.h /usr/local/ASDP/include/libcalbl.h
kernel.o: /usr/local/ASDP/include/libcpro.h common.h generic.h laser.h
generic.o: /usr/local/ASDP/include/libcalbl.h /usr/local/ASDP/include/libcstd.h /usr/local/ASDP/include/math.h
generic.o: generic.h common.h
laser.o: common.h /usr/local/ASDP/include/libcalbl.h /usr/local/ASDP/include/libcstd.h /usr/local/ASDP/include/math.h
laser.o: /usr/local/ASDP/include/libport.h /usr/local/ASDP/include/libport2.h generic.h laser.h
