#!/bin/bash # vars SELF="${BASH_SOURCE[0]}" SELF_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd -P) SELF_DIR="${SELF_DIR:-$(pwd)}" TOOLS_DIR="${SELF_DIR}/tools" BUILD_DIR="${TOOLS_DIR}/local/build" INSTALL_DIR="${TOOLS_DIR}/local" TOOLS=('discount' 'zlib' 'libpng' 'pngquant' 'zopfli') # discount function build_discount { ./configure.sh --prefix="${INSTALL_DIR}" || return 1 make || return 1 make install || return 1 } # zlib function build_zlib { ./configure --static --prefix="${INSTALL_DIR}" || return 1 make || return 1 make install || return 1 rm -f "${INSTALL_DIR}/lib/libz*.dylib" } # libpng function build_libpng { rm -rf Makefile.in aclocal.m4 automate.cache/ compile config.guess config.h.in config.sub configure depcomp install-sh ltmain.sh missing scripts/libtool.m4 scripts/ltoptions.m4 scripts/ltsugar.m4 scripts/ltversion.m4 scripts/lt~obsolete.m4 test-driver || return 1 ./autogen.sh || return 1 CFLAGS="-I${INSTALL_DIR}/include" CPPFLAGS="-I${INSTALL_DIR}/include" LDFLAGS="-L${INSTALL_DIR}/lib -lz" ./configure --with-zlib-prefix="${INSTALL_DIR}" --prefix="${INSTALL_DIR}" --disable-shared --enable-static || return 1 make || return 1 make install || return 1 } # pngquant function build_pngquant { ./configure --extra-cflags="-I${INSTALL_DIR}/include" --extra-ldflags="-L${INSTALL_DIR}/lib -lz" --prefix="${INSTALL_DIR}" --with-libpng="${INSTALL_DIR}" --without-cocoa || return 1 sed -i.sedbak -e 's:-L/usr/lib -lz::g' config.mk || return 1 rm -f config.mk.sedbak make || return 1 make install || return 1 } # zopfli function build_zopfli { make zopfli zopflipng || return 1 cp zopfli zopflipng "${INSTALL_DIR}/bin" || return 1 } # main rm -rf "${INSTALL_DIR}" rm -rf "${BUILD_DIR}" mkdir -p "${BUILD_DIR}" cd "${BUILD_DIR}" ERROR=false echo "Building:" for TOOL in "${TOOLS[@]}"; do echo " ${TOOL}" cp -R "${TOOLS_DIR}/${TOOL}" "${BUILD_DIR}/" rm -rf "${BUILD_DIR}/${TOOL}/.git" cd "${BUILD_DIR}/${TOOL}" if ! build_${TOOL} >/dev/null 2>&1; then ERROR=true echo "Unable to build tool: ${TOOL}" >&2 break fi done rm -rf "${BUILD_DIR}" # done if [[ "${ERROR}" == true ]]; then exit 1 fi echo "Complete." exit 0