blob: 814dccc80a7da95642f3a4b95437ab3e92ad4b5f [file] [log] [blame]
# use linker garbage collection, if requested
WITH_LINKER_GC ?= false
ifeq (true,$(call TOBOOL,$(WITH_LINKER_GC)))
GLOBAL_COMPILEFLAGS += -ffunction-sections -fdata-sections
GLOBAL_LDFLAGS += --gc-sections
GLOBAL_DEFINES += LINKER_GC=1
endif
ifneq (,$(EXTRA_BUILDRULES))
-include $(EXTRA_BUILDRULES)
endif
$(EXTRA_LINKER_SCRIPTS):
$(OUTBIN): $(OUTELF)
$(info generating image: $@)
$(NOECHO)$(SIZE) $<
$(NOECHO)$(OBJCOPY) -O binary $< $@
$(OUTELF).hex: $(OUTELF)
$(info generating hex file: $@)
$(NOECHO)$(OBJCOPY) -O ihex $< $@
$(OUTELF): $(ALLMODULE_OBJS) $(EXTRA_OBJS) $(LINKER_SCRIPT) $(EXTRA_LINKER_SCRIPTS)
$(info linking $@)
$(NOECHO)$(SIZE) -t --common $(sort $(ALLMODULE_OBJS)) $(EXTRA_OBJS)
$(NOECHO)$(LD) $(GLOBAL_LDFLAGS) $(ARCH_LDFLAGS) -d -T $(LINKER_SCRIPT) \
$(addprefix -T,$(EXTRA_LINKER_SCRIPTS)) \
$(ALLMODULE_OBJS) $(EXTRA_OBJS) $(LIBGCC) -Map=$(OUTELF).map -o $@
$(OUTELF).sym: $(OUTELF)
$(info generating symbols: $@)
$(NOECHO)$(OBJDUMP) -t $< | $(CPPFILT) > $@
$(NOECHO)echo "# vim: ts=8 nolist nowrap" >> $@
$(OUTELF).sym.sorted: $(OUTELF)
$(info generating sorted symbols: $@)
$(NOECHO)$(OBJDUMP) -t $< | $(CPPFILT) | sort > $@
$(NOECHO)echo "# vim: ts=8 nolist nowrap" >> $@
$(OUTELF).lst: $(OUTELF)
$(info generating listing: $@)
$(NOECHO)$(OBJDUMP) $(ARCH_OBJDUMP_FLAGS) -d $< | $(CPPFILT) > $@
$(NOECHO)echo "# vim: ts=8 nolist nowrap" >> $@
$(OUTELF).debug.lst: $(OUTELF)
$(info generating listing: $@)
$(NOECHO)$(OBJDUMP) $(ARCH_OBJDUMP_FLAGS) -S $< | $(CPPFILT) > $@
$(NOECHO)echo "# vim: ts=8 nolist nowrap" >> $@
$(OUTELF).dump: $(OUTELF)
$(info generating objdump: $@)
$(NOECHO)$(OBJDUMP) -x $< | $(CPPFILT) > $@
$(NOECHO)echo "# vim: ts=8 nolist nowrap" >> $@
$(OUTELF).size: $(OUTELF)
$(info generating size map: $@)
$(NOECHO)$(NM) -S --size-sort $< | $(CPPFILT) > $@
$(NOECHO)echo "# vim: ts=8 nolist nowrap" >> $@
# print some information about the build
$(BUILDDIR)/srcfiles.txt: $(OUTELF)
$(info generating $@)
$(NOECHO)echo $(sort $(ALLSRCS)) | tr ' ' '\n' > $@
$(BUILDDIR)/include_paths.txt: $(OUTELF)
$(info generating $@)
$(NOECHO)echo $(subst -I,,$(sort $(GLOBAL_INCLUDES))) | tr ' ' '\n' > $@
#include arch/$(ARCH)/compile.mk