CROSS_COMPILE ?= mipsel-linux-gnu- CC = ${CROSS_COMPILE}gcc LD = ${CROSS_COMPILE}ld OBJCOPY = ${CROSS_COMPILE}objcopy OBJDUMP = ${CROSS_COMPILE}objdump AR = ${CROSS_COMPILE}ar CFLAGS = -O3 -fno-pic -mno-branch-likely -mno-abicalls -msoft-float -fno-builtin -mno-shared -mips1 -EL -nostdinc -nostdlib OBJ_DIR = obj USER_DIR = src USER_OBJ_DIR = obj/user USER_SRC = $(wildcard $(USER_DIR)/*.S) $(wildcard $(USER_DIR)/*.c) USER_OBJ := $(patsubst $(USER_DIR)/%.S, $(USER_OBJ_DIR)/%.o, $(USER_SRC)) USER_OBJ := $(patsubst $(USER_DIR)/%.c, $(USER_OBJ_DIR)/%.o, $(USER_OBJ)) TINY_C_DIR = lib TINY_C_OBJ_DIR = obj/tinyc TINY_C_SRC = $(wildcard $(TINY_C_DIR)/*.S) $(wildcard $(TINY_C_DIR)/*.c) TINY_C_OBJ := $(patsubst $(TINY_C_DIR)/%.S, $(TINY_C_OBJ_DIR)/%.o, $(TINY_C_SRC)) TINY_C_OBJ := $(patsubst $(TINY_C_DIR)/%.c, $(TINY_C_OBJ_DIR)/%.o, $(TINY_C_OBJ)) TINY_C_TARGET = $(TINY_C_OBJ_DIR)/libtinyc.a default: all %.o : %.S $(CC) -c -I include $(CFLAGS) -o $@ $< %.o : %.c $(CC) -c -I include $(CFLAGS) -o $@ $< $(TINY_C_TARGET): $(TINY_C_OBJ) $(AR) -cr $@ $^ bin.lds: bin.lds.S $(CC) -EL -E -P -o $@ $< main.elf: start.o bin.lds $(TINY_C_TARGET) $(USER_OBJ) $(LD) -g -EL -T bin.lds start.o $(USER_OBJ) $(TINY_C_TARGET) -o $(OBJ_DIR)/$@ $(OBJDUMP) -alD $(OBJ_DIR)/$@ > $(OBJ_DIR)/test.s axi_ram.bin: main.elf $(OBJCOPY) -O binary -j .text -j .data $(OBJ_DIR)/$< $(OBJ_DIR)/$@ all: env convert axi_ram.bin ./convert axi_ram.bin $(OBJ_DIR)/ convert: convert.c clang -o convert convert.c env: mkdir -p $(USER_OBJ_DIR) mkdir -p $(TINY_C_OBJ_DIR) clean: rm -f *.o *.bin *.elf *.a testbin *.s *.vlog *.coe *.data *.mif rm -f bin.lds convert rm -rf obj help: @echo "####################################################################" @echo "### help for compiling our awesome project ###" @echo "####################################################################" @echo "### options: ###" @echo "### make : get compiled result, which is saved in ./obj ###" @echo "### make clean: remove *.o, *.a, and ./obj ###" @echo "### make help : show help information ###" @echo "####################################################################"