94 lines
2.5 KiB
Makefile
Raw Permalink Normal View History

2025-04-10 17:31:33 +08:00
# default target
all::
include $(TOP)/script/Makefile.vars
BUILDDIR ?= $(TOP)/gccout/$(PROJECT)
LIBDIR ?= $(TOP)/libs
#-------------------------------------------------------------------------------
# Rules
#-------------------------------------------------------------------------------
ifeq ($(APP_LIB1_SUPPORT),y)
include $(LIBDIR)/lib1/Makefile.inc
endif
vpath %.c $(TOP)
vpath %.s $(TOP)
vpath %.S $(TOP)
OBJS := $(addprefix $(BUILDDIR)/, $(obj-y))
LIBS := $(addprefix $(BUILDDIR)/lib/,$(lib-y))
.PHONY: all build clean size cleanall
all:: build
ifeq ($(TOOLCHAIN),GCC)
build: $(BUILDDIR)/$(BINNAME).elf \
$(BUILDDIR)/$(BINNAME).symbols \
$(BUILDDIR)/$(BINNAME).bin \
$(BUILDDIR)/$(BINNAME).size
$(BUILDDIR):
@mkdir -p $(BUILDDIR)
$(LIBDIR):
@mkdir -p $(LIBDIR)
$(BUILDDIR)/%.sc: %.c
@mkdir -p $(dir $@)
@cp $< $@
$(BUILDDIR)/%.o: %.c
$(ECHO) CC $<
@mkdir.exe -p $(dir $@)
$(Q)$(CC) $(CFLAGS) $(CFLAGS_CPU) $(CFLAGS_INC) $(CFLAGS_DEFS) $(DEPFLAGS) -c $< -o $@
#overwrite implicit rule
%.o: %.c
@mkdir -p $(dir $@)
$(ECHO) CC $<
$(Q)$(CC) $(CFLAGS) $(CFLAGS_CPU) $(CFLAGS_INC) $(CFLAGS_DEFS) $(DEPFLAGS) -c $< -o $@
$(BUILDDIR)/%.o: %.s
@mkdir -p $(dir $@)
$(ECHO) ASM $<
$(Q)$(CC) $(CFLAGS_ASM) $(CFLAGS_CPU) $(CFLAGS_INC) $(CFLAGS_DEFS) $(DEPFLAGS) -c $< -o $@
$(BUILDDIR)/%.o: %.S
@mkdir -p $(dir $@)
$(ECHO) ASM $<
$(Q)$(CC) $(CFLAGS) $(CFLAGS_CPU) $(CFLAGS_INC) $(CFLAGS_DEFS) $(DEPFLAGS) -c $< -o $@
$(BUILDDIR)/$(BINNAME).elf: $(OBJS) $(LIBS)
$(ECHO) LINK $@
$(Q)$(CC) $(CFLAGS_CPU) $(CFLAGS_DEFS) -E -P - <$(LD_FILE) -o $(BUILDDIR)/$(PROJECT).lds
$(Q)$(LD) -u _scanf_float -u _printf_float -T $(BUILDDIR)/$(PROJECT).lds -o $(BUILDDIR)/$(PROJECT).elf $(OBJS) $(LIBS) $(GCCLIB1_PATH)/libgcc.a $(GCCLIB2_PATH)/libc_nano.a $(GCCLIB2_PATH)/libm.a -Wl,-Map=$(BUILDDIR)/$(PROJECT).map
$(BUILDDIR)/$(BINNAME).symbols: $(BUILDDIR)/$(BINNAME).elf
$(Q)$(NM) --size-sort --print-size -r $< >$@
$(BUILDDIR)/$(BINNAME).bin: $(BUILDDIR)/$(BINNAME).elf
$(ECHO) OBJCOPY $@
$(Q)$(OBJCOPY) -O binary $< $@
$(Q)$(OBJCOPY) -O verilog $< $(@:.bin=.hex)
@$(OBJDUMP) -d -h $< > $(BUILDDIR)/$(BINNAME).txt
@$(SIZE) $(OBJECTS) $<
$(BUILDDIR)/$(BINNAME).size: $(BUILDDIR)/$(BINNAME).elf
@$(OBJDUMP) -h $< > $@
@$(SIZE) -G $< >> $@
@$(foreach lib, $(LIBS), $(SIZE) $(lib) -t -G >> $@;)
clean:
@rm -rf $(BUILDDIR)
cleanall:
@rm -rf $(TOP)/PLAT/gccout/$(OUTTARGET) $(TOP)/PLAT/middleware/developed/debug/inc/debug_log_*p.h
size: $(BUILDDIR)/$(BINNAME).elf
@$(SIZE) $(OBJECTS) $(BUILDDIR)/$(BINNAME).elf
endif