From 31c7a0862372947841eae59d247baa27a7513570 Mon Sep 17 00:00:00 2001
From: ariclone <>
Date: Tue, 6 Nov 2001 20:23:05 +0000
Subject: [PATCH] More cross-compiler Makefile updates - all it should take now
 is creating a separate Rules.make.WIN32 using setup and mv, and then 'make
 win32' to make use of it

---
 Makefile                | 50 ++++++++++++++++++++++++-----------------
 setup                   | 14 +++++++-----
 src/Makefile            | 21 ++++++++---------
 src/action/Makefile     |  4 ++--
 src/ai/Makefile         |  4 ++--
 src/beos/Makefile       |  4 ++--
 src/game/Makefile       |  4 ++--
 src/include/Makefile    |  3 ++-
 src/map/Makefile        |  4 ++--
 src/network/Makefile    |  4 ++--
 src/pathfinder/Makefile |  4 ++--
 src/sound/Makefile      |  4 ++--
 src/stratagus/Makefile  |  4 ++--
 src/ui/Makefile         |  4 ++--
 src/unit/Makefile       |  4 ++--
 src/video/Makefile      |  4 ++--
 16 files changed, 74 insertions(+), 62 deletions(-)

diff --git a/Makefile b/Makefile
index 054f12d7f..ea1abaff8 100644
--- a/Makefile
+++ b/Makefile
@@ -27,7 +27,10 @@
 
 TOPDIR=		.
 
-include $(TOPDIR)/Rules.make
+RULESFILE ?= Rules.make
+WINRULESFILE = Rules.make.WIN32
+
+include $(TOPDIR)/$(RULESFILE)
 
 MAKE=	make TOPDIR=`pwd`
 MODULES= src tools
@@ -76,12 +79,12 @@ doc::
 	doxygen contrib/doxygen-freecraft.cfg
 
 doc++::
-	@$(MAKE) -C src doc
+	@$(MAKE) -C src RULESFILE=$(RULESFILE) doc
 	@if [ ! -d srcdoc ]; then mkdir srcdoc; fi
 	@$(DOCPP) -v -H -A -a -b -c -j -d srcdoc `find . -name "*.doc" -print`
 
 src::
-	@$(MAKE) -C src all
+	@$(MAKE) -C src RULESFILE=$(RULESFILE) all
 
 etlib/$(OBJDIR)hash.$(OE): etlib/hash.c
 	@if [ ! -d etlib/$(OBJDIR) ]; then mkdir etlib/$(OBJDIR); fi
@@ -95,6 +98,12 @@ etlib/$(OBJDIR)prgname.$(OE): etlib/prgname.c
 	@if [ ! -d etlib/$(OBJDIR) ]; then mkdir etlib/$(OBJDIR); fi
 	$(CC) -c $(CFLAGS) $< -o $@
 
+src/$(OBJDIR)main.$(OE): src/main.c
+	@if [ ! -d src/$(OBJDIR) ]; then mkdir src/$(OBJDIR); fi
+	$(CC) -c $(CFLAGS) $< -o $@
+
+src/$(OBJDIR)/libclone.a: ;
+
 # UNIX-TARGET
 freecraft:	src etlib/$(OBJDIR)hash.$(OE) src/$(OBJDIR)libclone.a
 	$(CCLD) -o freecraft src/$(OBJDIR)libclone.a etlib/$(OBJDIR)hash.$(OE) $(CLONELIBS) -I. $(CFLAGS)
@@ -117,38 +126,38 @@ echo::
 	@-echo LIBS: $(CLONELIBS)
 
 tools::
-	@$(MAKE) -C tools all
+	@$(MAKE) -C tools RULESFILE=$(RULESFILE) all
 
 clean::
-	@set -e; for i in $(MODULES) ; do $(MAKE) -C $$i clean ; done
+	@set -e; for i in $(MODULES) ; do $(MAKE) -C $$i RULESFILE=$(RULESFILE) clean ; done
 	$(RM) core gmon.out cscope.out *.doc etlib/$(OBJDIR)*.$(OE) .#*
 
 clobber:	clean
