1#!/bin/bash
2set -eu
3set -o pipefail
4
5if [ -d `pwd`/mpich/bin ]; then
6  export PATH=`pwd`/mpich/bin:$PATH
7fi
8if [ -d `pwd`/texlive/bin ]; then
9  export PATH=`pwd`/texlive/bin/`uname -m`-linux:$PATH
10fi
11if [ -d `pwd`/formlib ]; then
12  export FORMPATH=`pwd`/formlib
13fi
14
15# Print all executed commands to the log.
16set -x
17
18case $CI_TARGET in
19  form)
20    autoreconf -iv
21    ./configure --disable-dependency-tracking --enable-scalar --disable-threaded --disable-parform --with-gmp --with-zlib
22    make
23    ./check/check.rb ./sources/form --stat
24    ./check/check.rb ./sources/form --stat -C forcer --timeout 60
25    ;;
26  tform)
27    autoreconf -iv
28    ./configure --disable-dependency-tracking --disable-scalar --enable-threaded --disable-parform --with-gmp --with-zlib
29    make
30    ./check/check.rb ./sources/tform --stat
31    ./check/check.rb ./sources/tform --stat -C forcer --timeout 60
32    ;;
33  parform)
34    autoreconf -iv
35    ./configure --disable-dependency-tracking --disable-scalar --disable-threaded --enable-parform --with-gmp --with-zlib
36    make
37    ./check/check.rb ./sources/parform --stat
38    ;;
39  form-i386)
40    # Use Docker (travis-ci/travis-ci#5770).
41    docker exec -i -t build_test /bin/sh -c "export CI_TARGET=form && cd $(pwd) && linux32 --32bit i386 ./scripts/travis-script.sh"
42    ;;
43  tform-i386)
44    # Use Docker (travis-ci/travis-ci#5770).
45    docker exec -i -t build_test /bin/sh -c "export CI_TARGET=tform && cd $(pwd) && linux32 --32bit i386 ./scripts/travis-script.sh"
46    ;;
47  sanitize-vorm)
48    autoreconf -iv
49    ./configure --disable-dependency-tracking --enable-scalar --disable-threaded --disable-parform --enable-debug --enable-sanitize --with-gmp --with-zlib
50    make -C sources vorm
51    ./check/check.rb ./sources/vorm --stat --timeout 60
52    ;;
53  sanitize-tvorm)
54    autoreconf -iv
55    ./configure --disable-dependency-tracking --disable-scalar --enable-threaded --disable-parform --enable-debug --enable-sanitize --with-gmp --with-zlib
56    make -C sources tvorm
57    ./check/check.rb ./sources/tvorm --stat --timeout 60
58    ;;
59  sanitize-parvorm)
60    autoreconf -iv
61    ./configure --disable-dependency-tracking --disable-scalar --disable-threaded --enable-parform --enable-debug --enable-sanitize --with-gmp --with-zlib
62    make -C sources parvorm
63    ./check/check.rb ./sources/parvorm --stat --timeout 60
64    ;;
65  coverage-vorm)
66    autoreconf -iv
67    ./configure --disable-dependency-tracking --enable-scalar --disable-threaded --disable-parform --enable-debug --enable-coverage --with-gmp --with-zlib
68    make -C sources vorm
69    ./check/check.rb ./sources/vorm --stat --timeout 30
70    ;;
71  coverage-tvorm)
72    autoreconf -iv
73    ./configure --disable-dependency-tracking --disable-scalar --enable-threaded --disable-parform --enable-debug --enable-coverage --with-gmp --with-zlib
74    make -C sources tvorm
75    ./check/check.rb ./sources/tvorm --stat --timeout 30
76    ;;
77  coverage-parvorm)
78    autoreconf -iv
79    ./configure --disable-dependency-tracking --disable-scalar --disable-threaded --enable-parform --enable-debug --enable-coverage --with-gmp --with-zlib
80    make -C sources parvorm
81    ./check/check.rb ./sources/parvorm --stat --timeout 30
82    ;;
83  valgrind-vorm)
84    autoreconf -iv
85    ./configure --disable-dependency-tracking --enable-scalar --disable-threaded --disable-parform --enable-debug --with-gmp --with-zlib
86    make -C sources vorm
87    ./check/check.rb valgrind ./sources/vorm --stat $TEST
88    ;;
89  valgrind-tvorm)
90    autoreconf -iv
91    ./configure --disable-dependency-tracking --disable-scalar --enable-threaded --disable-parform --enable-debug --with-gmp --with-zlib
92    make -C sources tvorm
93    ./check/check.rb valgrind ./sources/tvorm --stat $TEST
94    ;;
95  valgrind-parvorm)
96    autoreconf -iv
97    ./configure --disable-dependency-tracking --disable-scalar --disable-threaded --enable-parform --enable-debug --with-gmp --with-zlib
98    make -C sources parvorm
99    ./check/check.rb valgrind ./sources/parvorm --stat $TEST
100    ;;
101  src-release)
102    distname=form-`./scripts/git-version-gen.sh -r | sed '2q;d' | sed 's/^v//'`
103    distdir=$distname
104    autoreconf -iv
105    ./configure --disable-dependency-tracking
106    make distdir=$distdir distcheck
107    ls -l $distdir.tar.gz && file $distdir.tar.gz
108    ;;
109  doc-pdf-release)
110    distname=form-`./scripts/git-version-gen.sh -r | sed '2q;d' | sed 's/^v//'`
111    distname=$distname-manual
112    autoreconf -iv
113    ./configure --disable-dependency-tracking
114    make pdf
115    cp doc/manual/manual.pdf $distname.pdf
116    ls -l $distname.pdf && file $distname.pdf
117    ;;
118  doc-html-release)
119    distname=form-`./scripts/git-version-gen.sh -r | sed '2q;d' | sed 's/^v//'`
120    distdir=$distname-manual-html
121    autoreconf -iv
122    ./configure --disable-dependency-tracking
123    make -C doc/manual latex2html
124    (
125      cd doc/manual/manual
126      rm -f images.aux images.idx images.log images.pl images.tex internals.pl labels.pl WARNINGS
127    )
128    cp -r doc/manual/manual $distdir
129    tar c $distdir/* | gzip -c -9 > $distdir.tar.gz
130    ls -l $distdir.tar.gz && file $distdir.tar.gz
131    ;;
132  bin-release)
133    distname=form-`./scripts/git-version-gen.sh -r | sed '2q;d' | sed 's/^v//'`
134    distdir=$distname-`uname -m`-$TRAVIS_OS_NAME
135    autoreconf -iv
136    if [ "x$TRAVIS_OS_NAME" = xosx ]; then
137      # --static fails on macOS but we want to statically link to brewed gmp.
138      # The linker supports neither -Wl,-static nor -l:libgmp.a.
139      # Make a library directory with libgmp.a but without libgmp.dylib.
140      mkdir static-lib
141      ln -s /usr/local/opt/gmp/lib/libgmp.a static-lib/libgmp.a
142      export LIBRARY_PATH="`pwd`/static-lib:${LIBRARY_PATH:-}"
143      ./configure --disable-dependency-tracking --disable-native  --enable-scalar --enable-threaded
144    else
145      ./configure --disable-dependency-tracking --enable-static-link --disable-native --enable-scalar --enable-threaded
146    fi
147    make
148    make check TEST_OPTS=--stat
149    mkdir $distdir
150    cp sources/form sources/tform $distdir
151    tar c $distdir/* | gzip -c -9 > $distdir.tar.gz
152    ls -l $distdir.tar.gz && file $distdir.tar.gz sources/form sources/tform
153    if [ "x$TRAVIS_OS_NAME" = xosx ]; then
154      otool -L sources/form sources/tform
155      # Check if gmp is statically linked.
156      if otool -L sources/form sources/tform | grep -q gmp; then
157        echo 'Error: failed to statically link to gmp' >&2
158        exit 1
159      fi
160    fi
161    ;;
162  *)
163    echo "Error: unknown CI_TARGET=$CI_TARGET" >&2
164    exit 1
165    ;;
166esac
167