Incredibly hairy to get this to work, largely because MinGW's GCC is picky about the link order, among other things.
But now we have a working build!
Signed-off-by: Steven Noonan <steven@uplinklabs.net>
G5IEUQSGE4HKXACJA6W2JZFDETPSTGTDQ7JCHDEPZN6QAWRP4Z6QC
3U3NXSIZHUIEUFXV7NYSIO3RXUSMIJAFEAIEALX5ER6XZAKBPYJAC
GG3JVF3PSRL3ZCGLCXSVAKTXVIRYXBOCZ6UIDLKLT3INEMYSOTZQC
MVU2F2ZW2JFRTZS5XLDSTCKPUXQEWATAQBT472XKX4DNDQTMQXRQC
LBVFZXKIGQRYWF6LS4H62I5B4KUVIPF7DTSNUYHDOIDR76VS33AAC
E4XIPZI7R2FZEGKDWOF4COZU2XK4FDLCOZ2OGBZGKD3D463YOOMAC
FHMTFYXFX5OBWFLRH4PU4ZOWP5JGDCH4OBCJSAMPIC5SREHXM5AQC
HBXWZNXAJ7LUX7FYUIHQYBTRMWVJC6CAQQL3NNZHK5ETLIFEZJ7QC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
GL5T36G3A2LUTTYSL7ZQVUYONUCXL5DK36532FM6XRAQCLYDWW2QC
ZJT4LPVYZU5AFPNQESSXGLE2VBFSQLR2OEXJLWIMRIO7B532MVWQC
SSPFGPVYFTWDK3ZMQQKOPVM5SVES62TL5KFEFC2PX4PMZDWHTIOQC
AMYZN5E6SNZWQI4BVLZIG5DYB3S6ATHUSLJIABDXXYKDAHODA3SQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
RRJ46VMOKMHIUVOOKCFBSVXNT3GPNWTHG2PGBFV7224AWEG7NS2AC
GYS5IM6FVZKFSFMT7K4SO5GHS4UULDY23JJRH5BQ2YOYDQYXVJAAC
HCTDAXFRE6LXGHLKOMM7GX3YXGWJYM4DLZS7ITWYTXC5NWZBB2OQC
MTVWMQ5HV5LGDRU53GJV45GTANABRJLNIECWT7ZH2MCLO53XLFXAC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
6JG5G2K7WW4OTAD2NM2QUQZ3R4RDOC2VZIP4CIJF5EE3SLE7DCYAC
4VPFI4QI3ZKC2JISFUWFS4PWOJBHZFBLYGWOUZGRUANS4TI4OQPQC
YMHOAPBY3ARMIRUEZ4TWQPV2KZVQWESAQY5WC7QRBEHHFXFONMFQC
6QJC4NUZIHK6QHDMIFBBOO3K2VF5TZ5BDN5NXJKOK6S5FPW3XBXQC
SVBGY75CBM6CNB4WEMUPF37G7IFJCC3DPI532WKY7PQTY3YX7KNAC
SDL_CFLAGS := $(shell sdl-config --cflags)
SDL_LDFLAGS := $(shell sdl-config --libs)
SDLCONFIG := $(shell which sdl-config 2> /dev/null)
ifeq ($(SDLCONFIG),)
SDLCONFIG := $(shell pwd)/contrib/install/bin/sdl-config
endif
PNG_INCLUDE := $(shell pkg-config libpng --cflags)
PNG_LIB := $(shell pkg-config libpng --libs)
SDL_CFLAGS := $(shell $(SDLCONFIG) --cflags 2> /dev/null)
SDL_LDFLAGS := $(shell $(SDLCONFIG) --libs 2> /dev/null)
PNG_INCLUDE := $(shell pkg-config libpng --cflags 2> /dev/null)
PNG_LIB := $(shell pkg-config libpng --libs 2> /dev/null)
CFLAGS := $(SDL_CFLAGS) $(PNG_INCLUDE)
LDFLAGS := $(SDL_LDFLAGS) $(PNGLIB) -lSDL_image -lpng
CFLAGS := -I../contrib/install/include $(SDL_CFLAGS) $(PNG_INCLUDE)
LDFLAGS := -L../contrib/install/lib $(SDL_LDFLAGS) -lSDL_image $(PNG_LIB) -lz
# LUA
LUASRC := contrib/lua/src/
LUALIB := lua
LUALIBA := lib$(LUALIB).a
FLUALIBA := $(LUASRC)$(LUALIBA)
INCLUDES_L += -Icontrib/install/include
LIB += -Lcontrib/install/lib
SDL_INCLUDE := $(shell sdl-config --cflags | tr ' ' '\n' | grep ^[-]I | tr '\n' ' ')
SDL_CFLAGS := $(shell sdl-config --cflags | tr ' ' '\n' | grep -v ^[-]I | tr '\n' ' ')
SDL_LDFLAGS := $(shell sdl-config --libs)
SDL_INCLUDE := $(shell $(SDLCONFIG) --cflags | tr ' ' '\n' | grep ^[-]I | tr '\n' ' ')
SDL_CFLAGS := $(shell $(SDLCONFIG) --cflags | tr ' ' '\n' | grep -v ^[-]I | tr '\n' ' ')
SDL_LDFLAGS := $(shell $(SDLCONFIG) --libs)
GAME_DEPENDS := $(LUASRC)$(LUALIBA) $(EXTRA_DEPENDS) $(OBJECTS) $(EXTRA_OBJECTS)
ifneq ($(USE_PCRE),n)
CONTRIB_DEPENDS += $(LIBPCRE)
endif
CONTRIB_DEPENDS += $(LIBLUA) $(LIBSQLITE)
GAME_DEPENDS := $(DESTTILEFILES) $(OBJECTS) $(EXTRA_OBJECTS) $(CONTRIB_DEPENDS)
ifneq ($(USE_PCRE),n)
GAME_DEPENDS += $(FPCRELIBA)
endif
$(FLUALIBA): .contrib-ok
+@$(MAKE) -C $(LUASRC) crawl_unix
$(LIBSQLITE): .contrib-ok
+@$(MAKE) -C contrib sqlite
sqlite: $(LIBSQLITE)
$(LIBFREETYPE): .contrib-ok
+@$(MAKE) -C contrib freetype
freetype: $(LIBFREETYPE)
uname_S := $(shell uname -s)
PREFIX:=$(shell pwd)/install
all: lua sqlite sdl sdl-image freetype libpng pcre zlib
.PHONY: lua sqlite sdl sdl-image freetype libpng pcre zlib
clean:
rm -rf $(PREFIX)
-make -C freetype distclean
-make -C libpng distclean
-make -C lua clean
-make -C sdl distclean
-make -C sdl-image distclean
-make -C sqlite clean
-make -C pcre clean
-make -C zlib distclean
#
# Check for GNU Make >=3.80
#
eval_available :=
$(eval eval_available := T)
ifneq ($(eval_available),T)
ifneq (,$(findstring MINGW,$(uname_S)))
$(error FreeType needs GNU Make 3.80 or later. Get this from http://prdownloads.sourceforge.net/mingw/make-3.81-MSYS-1.0.11-2.tar.bz2)
else
$(error FreeType's build system needs GNU Make 3.80 or later)
endif
endif
#
# FreeType 2
#
freetype/objs/.libs/libfreetype.a: $(PREFIX)/lib/libz.a
cd freetype && ./configure --prefix=$(PREFIX) --with-zlib=$(PREFIX) --enable-static --disable-shared
@+$(MAKE) -C freetype
$(PREFIX)/lib/libfreetype.a: freetype/objs/.libs/libfreetype.a
@$(MAKE) -C freetype install
freetype: $(PREFIX)/lib/libfreetype.a
#
# Lua
#
lua/src/liblua.a:
@+$(MAKE) -C lua/src crawl_unix
$(PREFIX)/lib/liblua.a: lua/src/liblua.a
@$(MAKE) -C lua/src install prefix=$(PREFIX)
lua: $(PREFIX)/lib/liblua.a
#
# SQLite
#
sqlite/libsqlite3.a:
@+$(MAKE) -C sqlite
$(PREFIX)/lib/libsqlite3.a: sqlite/libsqlite3.a
@$(MAKE) -C sqlite install prefix=$(PREFIX)
sqlite: $(PREFIX)/lib/libsqlite3.a
#
# PCRE
#
pcre/libpcre.a:
@+$(MAKE) -C pcre
$(PREFIX)/lib/libpcre.a: pcre/libpcre.a
@$(MAKE) -C pcre install prefix=$(PREFIX)
pcre: $(PREFIX)/lib/libpcre.a
#
# libpng
#
libpng/.libs/libpng.a: $(PREFIX)/lib/libz.a
cd libpng && ./configure --prefix=$(PREFIX) --enable-static --disable-shared LDFLAGS="-L$(PREFIX)/lib"
@+$(MAKE) -C libpng
$(PREFIX)/lib/libpng.a: libpng/.libs/libpng.a
@$(MAKE) -C libpng install
libpng: $(PREFIX)/lib/libpng.a
#
# SDL
#
sdl/build/.libs/libSDL.a:
cd sdl && ./configure --prefix=$(PREFIX) --enable-static --disable-shared
@+$(MAKE) -C sdl
$(PREFIX)/lib/libSDL.a: sdl/build/.libs/libSDL.a
@$(MAKE) -C sdl install
ifneq (,$(findstring MINGW,$(uname_S)))
#
# Very hackish fix for MinGW
sed 's/-mwindows/-lwinmm -lpng -lz -mwindows/' install/bin/sdl-config > install/bin/sdl-config.fixed
mv install/bin/sdl-config.fixed install/bin/sdl-config
chmod 755 install/bin/sdl-config
endif
sdl: $(PREFIX)/lib/libSDL.a
#
# SDL_image
#
sdl-image/.libs/libSDL_image.a: $(PREFIX)/lib/libpng.a
cd sdl-image && ./configure --prefix=$(PREFIX) --with-sdl-prefix=$(PREFIX) --enable-static --disable-shared --enable-bmp --enable-png LDFLAGS="-L$(PREFIX)/lib -lpng -lz" CPPFLAGS="-I$(PREFIX)/include"
@+$(MAKE) -C sdl-image
$(PREFIX)/lib/libSDL_image.a: sdl-image/.libs/libSDL_image.a
@$(MAKE) -C sdl-image install
sdl-image: $(PREFIX)/lib/libSDL_image.a
#
# zlib
#
zlib/libz.a:
cd zlib && ./configure --prefix=$(PREFIX)
@+$(MAKE) -C zlib
$(PREFIX)/lib/libz.a: zlib/libz.a
@$(MAKE) -C zlib install
zlib: $(PREFIX)/lib/libz.a