You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
3.6 KiB
163 lines
3.6 KiB
#!/bin/sh |
|
# Copyright (c) 2017-2018 Petr Vorel <pvorel@suse.cz> |
|
# Script for travis builds. |
|
# |
|
# TODO: Implement comparison of installed files. List of installed files can |
|
# be used only for local builds as Travis currently doesn't support sharing |
|
# file between jobs, see |
|
# https://github.com/travis-ci/travis-ci/issues/6054 |
|
|
|
set -e |
|
|
|
DEFAULT_PREFIX="$HOME/ltp-install" |
|
DEFAULT_BUILD="native" |
|
DEFAULT_TREE="in" |
|
CONFIGURE_OPTS_IN_TREE="--with-open-posix-testsuite --with-realtime-testsuite" |
|
# TODO: open posix testsuite is currently broken in out-tree-build. Enable it once it's fixed. |
|
CONFIGURE_OPTS_OUT_TREE="--with-realtime-testsuite" |
|
MAKE_OPTS="-j$(getconf _NPROCESSORS_ONLN)" |
|
CC=gcc |
|
|
|
build_32() |
|
{ |
|
echo "===== 32-bit ${1}-tree build into $PREFIX =====" |
|
build $1 CFLAGS="-m32" CXXFLAGS="-m32" LDFLAGS="-m32" |
|
} |
|
|
|
build_native() |
|
{ |
|
echo "===== native ${1}-tree build into $PREFIX =====" |
|
build $1 |
|
} |
|
|
|
build_cross() |
|
{ |
|
local host="${CC%-gcc}" |
|
[ -n "$host" ] || \ |
|
{ echo "Missing CC variable, pass it with -c option." >&2; exit 1; } |
|
|
|
echo "===== cross-compile ${host} ${1}-tree build into $PREFIX =====" |
|
build $1 "--host=$host" CROSS_COMPILE="${host}-" |
|
} |
|
|
|
build() |
|
{ |
|
local tree="$1" |
|
shift |
|
|
|
echo "=== autotools ===" |
|
make autotools |
|
|
|
if [ "$tree" = "in" ]; then |
|
build_in_tree $@ |
|
else |
|
build_out_tree $@ |
|
fi |
|
} |
|
|
|
build_out_tree() |
|
{ |
|
local tree="$PWD" |
|
local build="$tree/../ltp-build" |
|
local make_opts="$MAKE_OPTS -C $build -f $tree/Makefile top_srcdir=$tree top_builddir=$build" |
|
|
|
mkdir -p $build |
|
cd $build |
|
run_configure $tree/configure $CONFIGURE_OPTS_OUT_TREE CC="$CC" $@ |
|
|
|
echo "=== build ===" |
|
make $make_opts |
|
|
|
echo "=== install ===" |
|
make $make_opts DESTDIR="$PREFIX" SKIP_IDCHECK=1 install |
|
} |
|
|
|
build_in_tree() |
|
{ |
|
run_configure ./configure $CONFIGURE_OPTS_IN_TREE CC="$CC" --prefix=$PREFIX $@ |
|
|
|
echo "=== build ===" |
|
make $MAKE_OPTS |
|
|
|
echo "=== install ===" |
|
make $MAKE_OPTS install |
|
} |
|
|
|
run_configure() |
|
{ |
|
local configure=$1 |
|
shift |
|
|
|
echo "=== configure $configure $@ ===" |
|
if ! $configure $@; then |
|
echo "== ERROR: configure failed, config.log ==" |
|
cat config.log |
|
exit 1 |
|
fi |
|
|
|
echo "== include/config.h ==" |
|
cat include/config.h |
|
} |
|
|
|
usage() |
|
{ |
|
cat << EOF |
|
Usage: |
|
$0 [ -c CC ] [ -o TREE ] [ -p DIR ] [ -t TYPE ] |
|
$0 -h |
|
|
|
Options: |
|
-h Print this help |
|
-c CC Define compiler (\$CC variable) |
|
-o TREE Specify build tree, default: $DEFAULT_TREE |
|
-p DIR Change installation directory. For in-tree build is this value passed |
|
to --prefix option of configure script. For out-of-tree build is this |
|
value passed to DESTDIR variable (i.e. sysroot) of make install |
|
target, which means that LTP will be actually installed into |
|
DIR/PREFIX (i.e. DIR/opt/ltp). |
|
Default for in-tree build: '$DEFAULT_PREFIX' |
|
Default for out-of-tree build: '$DEFAULT_PREFIX/opt/ltp' |
|
-t TYPE Specify build type, default: $DEFAULT_BUILD |
|
|
|
BUILD TREE: |
|
in in-tree build |
|
out out-of-tree build |
|
|
|
BUILD TYPES: |
|
32 32-bit in-tree build |
|
cross cross-compile in-tree build (requires set compiler via -c switch) |
|
native native in-tree build |
|
EOF |
|
} |
|
|
|
PREFIX="$DEFAULT_PREFIX" |
|
build="$DEFAULT_BUILD" |
|
tree="$DEFAULT_TREE" |
|
|
|
while getopts "c:ho:p:t:" opt; do |
|
case "$opt" in |
|
c) CC="$OPTARG";; |
|
h) usage; exit 0;; |
|
o) case "$OPTARG" in |
|
in|out) tree="$OPTARG";; |
|
*) echo "Wrong build tree '$OPTARG'" >&2; usage; exit 1;; |
|
esac;; |
|
p) PREFIX="$OPTARG";; |
|
t) case "$OPTARG" in |
|
32|cross|native) build="$OPTARG";; |
|
*) echo "Wrong build type '$OPTARG'" >&2; usage; exit 1;; |
|
esac;; |
|
?) usage; exit 1;; |
|
esac |
|
done |
|
|
|
cd `dirname $0` |
|
|
|
echo "=== ver_linux ===" |
|
./ver_linux |
|
echo |
|
|
|
echo "=== compiler version ===" |
|
$CC --version |
|
|
|
eval build_$build $tree
|
|
|