diff options
author | evktalo <evktalo@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-07-19 15:00:53 +0000 |
---|---|---|
committer | evktalo <evktalo@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-07-19 15:00:53 +0000 |
commit | 81f3da48038d6db0edcd026f77616aee71bb1bed (patch) | |
tree | 4d5394ec48467a03411d016ab6a232bffa3db217 /crawl-ref/source/makefile.mgw_unix | |
parent | d319c2e18da39b5fd050dddc77b3dd4ff8cababf (diff) | |
download | crawl-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/source/makefile.mgw_unix')
-rw-r--r-- | crawl-ref/source/makefile.mgw_unix | 238 |
1 files changed, 238 insertions, 0 deletions
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) $< $@ + |