diff options
Diffstat (limited to 'dist/linux/build.sh')
-rwxr-xr-x | dist/linux/build.sh | 144 |
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 |