Update SVN line endings property on newer source files to native.
[pub/USBasp.git] / LUFA / Build / lufa.build.in
index bfbd7d8..59b81d9 100644 (file)
-#\r
-#             LUFA Library\r
-#     Copyright (C) Dean Camera, 2012.\r
-#\r
-#  dean [at] fourwalledcubicle [dot] com\r
-#           www.lufa-lib.org\r
-#\r
-\r
-LUFA_BUILD_MODULES        += BUILD\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
-# -----------------------------------------------------------------------------\r
-#               LUFA GCC Compiler Buildsystem Makefile Module.\r
-# -----------------------------------------------------------------------------\r
-# DESCRIPTION:\r
-#   Provides a set of targets to build a C, C++ and/or Assembly application\r
-#   via the AVR-GCC compiler.\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
-#    lss                       - Build application LSS assembly listing file\r
-#    clean                     - Remove output files\r
-#\r
-# MANDATORY PARAMETERS:\r
-#\r
-#    TARGET                    - Application name\r
-#    ARCH                      - Device architecture name\r
-#    MCU                       - Microcontroller device model name\r
-#    SRC                       - List of input source files (*.c, *.cpp, *.S)\r
-#    F_USB                     - Speed of the input clock of the USB controller\r
-#                                in Hz\r
-#    LUFA_PATH                 - Path to the LUFA library core\r
-#\r
-# OPTIONAL PARAMETERS:\r
-#\r
-#    BOARD                     - LUFA board hardware\r
-#    OPTIMIZATION              - Optimization level\r
-#    C_STANDARD                - C Language Standard to use\r
-#    CPP_STANDARD              - C++ Language Standard to use\r
-#    F_CPU                     - Speed of the CPU, in Hz\r
-#    C_FLAGS                   - Flags to pass to the C compiler only\r
-#    CPP_FLAGS                 - Flags to pass to the C++ compiler only\r
-#    ASM_FLAGS                 - Flags to pass to the assembler only\r
-#    CC_FLAGS                  - Common flags to pass to the C/C++ compiler and\r
-#                                assembler\r
-#    LD_FLAGS                  - Flags to pass to the linker\r
-#\r
-# -----------------------------------------------------------------------------\r
-\r
-# Sanity-check values of mandatory user-supplied variables\r
-MCU            ?= $(error Makefile MCU value not set)\r
-TARGET         ?= $(error Makefile TARGET value not set)\r
-ARCH           ?= $(error Makefile ARCH value not set)\r
-SRC            ?= $(error Makefile SRC value not set)\r
-F_USB          ?= $(error Makefile F_USB value not set)\r
-LUFA_PATH      ?= $(error Makefile LUFA_PATH value not set)\r
-\r
-ifeq ($(MCU),)\r
-   $(error Makefile MCU option cannot be blank)\r
-endif\r
-ifeq ($(TARGET),)\r
-   $(error Makefile TARGET option cannot be blank)\r
-endif\r
-ifeq ($(ARCH),)\r
-   $(error Makefile ARCH option cannot be blank)\r
-endif\r
-ifeq ($(F_USB),)\r
-   $(error Makefile F_USB option cannot be blank)\r
-endif\r
-\r
-# Default values of optionally user-supplied variables\r
-BOARD           ?= NONE\r
-OPTIMIZATION    ?= s\r
-F_CPU           ?=\r
-C_STANDARD      ?= gnu99\r
-CPP_STANDARD    ?= gnu++98\r
-C_FLAGS         ?=\r
-CPP_FLAGS       ?=\r
-ASM_FLAGS       ?=\r
-CC_FLAGS        ?=\r
-\r
-# Determine the utility prefix to use for the selected architecture\r
-ifeq ($(ARCH), AVR8)\r
-   CROSS        := avr-\r
-else ifeq ($(ARCH), XMEGA)\r
-   CROSS        := avr-\r
-else ifeq ($(ARCH), UC3)\r
-   CROSS        := avr32-\r
-else\r
-    $(error Unsupported architecture "$(ARCH)".)\r
-endif\r
-\r
-# Output Messages\r
-MSG_BUILD_BEGIN  := Begin compilation of project \"$(TARGET)\"...\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
-MSG_OBJCPY_CMD   := ' [OBJCPY]  :'\r
-MSG_OBJDMP_CMD   := ' [OBJDMP]  :'\r
-\r
-# Convert input source file list to differentiate them by type\r
-C_SOURCE   = $(filter %.c, $(SRC))\r
-CPP_SOURCE = $(filter %.cpp, $(SRC))\r
-ASM_SOURCE = $(filter %.S, $(SRC))\r
-\r
-# Create a list of unknown source file types, if any are found throw an error\r
-UNKNOWN_SOURCE = $(filter-out $(C_SOURCE) $(CPP_SOURCE) $(ASM_SOURCE), $(SRC))\r
-ifneq ($(UNKNOWN_SOURCE),)\r
-   $(error Unknown input source formats: $(UNKNOWN_SOURCE))\r
-endif\r
-\r
-# Convert input source filenames into a list of required output object files\r
-OBJECT_FILES     = $(filter %.o, $(C_SOURCE:%.c=%.o) $(CPP_SOURCE:%.cpp=%.o) $(ASM_SOURCE:%.S=%.o))\r
-DEPENDENCY_FILES = $(OBJECT_FILES:%.o=%.d)\r
-\r
-# Create a list of common flags to pass to the compiler/linker/assembler\r
-BASE_CC_FLAGS    := \r
-ifeq ($(ARCH), AVR8)\r
-   BASE_CC_FLAGS += -mmcu=$(MCU) -gdwarf-2 -fshort-enums -fno-inline-small-functions -fpack-struct\r
-else ifeq ($(ARCH), XMEGA)\r
-   BASE_CC_FLAGS += -mmcu=$(MCU) -gdwarf-2 -fshort-enums -fno-inline-small-functions -fpack-struct\r
-else ifeq ($(ARCH), UC3)\r
-   BASE_CC_FLAGS += -mpart=$(MCU:at32%=%) -g3 -masm-addr-pseudos\r
-endif\r
-BASE_CC_FLAGS += -Wall -fno-strict-aliasing -funsigned-char -funsigned-bitfields -ffunction-sections\r
-BASE_CC_FLAGS += -I. -I$(patsubst %/,%,$(LUFA_PATH))/..\r
-BASE_CC_FLAGS += -DARCH=ARCH_$(ARCH) -DBOARD=BOARD_$(BOARD) -DF_USB=$(F_USB)UL\r
-ifneq ($(F_CPU),)\r
-   BASE_CC_FLAGS += -DF_CPU=$(F_CPU)UL\r
-endif\r
-\r
-# Additional language specific compiler flags\r
-BASE_C_FLAGS   := -x c -O$(OPTIMIZATION) -std=$(C_STANDARD) -Wstrict-prototypes\r
-BASE_CPP_FLAGS := -x c++ -O$(OPTIMIZATION) -std=$(CPP_STANDARD)\r
-BASE_ASM_FLAGS := -x assembler-with-cpp\r
-\r
-# Create a list of flags to pass to the linker\r
-BASE_LD_FLAGS := -lm -Wl,-Map=$(TARGET).map,--cref -Wl,--gc-sections \r
-ifeq ($(ARCH), UC3)\r
-   BASE_LD_FLAGS += --rodata-writable --direct-data   \r
-else\r
-   BASE_LD_FLAGS += -Wl,--relax\r
-endif\r
-\r
-# Determine flags to pass to the size utility based on its reported features\r
-SIZE_MCU_FLAG    := $(shell $(CROSS)size --help | grep -- --mcu > /dev/null && echo --mcu=$(MCU) )\r
-SIZE_FORMAT_FLAG := $(shell $(CROSS)size --help | grep -- --format=.*avr > /dev/null && echo --format=avr )\r
-\r
-\r
-begin:\r
-       @echo ""\r
-       @echo $(MSG_BUILD_BEGIN)\r
-       @echo ""\r
-       \r
-end:\r
-       @echo ""\r
-       @echo $(MSG_BUILD_END)\r
-       @echo ""\r
-\r
-gcc_version:\r
-       @$(CROSS)gcc --version\r
-\r
-check_source:\r
-       @for f in $(SRC); do \\r
-               if [ ! -f $$f ]; then \\r
-                       echo "Error: Source file not found: $$f"; \\r
-                       exit 1; \\r
-               fi; \\r
-        done\r
-\r
-size: $(TARGET).elf\r
-       @echo $(MSG_SIZE_CMD) Determining size of \"$<\"\r
-       @if test -f $(TARGET).elf; then \\r
-           $(CROSS)size $(SIZE_MCU_FLAG) $(SIZE_FORMAT_FLAG) $< ; 2>/dev/null; \\r
-        fi\r
-\r
-symbol-sizes: $(TARGET).elf\r
-       @echo $(MSG_NM_CMD) Extracting \"$<\" symbols with decimal byte sizes\r
-       avr-nm --size-sort --demangle --radix=d $<\r
-\r
-clean:\r
-       @echo $(MSG_REMOVE_CMD) Removing object files of \"$(TARGET)\"\r
-       rm -f $(OBJECT_FILES)\r
-       @echo $(MSG_REMOVE_CMD) Removing dependency files of \"$(TARGET)\"\r
-       rm -f $(DEPENDENCY_FILES)\r
-       @echo $(MSG_REMOVE_CMD) Removing output files of \"$(TARGET)\"\r
-       rm -f $(TARGET).elf $(TARGET).hex $(TARGET).eep $(TARGET).map $(TARGET).lss\r
-\r
-all: begin check_source gcc_version elf hex lss size end\r
-\r
-elf: $(TARGET).elf\r
-hex: $(TARGET).hex $(TARGET).eep\r
-lss: $(TARGET).lss\r
-\r
-%.o: %.c $(MAKEFILE_LIST)\r
-       @echo $(MSG_COMPILE_CMD) Compiling C file \"$<\"\r
-       $(CROSS)gcc -c $(BASE_CC_FLAGS) $(BASE_C_FLAGS) $(CC_FLAGS) $(C_FLAGS) -MMD -MP -MF $(@:%.o=%.d) $< -o $@\r
-\r
-%.o: %.cpp $(MAKEFILE_LIST)\r
-       @echo $(MSG_COMPILE_CMD) Compiling C++ file \"$<\"\r
-       $(CROSS)gcc -c $(BASE_CC_FLAGS) $(BASE_CPP_FLAGS) $(CC_FLAGS) $(CPP_FLAGS) -MMD -MP -MF $(@:%.o=%.d) $< -o $@\r
-       \r
-%.o: %.S $(MAKEFILE_LIST)\r
-       @echo $(MSG_ASSEMBLE_CMD) Assembling \"$<\"\r
-       $(CROSS)gcc -c $(BASE_CC_FLAGS) $(BASE_ASM_FLAGS) $(CC_FLAGS) $(ASM_FLAGS) $< -o $@\r
-\r
-.PRECIOUS : $(OBJECT_FILES)\r
-%.elf: $(OBJECT_FILES)\r
-       @echo $(MSG_LINKER_CMD) Linking object files into \"$@\"\r
-       $(CROSS)gcc $(BASE_CC_FLAGS) $(BASE_LD_FLAGS) $(CC_FLAGS) $(LD_FLAGS) $^ -o $@\r
-\r
-%.hex: %.elf\r
-       @echo $(MSG_OBJCPY_CMD) Extracting HEX file data from \"$<\"\r
-       $(CROSS)objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature $< $@\r
-\r
-%.eep: %.elf\r
-       @echo $(MSG_OBJCPY_CMD) Extracting EEP file data from \"$<\"\r
-       $(CROSS)objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex $< $@ || exit 0\r
-\r
-%.lss: %.elf\r
-       @echo $(MSG_OBJDMP_CMD) Extracting LSS file data from \"$<\"\r
-       $(CROSS)objdump -h -S -z $< > $@\r
-\r
-# Include build dependency files\r
--include $(DEPENDENCY_FILES)\r
-\r
-# Phony build targets for this module\r
-.PHONY: begin end gcc_version check_source size symbol-sizes elf hex lss clean\r
+#
+#             LUFA Library
+#     Copyright (C) Dean Camera, 2012.
+#
+#  dean [at] fourwalledcubicle [dot] com
+#           www.lufa-lib.org
+#
+
+LUFA_BUILD_MODULES        += BUILD
+LUFA_BUILD_TARGETS        += size symbol-sizes all elf hex lss clean
+LUFA_BUILD_MANDATORY_VARS += TARGET ARCH MCU SRC F_USB LUFA_PATH
+LUFA_BUILD_OPTIONAL_VARS  += BOARD OPTIMIZATION C_STANDARD CPP_STANDARD F_CPU C_FLAGS CPP_FLAGS ASM_FLAGS CC_FLAGS LD_FLAGS
+
+# -----------------------------------------------------------------------------
+#               LUFA GCC Compiler Buildsystem Makefile Module.
+# -----------------------------------------------------------------------------
+# DESCRIPTION:
+#   Provides a set of targets to build a C, C++ and/or Assembly application
+#   via the AVR-GCC compiler.
+# -----------------------------------------------------------------------------
+# TARGETS:
+#
+#    size                      - List built application size
+#    symbol-sizes              - Print application symbols from the binary ELF
+#                                file as a list sorted by size in bytes
+#    all                       - Build application and list size
+#    elf                       - Build application ELF debug object file
+#    hex                       - Build application HEX object files
+#    lss                       - Build application LSS assembly listing file
+#    clean                     - Remove output files
+#
+# MANDATORY PARAMETERS:
+#
+#    TARGET                    - Application name
+#    ARCH                      - Device architecture name
+#    MCU                       - Microcontroller device model name
+#    SRC                       - List of input source files (*.c, *.cpp, *.S)
+#    F_USB                     - Speed of the input clock of the USB controller
+#                                in Hz
+#    LUFA_PATH                 - Path to the LUFA library core
+#
+# OPTIONAL PARAMETERS:
+#
+#    BOARD                     - LUFA board hardware
+#    OPTIMIZATION              - Optimization level
+#    C_STANDARD                - C Language Standard to use
+#    CPP_STANDARD              - C++ Language Standard to use
+#    F_CPU                     - Speed of the CPU, in Hz
+#    C_FLAGS                   - Flags to pass to the C compiler only
+#    CPP_FLAGS                 - Flags to pass to the C++ compiler only
+#    ASM_FLAGS                 - Flags to pass to the assembler only
+#    CC_FLAGS                  - Common flags to pass to the C/C++ compiler and
+#                                assembler
+#    LD_FLAGS                  - Flags to pass to the linker
+#
+# -----------------------------------------------------------------------------
+
+# Sanity-check values of mandatory user-supplied variables
+MCU            ?= $(error Makefile MCU value not set)
+TARGET         ?= $(error Makefile TARGET value not set)
+ARCH           ?= $(error Makefile ARCH value not set)
+SRC            ?= $(error Makefile SRC value not set)
+F_USB          ?= $(error Makefile F_USB value not set)
+LUFA_PATH      ?= $(error Makefile LUFA_PATH value not set)
+
+ifeq ($(MCU),)
+   $(error Makefile MCU option cannot be blank)
+endif
+ifeq ($(TARGET),)
+   $(error Makefile TARGET option cannot be blank)
+endif
+ifeq ($(ARCH),)
+   $(error Makefile ARCH option cannot be blank)
+endif
+ifeq ($(F_USB),)
+   $(error Makefile F_USB option cannot be blank)
+endif
+
+# Default values of optionally user-supplied variables
+BOARD           ?= NONE
+OPTIMIZATION    ?= s
+F_CPU           ?=
+C_STANDARD      ?= gnu99
+CPP_STANDARD    ?= gnu++98
+C_FLAGS         ?=
+CPP_FLAGS       ?=
+ASM_FLAGS       ?=
+CC_FLAGS        ?=
+
+# Determine the utility prefix to use for the selected architecture
+ifeq ($(ARCH), AVR8)
+   CROSS        := avr-
+else ifeq ($(ARCH), XMEGA)
+   CROSS        := avr-
+else ifeq ($(ARCH), UC3)
+   CROSS        := avr32-
+else
+    $(error Unsupported architecture "$(ARCH)".)
+endif
+
+# Output Messages
+MSG_BUILD_BEGIN  := Begin compilation of project \"$(TARGET)\"...
+MSG_BUILD_END    := Finished building project \"$(TARGET)\".
+MSG_COMPILE_CMD  := ' [CC]      :'
+MSG_ASSEMBLE_CMD := ' [AS]      :'
+MSG_NM_CMD       := ' [NM]      :'
+MSG_REMOVE_CMD   := ' [RM]      :'
+MSG_LINKER_CMD   := ' [LNK]     :'
+MSG_SIZE_CMD     := ' [SIZE]    :'
+MSG_OBJCPY_CMD   := ' [OBJCPY]  :'
+MSG_OBJDMP_CMD   := ' [OBJDMP]  :'
+
+# Convert input source file list to differentiate them by type
+C_SOURCE   = $(filter %.c, $(SRC))
+CPP_SOURCE = $(filter %.cpp, $(SRC))
+ASM_SOURCE = $(filter %.S, $(SRC))
+
+# Create a list of unknown source file types, if any are found throw an error
+UNKNOWN_SOURCE = $(filter-out $(C_SOURCE) $(CPP_SOURCE) $(ASM_SOURCE), $(SRC))
+ifneq ($(UNKNOWN_SOURCE),)
+   $(error Unknown input source formats: $(UNKNOWN_SOURCE))
+endif
+
+# Convert input source filenames into a list of required output object files
+OBJECT_FILES     = $(filter %.o, $(C_SOURCE:%.c=%.o) $(CPP_SOURCE:%.cpp=%.o) $(ASM_SOURCE:%.S=%.o))
+DEPENDENCY_FILES = $(OBJECT_FILES:%.o=%.d)
+
+# Create a list of common flags to pass to the compiler/linker/assembler
+BASE_CC_FLAGS    := 
+ifeq ($(ARCH), AVR8)
+   BASE_CC_FLAGS += -mmcu=$(MCU) -gdwarf-2 -fshort-enums -fno-inline-small-functions -fpack-struct
+else ifeq ($(ARCH), XMEGA)
+   BASE_CC_FLAGS += -mmcu=$(MCU) -gdwarf-2 -fshort-enums -fno-inline-small-functions -fpack-struct
+else ifeq ($(ARCH), UC3)
+   BASE_CC_FLAGS += -mpart=$(MCU:at32%=%) -g3 -masm-addr-pseudos
+endif
+BASE_CC_FLAGS += -Wall -fno-strict-aliasing -funsigned-char -funsigned-bitfields -ffunction-sections
+BASE_CC_FLAGS += -I. -I$(patsubst %/,%,$(LUFA_PATH))/..
+BASE_CC_FLAGS += -DARCH=ARCH_$(ARCH) -DBOARD=BOARD_$(BOARD) -DF_USB=$(F_USB)UL
+ifneq ($(F_CPU),)
+   BASE_CC_FLAGS += -DF_CPU=$(F_CPU)UL
+endif
+
+# Additional language specific compiler flags
+BASE_C_FLAGS   := -x c -O$(OPTIMIZATION) -std=$(C_STANDARD) -Wstrict-prototypes
+BASE_CPP_FLAGS := -x c++ -O$(OPTIMIZATION) -std=$(CPP_STANDARD)
+BASE_ASM_FLAGS := -x assembler-with-cpp
+
+# Create a list of flags to pass to the linker
+BASE_LD_FLAGS := -lm -Wl,-Map=$(TARGET).map,--cref -Wl,--gc-sections 
+ifeq ($(ARCH), UC3)
+   BASE_LD_FLAGS += --rodata-writable --direct-data   
+else
+   BASE_LD_FLAGS += -Wl,--relax
+endif
+
+# Determine flags to pass to the size utility based on its reported features
+SIZE_MCU_FLAG    := $(shell $(CROSS)size --help | grep -- --mcu > /dev/null && echo --mcu=$(MCU) )
+SIZE_FORMAT_FLAG := $(shell $(CROSS)size --help | grep -- --format=.*avr > /dev/null && echo --format=avr )
+
+
+begin:
+       @echo ""
+       @echo $(MSG_BUILD_BEGIN)
+       @echo ""
+       
+end:
+       @echo ""
+       @echo $(MSG_BUILD_END)
+       @echo ""
+
+gcc_version:
+       @$(CROSS)gcc --version
+
+check_source:
+       @for f in $(SRC); do \
+               if [ ! -f $$f ]; then \
+                       echo "Error: Source file not found: $$f"; \
+                       exit 1; \
+               fi; \
+        done
+
+size: $(TARGET).elf
+       @echo $(MSG_SIZE_CMD) Determining size of \"$<\"
+       @if test -f $(TARGET).elf; then \
+           $(CROSS)size $(SIZE_MCU_FLAG) $(SIZE_FORMAT_FLAG) $< ; 2>/dev/null; \
+        fi
+
+symbol-sizes: $(TARGET).elf
+       @echo $(MSG_NM_CMD) Extracting \"$<\" symbols with decimal byte sizes
+       avr-nm --size-sort --demangle --radix=d $<
+
+clean:
+       @echo $(MSG_REMOVE_CMD) Removing object files of \"$(TARGET)\"
+       rm -f $(OBJECT_FILES)
+       @echo $(MSG_REMOVE_CMD) Removing dependency files of \"$(TARGET)\"
+       rm -f $(DEPENDENCY_FILES)
+       @echo $(MSG_REMOVE_CMD) Removing output files of \"$(TARGET)\"
+       rm -f $(TARGET).elf $(TARGET).hex $(TARGET).eep $(TARGET).map $(TARGET).lss
+
+all: begin check_source gcc_version elf hex lss size end
+
+elf: $(TARGET).elf
+hex: $(TARGET).hex $(TARGET).eep
+lss: $(TARGET).lss
+
+%.o: %.c $(MAKEFILE_LIST)
+       @echo $(MSG_COMPILE_CMD) Compiling C file \"$<\"
+       $(CROSS)gcc -c $(BASE_CC_FLAGS) $(BASE_C_FLAGS) $(CC_FLAGS) $(C_FLAGS) -MMD -MP -MF $(@:%.o=%.d) $< -o $@
+
+%.o: %.cpp $(MAKEFILE_LIST)
+       @echo $(MSG_COMPILE_CMD) Compiling C++ file \"$<\"
+       $(CROSS)gcc -c $(BASE_CC_FLAGS) $(BASE_CPP_FLAGS) $(CC_FLAGS) $(CPP_FLAGS) -MMD -MP -MF $(@:%.o=%.d) $< -o $@
+       
+%.o: %.S $(MAKEFILE_LIST)
+       @echo $(MSG_ASSEMBLE_CMD) Assembling \"$<\"
+       $(CROSS)gcc -c $(BASE_CC_FLAGS) $(BASE_ASM_FLAGS) $(CC_FLAGS) $(ASM_FLAGS) $< -o $@
+
+.PRECIOUS : $(OBJECT_FILES)
+%.elf: $(OBJECT_FILES)
+       @echo $(MSG_LINKER_CMD) Linking object files into \"$@\"
+       $(CROSS)gcc $(BASE_CC_FLAGS) $(BASE_LD_FLAGS) $(CC_FLAGS) $(LD_FLAGS) $^ -o $@
+
+%.hex: %.elf
+       @echo $(MSG_OBJCPY_CMD) Extracting HEX file data from \"$<\"
+       $(CROSS)objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature $< $@
+
+%.eep: %.elf
+       @echo $(MSG_OBJCPY_CMD) Extracting EEP file data from \"$<\"
+       $(CROSS)objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex $< $@ || exit 0
+
+%.lss: %.elf
+       @echo $(MSG_OBJDMP_CMD) Extracting LSS file data from \"$<\"
+       $(CROSS)objdump -h -S -z $< > $@
+
+# Include build dependency files
+-include $(DEPENDENCY_FILES)
+
+# Phony build targets for this module
+.PHONY: begin end gcc_version check_source size symbol-sizes elf hex lss clean