Add symbol-sizes target to the BUILD build system module to print a size-sorted list...
authorDean Camera <dean@fourwalledcubicle.com>
Mon, 4 Jun 2012 15:38:45 +0000 (15:38 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Mon, 4 Jun 2012 15:38:45 +0000 (15:38 +0000)
LUFA/Build/lufa.build.in

index b81f6a5..8be02c3 100644 (file)
@@ -7,7 +7,7 @@
 #\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
@@ -21,6 +21,8 @@ LUFA_BUILD_OPTIONAL_VARS  += BOARD OPTIMIZATION C_STANDARD CPP_STANDARD F_CPU C_
 # 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
@@ -101,6 +103,7 @@ MSG_BUILD_BEGIN  := Begin compilation of project \"$(TARGET)\"...
 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
@@ -175,12 +178,16 @@ check_source:
                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
@@ -228,4 +235,4 @@ lss: $(TARGET).lss
 -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