aboutsummaryrefslogtreecommitdiffstats
path: root/dist/linux/build.sh
diff options
context:
space:
mode:
author1138-4EB <1138-4EB@users.noreply.github.com>2017-12-12 21:55:52 +0100
committertgingold <tgingold@users.noreply.github.com>2017-12-16 20:29:52 +0100
commit5ca9bee36d81c34d16711efd4910c4ef3278fb3e (patch)
tree8aa13d5febcb243579550abd7504fc3c5bf9a7a9 /dist/linux/build.sh
parente89bb574675e6225110a654f712b8ea916609cc2 (diff)
downloadghdl-5ca9bee36d81c34d16711efd4910c4ef3278fb3e.tar.gz
ghdl-5ca9bee36d81c34d16711efd4910c4ef3278fb3e.tar.bz2
ghdl-5ca9bee36d81c34d16711efd4910c4ef3278fb3e.zip
use travis stages, use docker multistage builds
Diffstat (limited to 'dist/linux/build.sh')
-rwxr-xr-xdist/linux/build.sh144
1 files changed, 144 insertions, 0 deletions
diff --git a/dist/linux/build.sh b/dist/linux/build.sh
new file mode 100755
index 000000000..d6f5a3a20
--- /dev/null
+++ b/dist/linux/build.sh
@@ -0,0 +1,144 @@
+#! /bin/bash
+
+. dist/linux/travis-utils.sh
+. dist/ansi_color.sh
+disable_color
+
+echo "$0" "$@"
+
+# Stop in case of error
+set -e
+
+# Transform long options to short ones
+for arg in "$@"; do
+ shift
+ case "$arg" in
+ "--color"|"-color") set -- "$@" "-c";;
+ "--build"|"-build") set -- "$@" "-b";;
+ "--pkg"|"-pkg") set -- "$@" "-p";;
+ "--gpl"|"-gpl") set -- "$@" "-g";;
+ *) set -- "$@" "$arg"
+ esac
+done
+# Parse args
+while getopts ":b:p:cg" opt; do
+ case $opt in
+ c) enable_color;;
+ b) BLD=$OPTARG ;;
+ p) PKG_NAME=$OPTARG;;
+ g) ISGPL=true;;
+ \?) printf "$ANSI_RED[GHDL - build] Invalid option: -$OPTARG $ANSI_NOCOLOR\n" >&2
+ exit 1 ;;
+ :) printf "$ANSI_RED[GHDL - build] Option -$OPTARG requires an argument. $ANSI_NOCOLOR\n" >&2
+ exit 1 ;;
+ esac
+done
+
+rm -f build_ok
+
+#--- Env
+
+echo "travis_fold:start:env.docker"
+printf "$ANSI_YELLOW[Info] Environment $ANSI_NOCOLOR\n"
+env
+echo "travis_fold:end:env.docker"
+
+#--- GPL: gpl-ize sources
+
+if [ "$ISGPL" = "true" ]; then
+ echo "travis_fold:start:gpl.src"
+ printf "$ANSI_YELLOW[Source] create GPL sources $ANSI_NOCOLOR\n"
+ files=`echo *`
+ make -f Makefile.in srcdir=. clean-pure-gpl
+ mkdir ${PKG_NAME}
+ cp -pdrl $files ${PKG_NAME}
+ tar -zcf "${PKG_NAME}.tar.gz" ${PKG_NAME}
+ PKG_NAME="${PKG_NAME}-${BLD}"
+ echo "travis_fold:end:gpl.src"
+fi
+
+#--- Configure
+
+echo "travis_fold:start:configure"
+printf "$ANSI_YELLOW[GHDL - build] Configure $ANSI_NOCOLOR\n"
+
+CDIR=$(pwd)
+export prefix="$CDIR/install-$BLD"
+mkdir "$prefix"
+mkdir "build-$BLD"
+cd "build-$BLD"
+
+case "$BLD" in
+ mcode)
+ config_opts=""
+ CXX=""
+ ;;
+ llvm)
+ CXX="clang"
+ config_opts="--with-llvm-config CXX=$CXX"
+ ;;
+ llvm-3.5)
+ CXX="clang++"
+ config_opts="--with-llvm-config=llvm-config-3.5 CXX=$CXX"
+ ;;
+ llvm-3.8)
+ CXX="clang++-3.8"
+ config_opts="--with-llvm-config=llvm-config-3.8 CXX=$CXX"
+ ;;
+ llvm-3.9)
+ CXX="clang++-3.9"
+ config_opts="--with-llvm-config=llvm-config-3.9 CXX=$CXX"
+ ;;
+ llvm-4.0)
+ CXX="clang++-4.0"
+ config_opts="--with-llvm-config=llvm-config-4.0 CXX=$CXX"
+ ;;
+ llvm-5.0)
+ CXX="clang++-5.0"
+ config_opts="--with-llvm-config=llvm-config-5.0 CXX=$CXX"
+ ;;
+ *)
+ echo "$ANSI_RED[GHDL - build] Unknown build $BLD $ANSI_NOCOLOR"
+ exit 1;;
+esac
+DEP_CLANG=""
+if [ "$CXX" != "" ]; then
+ DEP_CLANG="`$CXX --version | grep 'clang'`"
+fi
+echo "../configure --prefix=$prefix $config_opts"
+../configure "--prefix=$prefix" $config_opts
+echo "travis_fold:end:configure"
+
+#--- make
+
+echo "travis_fold:start:make"
+travis_time_start
+printf "$ANSI_YELLOW[GHDL - build] Make $ANSI_NOCOLOR\n"
+make
+travis_time_finish
+echo "travis_fold:end:make"
+
+echo "travis_fold:start:install"
+printf "$ANSI_YELLOW[GHDL - build] Install $ANSI_NOCOLOR\n"
+make install
+cd ..
+echo "travis_fold:end:install"
+
+#--- package
+
+echo "travis_fold:start:tar.bin"
+printf "$ANSI_YELLOW[GHDL - build] Create package ${ANSI_DARKCYAN}${PKG_NAME}.tgz $ANSI_NOCOLOR\n"
+tar -zcvf "${PKG_NAME}.tgz" -C "$prefix" .
+echo "travis_fold:end:tar.bin"
+
+#--- build tools versions
+
+printf "%s\n" \
+ "`make --version | grep 'Make'`" \
+ "`gnat --version | grep 'GNAT'`" \
+ "`gcc --version | grep 'gcc'`" "$DEP_CLANG" > BUILD_TOOLS
+
+#---
+
+echo "[SUCCESSFUL]"
+touch build_ok