diff options
Diffstat (limited to 'crawl-ref/source/makefile_tiles.unix')
-rw-r--r-- | crawl-ref/source/makefile_tiles.unix | 373 |
1 files changed, 373 insertions, 0 deletions
diff --git a/crawl-ref/source/makefile_tiles.unix b/crawl-ref/source/makefile_tiles.unix new file mode 100644 index 0000000000..f4d1c9ed0c --- /dev/null +++ b/crawl-ref/source/makefile_tiles.unix @@ -0,0 +1,373 @@ +# -*- Makefile -*- for Dungeon Crawl (unix) + +# +# Modified for Crawl Reference by $Author: dshaligram $ on $Date: 2007-06-24T16:27:58.475101Z $ +# + +GAME = crawl + +# this file contains a list of the libraries. +# it will make a variable called OBJECTS that contains all the libraries +include makefile.obj + +OBJECTS += libgui.o tilepick.o tile2.o tilereg.o tilesdl.o tilefont.o tiletex.o + +SDL_CFLAGS := $(shell sdl-config --cflags) +SDL_LDFLAGS := $(shell sdl-config --libs) -lSDLmain + +CXX = g++ +DELETE = rm -f +COPY = cp +OS_TYPE = UNIX +EXTRA_INCLUDES = -DUSE_TILE -DCLUA_BINDINGS + +# Change this to y if you want to use Unicode glyphs in the map, and you have +# libncursesw available. +UNICODE_GLYPHS = n + +ifeq ($(strip $(OSX)),y) +PNG_INCLUDE := -I/sw/include +PNG_LIB := -L/sw/lib +FREETYPE_INCLUDE := -I/sw/include/freetype2 + +# 10.5 Fink bug +FINK_OPENGL_WORKAROUND := -Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib + +SDL_LDFLAGS += -framework Cocoa -L/usr/X11/lib $(FINK_OPENGL_WORKAROUND) + +EXTRA_INCLUDES += -I/sw/include +else +PNG_INCLUDE := +PNG_LIB := +FREETYPE_INCLUDE := -I/usr/include/freetype2 +endif + +# If you have lex and yacc, set DOYACC to y (lowercase y). +DOYACC := y + +# Permissions to set on the game executable. +MCHMOD := 2755 + +# Permissions to set on the save directory. +MCHMOD_SAVEDIR := 775 + +# The user:group to install the game as. +INSTALL_UGRP := games:games + +INSTALLDIR := /usr/games/crawl + +# If you're installing Crawl for multiple users, you *must* set this to a +# valid path before building Crawl. This is not necessary if you are building +# Crawl for a single user. + +# SAVEDIR := /usr/games/crawl/saves/ +# DATADIR := /usr/games/crawl/data/ + +LEX := flex +YACC := bison -y + +LUASRC := util/lua/src +LUALIB = lua +LUALIBA = l$(LUALIB).a + +DBH_FILE := /usr/include/db.h +NDBM_FILE := /usr/include/ndbm.h + +HAVE_DBH := $(shell [ -f $(DBH_FILE) ] && echo y) +HAVE_NDBM := $(shell [ -f $(NDBM_FILE) -a "`uname`" = "Darwin" ] && echo y) + +ifeq ($(strip $(HAVE_DBH)),y) +ifneq ($(shell grep dbm_open $(DBH_FILE)),) +SELDBM := -DDB_DBH +LIBDBM := -ldb +endif +endif + +ifeq ($(strip $(HAVE_NDBM)),y) +SELDBM ?= -DDB_NDBM +ifeq ($(SELDBM),-DDB_NDBM) +LIBDBM := -ldbm +endif +endif + +SQLSRC := util/sqlite +SQLLIB := sqlite3 +SQLLIBA := lib$(SQLLIB).a +FSQLLIBA := $(SQLSRC)/$(SQLLIBA) + +ifeq ($(strip $(LIBDBM)),) +LIBDBM := -L$(SQLSRC) -lsqlite3 +EXTRA_INCLUDES += -I$(SQLSRC) +EXTRA_DEPENDS += $(FSQLLIBA) +endif + +LIB = -L$(LUASRC) -l$(LUALIB) $(LIBDBM) -lpng $(SDL_LDFLAGS) -lGL -lGLU -lSDL_image -lfreetype + +INCLUDES := $(INCLUDES) -Iutil -I. -I$(LUASRC) $(EXTRA_INCLUDES) $(PNG_INCLUDE) $(FREETYPE_INCLUDE) + +CFWARN := -Wall -Wwrite-strings -Wshadow -pedantic + +CFOTHERS := -fsigned-char -D$(OS_TYPE) $(EXTRA_FLAGS) -DCLUA_BINDINGS + +ifneq ($(HURRY),y) +ifneq ($(DEBUG_CRAWL),y) +CFWARN += -Wuninitialized +CFOTHERS += -O2 +endif +endif + +ifneq ($(strip $(SAVEDIR)),) +CFOTHERS += '-DSAVE_DIR_PATH="$(strip $(SAVEDIR))"' +endif + +ifneq ($(strip $(DATADIR)),) +CFOTHERS += '-DDATA_DIR_PATH="$(strip $(DATADIR))"' +endif + +CFOTHERS += $(SELDBM) + +CFLAGS := $(INCLUDES) $(CFWARN) $(CFOTHERS) $(SDL_CFLAGS) +YCFLAGS := $(INCLUDES) $(CFOTHERS) + +UTIL = util/ + +YTABC := levcomp.tab.c +YTABH := levcomp.tab.h + +RLTILES = rltiles/ + +TILEHEADERS = \ +tiledef.h \ +tiledef-p.h \ +tilep-cmt.h \ +tiledef-dngn.h \ +tilecount-dngn.h + +TILEFILES = \ + tile.png \ + player.png \ + title.png \ + dngn.png +DESTTILEFILES = $(TILEFILES:%=dat/tiles/%) + +EXTRA_DEPENDS += $(TILEHEADERS) $(DESTTILEFILES) + +OBJECTS := $(UTIL)levcomp.tab.o $(UTIL)levcomp.lex.o $(OBJECTS) + +ifeq ($(strip $(LEX)),) +DOYACC := +endif + +ifeq ($(strip $(YACC)),) +DOYACC := +endif + +GAME_DEPENDS := $(LUASRC)$(LUALIBA) $(EXTRA_DEPENDS) $(OBJECTS) +SRC_PKG_BASE := stone_soup +SRC_VERSION := $(shell egrep 'VER_NUM *".*"' version.h | \ + egrep -o '[0-9]\.[0-9](\.[0-9])?') +PKG_SRC_DIR := $(SRC_PKG_BASE)-$(SRC_VERSION)-src +SRC_PKG_TAR := $(PKG_SRC_DIR).tbz2 +SRC_PKG_ZIP := $(PKG_SRC_DIR).zip + +PKG_TIDY_LIST := $(UTIL)*.o $(LEVCOMP) *.o \ + $(UTIL)*.tab.cc $(UTIL)*.tab.h $(UTIL)*.lex.cc *.ixx +PKG_EXCLUDES := $(PWD)/misc/src-pkg-excludes.lst + +########################################################################## + +all: $(GAME) + +########################################################################## +# Dependencies + +DEPENDENCY_MKF := makefile.dep + +depend: $(OBJECTS:.o=.cc) + rm -f $(DEPENDENCY_MKF) + @for i in $^; do \ + echo "Updating dependencies for $$i"; \ + $(CXX) -MM $(CFLAGS) $$i >>$(DEPENDENCY_MKF) 2>/dev/null; \ + done + +-include $(DEPENDENCY_MKF) + +########################################################################## +# The level compiler +# + +ifeq ($(DOYACC),y) + +prebuildyacc: $(UTIL)levcomp.tab.cc $(UTIL)levcomp.tab.h $(UTIL)levcomp.lex.cc + cp $^ 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 + +# Pull the level-compiler stuff up from prebuilt/ + +$(UTIL)levcomp.tab.cc: prebuilt/levcomp.tab.cc + cp prebuilt/*.h $(UTIL) + cp $< $@ + + +$(UTIL)levcomp.lex.cc: prebuilt/levcomp.lex.cc + cp $< $@ + +endif + +########################################################################## +# RLTiles +# + +ORIGTILEHEADERS = $(TILEHEADERS:%=$(RLTILES)%) +ORIGTILEFILES = $(TILEFILES:%=$(RLTILES)%) + +$(ORIGTILEHEADERS): makerltiles + +makerltiles: + cd $(RLTILES) && make -f makefile.unix all CFLAGS="$(PNG_INCLUDE)" LDFLAGS="$(PNG_LIB)" && cd .. + +$(TILEHEADERS): $(ORIGTILEHEADERS) + cp $(RLTILES)$@ . + +$(ORIGTILEFILES): makerltiles + +dat/tiles/%.png: rltiles/%.png + mkdir -p dat/tiles + $(COPY) $< $@ + +clean-rltiles: + cd $(RLTILES) && make -f makefile.unix distclean && cd .. + $(DELETE) $(TILEHEADERS) + +########################################################################## + + +########################################################################## +# The actual build targets +# + +install: $(GAME) +ifeq ($(DATADIR),) + $(error DATADIR not set! Set DATADIR and run make clean install again) +endif + [ -d $(INSTALLDIR) ] || mkdir -p $(INSTALLDIR) + $(COPY) $(GAME) $(INSTALLDIR) + chown $(INSTALL_UGRP) $(INSTALLDIR)/$(GAME) + chmod ${MCHMOD} ${INSTALLDIR}/$(GAME) + mkdir -p $(DATADIR)/dat + mkdir -p $(DATADIR)/dat/lua + mkdir -p $(DATADIR)/dat/clua + mkdir -p $(DATADIR)/dat/descript + mkdir -p $(DATADIR)/dat/database + cp dat/*.des $(DATADIR)/dat + cp dat/lua/*.lua $(DATADIR)/dat/lua + cp dat/clua/*.lua $(DATADIR)/dat/clua + cp dat/descript/*.txt $(DATADIR)/dat/descript + cp dat/database/*.txt $(DATADIR)/dat/database + mkdir -p $(DATADIR)/settings + cp ../settings/* $(DATADIR)/settings/ + mkdir -p $(DATADIR)/docs + cp ../docs/*.txt $(DATADIR)/docs + mkdir -p $(DATADIR)/dat/tiles + cp dat/tiles/*.png $(DATADIR)/dat/tiles + chown -R $(INSTALL_UGRP) $(DATADIR) +ifneq ($(SAVEDIR),) + mkdir -p $(SAVEDIR) + chown $(INSTALL_UGRP) $(SAVEDIR) + chmod $(MCHMOD_SAVEDIR) $(SAVEDIR) +endif + +clean: + $(DELETE) *.o + $(DELETE) $(UTIL)*.o + $(DELETE) $(LEVCOMP) + $(DELETE) $(UTIL)*.tab.cc $(UTIL)*.tab.c $(UTIL)*.tab.h $(UTIL)*.lex.cc + $(DELETE) *.ixx + +clean-lua: + cd $(LUASRC) && $(MAKE) clean + +clean-sql: + cd $(SQLSRC) && $(MAKE) clean + +distclean: clean clean-lua clean-sql clean-rltiles + $(DELETE) bones.* + $(DELETE) morgue.txt + $(DELETE) scores + $(DELETE) $(GAME) + $(DELETE) *.sav + $(DELETE) core + $(DELETE) *.0* + $(DELETE) *.lab + $(DELETE) $(DEPENDENCY_MKF) + +$(GAME): $(GAME_DEPENDS) + ${CXX} ${LDFLAGS} $(CFLAGS) $(OBJECTS) -o $(GAME) $(LIB) + +debug: $(GAME_DEPENDS) + ${CXX} ${LDFLAGS} $(CFLAGS) $(OBJECTS) -o $(GAME) $(LIB) + +profile: $(GAME_DEPENDS) + ${CXX} -g -p ${LDFLAGS} $(CFLAGS) $(OBJECTS) -o $(GAME) $(LIB) + +.cc.o: + ${CXX} ${CFLAGS} -c $< + +# [ds] Note we don't use the standard CFLAGS here; that's intentional, most +# flex/bison combos I've tried don't produce code that passes the warnings +# test. +$(UTIL)%.o: $(UTIL)%.cc + $(CXX) $(YCFLAGS) -o $@ -c $< + +############################################################################# +# Build Lua + +$(LUASRC)$(LUALIBA): + echo Building Lua... + cd $(LUASRC) && $(MAKE) crawl_unix + +############################################################################# +# Build SQLite + +$(FSQLLIBA): + echo Building SQLite + cd $(SQLSRC) && $(MAKE) + +############################################################################# +# Packaging a source tarball for release +# + +# To package, you *must* have lex and yacc to generate the intermediates. +ifeq ($(DOYACC),y) +package-source: distclean prebuildyacc pkgtidy depend removeold vlink \ + pkgtarbz2 pkgzip + +pkgtidy: + $(DELETE) $(PKG_TIDY_LIST) + +removeold: + if [ -f ../../$(SRC_PKG_TAR) ]; then $(DELETE) ../../$(SRC_PKG_TAR); fi + if [ -f ../../$(SRC_PKG_ZIP) ]; then $(DELETE) ../../$(SRC_PKG_ZIP); fi + +# [ds] Existing directory names could produce a bad package! +vlink: + cd .. && WHERE=$$PWD && cd .. && \ + ( [ -e $(PKG_SRC_DIR) ] || ln -sf $$WHERE $(PKG_SRC_DIR) ) + +pkgtarbz2: + cd ../.. && tar -ch --bzip2 -f $(SRC_PKG_TAR) \ + -X $(PKG_EXCLUDES) $(PKG_SRC_DIR) + +pkgzip: + cd ../.. && zip -rq $(SRC_PKG_ZIP) $(PKG_SRC_DIR) \ + -x@$(PKG_EXCLUDES) + +endif |