X-Git-Url: http://git.linex4red.de/pub/lufa.git/blobdiff_plain/4641acc691e7b252c5b0ca8d9afed18a003b8813..cb4e4a711e4d49aa2d0e413226c81318965510f2:/LUFA/Build/lufa_build.mk diff --git a/LUFA/Build/lufa_build.mk b/LUFA/Build/lufa_build.mk index ce76b60df..2cc60ad7e 100644 --- a/LUFA/Build/lufa_build.mk +++ b/LUFA/Build/lufa_build.mk @@ -1,6 +1,6 @@ # # LUFA Library -# Copyright (C) Dean Camera, 2012. +# Copyright (C) Dean Camera, 2013. # # dean [at] fourwalledcubicle [dot] com # www.lufa-lib.org @@ -10,8 +10,8 @@ LUFA_BUILD_MODULES += BUILD LUFA_BUILD_TARGETS += size symbol-sizes all lib elf hex lss clean mostlyclean 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 OBJDIR OBJECT_FILES DEBUG_TYPE DEBUG_LEVEL LINKER_RELAXATIONS -LUFA_BUILD_PROVIDED_VARS += -LUFA_BUILD_PROVIDED_MACROS += +LUFA_BUILD_PROVIDED_VARS += +LUFA_BUILD_PROVIDED_MACROS += # ----------------------------------------------------------------------------- # LUFA GCC Compiler Buildsystem Makefile Module. @@ -163,14 +163,14 @@ OBJECT_FILES += $(addsuffix .o, $(basename $(SRC))) ifneq ($(OBJDIR),.) # Prefix all the object filenames with the output object file directory path OBJECT_FILES := $(addprefix $(patsubst %/,%,$(OBJDIR))/, $(notdir $(OBJECT_FILES))) - + # Check if any object file (without path) appears more than once in the object file list ifneq ($(words $(sort $(OBJECT_FILES))), $(words $(OBJECT_FILES))) $(error Cannot build with OBJDIR parameter set - one or more object file name is not unique) endif # Create the output object file directory if it does not exist and add it to the virtual path list - $(shell mkdir $(OBJDIR) 2> /dev/null) + $(shell mkdir $(OBJDIR) 2> /dev/null) VPATH += $(dir $(SRC)) endif @@ -223,7 +223,7 @@ build_begin: @echo $(MSG_INFO_MESSAGE) Begin compilation of project \"$(TARGET)\"... @echo "" @$(CROSS)-gcc --version - + # Post-build informational target, to project name information when building has completed build_end: @echo $(MSG_INFO_MESSAGE) Finished building project \"$(TARGET)\". @@ -239,7 +239,7 @@ symbol-sizes: $(TARGET).elf @echo $(MSG_NM_CMD) Extracting \"$<\" symbols with decimal byte sizes $(CROSS)-nm --size-sort --demangle --radix=d $< -# Cleans intermediatary build files, leaving only the compiled application files +# Cleans intermediary build files, leaving only the compiled application files mostlyclean: @echo $(MSG_REMOVE_CMD) Removing object files of \"$(TARGET)\" rm -f $(OBJECT_FILES) @@ -249,15 +249,16 @@ mostlyclean: # Cleans all build files, leaving only the original source code clean: mostlyclean @echo $(MSG_REMOVE_CMD) Removing output files of \"$(TARGET)\" - rm -f $(TARGET).elf $(TARGET).hex $(TARGET).eep $(TARGET).map $(TARGET).lss $(TARGET).sym $(TARGET).a + rm -f $(TARGET).elf $(TARGET).hex $(TARGET).bin $(TARGET).eep $(TARGET).map $(TARGET).lss $(TARGET).sym $(TARGET).a # Performs a complete build of the user application and prints size information afterwards -all: build_begin elf hex lss sym size build_end +all: build_begin elf hex bin lss sym size build_end # Helper targets, to build a specific type of output file without having to know the project target name lib: lib$(TARGET).a elf: $(TARGET).elf hex: $(TARGET).hex $(TARGET).eep +bin: $(TARGET).bin $(TARGET).eep lss: $(TARGET).lss sym: $(TARGET).sym @@ -285,7 +286,7 @@ $(OBJDIR)/%.o: %.c $(MAKEFILE_LIST) $(OBJDIR)/%.o: %.cpp $(MAKEFILE_LIST) @echo $(MSG_COMPILE_CMD) Compiling C++ file \"$(notdir $<)\" $(CROSS)-gcc -c $(BASE_CC_FLAGS) $(BASE_CPP_FLAGS) $(CC_FLAGS) $(CPP_FLAGS) -MMD -MP -MF $(@:%.o=%.d) $< -o $@ - + # Assembles an input ASM source file and generates a linkable object file for it $(OBJDIR)/%.o: %.S $(MAKEFILE_LIST) @echo $(MSG_ASSEMBLE_CMD) Assembling \"$(notdir $<)\" @@ -304,13 +305,18 @@ $(OBJDIR)/%.o: %.S $(MAKEFILE_LIST) .SECONDARY : %.elf %.elf: $(OBJECT_FILES) @echo $(MSG_LINK_CMD) Linking object files into \"$@\" - $(CROSS)-gcc $(BASE_LD_FLAGS) $(LD_FLAGS) $^ -o $@ + $(CROSS)-gcc $^ -o $@ $(BASE_LD_FLAGS) $(LD_FLAGS) # Extracts out the loadable FLASH memory data from the project ELF file, and creates an Intel HEX format file of it %.hex: %.elf @echo $(MSG_OBJCPY_CMD) Extracting HEX file data from \"$<\" $(CROSS)-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature $< $@ +# Extracts out the loadable FLASH memory data from the project ELF file, and creates an Binary format file of it +%.bin: %.elf + @echo $(MSG_OBJCPY_CMD) Extracting BIN file data from \"$<\" + $(CROSS)-objcopy -O binary -R .eeprom -R .fuse -R .lock -R .signature $< $@ + # Extracts out the loadable EEPROM memory data from the project ELF file, and creates an Intel HEX format file of it %.eep: %.elf @echo $(MSG_OBJCPY_CMD) Extracting EEP file data from \"$<\"