2021-08-14 20:18:43 +08:00
|
|
|
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
|
2021-08-13 20:40:53 +08:00
|
|
|
|
2021-08-14 20:18:43 +08:00
|
|
|
CFLAGS = -O3 -fno-pic -mno-branch-likely -mno-abicalls -msoft-float -fno-builtin -mno-shared -mips1 -EL -nostdinc -nostdlib
|
2021-08-13 20:40:53 +08:00
|
|
|
|
2021-08-14 20:18:43 +08:00
|
|
|
OBJ_DIR = obj
|
2021-08-13 20:40:53 +08:00
|
|
|
|
2021-08-14 20:18:43 +08:00
|
|
|
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))
|
2021-08-13 20:40:53 +08:00
|
|
|
|
2021-08-14 20:18:43 +08:00
|
|
|
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
|
2021-08-13 20:40:53 +08:00
|
|
|
|
2021-08-14 20:18:43 +08:00
|
|
|
default: all
|
2021-08-13 20:40:53 +08:00
|
|
|
|
2021-08-14 21:24:07 +08:00
|
|
|
%.o : %.S
|
|
|
|
$(CC) -c -I include $(CFLAGS) -o $@ $<
|
|
|
|
|
|
|
|
%.o : %.c
|
2021-08-14 20:18:43 +08:00
|
|
|
$(CC) -c -I include $(CFLAGS) -o $@ $<
|
2021-08-13 20:40:53 +08:00
|
|
|
|
2021-08-14 20:18:43 +08:00
|
|
|
$(TINY_C_TARGET): $(TINY_C_OBJ)
|
|
|
|
$(AR) -cr $@ $^
|
2021-08-13 20:40:53 +08:00
|
|
|
|
|
|
|
bin.lds: bin.lds.S
|
2021-08-14 20:18:43 +08:00
|
|
|
$(CC) -EL -E -P -o $@ $<
|
2021-08-13 20:40:53 +08:00
|
|
|
|
2021-08-14 20:18:43 +08:00
|
|
|
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)/
|
2021-08-13 20:40:53 +08:00
|
|
|
|
|
|
|
convert: convert.c
|
|
|
|
clang -o convert convert.c
|
|
|
|
|
2021-08-14 20:18:43 +08:00
|
|
|
env:
|
|
|
|
mkdir -p $(USER_OBJ_DIR)
|
|
|
|
mkdir -p $(TINY_C_OBJ_DIR)
|
|
|
|
|
2021-08-13 20:40:53 +08:00
|
|
|
clean:
|
|
|
|
rm -f *.o *.bin *.elf *.a testbin *.s *.vlog *.coe *.data *.mif
|
|
|
|
rm -f bin.lds convert
|
2021-08-14 20:18:43 +08:00
|
|
|
rm -rf obj
|
2021-08-13 20:40:53 +08:00
|
|
|
|
|
|
|
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 "####################################################################"
|