From: Dale Weiler <killfieldengine@gmail.com>
Date: Sun, 28 Apr 2013 03:50:22 +0000 (+0000)
Subject: Fix deps (remove duplicates with clever make tricks)
X-Git-Tag: v0.3.0~151^2~57
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=721b581376f845326fcf079457c6323cca67cccd;p=xonotic%2Fgmqcc.git

Fix deps (remove duplicates with clever make tricks)
---

diff --git a/Makefile b/Makefile
index febebeb..f713417 100644
--- a/Makefile
+++ b/Makefile
@@ -50,6 +50,12 @@ OBJ_T = test.o util.o conout.o fs.o
 OBJ_C = main.o lexer.o parser.o fs.o
 OBJ_X = exec-standalone.o util.o conout.o fs.o
 
+#we have duplicate object files when dealing with creating a simple list
+#for dependinces. To combat this we use some clever recrusive-make to
+#filter the list and remove duplicates which we use for make depend
+RMDUP = $(if $1,$(firstword $1) $(call RMDUP,$(filter-out $(firstword $1),$1)))
+DEPS := $(call RMDUP, $(OBJ_D) $(OBJ_P) $(OBJ_T) $(OBJ_C) $(OBJ_X))
+
 ifneq ("$(CYGWIN)", "")
 	#nullify the common variables that
 	#most *nix systems have (for windows)
@@ -203,15 +209,7 @@ gource-record:
 
 depend:
 	@makedepend    -Y -w 65536 2> /dev/null \
-		$(subst .o,.c,$(OBJ_D))
-	@makedepend -a -Y -w 65536 2> /dev/null \
-		$(subst .o,.c,$(OBJ_T))
-	@makedepend -a -Y -w 65536 2> /dev/null \
-		$(subst .o,.c,$(OBJ_C))
-	@makedepend -a -Y -w 65536 2> /dev/null \
-		$(subst .o,.c,$(OBJ_X))
-	@makedepend -a -Y -w 65536 2> /dev/null \
-		$(subst .o,.c,$(OBJ_P))
+		$(subst .o,.c,$(DEPS))
 
 #install rules
 install: install-gmqcc install-qcvm install-gmqpak install-doc
@@ -250,23 +248,8 @@ opts.o: gmqcc.h opts.def
 fs.o: gmqcc.h opts.def
 utf8.o: gmqcc.h opts.def
 correct.o: gmqcc.h opts.def
-
+pak.o: gmqcc.h opts.def
 test.o: gmqcc.h opts.def
-util.o: gmqcc.h opts.def
-conout.o: gmqcc.h opts.def
-fs.o: gmqcc.h opts.def
-
 main.o: gmqcc.h opts.def lexer.h
 lexer.o: gmqcc.h opts.def lexer.h
 parser.o: gmqcc.h opts.def lexer.h ast.h ir.h intrin.h
-fs.o: gmqcc.h opts.def
-
-util.o: gmqcc.h opts.def
-conout.o: gmqcc.h opts.def
-fs.o: gmqcc.h opts.def
-
-util.o: gmqcc.h opts.def
-fs.o: gmqcc.h opts.def
-conout.o: gmqcc.h opts.def
-opts.o: gmqcc.h opts.def
-pak.o: gmqcc.h opts.def