#\r
\r
LUFA_BUILD_MODULES += BUILD\r
-LUFA_BUILD_TARGETS += size all elf hex lss clean\r
+LUFA_BUILD_TARGETS += size symbol-sizes all elf hex lss clean\r
LUFA_BUILD_MANDATORY_VARS += TARGET ARCH MCU SRC F_USB LUFA_PATH\r
LUFA_BUILD_OPTIONAL_VARS += BOARD OPTIMIZATION C_STANDARD CPP_STANDARD F_CPU C_FLAGS CPP_FLAGS ASM_FLAGS CC_FLAGS LD_FLAGS\r
\r
# TARGETS:\r
#\r
# size - List built application size\r
+# symbol-sizes - Print application symbols from the binary ELF\r
+# file as a list sorted by size in bytes\r
# all - Build application and list size\r
# elf - Build application ELF debug object file\r
# hex - Build application HEX object files\r
MSG_BUILD_END := Finished building project \"$(TARGET)\".\r
MSG_COMPILE_CMD := ' [CC] :'\r
MSG_ASSEMBLE_CMD := ' [AS] :'\r
+MSG_NM_CMD := ' [NM] :'\r
MSG_REMOVE_CMD := ' [RM] :'\r
MSG_LINKER_CMD := ' [LNK] :'\r
MSG_SIZE_CMD := ' [SIZE] :'\r
fi; \\r
done\r
\r
-size:\r
+size: $(TARGET).elf\r
@echo $(MSG_SIZE_CMD) Determining size of \"$(TARGET).elf\"\r
@if test -f $(TARGET).elf; then \\r
$(CROSS)size $(SIZE_MCU_FLAG) $(SIZE_FORMAT_FLAG) $(TARGET).elf ; 2>/dev/null; \\r
fi\r
\r
+symbol-sizes: $(TARGET).elf\r
+ @echo $(MSG_NM_CMD) Extracting \"$(TARGET).elf\" symbols with decimal byte sizes\r
+ avr-nm --size-sort --demangle --radix=d $(TARGET).elf\r
+\r
clean:\r
@echo $(MSG_REMOVE_CMD) Removing object files of \"$(TARGET)\"\r
rm -f $(OBJECT_FILES)\r
-include $(DEPENDENCY_FILES)\r
\r
# Phony build targets for this module\r
-.PHONY: begin end gcc_version check_source size elf hex lss clean
\ No newline at end of file
+.PHONY: begin end gcc_version check_source size symbol-sizes elf hex lss clean
\ No newline at end of file