# make file for serial driver example

include  os/kernel.mk

OBJS_MAIN = board.o device.o serial_driver.o serial_example.o standard.o udp.o trace.o vxprintf.o startup.o lcd.o task.o    ${KERNSRC}  os/ARM7/chsys.o os/ARM7/chcore.o os/AT91SAM7S/basic.o os/ARM7/aic.o
DEPS_MAIN = board.h cdc.h common.h device.h serial_driver.h standard.h trace.h usb.h vxprintf.h AT91SAM7S64.h lib_AT91SAM7S64.h


main.bin : main.elf main.lss

main.elf : $(OBJS_MAIN)
	echo  $(PATH) 
	arm-elf-gcc -g -mcpu=arm7tdmi -Wl,-Tmain.ld,-Map=main.map -nostartfiles $(OBJS_MAIN) -o $@
all : main.elf


%.bin : %.elf
	arm-elf-objcopy -O binary $< $@

%.lss : %.elf
	arm-elf-objdump -h -S -C $< > $@
	arm-elf-size $< 

%.o : %.c $(DEPS_MAIN)
	echo  $(PATH) 
	arm-elf-gcc -mabi=apcs-gnu  -g -c -mcpu=arm7tdmi -Os -I. -Ios/ARM7 -Ios/include -Wall -Wa,-a=$(@:.o=.lst) $< -o $@

%.o : %.S
	arm-elf-gcc -g -c -mcpu=arm7tdmi  -I. -Ios/ARM7 -Ios/include  -x assembler-with-cpp $< -o $@
%.o : %.s
	arm-elf-gcc -g -c -mcpu=arm7tdmi -I. -Ios/ARM7 -Ios/include -x assembler-with-cpp $< -o $@

%.s : %.c
	arm-elf-gcc -S -mabi=apcs-gnu -mcpu=arm7tdmi -Os  -I. -Ios/ARM7 -Ios/include -Wall $< -o $@

%.S : %.cc
	arm-elf-g++ -S -mcpu=arm7tdmi -Os  -I.  -Ios/ARM7 -Ios/include -Wall $< -o $@


# clean up build files
clean :
	rm -f $(OBJS_MAIN) $(OBJS_BOOT) $(wildcard *.bin) $(wildcard *.elf) $(wildcard *.lss) $(wildcard *.map) $(wildcard *.lst)  $(wildcard os/*.lst)  $(wildcard os/ARM7/*.lst) $(wildcard os/AT91SAM7S/*.lst)

# .PHONY tells make that these targets aren't actually files to make
.PHONY : clean
