summaryrefslogtreecommitdiff
path: root/Build/source/Build
blob: 76d72dc539cd92cad9f8dac811849faca8951ee1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/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

status=`cat exitstatus.txt`
echo "done (exit status $status)" `date` | tee -a build.log

exit $status