git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@10322 c06c8d41-db1a-0410-9941-cceddc491573
MTVWMQ5HV5LGDRU53GJV45GTANABRJLNIECWT7ZH2MCLO53XLFXAC
Q3B3UVMYEVC4YJUPYVSNTR4DJH4E6J4JJDHZNT5LNOCHCPPMEMXAC
3ZCY3IWI4OTBYHIDWQZYASVTCI2XNLVFJRCEXLAA7RPD7XMHFPQAC
UL7XFKMUX3WIU4O2LZANK4ECJ654UZPDBFGNXUEYZYOLKBYBCG6AC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
MOT3YZFRY3JG2MH3GN2VD6IY3IJSAXJUXMXS222TXWKRFCENOCDQC
23GPKC7HCKVIPRMF4HPUROSVFVL4NQMRQQD5FUAFRLNZPYLZ4EEAC
# -*- 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) $< $@
# -*- 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) $< $@