From 88425d7dabd07a712b32995a635a7f883ff5f726 Mon Sep 17 00:00:00 2001
From: Dean Camera <dean@fourwalledcubicle.com>
Date: Sun, 3 Jun 2012 12:17:37 +0000
Subject: [PATCH] Add .PHONY targets in all build system modules. Alter BUILD
 module so that the existence of source files are checked before the build is
 started.

---
 LUFA/Build/lufa.avrdude.in |  3 +++
 LUFA/Build/lufa.build.in   | 41 +++++++++++++++++++-------------------
 LUFA/Build/lufa.core.in    |  3 +++
 LUFA/Build/lufa.dfu.in     |  5 ++++-
 LUFA/Build/lufa.doxygen.in |  7 ++++++-
 5 files changed, 36 insertions(+), 23 deletions(-)

diff --git a/LUFA/Build/lufa.avrdude.in b/LUFA/Build/lufa.avrdude.in
index 4c43d183d..52cb44b8d 100644
--- a/LUFA/Build/lufa.avrdude.in
+++ b/LUFA/Build/lufa.avrdude.in
@@ -60,3 +60,6 @@ program: $(TARGET).hex $(MAKEFILE_LIST)
 program-ee: $(TARGET).eep $(MAKEFILE_LIST)
 	@echo $(MSG_AVRDUDE_CMD) Programming device \"$(MCU)\" with settings \"$(AVRDUDE_EEP_FLAGS)\" using \"$(AVRDUDE_PROGRAMMER)\" on port \"$(AVRDUDE_PORT)\"
 	avrdude -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) $(AVRDUDE_EEP_FLAGS)
+
+# Phony build targets for this module
+.PHONY: program program-ee
\ No newline at end of file
diff --git a/LUFA/Build/lufa.build.in b/LUFA/Build/lufa.build.in
index bcf539d73..a8569a6ce 100644
--- a/LUFA/Build/lufa.build.in
+++ b/LUFA/Build/lufa.build.in
@@ -7,7 +7,7 @@
 #
 
 LUFA_BUILD_MODULES        += BUILD
-LUFA_BUILD_TARGETS        += size checksource all elf hex lss gcc_version clean
+LUFA_BUILD_TARGETS        += size 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
 
@@ -20,13 +20,11 @@ LUFA_BUILD_OPTIONAL_VARS  += BOARD OPTIMIZATION C_STANDARD CPP_STANDARD F_CPU C_
 # -----------------------------------------------------------------------------
 # TARGETS:
 #
-#    size                      - List application size
-#    checksource               - Check existance of listed input source files
+#    size                      - List built application size
 #    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
-#    gcc_version               - Print version of GCC used
 #    clean                     - Remove output files
 #
 # MANDATORY PARAMETERS:
@@ -155,12 +153,11 @@ end:
 gcc_version:
 	@$(CROSS)gcc --version
 
-checksource:
-	@for f in $(SRC) $(CPPSRC) $(ASRC); do \
-		if [ -f $$f ]; then \
-			echo "Found Source File: $$f" ; \
-		else \
-			echo "Source File Not Found: $$f" ; \
+check_source:
+	@for f in $(SRC); do \
+		if [ ! -f $$f ]; then \
+			echo "Error: Source file not found: $$f"; \
+			exit 1; \
 		fi; \
 	 done
 
@@ -170,8 +167,15 @@ size:
 	    $(CROSS)size $(SIZE_MCU_FLAG) $(SIZE_FORMAT_FLAG) $(TARGET).elf ; 2>/dev/null; \
 	 fi
 
-.PHONY: begin gcc_version elf hex lss size end
-all: begin gcc_version elf hex lss size end
+clean:
+	@echo $(MSG_REMOVE_CMD) Removing object files \"$(strip $(notdir $(OBJECT_FILES)))\"
+	rm -f $(OBJECT_FILES)
+	@echo $(MSG_REMOVE_CMD) Removing dependency files \"$(strip $(notdir $(DEPENDENCY_FILES)))\"
+	rm -f $(DEPENDENCY_FILES)
+	@echo $(MSG_REMOVE_CMD) Removing output files \"$(TARGET).elf $(TARGET).hex $(TARGET).eep $(TARGET).map $(TARGET).lss\"
+	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
@@ -206,13 +210,8 @@ lss: $(TARGET).lss
 	@echo $(MSG_OBJDMP_CMD) Extracting LSS file data from \"$<\"
 	$(CROSS)objdump -h -S -z $< > $@
 
