#!/bin/sh # # This script builds a stand-alone binary for the command line version of # ttfautohint, downloading any necessary libraries. # # Version 2017-Aug-17. # Written by Werner Lemberg . # To the extent possible under law, the person who associated CC0 with this work # has waived all copyright and related or neighboring rights to this work. # # User configuration. # # The build directory. BUILD="$HOME/ttfautohint-build" # The library versions. FREETYPE_VERSION="2.8" HARFBUZZ_VERSION="1.4.8" TTFAUTOHINT_VERSION="1.6" # Necessary patches (lists of at most 10 URLs each separated by whitespace, # to be applied in order). FREETYPE_PATCHES="" HARFBUZZ_PATCHES="" TTFAUTOHINT_PATCHES="" # # Nothing to configure below this comment. # FREETYPE="freetype-$FREETYPE_VERSION" HARFBUZZ="harfbuzz-$HARFBUZZ_VERSION" TTFAUTOHINT="ttfautohint-$TTFAUTOHINT_VERSION" if test -d "$BUILD" -o -f "$BUILD"; then echo "Build directory \`$BUILD' must not exist." exit 1 fi INST="$BUILD/local" mkdir "$BUILD" mkdir "$INST" cd "$BUILD" echo "#####" echo "Download all necessary archives and patches." echo "#####" curl -L -O "http://download.savannah.gnu.org/releases/freetype/$FREETYPE.tar.gz" curl -O "https://www.freedesktop.org/software/harfbuzz/release/$HARFBUZZ.tar.bz2" curl -L -O "http://download.savannah.gnu.org/releases/freetype/$TTFAUTOHINT.tar.gz" count=0 for i in $FREETYPE_PATCHES do curl -o ft-patch-$count.diff $i count=`expr $count + 1` done count=0 for i in $HARFBUZZ_PATCHES do curl -o hb-patch-$count.diff $i count=`expr $count + 1` done count=0 for i in $TTFAUTOHINT_PATCHES do curl -o ta-patch-$count.diff $i count=`expr $count + 1` done # Our environment variables. TA_CPPFLAGS="-I$INST/include" TA_CFLAGS="-g -O2" TA_CXXFLAGS="-g -O2" TA_LDFLAGS="-L$INST/lib" echo "#####" echo "Extract archives." echo "#####" tar -xzvf "$FREETYPE.tar.gz" tar -xjvf "$HARFBUZZ.tar.bz2" tar -xzvf "$TTFAUTOHINT.tar.gz" echo "#####" echo "Apply patches." echo "#####" cd "$FREETYPE" for i in ../ft-patch-*.diff do test -f $i || continue patch --forward \ --strip=1 \ --reject-file=- \ < $i done cd .. cd "$HARFBUZZ" for i in ../hb-patch-*.diff do test -f $i || continue patch --forward \ --strip=1 \ --reject-file=- \ < $i done cd .. cd "$TTFAUTOHINT" for i in ../ta-patch-*.diff do test -f $i || continue patch --forward \ --strip=1 \ --reject-file=- \ < $i done cd .. echo "#####" echo "$FREETYPE" echo "#####" cd "$FREETYPE" ./configure \ --without-bzip2 \ --without-png \ --without-zlib \ --without-harfbuzz \ --prefix="$INST" \ --enable-static \ --disable-shared \ CFLAGS="$TA_CPPFLAGS $TA_CFLAGS" \ CXXFLAGS="$TA_CPPFLAGS $TA_CXXFLAGS" \ LDFLAGS="$TA_LDFLAGS" make make install cd .. echo "#####" echo "$HARFBUZZ" echo "#####" cd "$HARFBUZZ" ./configure \ --disable-dependency-tracking \ --disable-gtk-doc-html \ --with-glib=no \ --with-cairo=no \ --with-fontconfig=no \ --with-icu=no \ --prefix="$INST" \ --enable-static \ --disable-shared \ CFLAGS="$TA_CPPFLAGS $TA_CFLAGS" \ CXXFLAGS="$TA_CPPFLAGS $TA_CXXFLAGS" \ LDFLAGS="$TA_LDFLAGS" \ PKG_CONFIG=true \ FREETYPE_CFLAGS="-I$INST/include/freetype2" \ FREETYPE_LIBS="-L$INST/lib -lfreetype" make make install cd .. echo "#####" echo "$TTFAUTOHINT" echo "#####" cd "$TTFAUTOHINT" ./configure \ --disable-dependency-tracking \ --without-qt \ --without-doc \ --prefix="$INST" \ --enable-static \ --disable-shared \ --with-freetype-config="$INST/bin/freetype-config" \ CFLAGS="$TA_CPPFLAGS $TA_CFLAGS" \ CXXFLAGS="$TA_CPPFLAGS $TA_CXXFLAGS" \ LDFLAGS="$TA_LDFLAGS" \ PKG_CONFIG=true \ HARFBUZZ_CFLAGS="-I$INST/include/harfbuzz" \ HARFBUZZ_LIBS="-L$INST/lib -lharfbuzz" make LDFLAGS="$TA_LDFLAGS -all-static" make install-strip cd .. echo "#####" echo "binary: $INST/bin/ttfautohint" echo "#####" # eof