-	@set -e; for i in $(MODULES) ; do $(MAKE) -C $$i clobber ; done
+	@set -e; for i in $(MODULES) ; do $(MAKE) -C $$i RULESFILE=$(RULESFILE) clobber ; done
 	$(RM) freecraft$(EXE) gmon.sum *~
 	$(RM) -r srcdoc/*
-	@$(MAKE) -C tools clobber
+	@$(MAKE) -C tools RULESFILE=$(RULESFILE) clobber
 
 distclean:	clobber
 	@echo
 
 ci::
-	@set -e; for i in $(MODULES) ; do $(MAKE) -C $$i ci ; done
-	ci -l Makefile Common.mk Rules.make .indent.pro \
+	@set -e; for i in $(MODULES) ; do $(MAKE) -C $$i RULESFILE=$(RULESFILE) ci ; done
+	ci -l Makefile Common.mk $(RULESFILE) .indent.pro \
 	contrib/doxygen-freecraft.cfg \
 	$(CCLS) $(DOCS)
 
 lockver::
-	@set -e; for i in $(MODULES) ; do $(MAKE) -C $$i lockver ; done
-	$(LOCKVER) Makefile Common.mk Rules.make .indent.pro \
+	@set -e; for i in $(MODULES) ; do $(MAKE) -C $$i RULESFILE=$(RULESFILE) lockver ; done
+	$(LOCKVER) Makefile Common.mk $(RULESFILE) .indent.pro \
 	contrib/doxygen-freecraft.cfg \
 	$(CCLS) $(DOCS)
 
 tags::
-	@$(MAKE) -C src tags
+	@$(MAKE) -C src RULESFILE=$(RULESFILE) tags
 
 depend::
-	@$(MAKE) -C src depend
+	@$(MAKE) -C src RULESFILE=$(RULESFILE) depend
 
 ##############################################################################
 #	Distributions
@@ -196,7 +205,7 @@ distdir	= freecraft-$(mydate)
 
 dist::
 	$(RM) $(DISTLIST)
-	@set -e; for i in $(MODULES); do $(MAKE) -C $$i distlist ; done
+	@set -e; for i in $(MODULES); do $(MAKE) -C $$i RULESFILE=$(RULESFILE) distlist ; done
 	echo >>$(DISTLIST)
 	echo $(PICS) >>$(DISTLIST)
 	echo $(MISC) >>$(DISTLIST)
@@ -218,8 +227,8 @@ dist::
 
 small-dist::
 	@$(RM) $(DISTLIST)
-	$(MAKE) -C src distlist
-	$(MAKE) -C tools distlist
+	$(MAKE) -C src RULESFILE=$(RULESFILE) distlist
+	$(MAKE) -C tools RULESFILE=$(RULESFILE) distlist
 	echo $(MISC) >>$(DISTLIST)
 	echo $(CCLS) >>$(DISTLIST)
 	echo $(DOCS) >>$(DISTLIST)
@@ -288,7 +297,7 @@ win32-bin-dist2:: win32
 
 win32-bin-dist: win32
 	@export PATH=/usr/local/cross-tools/i386-mingw32msvc/bin:$$PATH; \
-	$(MAKE) $(WIN32) win32-bin-dist2
+	$(MAKE) RULESFILE=$(WINRULESFILE) $(WIN32) win32-bin-dist2
 
 win32-exe-dist:	win32-bin-dist
 	cat tools/SFXWiz32-gcc.exe freecraft-$(mydate)-win32bin.zip \
@@ -354,8 +363,8 @@ difffile=	freecraft-`date +%y%m%d`.diff
 diff:
 	@$(RM) $(difffile)
 	@$(RM) $(DISTLIST)
-	$(MAKE) -C src distlist
-	$(MAKE) -C tools distlist
+	$(MAKE) -C src RULESFILE=$(RULESFILE) distlist
+	$(MAKE) -C tools RULESFILE=$(RULESFILE) distlist
 	echo $(MISC) >>$(DISTLIST)
 	echo $(CCLS) >>$(DISTLIST)
 	echo $(DOCS) >>$(DISTLIST)
@@ -389,8 +398,7 @@ WIN32=	\
     EXE='.exe' \
     XLDFLAGS='' \
     XIFLAGS='' \
-    VIDEO='-DUSE_WIN32 $(SDL)'	\
-    VIDEOLIB='-L/usr/local/cross-tools/i386-mingw32msvc/lib $(SDLLIB) -lwsock32 -lws2_32'
+    RULESFILE=$(WINRULESFILE)
 
 win32new:
 	@$(MAKE) distclean
diff --git a/setup b/setup
index 15feaceb2..7bfe230c8 100755
--- a/setup
+++ b/setup
@@ -426,11 +426,13 @@ case $VIDSEL in
 
 	echo "SDLLIB		= $SDLLIB" >> $RULESFILE
 	echo >> $RULESFILE
+if [ "$WIN32" != "1" ] ; then
 	echo "VIDEO		= \$(SDL)" >> $RULESFILE
-if [ "$BEOS" != "1" ] ; then
-	echo "VIDEOLIB	= \$(SDLLIB) -ldl" >> $RULESFILE
-else
-        echo "VIDEOLIB	= \$(SDLLIB)" >> $RULESFILE
+    if [ "$BEOS" != "1" ] ; then
+	    echo "VIDEOLIB	= \$(SDLLIB) -ldl" >> $RULESFILE
+    else
+	    echo "VIDEOLIB	= \$(SDLLIB)" >> $RULESFILE
+    fi
 fi
 
 	echo
@@ -475,9 +477,9 @@ echo "" >> $RULESFILE
 if test "$WIN32" = "1" ; then
 	echo "VIDEO		= -DUSE_WIN32 \$(SDL)" >> $RULESFILE
 	if test "`gcc -v 2>&1 | grep -is mingw32` x" = " x" ; then
-	  echo "VIDEOLIB	= \$(SDLLIB) -lwsock32" >> $RULESFILE
+	  echo "VIDEOLIB	= \$(SDLLIB) -lwsock32 -lws2_32" >> $RULESFILE
 	else
-	  echo "VIDEOLIB	= \$(SDLLIB) -lwsock32" >> $RULESFILE
+	  echo "VIDEOLIB	= \$(SDLLIB) -lwsock32 -lws2_32" >> $RULESFILE
 	fi
 fi
 
diff --git a/src/Makefile b/src/Makefile
index a00668e00..4874d63e9 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -26,7 +26,8 @@
 ##
 
 TOPDIR=	..
-include $(TOPDIR)/Rules.make
+RULESFILE ?= Rules.make
+include $(TOPDIR)/$(RULESFILE)
 
 OBJS=
 
@@ -37,41 +38,41 @@ all::
 	@if [ ! -d ./$(OBJDIR) ] ; then mkdir ./$(OBJDIR) ; fi
 	@set -e; for i in $(MODULES) ; do\
 	    if [ ! -d $$i/$(OBJDIR) ] ; then mkdir $$i/$(OBJDIR) ; fi ;\
-	    $(MAKE) -C $$i all ;\
+	    $(MAKE) -C $$i RULESFILE=$(RULESFILE) all ;\
 	done
 
 doc::	
-	@set -e; for i in $(MODULES) include ; do $(MAKE) -C $$i doc ; done
+	@set -e; for i in $(MODULES) include ; do $(MAKE) -C $$i RULESFILE=$(RULESFILE) doc ; done
 
 clean::
-	@set -e; for i in $(MODULES) include ; do $(MAKE) -C $$i clean ; done
+	@set -e; for i in $(MODULES) include ; do $(MAKE) -C $$i RULESFILE=$(RULESFILE) clean ; done
 	$(RM) $(OBJS) $(OBJDIR)libclone.a
 	-@$(RM) $(OBJDIR)main.$(OE) $(OBJDIR)freecraftrc.$(OE)
 
 clobber::	clean
-	@set -e; for i in $(MODULES) include ; do $(MAKE) -C $$i clobber ; done
+	@set -e; for i in $(MODULES) include ; do $(MAKE) -C $$i RULESFILE=$(RULESFILE) clobber ; done
 	$(RM) .depend tags
 
 depend::
 	@echo -n >.depend
-	@set -e; for i in $(MODULES) ; do $(MAKE) -C $$i depend ; done
+	@set -e; for i in $(MODULES) ; do $(MAKE) -C $$i RULESFILE=$(RULESFILE) depend ; done
 
 tags::
-	@set -e; for i in $(MODULES) ; do cd $$i ; $(MAKE) tags ; cd .. ; done
+	@set -e; for i in $(MODULES) ; do cd $$i ; $(MAKE) RULESFILE=$(RULESFILE) tags ; cd .. ; done
 
 distlist::
 	echo >>$(DISTLIST)
 	echo src/main.c  >>$(DISTLIST)
 	echo src/freecraft.rc >>$(DISTLIST)
 	echo src/Makefile >>$(DISTLIST)
-	@for i in include $(MODULES) ; do $(MAKE) -C $$i distlist ; done
+	@for i in include $(MODULES) ; do $(MAKE) -C $$i RULESFILE=$(RULESFILE) distlist ; done
 
 ci::
-	@for i in include $(MODULES) ; do $(MAKE) -C $$i ci ; done
+	@for i in include $(MODULES) ; do $(MAKE) -C $$i RULESFILE=$(RULESFILE) ci ; done
 	ci -l Makefile
 
 lockver::
-	@for i in include $(MODULES) ; do $(MAKE) -C $$i lockver ; done
+	@for i in include $(MODULES) ; do $(MAKE) -C $$i RULESFILE=$(RULESFILE) lockver ; done
 	$(LOCKVER) Makefile
 
 ifeq (.depend,$(wildcard .depend))
diff --git a/src/action/Makefile b/src/action/Makefile
index 8ba5bfcf5..19a4da0e6 100644
--- a/src/action/Makefile
+++ b/src/action/Makefile
@@ -26,8 +26,8 @@
 ##
 
 TOPDIR	= ../..
-
-include $(TOPDIR)/Rules.make
+RULESFILE ?= Rules.make
+include $(TOPDIR)/$(RULESFILE)
 
 MODULE  = action
 
diff --git a/src/ai/Makefile b/src/ai/Makefile
index 69872185d..b54a29543 100644
--- a/src/ai/Makefile
+++ b/src/ai/Makefile
@@ -26,8 +26,8 @@
 ##
 
 TOPDIR	= ../..
-
-include $(TOPDIR)/Rules.make
+RULESFILE ?= Rules.make
+include $(TOPDIR)/$(RULESFILE)
 
 MODULE  = ai
 
diff --git a/src/beos/Makefile b/src/beos/Makefile
index 8d668caf1..b2e2605c5 100644
--- a/src/beos/Makefile
+++ b/src/beos/Makefile
@@ -26,8 +26,8 @@
 ##
 
 TOPDIR	= ../..
-
-include $(TOPDIR)/Rules.make
+RULESFILE ?= Rules.make
+include $(TOPDIR)/$(RULESFILE)
 
 MODULE	= beos
 
diff --git a/src/game/Makefile b/src/game/Makefile
index 0a8b5852c..324ca0d68 100644
--- a/src/game/Makefile
+++ b/src/game/Makefile
@@ -26,8 +26,8 @@
 ##
 
 TOPDIR	= ../..
-
-include $(TOPDIR)/Rules.make
+RULESFILE ?= Rules.make
+include $(TOPDIR)/$(RULESFILE)
 
 MODULE  = game
 
diff --git a/src/include/Makefile b/src/include/Makefile
index 5df03e2a9..e03372559 100644
--- a/src/include/Makefile
+++ b/src/include/Makefile
@@ -29,7 +29,8 @@
 ##
 
 TOPDIR= ../..
-include $(TOPDIR)/Rules.make
+RULESFILE ?= Rules.make
+include $(TOPDIR)/$(RULESFILE)
 
 MODULE	= include
 
diff --git a/src/map/Makefile b/src/map/Makefile
index 6c5470cd5..eaad9fc50 100644
--- a/src/map/Makefile
+++ b/src/map/Makefile
@@ -26,8 +26,8 @@
 ##
 
 TOPDIR	= ../..
-
-include $(TOPDIR)/Rules.make
+RULESFILE ?= Rules.make
+include $(TOPDIR)/$(RULESFILE)
 
 MODULE  = map
 
diff --git a/src/network/Makefile b/src/network/Makefile
index 28e62cecf..f6f05fc99 100644
--- a/src/network/Makefile
+++ b/src/network/Makefile
@@ -26,8 +26,8 @@
 ##
 
 TOPDIR	= ../..
-
-include $(TOPDIR)/Rules.make
+RULESFILE ?= Rules.make
+include $(TOPDIR)/$(RULESFILE)
 
 MODULE	= network
 
diff --git a/src/pathfinder/Makefile b/src/pathfinder/Makefile
index 22e7c8c5e..6f4e35d4c 100644
--- a/src/pathfinder/Makefile
+++ b/src/pathfinder/Makefile
@@ -26,8 +26,8 @@
 ##
 
 TOPDIR	= ../..
-
-include $(TOPDIR)/Rules.make
+RULESFILE ?= Rules.make
+include $(TOPDIR)/$(RULESFILE)
 
 MODULE  = pathfinder
 
diff --git a/src/sound/Makefile b/src/sound/Makefile
index 2428f7849..c42cd884f 100644
--- a/src/sound/Makefile
+++ b/src/sound/Makefile
@@ -26,8 +26,8 @@
 ##
 
 TOPDIR	= ../..
-
-include $(TOPDIR)/Rules.make
+RULESFILE ?= Rules.make
+include $(TOPDIR)/$(RULESFILE)
 
 MODULE	= sound
 
diff --git a/src/stratagus/Makefile b/src/stratagus/Makefile
index 4c16b8854..44b7c91e2 100644
--- a/src/stratagus/Makefile
+++ b/src/stratagus/Makefile
@@ -26,8 +26,8 @@
 ##
 
 TOPDIR	= ../..
-
-include $(TOPDIR)/Rules.make
+RULESFILE ?= Rules.make
+include $(TOPDIR)/$(RULESFILE)
 
 MODULE  = clone
 
diff --git a/src/ui/Makefile b/src/ui/Makefile
index ce721b5f2..2c06ee37b 100644
--- a/src/ui/Makefile
+++ b/src/ui/Makefile
@@ -26,8 +26,8 @@
 ##
 
 TOPDIR	= ../..
-
-include $(TOPDIR)/Rules.make
+RULESFILE ?= Rules.make
+include $(TOPDIR)/$(RULESFILE)
 
 ##
 ## USER INTERFACE
diff --git a/src/unit/Makefile b/src/unit/Makefile
index 7feefa205..adfd486d8 100644
--- a/src/unit/Makefile
+++ b/src/unit/Makefile
@@ -26,8 +26,8 @@
 ##
 
 TOPDIR	= ../..
-
-include $(TOPDIR)/Rules.make
+RULESFILE ?= Rules.make
+include $(TOPDIR)/$(RULESFILE)
 
 MODULE  = unit
 
diff --git a/src/video/Makefile b/src/video/Makefile
index eea55f3e5..b982e8085 100644
--- a/src/video/Makefile
+++ b/src/video/Makefile
@@ -26,8 +26,8 @@
 ##
 
 TOPDIR	= ../..
-
-include $(TOPDIR)/Rules.make
+RULESFILE ?= Rules.make
+include $(TOPDIR)/$(RULESFILE)
 
 MODULE	= video