#!/bin/sh # $Id$ # Public domain. Originally written many years ago by Sebastian Rahtz. # To build again, try Build --no-clean. # To build without optimization, try Build --debug. # # Any other options given are passed along to configure, and everything can be # overridden with environment variables. # clean up environment unset TEXMFCNF; export TEXMFCNF LANG=C; export LANG # cd to our source directory. mydir=`dirname $0` cd $mydir || exit 1 : ${TL_WORKDIR=Work} # allow override of install destination. if test -z "$TL_INSTALL_DEST"; then H=`pwd` test -d inst || mkdir -p inst/texmf # avoid configure warnings TL_INSTALL_DEST=$H/inst fi # allow override of make program. : ${TL_MAKE=make} # make flags : ${TL_MAKE_FLAGS=} # set MAKE to $TL_MAKE for configure : ${MAKE=${TL_MAKE}} export MAKE # and then also set GNUMAKE to that, for the sake of freetype2/configure. : ${GNUMAKE=${TL_MAKE}} export GNUMAKE if test "x$1" = x--no-clean; then shift else test -f Makefile && $TL_MAKE clean rm -rf $TL_WORKDIR $TL_INSTALL_DEST fi : ${TL_BUILD_ENV=} if test "x$1" = x--debug || test "x$1" = x-g; then shift TL_BUILD_ENV="CFLAGS='-g $TL_GCFLAGS' CXXFLAGS=-g OBJCFLAGS=-g $TL_BUILD_ENV" fi test -d $TL_WORKDIR || mkdir $TL_WORKDIR cd $TL_WORKDIR || exit 1 # allow override of configure location, just in case. : ${TL_CONFIGURE=../configure} # Do not enable this unless you are testing new code. # It currently has no useful effect with the distributed sources. # http://tug.org/pipermail/tex-k/2010-September/002202.html : ${TL_CONF_LARGEFILE=--disable-largefile} # default to static linking. : ${TL_CONF_SHARED=--disable-shared} # default to terminate if requested programs or features must be disabled. : ${TL_CONF_MISSING=--disable-missing} # allow override of xdvi toolkit, default to standard xaw. : ${TL_CONF_XDVI_TOOLKIT=--with-xdvi-x-toolkit=xaw} # allow adding arbitrary other configure args, such as # --with-banner-add='/SomeDistro'. : ${TL_CONFIGURE_ARGS=} # allow override of make target. : ${TL_TARGET=world} # Kpathsea is not going to be able to find its cnf files during the # build, so omit the warning about it. : ${KPATHSEA_WARNING=0} # configure && make. Keep the tee outside, so that we can detect # failure at either step. { echo starting `date` on `uname -a` echo "$0 $*" echo set -vx # show the configure and make commands in the log. eval $TL_BUILD_ENV time $TL_CONFIGURE \ --prefix=$TL_INSTALL_DEST \ --datadir=$TL_INSTALL_DEST \ $TL_CONF_BANNER \ $TL_CONF_SHARED \ $TL_CONF_MISSING \ $TL_CONF_LARGEFILE \ $TL_CONF_XDVI_TOOLKIT \ $TL_CONFIGURE_ARGS \ "$@" \ && eval $TL_BUILD_ENV time $TL_MAKE $TL_MAKE_FLAGS $TL_TARGET # Too arcane to try to propagate the exit status through a pipeline. # Just use a temp file. echo $? >exitstatus.txt } 2>&1 | tee build.log # if we have a bindir, report the number of binaries built. bindir=$TL_INSTALL_DEST/bin if test -d "$bindir"; then count=`find "$bindir" \! -type d -print | wc -l` if test "$count" -gt 0; then echo echo "$0: $count executables in $bindir." else echo "$0: Build failed, no executables under $bindir." echo "$0: Full log in `pwd`/build.log." exit 1 fi | tee -a build.log # if no bindir, perhaps they specified --prefix; don't worry. # Any errors will have been duly reported anyway. fi echo done `date` | tee -a build.log exit `cat exitstatus.txt`