summaryrefslogtreecommitdiffstats
path: root/crawl-ref
diff options
context:
space:
mode:
authorevktalo <evktalo@c06c8d41-db1a-0410-9941-cceddc491573>2009-07-19 15:00:53 +0000
committerevktalo <evktalo@c06c8d41-db1a-0410-9941-cceddc491573>2009-07-19 15:00:53 +0000
commit81f3da48038d6db0edcd026f77616aee71bb1bed (patch)
tree4d5394ec48467a03411d016ab6a232bffa3db217 /crawl-ref
parentd319c2e18da39b5fd050dddc77b3dd4ff8cababf (diff)
downloadcrawl-ref-81f3da48038d6db0edcd026f77616aee71bb1bed.tar.gz
crawl-ref-81f3da48038d6db0edcd026f77616aee71bb1bed.zip
Separate makefiles for cross-compiling the Windows builds on crawl.develz.org.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@10322 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref')
-rw-r--r--crawl-ref/source/makefile7
-rw-r--r--crawl-ref/source/makefile.mgw_unix238
-rw-r--r--crawl-ref/source/makefile_tiles.mgw_unix274
3 files changed, 518 insertions, 1 deletions
diff --git a/crawl-ref/source/makefile b/crawl-ref/source/makefile
index 03cc3dba7a..5d809d31c9 100644
--- a/crawl-ref/source/makefile
+++ b/crawl-ref/source/makefile
@@ -11,11 +11,16 @@ MAKEFILE ?= makefile.unix
#MAKEFILE ?= makefile_tiles.mgw
#MAKEFILE ?= makefile_tiles.unix
+#These are for cross-compiling purposes on crawl.develz.org, here for convenience:
+
+#MAKEFILE ?= makefile.mgw_unix
+#MAKEFILE ?= makefile_tiles.mgw_unix
+
# number of concurrent jobs -- good value is (#_of_CPUs * 2) + 1
# cuts build time a lot on multi-cpu machines
# Note: do not use enable this for builds of the tiles version.
#OTHER=-j2
-
+
all:
$(MAKE) $(OTHER) -f $(MAKEFILE)
diff --git a/crawl-ref/source/makefile.mgw_unix b/crawl-ref/source/makefile.mgw_unix
new file mode 100644
index 0000000000..22399d06cf
--- /dev/null
+++ b/crawl-ref/source/makefile.mgw_unix
@@ -0,0 +1,238 @@
+# -*- Makefile -*- for Dungeon Crawl (Cross-compiling MinGW for crawl.develz.org)
+
+# makefile.obj includes a list of object files needed to build Crawl.
+include makefile.obj
+
+OPATH := build
+
+# need .exe so make will find the right file
+APPNAME = $(OPATH)/crawl.exe
+CXX = i586-mingw32msvc-g++
+DELETE = rm -f
+COPY = cp
+OS_TYPE = WIN32CONSOLE
+
+ifeq ($(INSTALLDIR),)
+INSTALLDIR := crawl-mingw32
+endif
+
+# If you don't have flex or bison, set DOYACC to N or empty.
+DOYACC := n
+
+LEX := flex
+YACC := bison -y
+
+ifeq ($(LUASRC),)
+LUASRC := util/lua/src
+endif
+
+LUALIB = lua
+LUALIBA = lib$(LUALIB).a
+
+SQLSRC := util/sqlite
+SQLLIB := sqlite3
+SQLIBA := lib$(SQLLIB).a
+FSQLLIBA := $(SQLLIB)/$(SQLIBA)
+
+PCRESRC := util/pcre
+PCRELIB := pcre
+PCRELIBA := lib$(PCRELIB).a
+
+LIB = -static -L$(HOME)/source/mingw32/lib -lwinmm -L$(LUASRC) -l$(LUALIB) -L$(SQLSRC) -l$(SQLLIB) -L$(PCRESRC) -l$(PCRELIB)
+INCLUDES := -Iutil -I. -I$(HOME)/source/mingw32/include -I$(LUASRC) -I$(SQLSRC) -I$(PCRESRC)
+
+CFWARN := -Wwrite-strings
+
+CFOTHERS := -fsigned-char \
+ -fstrict-aliasing \
+ -pedantic \
+ -O2 \
+ -D$(OS_TYPE) $(EXTRA_FLAGS) \
+ -DWINMM_PLAY_SOUNDS -DCLUA_BINDINGS -DWIZARD
+
+CFLAGS := $(INCLUDES) $(CFWARN) $(CFOTHERS)
+YCFLAGS := $(INCLUDES) $(CFOTHERS)
+
+OBJECTS := $(OBJECTS) libw32c.o crash-w.o
+
+LDFLAGS =
+
+#LIB = -lcurso -lpano
+
+UTIL = util/
+
+YTABC := levcomp.tab.c
+YTABH := levcomp.tab.h
+
+
+ifeq ($(LEX),)
+DOYACC :=
+endif
+
+ifeq ($(YACC),)
+DOYACC :=
+endif
+
+RESOURCE := $(UTIL)crawl.rc
+RESOURCEOBJ := crawlres.o
+WINDRES := i586-mingw32msvc-windres
+
+# Do the levcomp stuff first because that's the most likely to fail.
+OBJECTS := levcomp.tab.o levcomp.lex.o \
+ $(OBJECTS) $(RESOURCEOBJ)
+
+OBJECTS := $(foreach file,$(OBJECTS),$(OPATH)/$(file))
+
+GAME_DEPENDS := prepare $(LUASRC)/$(LUALIBA) $(FSQLLIBA) $(PCRESRC)/$(PCRELIBA) $(OBJECTS)
+
+##########################################################################
+
+all: $(APPNAME)
+
+prepare:
+ mkdir -p $(OPATH)
+
+DEPENDENCY_MKF := makefile.dep
+-include $(DEPENDENCY_MKF)
+
+##########################################################################
+# The level compiler
+#
+ifeq ($(DOYACC),y)
+
+# [ds] A plague on the broken copy command on Windoze.
+prebuildyacc: $(UTIL)levcomp.lex.cc $(UTIL)levcomp.tab.cc $(UTIL)levcomp.tab.h
+ $(COPY) $^ prebuilt/
+
+$(UTIL)levcomp.tab.cc: $(UTIL)levcomp.ypp
+ cd $(UTIL) && $(YACC) -d -b levcomp levcomp.ypp \
+ && mv $(YTABC) levcomp.tab.cc || false
+
+$(UTIL)levcomp.lex.cc: $(UTIL)levcomp.lpp
+ cd $(UTIL) && $(LEX) -olevcomp.lex.cc levcomp.lpp
+
+else
+
+$(UTIL)levcomp.tab.cc: prebuilt/levcomp.tab.cc
+ $(COPY) prebuilt/*.h $(UTIL)
+ $(COPY) $< $@
+
+$(UTIL)levcomp.lex.cc: prebuilt/levcomp.lex.cc
+ $(COPY) $< $@
+
+endif
+
+##########################################################################
+
+install: $(APPNAME)
+ifneq ($(OPATH),$(INSTALLDIR))
+ mkdir -p $(INSTALLDIR)
+ $(COPY) $(APPNAME) ${INSTALLDIR}
+endif
+ mkdir -p $(INSTALLDIR)/dat
+ mkdir -p $(INSTALLDIR)/dat/clua
+ mkdir -p $(INSTALLDIR)/dat/database
+ mkdir -p $(INSTALLDIR)/dat/descript
+ mkdir -p $(INSTALLDIR)/dat/lua
+ mkdir -p $(INSTALLDIR)/docs
+ mkdir -p $(INSTALLDIR)/settings
+ $(COPY) dat/*.des $(INSTALLDIR)/dat/
+ $(COPY) dat/clua/*.lua $(INSTALLDIR)/dat/clua/
+ $(COPY) dat/database/*.txt $(INSTALLDIR)/dat/database/
+ $(COPY) dat/descript/*.txt $(INSTALLDIR)/dat/descript/
+ $(COPY) dat/lua/*.lua $(INSTALLDIR)/dat/lua/
+ $(COPY) ../docs/*.txt $(INSTALLDIR)/docs/
+ $(COPY) ../docs/changes.stone_soup $(INSTALLDIR)/docs/
+ $(COPY) ../CREDITS.txt $(INSTALLDIR)/
+ $(COPY) ../README.txt ../README.pdf $(INSTALLDIR)/
+ $(COPY) ../licence.txt $(INSTALLDIR)/LICENCE.txt
+ $(COPY) ../settings/* $(INSTALLDIR)/settings/
+
+clean:
+ $(DELETE) $(OPATH)/*.o
+ $(DELETE) $(UTIL)*.o
+ $(DELETE) $(UTIL)*.exe
+ $(DELETE) $(UTIL)*.lex.cc
+ $(DELETE) $(UTIL)*.tab.cc
+ $(DELETE) $(UTIL)*.tab.h
+ $(DELETE) $(UTIL)*.tab.c
+ $(DELETE) *.ixx
+
+clean-lua:
+ cd $(LUASRC) && $(MAKE) clean_win
+
+clean-sql:
+ cd $(SQLSRC) && $(MAKE) clean
+
+clean-pcre:
+ cd $(PCRESRC) && $(MAKE) clean
+
+distclean: clean clean-lua clean-sql clean-pcre
+ $(DELETE) $(OPATH)/*.o
+ $(DELETE) *.o
+ $(DELETE) bones.*
+ $(DELETE) $(OPATH)/bones.*
+ $(DELETE) morgue.txt
+ $(DELETE) $(OPATH)/morgue.txt
+ $(DELETE) scores
+ $(DELETE) $(OPATH)/scores
+ $(DELETE) crawl.exe
+ $(DELETE) $(APPNAME)
+ $(DELETE) *.sav
+ $(DELETE) $(OPATH)/*.sav
+ $(DELETE) core
+ $(DELETE) $(OPATH)/core
+ $(DELETE) *.0*
+ $(DELETE) $(OPATH)/*.0*
+ $(DELETE) *.lab
+ $(DELETE) $(OPATH)/*.lab
+
+$(APPNAME): $(GAME_DEPENDS)
+ ${CXX} ${LDFLAGS} $(CFLAGS) $(OBJECTS) -o $(APPNAME) $(LIB)
+ i586-mingw32msvc-strip $(APPNAME)
+
+debug: $(GAME_DEPENDS)
+ ${CXX} ${LDFLAGS} $(CFLAGS) $(OBJECTS) -o $(APPNAME) $(LIB)
+
+profile: $(GAME_DEPENDS)
+ ${CXX} -g -p ${LDFLAGS} $(CFLAGS) $(OBJECTS) -o $(APPNAME) $(LIB)
+
+$(OPATH)/%.o: %.cc
+ ${CXX} ${CFLAGS} -o $@ -c $<
+
+$(OPATH)/%.o: $(UTIL)%.cc
+ $(CXX) $(YCFLAGS) -o $@ -c $<
+
+#############################################################################
+# Build Lua
+
+$(LUASRC)/$(LUALIBA):
+ @echo Building Lua...
+ @cd $(LUASRC) && $(MAKE) crawl_mingw
+
+#############################################################################
+# Build SQLite
+
+$(FSQLLIBA):
+ @echo Building SQLite
+ cd $(SQLSRC) && $(MAKE)
+
+#############################################################################
+# Build unrandart data
+art-data.h: art-data.txt util/art-data.pl art-func.h
+ util/art-data.pl
+
+#############################################################################
+# Build PCRE
+
+$(PCRESRC)/$(PCRELIBA):
+ @echo Building PCRE...
+ @cd $(PCRESRC) && $(MAKE)
+
+##########################################################################
+# Resources
+#
+
+$(OPATH)/$(RESOURCEOBJ): $(RESOURCE)
+ $(WINDRES) $< $@
+
diff --git a/crawl-ref/source/makefile_tiles.mgw_unix b/crawl-ref/source/makefile_tiles.mgw_unix
new file mode 100644
index 0000000000..e1c5996b95
--- /dev/null
+++ b/crawl-ref/source/makefile_tiles.mgw_unix
@@ -0,0 +1,274 @@
+# -*- Makefile -*- for Dungeon Crawl (Cross-compiling MinGW for crawl.develz.org)
+
+# makefile.obj includes a list of object files needed to build Crawl.
+include makefile.obj
+
+OPATH := build
+
+# need .exe so make will find the right file
+APPNAME = $(OPATH)/crawl.exe
+CXX = i586-mingw32msvc-g++
+DELETE = rm -f
+COPY = cp
+OS_TYPE = WIN32TILES
+EXTRA_DEFINES = -DUSE_TILE -DCLUA_BINDINGS -DWIZARD
+
+SDL_PREFIX ?= $(HOME)/source/mingw32
+SDL_CFLAGS := -D_GNU_SOURCE=1 -Dmain=SDL_main -I$(SDL_PREFIX)/include/SDL
+SDL_LDFLAGS := -lmingw32 -lSDLmain -lSDL.dll -lSDL_image -lopengl32 -lglu32
+
+ifeq ($(INSTALLDIR),)
+INSTALLDIR := crawl-mingw32
+endif
+
+# If you don't have flex or bison, set DOYACC to N or empty.
+DOYACC := n
+
+LEX := flex
+YACC := bison -y
+
+ifeq ($(LUASRC),)
+LUASRC := util/lua/src
+endif
+
+LUALIB = lua
+LUALIBA = lib$(LUALIB).a
+
+SQLSRC := util/sqlite
+SQLLIB := sqlite3
+SQLIBA := lib$(SQLLIB).a
+FSQLLIBA := $(SQLLIB)/$(SQLIBA)
+
+PCRESRC := util/pcre
+PCRELIB := pcre
+PCRELIBA := lib$(PCRELIB).a
+
+RLTILES = rltiles
+EXTRA_INCLUDES += -I$(RLTILES)
+
+TILEDEFS = dngn main player unrand
+TILEDEFPRES = $(TILEDEFS:%=$(RLTILES)/tiledef-%)
+TILEDEFOBJS = $(TILEDEFPRES:%=%.o)
+TILEDEFSRCS = $(TILEDEFPRES:%=%.cc)
+TILEDEFHDRS = $(TILEDEFPRES:%=%.h)
+
+OBJECTS += $(TILEDEFOBJS)
+
+TILEFILES = \
+ main.png \
+ player.png \
+ dngn.png
+
+DESTTILEFILES = $(TILEFILES:%=dat/tiles/%)
+
+LIB = -static -L$(HOME)/source/mingw32/lib -lwinmm -mwindows -lcomctl32 -L$(LUASRC) -l$(LUALIB) -L$(SQLSRC) -l$(SQLLIB) -L$(PCRESRC) -l$(PCRELIB) $(SDL_LDFLAGS) -lfreetype
+INCLUDES := -Iutil -I. -I$(HOME)/source/mingw32/include -I$(LUASRC) -I$(SQLSRC) -I$(PCRESRC) $(EXTRA_INCLUDES)
+
+CFWARN := -Wwrite-strings
+
+CFOTHERS := -fsigned-char \
+ -fstrict-aliasing \
+ -pedantic \
+ -O2 \
+ -D$(OS_TYPE) $(EXTRA_FLAGS) \
+ -DWINMM_PLAY_SOUNDS -DCLUA_BINDINGS \
+ -DWINVER=0x0400 -D_WIN32_IE=0x0400 \
+ $(EXTRA_DEFINES)
+
+CFLAGS := $(INCLUDES) $(CFWARN) $(CFOTHERS) $(SDL_CFLAGS)
+YCFLAGS := $(INCLUDES) $(CFOTHERS)
+
+OBJECTS := $(OBJECTS) libgui.o tilepick.o tile2.o tilereg.o tilesdl.o tilefont.o tiletex.o tilemcache.o tilebuf.o crash-w.o
+
+LDFLAGS =
+
+UTIL = util/
+
+YTABC := levcomp.tab.c
+YTABH := levcomp.tab.h
+
+ifeq ($(LEX),)
+DOYACC :=
+endif
+
+ifeq ($(YACC),)
+DOYACC :=
+endif
+
+RESOURCE := $(UTIL)crawl.rc
+RESOURCEOBJ := crawlres.o
+WINDRES := i586-mingw32msvc-windres
+
+# Do the levcomp stuff first because that's the most likely to fail.
+OBJECTS := levcomp.tab.o levcomp.lex.o \
+ $(OBJECTS) $(RESOURCEOBJ)
+
+OBJECTS := $(foreach file,$(OBJECTS),$(OPATH)/$(file))
+
+GAME_DEPENDS := prepare $(LUASRC)/$(LUALIBA) $(FSQLLIBA) $(PCRESRC)/$(PCRELIBA) $(TILEHEADERS) $(DESTTILEFILES) $(OBJECTS)
+
+##########################################################################
+
+all: $(APPNAME)
+
+prepare:
+ mkdir -p $(OPATH)
+
+DEPENDENCY_MKF := makefile.dep
+-include $(DEPENDENCY_MKF)
+
+##########################################################################
+# The level compiler
+#
+ifeq ($(DOYACC),y)
+
+# [ds] A plague on the broken copy command on Windoze.
+prebuildyacc: $(UTIL)levcomp.lex.cc $(UTIL)levcomp.tab.cc $(UTIL)levcomp.tab.h
+ $(COPY) $^ prebuilt/
+
+$(UTIL)levcomp.tab.cc: $(UTIL)levcomp.ypp
+ cd $(UTIL) && $(YACC) -d -b levcomp levcomp.ypp \
+ && mv $(YTABC) levcomp.tab.cc || false
+
+$(UTIL)levcomp.lex.cc: $(UTIL)levcomp.lpp
+ cd $(UTIL) && $(LEX) -olevcomp.lex.cc levcomp.lpp
+
+else
+
+$(UTIL)levcomp.tab.cc: prebuilt/levcomp.tab.cc
+ $(COPY) prebuilt/*.h $(UTIL)
+ $(COPY) $< $@
+
+$(UTIL)levcomp.lex.cc: prebuilt/levcomp.lex.cc
+ $(COPY) $< $@
+endif
+
+##########################################################################
+# RLTiles
+#
+
+ORIGTILEFILES = $(TILEFILES:%=$(RLTILES)/%)
+
+makerltiles:
+ pushd $(RLTILES) && $(MAKE) -f makefile.unix all
+ mkdir -p $(OPATH)/rltiles
+
+$(TILEDEFSRCS): makerltiles
+
+$(TILEDEFHDRS): makerltiles
+
+$(ORIGTILEFILES): makerltiles
+
+dat/tiles/%.png: rltiles/%.png
+ mkdir -p dat/tiles
+ $(COPY) $< $@
+
+clean-rltiles:
+ pushd $(RLTILES) && $(MAKE) -f makefile.unix distclean
+
+##########################################################################
+
+
+##########################################################################
+
+install: $(APPNAME)
+ifneq ($(OPATH),$(INSTALLDIR))
+ mkdir -p $(INSTALLDIR)
+ $(COPY) $(APPNAME) ${INSTALLDIR}
+endif
+ mkdir -p $(INSTALLDIR)/dat
+ mkdir -p $(INSTALLDIR)/dat/clua
+ mkdir -p $(INSTALLDIR)/dat/database
+ mkdir -p $(INSTALLDIR)/dat/descript
+ mkdir -p $(INSTALLDIR)/dat/lua
+ mkdir -p $(INSTALLDIR)/dat/tiles
+ mkdir -p $(INSTALLDIR)/docs
+ mkdir -p $(INSTALLDIR)/settings
+ $(COPY) dat/*.des $(INSTALLDIR)/dat/
+ $(COPY) dat/clua/*.lua $(INSTALLDIR)/dat/clua/
+ $(COPY) dat/database/*.txt $(INSTALLDIR)/dat/database/
+ $(COPY) dat/descript/*.txt $(INSTALLDIR)/dat/descript/
+ $(COPY) dat/lua/*.lua $(INSTALLDIR)/dat/lua/
+ $(COPY) dat/tiles/*.png dat/tiles/*.ttf $(INSTALLDIR)/dat/tiles/
+ $(COPY) ../docs/*.txt $(INSTALLDIR)/docs/
+ $(COPY) ../docs/changes.stone_soup $(INSTALLDIR)/docs/
+ $(COPY) ../CREDITS.txt $(INSTALLDIR)/
+ $(COPY) ../README.txt ../README.pdf $(INSTALLDIR)/
+ $(COPY) ../licence.txt $(INSTALLDIR)/LICENCE.txt
+ $(COPY) ../settings/* $(INSTALLDIR)/settings/
+
+clean:
+ $(DELETE) $(OPATH)/*.o
+ $(DELETE) $(UTIL)*.o
+ $(DELETE) $(UTIL)*.exe
+ $(DELETE) $(UTIL)*.lex.cc
+ $(DELETE) $(UTIL)*.tab.cc
+ $(DELETE) $(UTIL)*.tab.h
+ $(DELETE) $(UTIL)*.tab.c
+ $(DELETE) *.ixx
+
+clean-lua:
+ cd $(LUASRC) && $(MAKE) clean_win
+
+clean-sql:
+ cd $(SQLSRC) && $(MAKE) clean
+
+clean-pcre:
+ cd $(PCRESRC) && $(MAKE) clean
+
+distclean: clean clean-lua clean-sql clean-pcre clean-rltiles
+
+$(APPNAME): $(GAME_DEPENDS)
+ ${CXX} ${LDFLAGS} $(CFLAGS) $(OBJECTS) -o $(APPNAME) $(LIB)
+ i586-mingw32msvc-strip $(APPNAME)
+
+debug: $(GAME_DEPENDS)
+ ${CXX} ${LDFLAGS} $(CFLAGS) $(OBJECTS) -o $(APPNAME) $(LIB)
+
+profile: $(GAME_DEPENDS)
+ ${CXX} -g -p ${LDFLAGS} $(CFLAGS) $(OBJECTS) -o $(APPNAME) $(LIB)
+
+$(OPATH)/%.o: %.cc $(TILEDEFHDRS)
+ ${CXX} ${CFLAGS} -o $@ -c $<
+
+# STL is bad in debug. Always compile this file with optimizations.
+$(OPATH)/tilebuf.o: tilebuf.cc $(TILEDEFHDRS)
+ ${CXX} ${CFLAGS} -O2 -o $@ -c $<
+
+
+$(OPATH)/%.o: $(UTIL)%.cc $(TILEDEFHDRS)
+ $(CXX) $(YCFLAGS) -o $@ -c $<
+
+#############################################################################
+# Build Lua
+
+$(LUASRC)/$(LUALIBA):
+ @echo Building Lua...
+ @cd $(LUASRC) && $(MAKE) crawl_mingw
+
+#############################################################################
+# Build SQLite
+
+$(FSQLLIBA):
+ @echo Building SQLite
+ cd $(SQLSRC) && $(MAKE)
+
+#############################################################################
+# Build unrandart data
+art-data.h: art-data.txt util/art-data.pl art-func.h
+ util/art-data.pl
+
+#############################################################################
+# Build PCRE
+
+$(PCRESRC)/$(PCRELIBA):
+ @echo Building PCRE...
+ @cd $(PCRESRC) && $(MAKE)
+
+##########################################################################
+# Resources
+#
+
+$(OPATH)/$(RESOURCEOBJ): $(RESOURCE)
+ $(WINDRES) $< $@
+