Fix up non-relative header file include paths (thanks to Kim Blomqvist).
[pub/lufa.git] / LUFA / Build / lufa.build.in
index 1fccbbf..91c54f9 100644 (file)
@@ -7,7 +7,7 @@
 #
 
 LUFA_BUILD_MODULES         += BUILD
 #
 
 LUFA_BUILD_MODULES         += BUILD
-LUFA_BUILD_TARGETS         += size check-source symbol-sizes all lib elf hex lss clean
+LUFA_BUILD_TARGETS         += size check-source 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
 LUFA_BUILD_PROVIDED_VARS   += 
 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
 LUFA_BUILD_PROVIDED_VARS   += 
@@ -32,7 +32,10 @@ LUFA_BUILD_PROVIDED_MACROS +=
 #    elf                       - Build application ELF debug object file
 #    hex                       - Build application HEX object files
 #    lss                       - Build application LSS assembly listing file
 #    elf                       - Build application ELF debug object file
 #    hex                       - Build application HEX object files
 #    lss                       - Build application LSS assembly listing file
-#    clean                     - Remove output files
+#    clean                     - Remove all project intermediatary and binary
+#                                output files
+#    mostlyclean               - Remove intermediatary output files, but
+#                                preserve binaries
 #
 # MANDATORY PARAMETERS:
 #
 #
 # MANDATORY PARAMETERS:
 #
@@ -140,12 +143,12 @@ endif
 # Convert input source filenames into a list of required output object files
 OBJECT_FILES := $(addsuffix .o, $(basename $(SRC)))
 ifneq ($(OBJDIR),.)
 # Convert input source filenames into a list of required output object files
 OBJECT_FILES := $(addsuffix .o, $(basename $(SRC)))
 ifneq ($(OBJDIR),.)
-   $(shell mkdir $(OBJDIR) 2>&1 | /dev/null)   
+   $(shell mkdir $(OBJDIR) 2>&1 > /dev/null)   
    VPATH           += $(dir $(SRC))
    VPATH           += $(dir $(SRC))
-   
    OBJECT_FILES    := $(addprefix $(patsubst %/,%,$(OBJDIR))/, $(notdir $(OBJECT_FILES)))
 endif
 
    OBJECT_FILES    := $(addprefix $(patsubst %/,%,$(OBJDIR))/, $(notdir $(OBJECT_FILES)))
 endif
 
+# Create a list of dependency files from the list of object files
 DEPENDENCY_FILES := $(OBJECT_FILES:%.o=%.d)
 
 # Create a list of common flags to pass to the compiler/linker/assembler
 DEPENDENCY_FILES := $(OBJECT_FILES:%.o=%.d)
 
 # Create a list of common flags to pass to the compiler/linker/assembler
@@ -209,13 +212,15 @@ size: $(TARGET).elf
 
 symbol-sizes: $(TARGET).elf
        @echo $(MSG_NM_CMD) Extracting \"$<\" symbols with decimal byte sizes
 
 symbol-sizes: $(TARGET).elf
        @echo $(MSG_NM_CMD) Extracting \"$<\" symbols with decimal byte sizes
-       avr-nm --size-sort --demangle --radix=d $<
+       $(CROSS)-nm --size-sort --demangle --radix=d $<
 
 
-clean:
+mostlyclean:
        @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 object files of \"$(TARGET)\"
        rm -f $(OBJECT_FILES)
        @echo $(MSG_REMOVE_CMD) Removing dependency files of \"$(TARGET)\"
        rm -f $(DEPENDENCY_FILES)
+
+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
 
        @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
 
@@ -237,7 +242,7 @@ $(OBJDIR)/%.o: %.cpp $(MAKEFILE_LIST)
        
 $(OBJDIR)/%.o: %.S $(MAKEFILE_LIST)
        @echo $(MSG_ASSEMBLE_CMD) Assembling \"$(notdir $<)\"
        
 $(OBJDIR)/%.o: %.S $(MAKEFILE_LIST)
        @echo $(MSG_ASSEMBLE_CMD) Assembling \"$(notdir $<)\"
-       $(CROSS)-gcc -c $(BASE_CC_FLAGS) $(BASE_ASM_FLAGS) $(CC_FLAGS) $(ASM_FLAGS) $< -o $@
+       $(CROSS)-gcc -c $(BASE_CC_FLAGS) $(BASE_ASM_FLAGS) $(CC_FLAGS) $(ASM_FLAGS) -MMD -MP -MF $(@:%.o=%.d) $< -o $@
 
 .PRECIOUS  : $(OBJECT_FILES)
 .SECONDARY : %.a
 
 .PRECIOUS  : $(OBJECT_FILES)
 .SECONDARY : %.a
@@ -271,4 +276,4 @@ $(OBJDIR)/%.o: %.S $(MAKEFILE_LIST)
 -include $(DEPENDENCY_FILES)
 
 # Phony build targets for this module
 -include $(DEPENDENCY_FILES)
 
 # Phony build targets for this module
-.PHONY: build_begin build_end gcc-version check-source size symbol-sizes lib elf hex lss clean
+.PHONY: build_begin build_end gcc-version check-source size symbol-sizes lib elf hex lss clean mostlyclean