94 lines
2.5 KiB
Makefile
94 lines
2.5 KiB
Makefile
|
# 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
|
||
|
|