-clean:
-	@echo $(MSG_REMOVE_CMD) Removing object files \"$(strip $(notdir $(OBJECT_FILES)))\"
-	rm -f $(OBJECT_FILES)
-	@echo $(MSG_REMOVE_CMD) Removing dependency files \"$(strip $(notdir $(DEPENDENCY_FILES)))\"
-	rm -f $(DEPENDENCY_FILES)
-	@echo $(MSG_REMOVE_CMD) Removing output files \"$(TARGET).elf $(TARGET).hex $(TARGET).eep $(TARGET).map $(TARGET).lss\"
-	rm -f $(TARGET).elf $(TARGET).hex $(TARGET).eep $(TARGET).map $(TARGET).lss
-
 # Include build dependency files
--include $(DEPENDENCY_FILES)
\ No newline at end of file
+-include $(DEPENDENCY_FILES)
+
+# Phony build targets for this module
+.PHONY: begin end gcc_version check_source size elf hex lss clean
\ No newline at end of file
diff --git a/LUFA/Build/lufa.core.in b/LUFA/Build/lufa.core.in
index 4ce92219c..d111aad71 100644
--- a/LUFA/Build/lufa.core.in
+++ b/LUFA/Build/lufa.core.in
@@ -100,3 +100,6 @@ list_mandatory:
 	
 list_optional:
 	@echo Optional Variables for Included Modules: $(SORTED_LUFA_OPTIONAL_VARS)
+
+# Phony build targets for this module
+.PHONY: help list_modules list_targets list_mandatory list_optional
\ No newline at end of file
diff --git a/LUFA/Build/lufa.dfu.in b/LUFA/Build/lufa.dfu.in
index 565e848aa..91922d0cb 100644
--- a/LUFA/Build/lufa.dfu.in
+++ b/LUFA/Build/lufa.dfu.in
@@ -70,4 +70,7 @@ dfu: $(TARGET).hex $(MAKEFILE_LIST)
 dfu-ee: $(TARGET).eep $(MAKEFILE_LIST)
 	@echo $(MSG_DFU_CMD) Programming EEPROM with dfu-programmer using \"$(TARGET).eep\"
 	dfu-programmer $(MCU) eeprom-flash $(TARGET).eep
-	dfu-programmer $(MCU) reset
\ No newline at end of file
+	dfu-programmer $(MCU) reset
+	
+# Phony build targets for this module
+.PHONY: flip flip-ee dfu dfu-ee
\ No newline at end of file
diff --git a/LUFA/Build/lufa.doxygen.in b/LUFA/Build/lufa.doxygen.in
index 7d4f8ae31..0a6ad6e25 100644
--- a/LUFA/Build/lufa.doxygen.in
+++ b/LUFA/Build/lufa.doxygen.in
@@ -50,10 +50,15 @@ MSG_DOXYGEN_CMD         := ' [DOXYGEN] :'
 BASE_DOXYGEN_CMD = ( cat Doxygen.conf $(DOXYGEN_OVERRIDE_PARAMS:%=; echo "%") ) | doxygen -
 ifeq ($(DOXYGEN_FAIL_ON_WARNING), Y)
    DOXYGEN_CMD = if ( $(BASE_DOXYGEN_CMD) 2>&1 | grep -v "warning: ignoring unsupported tag" ;); then exit 1; fi;
-else
+else ifeq ($(DOXYGEN_FAIL_ON_WARNING), N)
    DOXYGEN_CMD = $(BASE_DOXYGEN_CMD)
+else
+	$(error DOXYGEN_FAIL_ON_WARNING must be Y or N.)
 endif
 
 doxygen:
 	@echo $(MSG_DOXYGEN_CMD) Configuration file \"$(DOXYGEN_CONF)\" with parameters \"$(DOXYGEN_OVERRIDE_PARAMS)\"
 	$(DOXYGEN_CMD)
+
+# Phony build targets for this module
+.PHONY: doxygen
\ No newline at end of file
-- 
GitLab