83 lines
2.8 KiB
Makefile
83 lines
2.8 KiB
Makefile
|
||
LA32R_GCC := loongarch32r-linux-gnusf-gcc
|
||
LA32R_AS := loongarch32r-linux-gnusf-as
|
||
LA32R_GXX := loongarch32r-linux-gnusf-g++
|
||
LA32R_OBJDUMP := loongarch32r-linux-gnusf-objdump
|
||
LA32R_GDB := loongarch32r-linux-gnusf-gdb
|
||
LA32R_AR := loongarch32r-linux-gnusf-ar
|
||
LA32R_OBJCOPY := loongarch32r-linux-gnusf-objcopy
|
||
LA32R_READELF := loongarch32r-linux-gnusf-readelf
|
||
|
||
.PHONY: all
|
||
all: $(TARGET)
|
||
|
||
#TODO: 根据Cache实际情况调整has_cache宏,以在start.S中生成正确的Cache初始化代码
|
||
CFLAGS += -Dhas_cache=1
|
||
CFLAGS += -Dcache_index_depth=0x100 -Dcache_offset_width=0x4 -Dcache_way=2
|
||
CFLAGS += -ffunction-sections -fdata-sections
|
||
CFLAGS += -nostartfiles -nostdlib -nostdinc -static -fno-builtin
|
||
CFLAGS += -DCLOCKS_PER_SEC=CORE_CLOCKS_PER_SEC -D_CLOCKS_PER_SEC_=CORE_CLOCKS_PER_SEC
|
||
CFLAGS += -DUSE_CPU_CLOCK_COUNT
|
||
|
||
#若使用 newlib , 将下面的 -lsemihost 替换为 -lgloss
|
||
LDFLAGS += -T $(LINKER_SCRIPT) \
|
||
-Wl,--gc-sections -Wl,--check-sections \
|
||
-lc -lm -lg -lsemihost -lgcc -L$(PICOLIBC_DIR)/lib
|
||
|
||
LINKER_SCRIPT := $(COMMON_DIR)/env/script.lds
|
||
|
||
ASM_SRCS += $(COMMON_DIR)/env/start.S
|
||
|
||
ifeq ($(TARGET), RTThread_Nano)
|
||
|
||
else
|
||
ASM_SRCS += $(COMMON_DIR)/env/trap_handler.S
|
||
endif
|
||
|
||
C_SRCS += $(COMMON_DIR)/drivers/confreg_time.c
|
||
C_SRCS += $(COMMON_DIR)/drivers/core_time.c
|
||
C_SRCS += $(COMMON_DIR)/drivers/common_func.c
|
||
C_SRCS += $(COMMON_DIR)/drivers/dvi.c \
|
||
$(COMMON_DIR)/drivers/led.c \
|
||
$(COMMON_DIR)/drivers/seg7.c
|
||
|
||
INCLUDES += -I./ \
|
||
-I$(COMMON_DIR)/include \
|
||
-I$(PICOLIBC_DIR)/include \
|
||
-I$(GCC_DIR)/lib/gcc/loongarch32r-linux-gnusf/8.3.0/include \
|
||
-I$(GCC_DIR)/lib/gcc/loongarch32r-linux-gnusf/8.3.0/include-fixed
|
||
|
||
ASM_OBJS := $(ASM_SRCS:.S=.o)
|
||
C_OBJS := $(C_SRCS:.c=.o)
|
||
|
||
LINK_OBJS += $(ASM_OBJS) $(C_OBJS)
|
||
LINK_DEPS += $(LINKER_SCRIPT)
|
||
|
||
CLEAN_OBJS += $(OBJDIR)/$(TARGET).elf $(LINK_OBJS) $(OBJDIR)/$(TARGET).s $(OBJDIR)/$(TARGET).bin $(OBJDIR)/convert $(OBJDIR)/axi_ram.coe $(OBJDIR)/axi_ram.mif $(OBJDIR)/rom.vlog
|
||
|
||
$(TARGET): $(LINK_OBJS) $(LINK_DEPS) convert Makefile
|
||
$(LA32R_GCC) $(CFLAGS) $(INCLUDES) $(LINK_OBJS) -o $(OBJDIR)/$@.elf $(LDFLAGS)
|
||
$(LA32R_OBJCOPY) -O binary $(OBJDIR)/$@.elf $(OBJDIR)/$@.bin
|
||
$(LA32R_OBJDUMP) --disassemble-all -S $(OBJDIR)/$@.elf > $(OBJDIR)/$@.s
|
||
$(OBJDIR)/convert $@.bin $(OBJDIR)/
|
||
cp ./$(OBJDIR)/axi_ram.mif $(COMMON_DIR)/../../
|
||
cp ./$(OBJDIR)/axi_ram.mif $(LA32RSOC_WINDOWS_HOME)/sdk
|
||
cp ./$(OBJDIR)/$@.bin $(COMMON_DIR)/../../
|
||
cp ./$(OBJDIR)/$@.bin $(LA32RSOC_WINDOWS_HOME)/sdk
|
||
rm -f $(LINK_OBJS)
|
||
rm -f $(OBJDIR)/convert
|
||
|
||
$(ASM_OBJS): %.o: %.S
|
||
$(LA32R_GCC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
|
||
|
||
$(C_OBJS): %.o: %.c
|
||
$(LA32R_GCC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
|
||
|
||
convert: $(COMMON_DIR)/env/convert.c
|
||
mkdir -p $(OBJDIR)/
|
||
gcc -o $(OBJDIR)/convert $(COMMON_DIR)/env/convert.c
|
||
|
||
.PHONY: clean
|
||
clean:
|
||
rm -f $(CLEAN_OBJS)
|