From 27c64c0cf4038d02f46031e98d954c7d9cc5317d Mon Sep 17 00:00:00 2001
From: rpolzer <rpolzer@61c419a2-8eb2-4b30-bcec-8cead039b335>
Date: Tue, 16 Sep 2008 08:39:49 +0000
Subject: [PATCH] automatically find DLLs

git-svn-id: svn://svn.icculus.org/netradiant/trunk@57 61c419a2-8eb2-4b30-bcec-8cead039b335
---
 Makefile | 36 ++++++++++++++++++++++++++++++++++--
 1 file changed, 34 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index 3dde780d..9df9c7c8 100644
--- a/Makefile
+++ b/Makefile
@@ -99,6 +99,7 @@ LDD ?= ldd
 FIND ?= find
 RANLIB ?= ranlib
 AR ?= ar
+OBJDUMP ?= objdump
 MKDIR ?= mkdir -p
 CP ?= cp
 CP_R ?= $(CP) -r
@@ -147,6 +148,7 @@ all: \
 	install/qdata3.$(EXE) \
 	install/radiant.$(EXE) \
 	install-data \
+	install-dll \
 
 .PHONY: clean
 clean:
@@ -767,7 +769,7 @@ makeversion:
 .PHONY: install-data
 install-data: makeversion
 	$(MKDIR) install/games
-	$(FIND) install/ -name .svn -exec $(RM_R) {} \; -prune; \
+	$(FIND) install/ -name .svn -exec $(RM_R) {} \; -prune
 	set -ex; \
 	for GAME in games/*; do \
 		if [ -d "$$GAME/tools" ]; then \
@@ -783,6 +785,36 @@ install-data: makeversion
 	$(CP) include/RADIANT_MAJOR install/
 	$(CP) include/RADIANT_MINOR install/
 	$(CP_R) setup/data/tools/* install/
-	$(FIND) install/ -name .svn -exec $(RM_R) {} \; -prune; \
+	$(FIND) install/ -name .svn -exec $(RM_R) {} \; -prune
+
+.PHONY: install-dll
+ifeq ($(OS),Win32)
+install-dll:
+	set -e; \
+	dllfetch() \
+	{ \
+		dll=$$1; \
+		[ -f "install/$$dll" ] && return; \
+		dllsource=`which $$dll`; \
+		echo "Fetching $$dll..."; \
+		$(CP) $$dllsource install/$$dll; \
+		dlldeps install/$$dll; \
+	}; \
+	dlldeps() \
+	{ \
+		echo "Looking for dependencies of $$1..."; \
+		$(OBJDUMP) -p $$1 | grep "DLL Name" | grep -- '-' | while read -r DUMMY1 DUMMY2 dll; do \
+			dllfetch $$dll; \
+		done; \
+	}; \
+	dllfetch zlib1.dll; \
+	dllfetch intl.dll; \
+	for obj in install/*.$(EXE) install/*/*.$(DLL); do \
+		dlldeps $$obj; \
+	done
+else
+install-dll:
+	echo No DLL inclusion required for this target.
+endif
 
 -include $(shell find . -name \*.d)
-- 
2.39.5