MIPS/resources/2021/soft/memory_game/Makefile
2021-06-18 15:43:51 +08:00

62 lines
1.7 KiB
Makefile

export LD_PRELOAD =
MEM_DEF= -DMEMSTART=0x80040000 -DMEMSIZE=0x10000
AFLAGS = -O2 -fno-pic -mno-abicalls -fno-builtin -mips1 -I include -EL -msoft-float
export CROSS_COMPILE ?= mipsel-linux-gnu-
export MEM_DEF
OBJDIR = obj
GAME_TARGET = ./memory_game/memory_main.o
all:
mkdir -p $(OBJDIR)
make generate
libtinyc.a :
make -C lib $@
generate: inst_data.bin convert
./convert inst_data.bin $(OBJDIR)/
inst_data.bin: main.elf
${CROSS_COMPILE}objcopy -O binary -j .text -j .data $(OBJDIR)/$< $(OBJDIR)/$@
main.elf: start.o libtinyc.a bin.lds $(GAME_TARGET)
${CROSS_COMPILE}ld -g -EL -T bin.lds start.o $(GAME_TARGET) lib/libtinyc.a -o $(OBJDIR)/$@
${CROSS_COMPILE}objdump -alD $(OBJDIR)/$@ > $(OBJDIR)/test.s
$(GAME_TARGET):
make -C memory_game
bin.lds: bin.lds.S
${CROSS_COMPILE}gcc -EL -E -P -Umips -D_LOADER -U_MAIN $(MEM_DEF) $< -o $@
start.o: start.S
${CROSS_COMPILE}gcc $(AFLAGS) -c $< -nostdinc -nostdlib
convert: convert.c
gcc -o convert convert.c
clean:
rm -f *.o *.bin *.elf *.a testbin *.s *.vlog *.coe *.data *.mif
rm -rf obj
make -C lib clean
make -C memory_game clean
reset:
make clean
rm -f bin.lds convert
help:
@echo "################################################################"
@echo "### help for compiling memory game"
@echo "################################################################"
@echo "### options:"
@echo "### make : get compiled result, which is saved in ./obj"
@echo "### make clean: remove *.o, *.a, and ./obj"
@echo "### make reset: "make clean" and remove convert, bin.lds"
@echo "### make help : show help information"
@echo "###############################################################"
#-include rules.make