#!/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 the make program. : ${TL_MAKE=make} # make flags : ${TL_MAKE_FLAGS=} # set MAKE to $TL_MAKE for configure : ${MAKE=${TL_MAKE}} export MAKE if test "x$1" = x--no-clean; then shift else test -f Makefile && $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 # The idea is that with Build -g, you can set TL_COMPILER_GFLAGS in # the environment with options common to all compilers. # Not necessarily anything to do with debugging, e.g., -mcpu=sparvc9. : ${TL_COMPILER_GFLAGS=-g} c="CFLAGS='$TL_COMPILER_GFLAGS'" cxx="CXXFLAGS='$TL_COMPILER_GFLAGS'" objcxx="OBJCXXFLAGS='$TL_COMPILER_GFLAGS'" TL_BUILD_ENV="$c $cxx $objcxx $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} # default to supporting large files as much as possible; # see comments at --disable-largefile in README.config. : ${TL_CONF_LARGEFILE=--enable-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`" echo "on `uname -a`" echo "$0 $*" echo env | sort >buildenv.txt # set -vx # show the configure and make commands in the log. eval $TL_BUILD_ENV $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 $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 status=`cat exitstatus.txt` echo "done (exit status $status)" `date` | tee -a build.log exit $status