Skip to content

Instantly share code, notes, and snippets.

@HarryR
Created February 6, 2013 22:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save HarryR/4726522 to your computer and use it in GitHub Desktop.
Save HarryR/4726522 to your computer and use it in GitHub Desktop.
ifdef CROSS
DEP_BUILD =$(shell pwd)/../deps-build-$(CROSS)
DEP_ROOT =$(shell pwd)/../deps-root-$(CROSS)
else
DEP_BUILD =$(shell pwd)/../deps-build
DEP_ROOT =$(shell pwd)/../deps-root
endif
CONFIGURE_ENV=PKG_CONFIG_LIBDIR=$(DEP_ROOT)/lib/pkgconfig \
CFLAGS=-I$(DEP_ROOT)/include \
CXXFLAGS=-I$(DEP_ROOT)/include \
LDFLAGS="-L$(DEP_ROOT)/lib" \
INCLUDE_PATH=$(DEP_ROOT)/include \
LIBRARY_PATH=$(DEP_ROOT)/lib \
BINARY_PATH=$(DEP_ROOT)/bin
# ------------------------------------------------------------------------------
JBIG_VER=2.0
JBIG_TAR=jbigkit-$(JBIG_VER).tar.gz
JBIG_DIR=$(DEP_BUILD)/jbigkit
JBIG_URL=http://www.cl.cam.ac.uk/~mgk25/download/jbigkit-$(JBIG_VER).tar.gz
JBIG_LIB=$(DEP_ROOT)/lib/libjbig.a
# ------------------------------------------------------------------------------
WEBP_VER=0.2.1
WEBP_TAR=libwebp-$(WEBP_VER).tar.gz
WEBP_DIR=$(DEP_BUILD)/libwebp-$(WEBP_VER)
WEBP_URL=http://webp.googlecode.com/files/$(WEBP_TAR)
WEBP_LIB=$(DEP_ROOT)/lib/libwebp.a
WEBP_CONFIGURE=--disable-shared --prefix=$(DEP_ROOT) --disable-dependency-tracking
# ------------------------------------------------------------------------------
CAIRO_VERSION=1.12.8
CAIRO_TAR=cairo-$(CAIRO_VERSION).tar.xz
CAIRO_URL=http://www.cairographics.org/releases/$(CAIRO_TAR)
CAIRO_DIR=$(DEP_BUILD)/cairo-$(CAIRO_VERSION)
CAIRO_CFLAGS=-I$(CAIRO_DIR)/src/
CAIRO_LIB=$(DEP_ROOT)/lib/libcairo.a
CAIRO_CONFIGURE=--enable-xlib=no --enable-xlib-xrender=no \
--enable-xlib-xcb=no --enable-xcb=no --enable-xcb-shm=no \
--enable-qt=no --enable-quartz=no --enable-quartz-font=no \
--enable-quartz-image=no --enable-egl=no --enable-glx=no \
--enable-wgl=no --enable-script=no --enable-ft=yes \
--enable-fc=no --enable-ps=no --enable-pdf=no --enable-svg=no \
--enable-gobject=no --enable-trace=no --enable-interpreter=no \
--disable-dependency-tracking --disable-shared --prefix=$(DEP_ROOT)
# ------------------------------------------------------------------------------
ZLIB_VERSION=1.2.7
ZLIB_TAR=zlib-$(ZLIB_VERSION).tar.gz
ZLIB_URL=http://zlib.net/$(ZLIB_TAR)
ZLIB_DIR=$(DEP_BUILD)/zlib-$(ZLIB_VERSION)
ZLIB_LIB=$(DEP_ROOT)/lib/libz.a
ZLIB_CONFIGURE=--prefix=$(DEP_ROOT)
ZLIB_MAKEFLAGS=
# ------------------------------------------------------------------------------
EXPAT_VERSION=2.1.0
EXPAT_TAR=expat-$(EXPAT_VERSION).tar.gz
EXPAT_DIR=$(DEP_BUILD)/expat-$(EXPAT_VERSION)
EXPAT_URL=http://switch.dl.sourceforge.net/project/expat/expat/$(EXPAT_VERSION)/$(EXPAT_TAR)
EXPAT_LIB=$(DEP_ROOT)/lib/libexpat.a
EXPAT_CONFIGURE=--disable-dependency-tracking --disable-shared --prefix=$(DEP_ROOT)
EXPAT_MAKEFLAGS=
# ------------------------------------------------------------------------------
OJPG_VER=1.5.1
OJPG_TAR=openjpeg-$(OJPG_VER).tar.gz
OJPG_URL=http://openjpeg.googlecode.com/files/$(OJPG_TAR)
OJPG
# ------------------------------------------------------------------------------
FT_DIR=$(DEP_BUILD)/freetype2
FT_GIT=git://git.sv.gnu.org/freetype/freetype2.git
FT_REV=0e0fdc5dc89e5079898c5da67b56f994c439fee1
FT_LIB=$(DEP_ROOT)/lib/libfreetype.a
FT_CONFIGURE=--disable-dependency-tracking --disable-shared --prefix=$(DEP_ROOT)
FT_MAKEFLAGS=
# ------------------------------------------------------------------------------
FC_VERSION=2.10.91
FC_TAR=fontconfig-$(FC_VERSION).tar.gz
FC_URL=http://www.freedesktop.org/software/fontconfig/release/$(FC_TAR)
FC_DIR=$(DEP_BUILD)/fontconfig-$(FC_VERSION)
FC_LIB=$(DEP_ROOT)/lib/libfontconfig.a
FC_CONFIGURE=--disable-docs --disable-shared --prefix=$(DEP_ROOT) --disable-dependency-tracking
FC_MAKEFLAGS=
# ------------------------------------------------------------------------------
PIXMAN_VERSION=0.28.2
PIXMAN_TAR=pixman-$(PIXMAN_VERSION).tar.gz
PIXMAN_URL=http://cairographics.org/releases/$(PIXMAN_TAR)
PIXMAN_DIR=$(DEP_BUILD)/pixman-$(PIXMAN_VERSION)
PIXMAN_LIB=$(DEP_ROOT)/lib/libpixman-1.a
PIXMAN_CONFIGURE=--disable-gtk --disable-dependency-tracking --enable-libpng \
--disable-shared --prefix=$(DEP_ROOT)
PIXMAN_MAKEFLAGS=
# ------------------------------------------------------------------------------
LCMS_VER=1.19
LCMS_TAR=lcms-$(LCMS_VER).tar.gz
LCMS_URL=http://switch.dl.sourceforge.net/project/lcms/lcms/1.19/$(LCMS_TAR)
LCMS_DIR=$(DEP_BUILD)/lcms-$(LCMS_VER)
LCMS_LIB=$(DEP_ROOT)/lib/liblcms.a
LCMS_CONFIGURE=--disable-dependency-tracking --disable-shared --prefix=$(DEP_ROOT)
LCMS_MAKEFLAGS=
# ------------------------------------------------------------------------------
PNG_VER=1.2.50
PNG_TAR=libpng-$(PNG_VER).tar.bz2
PNG_URL=http://switch.dl.sourceforge.net/project/libpng/libpng12/$(PNG_VER)/$(PNG_TAR)
PNG_DIR=$(DEP_BUILD)/libpng-$(PNG_VER)
PNG_LIB=$(DEP_ROOT)/lib/libpng12.a
PNG_CONFIGURE=--disable-dependency-tracking --disable-shared --prefix=$(DEP_ROOT)
PNG_MAKEFLAGS=
# ------------------------------------------------------------------------------
JPEG_VER=8d
JPEG_TAR=jpegsrc.v$(JPEG_VER).tar.gz
JPEG_URL=http://www.ijg.org/files/$(JPEG_TAR)
JPEG_DIR=$(DEP_BUILD)/jpeg-$(JPEG_VER)
JPEG_LIB=$(DEP_ROOT)/lib/libjpeg.a
JPEG_CONFIGURE=--disable-dependency-tracking --disable-shared --prefix=$(DEP_ROOT)
JPEG_MAKEFLAGS=
# ------------------------------------------------------------------------------
TIFF_VER=4.0.3
TIFF_TAR=tiff-$(TIFF_VER).tar.gz
TIFF_URL=http://download.osgeo.org/libtiff/$(TIFF_TAR)
TIFF_DIR=$(DEP_BUILD)/tiff-$(TIFF_VER)
TIFF_LIB=$(DEP_ROOT)/lib/libtiff.a
TIFF_CONFIGURE=--disable-dependency-tracking --disable-shared --prefix=$(DEP_ROOT)
TIFF_MAKEFLAGS=
# ------------------------------------------------------------------------------
POPPLER_VERSION=0.22.0
POPPLER_TAR=poppler-$(POPPLER_VERSION).tar.gz
POPPLER_URL=http://poppler.freedesktop.org/$(POPPLER_TAR)
POPPLER_DIR=$(DEP_BUILD)/poppler-$(POPPLER_VERSION)
POPPLER_VERSION_MINOR=`cat $(POPPLER_BUILD_DIR)/config.h | grep PACKAGE_VERSION | cut -f 3 -d ' ' | sed -e 's/"//g' | cut -f 2 -d '.'`
POPPLER_LIB_DIR=$(POPPLER_DIR)/poppler/.libs
POPPLER_LIB=$(POPPLER_LIB_DIR)/libpoppler.a
POPPLER_LIBS=$(POPPLER_DIR)/poppler/CairoOutputDev.o \
$(POPPLER_DIR)/poppler/CairoFontEngine.o \
$(POPPLER_DIR)/poppler/CairoRescaleBox.o \
$(POPPLER_LIB)
POPPLER_CONFIGURE=--enable-zlib --disable-libopenjpeg --disable-poppler-glib \
--disable-gtk-test --disable-poppler-qt4 \
--disable-poppler-cpp --disable-utils \
--disable-dependency-tracking --disable-shared \
--prefix=$(DEP_ROOT)
POPPLER_MAKEFLAGS=
# ------------------------------------------------------------------------------
ifdef CROSS
# Configure flags for cross-compilation
POPPLER_CONFIGURE += --host=$(CROSS_HOST)
TIFF_CONFIGURE += --host=$(CROSS_HOST)
JPEG_CONFIGURE += --host=$(CROSS_HOST)
PNG_CONFIGURE += --host=$(CROSS_HOST)
LCMS_CONFIGURE += --host=$(CROSS_HOST)
PIXMAN_CONFIGURE += --host=$(CROSS_HOST)
FC_CONFIGURE += --host=$(CROSS_HOST)
FT_CONFIGURE += --host=$(CROSS_HOST)
CAIRO_CONFIGURE += --host=$(CROSS_HOST)
EXPAT_CONFIGURE += --host=$(CROSS_HOST)
WEBP_CONFIGURE += --host=$(CROSS_HOST)
# Make flags for cross compilation
ZLIB_MAKEFLAGS=CC=$(CROSS_HOST)-gcc LDSHARED="$(CROSS_HOST)-gcc -shared" LDSHAREDLIBC= AR=$(CROSS_HOST)-ar RANLIB=$(CROSS_HOST)-ranlib
endif
# ------------------------------------------------------------------------------
DEPENDENCIES = $(CAIRO_LIB) $(JBIG_LIB) $(POPPLER_LIB) $(FT_LIB) $(PNG_LIB) $(JPEG_LIB) $(TIFF_LIB) $(ZLIB_LIB) $(WEBP_LIB)
ifndef WINBUILD
# FontConfig is only required on Linux
DEPENDENCIES += $(FC_LIB)
endif
dependencies: $(DEPENDENCIES)
$(DEP_BUILD):
mkdir -p $@ $@/include $@/bin $@/lib
$(DEP_ROOT):
mkdir -p $@
.PHONY: clean-dependencies
clean-dependencies:
-rm -rf $(DEP_BUILD) $(DEP_ROOT)
# ------------------------------------------------------------------------------
$(POPPLER_LIB): $(POPPLER_DIR) $(DEP_ROOT) $(TIFF_LIB) $(PNG_LIB) $(JPEG_LIB) $(LCMS_LIB)
cd $(POPPLER_DIR) && \
env $(CONFIGURE_ENV) sh -c './configure $(POPPLER_CONFIGURE)'
make $(MAKEFLAGS) -C $(POPPLER_DIR) install
$(POPPLER_DIR): $(DEP_BUILD)/$(POPPLER_TAR)
if [ ! -d $(POPPLER_DIR) ]; then \
cd $(DEP_BUILD) && tar -xf $(POPPLER_TAR) ; \
fi
$(DEP_BUILD)/$(POPPLER_TAR): $(DEP_BUILD)
wget -cq -O $@ $(POPPLER_URL)
# ------------------------------------------------------------------------------
# On msys Zlib requires us to use their 'Makefile.gcc'
# When cross-compiling the ./configure script works fine...
$(ZLIB_LIB): $(ZLIB_DIR) $(DEP_ROOT)
ifdef WINBUILD
cd $(ZLIB_DIR) && env $(CONFIGURE_ENV) sh -c 'make -f win32/Makefile.gcc prefix=$(DEP_ROOT) install'
else
cd $(ZLIB_DIR) && ./configure $(ZLIB_CONFIGURE)
make $(MAKEFLAGS) -C $(ZLIB_DIR) install $(ZLIB_MAKEFLAGS)
endif
$(ZLIB_DIR): $(DEP_BUILD)/$(ZLIB_TAR)
if [ ! -d $(ZLIB_DIR) ]; then \
cd $(DEP_BUILD) && tar -xf $(ZLIB_TAR) ; \
fi
$(DEP_BUILD)/$(ZLIB_TAR): $(DEP_BUILD)
wget -cq -O $@ $(ZLIB_URL)
# ------------------------------------------------------------------------------
# expat is required for fontconfig
$(EXPAT_LIB): $(EXPAT_DIR) $(DEP_ROOT)
cd $(EXPAT_DIR) && \
env $(CONFIGURE_ENV) sh -c './configure $(EXPAT_CONFIGURE)'
make $(MAKEFLAGS) -C $(EXPAT_DIR) install $(EXPAT_MAKEFLAGS)
$(EXPAT_DIR): $(DEP_BUILD)/$(EXPAT_TAR)
if [ ! -d $(EXPAT_DIR) ]; then \
cd $(DEP_BUILD) && tar -xf $(EXPAT_TAR) ; \
fi
$(DEP_BUILD)/$(EXPAT_TAR): $(DEP_BUILD)
wget -cq -O $@ $(EXPAT_URL)
# ------------------------------------------------------------------------------
$(WEBP_LIB): $(WEBP_DIR) $(DEP_ROOT)
cd $(WEBP_DIR) && \
env $(CONFIGURE_ENV) sh -c './configure $(WEBP_CONFIGURE)'
make $(MAKEFLAGS) -C $(WEBP_DIR) install
$(WEBP_DIR): $(DEP_BUILD)/$(WEBP_TAR)
if [ ! -d $(WEBP_DIR) ]; then \
cd $(DEP_BUILD) && tar -xf $(WEBP_TAR) ; \
fi
$(DEP_BUILD)/$(WEBP_TAR): $(DEP_BUILD)
wget -cq -O $@ $(WEBP_URL)
# ------------------------------------------------------------------------------
$(PIXMAN_LIB): $(PIXMAN_DIR) $(DEP_ROOT)
cd $(PIXMAN_DIR) && \
env $(CONFIGURE_ENV) PNG_LIBS=-lpng sh -c './configure $(PIXMAN_CONFIGURE)'
make $(MAKEFLAGS) -C $(PIXMAN_DIR) install
$(PIXMAN_DIR): $(DEP_BUILD)/$(PIXMAN_TAR)
if [ ! -d $(PIXMAN_DIR) ]; then \
cd $(DEP_BUILD) && tar -xf $(PIXMAN_TAR) ; \
fi
$(DEP_BUILD)/$(PIXMAN_TAR): $(DEP_BUILD)
wget -cq -O $@ $(PIXMAN_URL)
# ------------------------------------------------------------------------------
$(FC_LIB): $(EXPAT_LIB) $(FC_DIR) $(DEP_ROOT)
cd $(FC_DIR) && \
env $(CONFIGURE_ENV) sh -c './configure $(FC_CONFIGURE)'
make $(MAKEFLAGS) -C $(FC_DIR) install
$(FC_DIR): $(DEP_BUILD)/$(FC_TAR)
if [ ! -d $(FC_DIR) ]; then \
cd $(DEP_BUILD) && tar -xf $(FC_TAR) ; \
fi
$(DEP_BUILD)/$(FC_TAR): $(DEP_BUILD)
wget -cq -O $@ $(FC_URL)
# ------------------------------------------------------------------------------
$(FT_LIB): $(FT_DIR) $(DEP_ROOT)
cd $(FT_DIR) && \
env $(CONFIGURE_ENV) sh -c './autogen.sh && ./configure $(FT_CONFIGURE)'
make $(MAKEFLAGS) -C $(FT_DIR) install
$(FT_DIR): $(DEP_BUILD)
if [ ! -d $(FT_DIR) ]; then git clone $(FT_GIT) $(FT_DIR); fi
cd $(FT_DIR) && git checkout $(FT_REV)
# ------------------------------------------------------------------------------
$(JBIG_LIB): $(JBIG_DIR) $(DEP_ROOT)
@make -C $(JBIG_DIR) $(MAKEFLAGS)
cp $(JBIG_DIR)/libjbig/libjbig.a $@
$(JBIG_DIR): $(DEP_BUILD)/$(JBIG_TAR)
if [ ! -d $(JPEG_DIR) ]; then \
cd $(DEP_BUILD) && tar -xf $(JBIG_TAR) ; \
fi
$(DEP_BUILD)/$(JBIG_TAR): $(DEP_BUILD)
wget -cq -O $@ $(JBIG_URL)
# ------------------------------------------------------------------------------
$(CAIRO_LIB): $(PNG_LIB) $(FT_LIB) $(PIXMAN_LIB) $(CAIRO_DIR) $(DEP_ROOT)
cd $(CAIRO_DIR) && \
env $(CONFIGURE_ENV) sh -c './configure $(CAIRO_CONFIGURE)'
make $(MAKEFLAGS) -C $(CAIRO_DIR) install
$(CAIRO_DIR): $(DEP_BUILD)/$(CAIRO_TAR)
if [ ! -d $(CAIRO_DIR) ]; then \
cd $(DEP_BUILD) && tar -xf $(CAIRO_TAR) ; \
fi
$(DEP_BUILD)/$(CAIRO_TAR): $(DEP_BUILD)
wget -cq -O $@ -c $(CAIRO_URL)
# ------------------------------------------------------------------------------
$(LCMS_LIB): $(LCMS_DIR) $(DEP_ROOT)
cd $(LCMS_DIR) && \
env $(CONFIGURE_ENV) sh -c 'libtoolize && autoreconf && ./configure $(LCMS_CONFIGURE)'
make $(MAKEFLAGS) -C $(LCMS_DIR) install
$(LCMS_DIR): $(DEP_BUILD)/$(LCMS_TAR)
if [ ! -d $(LCMS_DIR) ]; then \
cd $(DEP_BUILD) && tar -xf $(LCMS_TAR) ; \
fi
$(DEP_BUILD)/$(LCMS_TAR): $(DEP_BUILD)
wget -cq -O $@ $(LCMS_URL)
# ------------------------------------------------------------------------------
$(PNG_LIB): $(ZLIB_LIB) $(PNG_DIR) $(DEP_ROOT)
cd $(PNG_DIR) && \
env $(CONFIGURE_ENV) sh -c './configure $(PNG_CONFIGURE)'
make $(MAKEFLAGS) -C $(PNG_DIR) install
$(PNG_DIR): $(DEP_BUILD)/$(PNG_TAR)
if [ ! -d $(PNG_DIR) ]; then \
cd $(DEP_BUILD) && tar -xf $(PNG_TAR) ; \
fi
$(DEP_BUILD)/$(PNG_TAR): $(DEP_BUILD)
wget -cq -O $@ $(PNG_URL)
# ------------------------------------------------------------------------------
$(JPEG_LIB): $(JPEG_DIR) $(DEP_ROOT)
cd $(JPEG_DIR) && \
env $(CONFIGURE_ENV) sh -c './configure $(JPEG_CONFIGURE)'
make $(MAKEFLAGS) -C $(JPEG_DIR) install
$(JPEG_DIR): $(DEP_BUILD)/$(JPEG_TAR)
if [ ! -d $(JPEG_DIR) ]; then \
cd $(DEP_BUILD) && tar -xf $(JPEG_TAR) ; \
fi
$(DEP_BUILD)/$(JPEG_TAR): $(DEP_BUILD)
wget -cq -O $@ $(JPEG_URL)
# ------------------------------------------------------------------------------
$(TIFF_LIB): $(TIFF_DIR) $(DEP_ROOT)
cd $(TIFF_DIR) && \
env $(CONFIGURE_ENV) sh -c './configure $(TIFF_CONFIGURE)'
make $(MAKEFLAGS) -C $(TIFF_DIR) install
$(TIFF_DIR): $(DEP_BUILD)/$(TIFF_TAR)
if [ ! -d $(TIFF_DIR) ]; then \
cd $(DEP_BUILD) && tar -xf $(TIFF_TAR) ; \
fi
$(DEP_BUILD)/$(TIFF_TAR): $(DEP_BUILD)
wget -cq -O $@ $(TIFF_URL)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment