## _________ __ __ ## / _____// |_____________ _/ |______ ____ __ __ ______ ## \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/ ## / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \ ## /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ > ## \/ \/ \//_____/ \/ ## ______________________ ______________________ ## T H E W A R B E G I N S ## Stratagus - A free fantasy real time strategy game engine ## ## Makefile - The make file. ## ## (c) Copyright 1998-2003 by Lutz Sammer and Nehal Mistry ## ## Stratagus is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published ## by the Free Software Foundation; only version 2 of the License. ## ## Stratagus is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## $Id: Makefile 7844 2006-12-18 18:31:40Z nehalmistry $ ## TOPDIR= . RULESFILE ?= Rules.make WINRULESFILE = Rules.make.WIN32 -include $(TOPDIR)/$(RULESFILE) OBJDIR ?= . CROSSDIR = /usr/local/cross INCLUDE_DIRS = src/include MODULES = src/action src/ai src/beos src/editor src/game \ src/guichan src/map src/network src/pathfinder \ src/sound src/stratagus src/tolua src/ui src/unit \ src/video MODULES_ALL = $(MODULES) MISC := HDRS := include $(patsubst %, %/Module.make, $(INCLUDE_DIRS)) SRC := include $(patsubst %, %/Module.make, $(MODULES)) OBJ := $(patsubst %.cpp, %.o, $(SRC)) OBJ := $(join $(addsuffix $(OBJDIR)/,$(dir $(OBJ))),$(notdir $(OBJ))) ifneq ($(findstring -DUSE_WIN32, $(CPPFLAGS)),) OBJ := $(OBJ) src/$(OBJDIR)/stratagusrc.o endif SRC_ALL = $(SRC) OBJ_ALL = $(OBJ) .SUFFIXES: .cpp .o .PHONY: make-objdir all-src all: all-src stratagus make-objdir: @mkdir -p $(dir $(OBJ)) %.o: $(@D)../%.cpp $(RULESFILE) $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $(subst $(OBJDIR)/../,,$<) -o $@ help: @-echo "make cycle clean,depend,tags,all" @-echo "make install install all files" @-echo "make uninstall uninstall all files" @-echo "make clean cleanup keep only executables" @-echo "make distclean clean all files" @-echo "make doc make source documention with doxygen" @-echo "make strip strip stratagus and/or stratagus.exe" @-echo "make depend create dependencies" @-echo "make dist create distribution" @-echo "make win32new (CROSS-COMPILER ONLY) start new win32" @-echo "make win32 (CROSS-COMPILER ONLY) build the win32 version" @-echo "make win32distclean (CROSS-COMPILER ONLY) clean all files of win32" @-echo "make release release it" cycle:: @$(MAKE) clean @$(MAKE) depend @$(MAKE) tags @$(MAKE) all doc:: doxygen contrib/doxygen-stratagus.cfg all-src: make-objdir $(OBJ) stratagus: $(OBJ) $(CXX) -o stratagus $^ $(CXXFLAGS) $(LDFLAGS) strip: @if [ -f stratagus ]; then strip stratagus; fi @if [ -f stratagus.exe ]; then $(CROSSDIR)/i386-mingw32msvc/bin/strip stratagus.exe; fi src/$(OBJDIR)/stratagusrc.o: src/stratagus.rc if [ ! -d src/$(OBJDIR) ]; then mkdir src/$(OBJDIR); fi cd src; windres -o $(OBJDIR)/stratagusrc.o stratagus.rc; cd .. clean:: $(RM) -rf $(OBJ) for i in $(MODULES_ALL); do \ $(RM) -rf $$i/*.doc; done $(RM) core gmon.out cscope.out *.doc @echo distclean: clean for i in $(MODULES_ALL); do \ [ $(OBJDIR) == "." ] || $(RM) -rf $$i/$(OBJDIR); \ $(RM) $$i/.#* $$i/*~; done $(RM) -f stratagus stratagus.exe gmon.sum .depend .#* *~ stderr.txt stdout.txt \ srcdoc/* .depend Rules.make config.log config.status configure $(RM) -rf autom4te.cache/ @echo depend: @echo -n >.depend @echo @for i in $(SRC) ; do\ echo -e "\rMaking dependencies for $$i";\ $(CXX) -MT `dirname $$i`/$(OBJDIR)/`basename $$i | sed 's/\.cpp/\.o/g'`\ -MM $(CPPFLAGS) $$i >>.depend; done @echo ctags: ctags --C++-kinds=+px `find . -name '*.cpp' -o -name '*.c' -o -name '*.h'` ############################################################################## # # include dependency files, if they exist # $(OBJ): $(RULESFILE) ifeq (.depend,$(wildcard .depend)) include .depend endif ############################################################################## # Distributions ############################################################################## DOCS = COPYING README doc/*.html doc/*.txt doc/scripts/*.html \ doc/scripts/*.py doc/graphics/*.html doc/graphics/*.gimp \ doc/graphics/*.png PICS = contrib/stratagus.ico contrib/poweredby.png MISC += contrib/doxygen-stratagus.cfg contrib/doxygen-header.html \ Rules.make.in configure.in configure config.h.in Makefile \ src/stratagus.rc stratagus.sln stratagus.vcproj \ autogen.sh SConstruct src/tolua/*.pkg \ contrib/intl/*.po contrib/intl/*.pot \ $(patsubst %, %/Module.make, $(MODULES_ALL)) \ $(patsubst %, %/Module.make, $(INCLUDE_DIRS)) mydate ?= $(shell date +%y%m%d) distdir = stratagus-$(mydate) #why is this needed? DISTLIST = distlist.tmp distlist: @echo $(SRC_ALL) $(HDRS) > $(DISTLIST) dist: distlist autoconf echo >>$(DISTLIST) echo $(PICS) >>$(DISTLIST) echo $(MISC) >>$(DISTLIST) echo $(DOCS) >>$(DISTLIST) echo $(CONTRIB) >>$(DISTLIST) rm -rf $(distdir) mkdir $(distdir) chmod 777 $(distdir) for i in `cat $(DISTLIST)`; do echo $$i; done | while read j; do cp -a --parents $$j $(distdir); done chmod -R a+rX $(distdir) tar czhf $(distdir)-src.tar.gz $(distdir) echo "(c) 2006 The Stratagus Project" | \ zip -zq9r $(distdir)-src.zip $(distdir) $(RM) $(DISTLIST) $(RM) -r $(distdir) ls -l $(distdir)-src.tar.gz $(distdir)-src.zip bin-dist: all $(RM) $(DISTLIST) echo $(DOCS) >>$(DISTLIST) echo stratagus >>$(DISTLIST) rm -rf $(distdir) mkdir $(distdir) chmod 777 $(distdir) for i in `cat $(DISTLIST)`; do echo $$i; done | while read j; do cp -a --parents $$j $(distdir); done chmod -R a+rX $(distdir) strip -s -R .comment $(distdir)/stratagus tar czhf stratagus-$(mydate)-linux.tar.gz $(distdir) $(RM) $(DISTLIST) $(RM) -r $(distdir) bin-dist-gl: all $(RM) $(DISTLIST) echo $(DOCS) >>$(DISTLIST) echo stratagus >>$(DISTLIST) rm -rf $(distdir) mkdir $(distdir) chmod 777 $(distdir) for i in `cat $(DISTLIST)`; do echo $$i; done | while read j; do cp -a --parents $$j $(distdir); done chmod -R a+rX $(distdir) strip -s -R .comment $(distdir)/stratagus tar czhf stratagus-$(mydate)-linux-gl.tar.gz $(distdir) $(RM) $(DISTLIST) $(RM) -r $(distdir) #---------------------------------------------------------------------------- win32-bin-dist2: win32 @$(RM) $(DISTLIST) @echo $(DOCS) >>$(DISTLIST) @echo stratagus.exe >>$(DISTLIST) @rm -rf $(distdir) @mkdir $(distdir) @chmod 777 $(distdir) @for i in `cat $(DISTLIST)`; do echo $$i; done | while read j; do cp -a --parents $$j $(distdir); done @chmod -R a+rX $(distdir) @strip -s -R .comment $(distdir)/stratagus.exe @echo "(c) 2003 by the Stratagus Project http://Stratagus.Org" | \ zip -zq9r stratagus-$(mydate)-win32bin.zip $(distdir) @$(RM) $(DISTLIST) @$(RM) -r $(distdir) ls -l stratagus-$(mydate)-win32bin.zip win32-bin-dist: win32 @export PATH=$(CROSSDIR)/i386-mingw32msvc/bin:$(CROSSDIR)/bin:$$PATH; \ $(MAKE) RULESFILE=$(WINRULESFILE) $(WIN32) win32-bin-dist2 #---------------------------------------------------------------------------- difffile= stratagus-`date +%y%m%d`.diff diff: @$(RM) $(difffile) @$(RM) $(DISTLIST) $(MAKE) -C src RULESFILE=$(RULESFILE) distlist echo $(MISC) >>$(DISTLIST) echo $(DOCS) >>$(DISTLIST) rcsdiff -u `cat $(DISTLIST)` > $(difffile) release: $(MAKE) distclean $(MAKE) configure $(MAKE) depend $(MAKE) bin-dist $(MAKE) configuregl $(MAKE) depend $(MAKE) bin-dist-gl $(MAKE) win32new $(MAKE) win32configure $(MAKE) win32-bin-dist $(MAKE) win32distclean $(MAKE) dist ############################################################################## # WIN32 Crosscompiler Build ############################################################################## WIN32= \ VIDEOLIB='-L$(CROSSDIR)/i386-mingw32msvc/lib $(SDLLIB) -lwsock32 -lws2_32' \ RULESFILE=$(WINRULESFILE) win32new: @$(MAKE) RULESFILE=$(WINRULESFILE) distclean export PATH=$(CROSSDIR)/i386-mingw32msvc/bin:$(CROSSDIR)/bin:$$PATH; \ win32configure: autoconf export PATH=$(CROSSDIR)/bin:$(CROSSDIR)/i386-mingw32msvc/bin:$$PATH; \ ./configure --enable-win32 --host=i386-mingw32msvc --build=i386-linux \ --with-lua=/usr/local/cross --enable-static win32_2: $(MAKE) $(WIN32) all win32: export PATH=$(CROSSDIR)/i386-mingw32msvc/bin:$(CROSSDIR)/bin:$$PATH; \ $(MAKE) $(WIN32) win32_2 win32depend: export PATH=$(CROSSDIR)/i386-mingw32msvc/bin:$(CROSSDIR)/bin:$$PATH; \ $(MAKE) $(WIN32) depend win32distclean: export PATH=$(CROSSDIR)/i386-mingw32msvc/bin:$(CROSSDIR)/bin:$$PATH; \ $(MAKE) $(WIN32) distclean ############################################################################## # INSTALL/UNINSTALL ############################################################################## install: all install-stratagus install-stratagus: install -m 755 stratagus $(PREFIX)/bin @echo installation of stratagus complete uninstall: @echo uninstalling stratagus and stratagus tools rm $(PREFIX)/bin/stratagus @echo uninstallation of stratagus complete