CC=mipsel-unknown-elf-gcc AS=mipsel-unknown-elf-as LD=mipsel-unknown-elf-ld DU=mipsel-unknown-elf-objdump SYS_OBJS = reset.o \ boot_handler.o \ giet.o \ switch.o \ common.o \ ctx_handler.o \ drivers.o \ exc_handler.o \ irq_handler.o \ sys_handler.o PGCD_OBJS = pgcd_stdio.o \ pgcd_main.o HELLO_OBJS = hello_stdio.o \ hello_main.o FIFO_OBJS = fifo_stdio.o \ fifo_main.o \ fifo_mwmr.o ROUTER_OBJS = router_stdio.o \ router_main.o \ router_mwmr.o SYS_PATH = sys HELLO_PATH = hello FIFO_PATH = fifo PGCD_PATH = pgcd ROUTER_PATH = router MAP_PATH = xml LIBS_PATH = libs CFLAGS=-Wall -ffreestanding -mno-gpopt -mips32 SYS_INCLUDE = -I$(SYS_PATH) -I$(MAP_PATH) -I$(LIBS_PATH) -I. HELLO_INCLUDE= -I$(HELLO_PATH) -I$(LIBS_PATH) FIFO_INCLUDE= -I$(FIFO_PATH) -I$(LIBS_PATH) PGCD_INCLUDE= -I$(PGCD_PATH) -I$(LIBS_PATH) ROUTER_INCLUDE= -I$(ROUTER_PATH) -I$(LIBS_PATH) all: sys.bin hello.bin router.bin fifo.bin pgcd.bin map.bin ## mapping compilation map.bin: map.xml xml/xml2bin map.xml map.bin ## system compilation sys.bin: $(SYS_OBJS) $(SYS_PATH)/sys.ld $(LD) -o $@ -T $(SYS_PATH)/sys.ld $(SYS_OBJS) $(DU) -D $@ > $@.txt switch.o: $(SYS_PATH)/switch.s giet_config.h $(AS) -g -mips32 -o $@ $< giet.o: $(SYS_PATH)/giet.s giet_config.h $(AS) -g -mips32 -o $@ $< reset.o: $(SYS_PATH)/reset.S giet_config.h $(CC) $(CFLAGS) $(SYS_INCLUDE) -c -o $@ $< $(DU) -D $@ > $@.txt boot_handler.o: $(SYS_PATH)/boot_handler.c $(SYS_PATH)/boot_handler.h giet_config.h $(CC) $(CFLAGS) $(SYS_INCLUDE) -c -o $@ $< ctx_handler.o: $(SYS_PATH)/ctx_handler.c $(SYS_PATH)/ctx_handler.h giet_config.h $(CC) $(CFLAGS) $(SYS_INCLUDE) -c -o $@ $< exc_handler.o: $(SYS_PATH)/exc_handler.c $(SYS_PATH)/exc_handler.h giet_config.h $(CC) $(CFLAGS) $(SYS_INCLUDE) -c -o $@ $< irq_handler.o: $(SYS_PATH)/irq_handler.c $(SYS_PATH)/irq_handler.h giet_config.h $(CC) $(CFLAGS) $(SYS_INCLUDE) -c -o $@ $< sys_handler.o: $(SYS_PATH)/sys_handler.c $(SYS_PATH)/sys_handler.h giet_config.h $(CC) $(CFLAGS) $(SYS_INCLUDE) -c -o $@ $< drivers.o: $(SYS_PATH)/drivers.c $(SYS_PATH)/drivers.h giet_config.h $(CC) $(CFLAGS) $(SYS_INCLUDE) -c -o $@ $< common.o: $(SYS_PATH)/common.c $(SYS_PATH)/common.h giet_config.h $(CC) $(CFLAGS) $(SYS_INCLUDE) -c -o $@ $< ## application "hello" compilation hello.bin: $(HELLO_OBJS) $(HELLO_PATH)/hello.ld $(LD) -o $@ -T $(HELLO_PATH)/hello.ld $(HELLO_OBJS) $(DU) -D $@ > $@.txt hello_stdio.o: $(LIBS_PATH)/stdio.c $(LIBS_PATH)/stdio.h giet_config.h $(CC) $(CFLAGS) $(HELLO_INCLUDE) -c -o $@ $< hello_main.o: $(HELLO_PATH)/main.c giet_config.h $(CC) $(CFLAGS) $(HELLO_INCLUDE) -c -o $@ $< ## application "fifo" compilation fifo.bin: $(FIFO_OBJS) $(FIFO_PATH)/fifo.ld $(LD) -o $@ -T $(FIFO_PATH)/fifo.ld $(FIFO_OBJS) $(DU) -D $@ > $@.txt fifo_stdio.o: $(LIBS_PATH)/stdio.c $(LIBS_PATH)/stdio.h giet_config.h $(CC) $(CFLAGS) $(FIFO_INCLUDE) -c -o $@ $< fifo_mwmr.o: $(LIBS_PATH)/mwmr.c $(LIBS_PATH)/mwmr.h giet_config.h $(CC) $(CFLAGS) $(FIFO_INCLUDE) -c -o $@ $< fifo_main.o: $(FIFO_PATH)/main.c giet_config.h $(CC) $(CFLAGS) $(FIFO_INCLUDE) -c -o $@ $< ## application "router" compilation router.bin: $(ROUTER_OBJS) $(ROUTER_PATH)/router.ld $(LD) -o $@ -T $(ROUTER_PATH)/router.ld $(ROUTER_OBJS) $(DU) -D $@ > $@.txt router_stdio.o: $(LIBS_PATH)/stdio.c $(LIBS_PATH)/stdio.h giet_config.h $(CC) $(CFLAGS) $(ROUTER_INCLUDE) -c -o $@ $< router_mwmr.o: $(LIBS_PATH)/mwmr.c $(LIBS_PATH)/mwmr.h giet_config.h $(CC) $(CFLAGS) $(ROUTER_INCLUDE) -c -o $@ $< router_main.o: $(ROUTER_PATH)/main.c giet_config.h $(CC) $(CFLAGS) $(ROUTER_INCLUDE) -c -o $@ $< ## application "pgcd" compilation pgcd.bin: $(PGCD_OBJS) $(PGCD_PATH)/pgcd.ld $(LD) -o $@ -T $(PGCD_PATH)/pgcd.ld $(PGCD_OBJS) $(DU) -D $@ > $@.txt pgcd_stdio.o: $(LIBS_PATH)/stdio.c $(LIBS_PATH)/stdio.h giet_config.h $(CC) $(CFLAGS) $(PGCD_INCLUDE) -c -o $@ $< pgcd_main.o: $(PGCD_PATH)/main.c giet_config.h $(CC) $(CFLAGS) $(PGCD_INCLUDE) -c -o $@ $< ### special rules clean: rm -f *.o *.bin *.txt core *~