#!/bin/bash

set -e                     # Terminate script at the first line that fails.
set -o pipefail            # Return the first non-zero pipe command error.
set -x                     # Print commands as they are executed

# This script performs an automated build on i686-pc-mingw32 of
# cross llvm-gcc for arm-eabi-hard-float. It assumes the valid native
# compiler for i686-pc-mingw32 is in place and available as well as
# cross libraries and headers for arm-eabi.

# --build=i686-pc-mingw32
# --host=i686-pc-mingw32
# --target=arm-none-linux-gnueabi

# The usage:
# Run this build from the build from the build root directory as
# llvm-gcc-mingw32-cross-arm-linux-gnueabi-hard-float [<step>] [<extra args>]


# Expected project tree structure:
# <build root>
#    +-- ${LLVM_src}
#    +-- ${LLVM_GCC_src}
#    +-- ${LLVM_obj}
#    +-- ${LLVM_GCC_obj}
#    +-- ${INSTALL}

LLVM_src=llvm.src          # The LLVM source code root directory name.
LLVM_GCC_src=llvm-gcc.src  # The LLVM-GCC source code root directory name.
LLVM_obj=llvm.obj          # The LLVM build root directory name.
LLVM_GCC_obj=llvm-gcc.obj  # The LLVM-GCC build root directory name.
INSTALL=install            # Where the result will be installed.

BUILD_ROOT=$PWD                          # Where build happens.
PRIVATE_INSTALL=${BUILD_ROOT}/${INSTALL} # Where the result will be installed.

#------------------------------------------------------------------------------
# Define build steps, parse and validate input parameters
#------------------------------------------------------------------------------

# This script supports the following steps:
do_clean=no                # Clean up the build directory.
do_copy_cross_tools=no     # Copy cross-tools.
do_configure_llvm=no       # Configure LLVM.
do_make_llvm=no            # Make LLVM.
do_install_llvm=no         # Install LLVM-GCC.
do_test_llvm=no            # Test LLVM.
do_configure_llvmgcc=no    # Configure LLVM-GCC.
do_make_llvmgcc=no         # Make LLVM-GCC.
do_install_llvmgcc=no      # Install LLVM-GCC.
do_all=no                  # Runs all steps at once when requested.

# Set step parameter
if (( $# == 0 )) ; then
   do_all=yes
fi
# else
if (( ! $# == 0 )) ; then
   # First check that the parameter actually defines a step.
   case $1 in
      clean             |  \
      copy_cross_tools  |  \
      configure_llvm    |  \
      make_llvm         |  \
      install_llvm      |  \
      test_llvm         |  \
      configure_llvmgcc |  \
      make_llvmgcc      |  \
      install_llvmgcc   |  \
      all)
         eval do_$1=yes    # Set the flag for the requested step .
         shift             # Remove it since is is ours and already precessed.
         ;;

      *)
         # Not our parameter. Pass it as is.
   esac
fi

# Set all steps if do_all requested
if [ "$do_all" == "yes" ] ; then
   # Set all steps to yes
   do_clean=yes
   do_copy_cross_tools=yes
   do_configure_llvm=yes
   do_make_llvm=yes
   do_install_llvm=yes
   do_test_llvm=yes
   do_configure_llvmgcc=yes
   do_make_llvmgcc=yes
   do_install_llvmgcc=yes
fi

#------------------------------------------------------------------------------
# Step: Clean up.
#------------------------------------------------------------------------------
if [ "$do_clean" == "yes" ] ; then

   # Remove everything from where we will be installing the result.
   rm -rf ${PRIVATE_INSTALL}
   mkdir -p ${PRIVATE_INSTALL}
   chmod a+rx ${PRIVATE_INSTALL}

fi

#------------------------------------------------------------------------------
# Step: Copy cross-tools
#------------------------------------------------------------------------------
if [ "$do_copy_cross_tools" == "yes" ] ; then

   # We need a local copy of binutils, system libraries and headers,
   # since we will be installing there.
   cp -Ru /c/cross-h/* ${PRIVATE_INSTALL}
 
fi

#------------------------------------------------------------------------------
# Step: Configure LLVM.
#------------------------------------------------------------------------------
if [ "$do_configure_llvm" == "yes" ] ; then

   # Remove previously build files if any.
   rm -rf ${BUILD_ROOT}/${LLVM_obj}
   mkdir -p ${BUILD_ROOT}/${LLVM_obj}
   chmod a+rx ${BUILD_ROOT}/${LLVM_obj}
   cd ${BUILD_ROOT}/${LLVM_obj}
   
   ../${LLVM_src}/configure --prefix=${PRIVATE_INSTALL} \
      --with-sysroot=${PRIVATE_INSTALL}                 \
      --with-lib-path=${PRIVATE_INSTALL}/lib            \
      --build=i686-pc-mingw32                           \
      --host=i686-pc-mingw32                            \
      --target=arm-none-linux-gnueabi                   \
      --disable-shared                                  \
      --disable-multilib                                \
      --disable-nls                                     \
      --disable-sjlj-exceptions                         \
      --with-cpu=cortex-a9                              \
      --with-fpu=neon                                   \
      --with-abi=aapcs                                  \
      --with-float=hard                                 \
      --disable-bootstrap                               \
      --with-gcc                                        \
      --with-gnu-as                                     \
      --with-gnu-ld                                     \
      --disable-werror                                  \
      $@  # Extra args if any

fi

#------------------------------------------------------------------------------
# Step: Make LLVM.
#------------------------------------------------------------------------------
if [ "$do_make_llvm" == "yes" ] ; then

   cd ${BUILD_ROOT}/${LLVM_obj}
   # NOTE: Do not build with ENABLE_OPTIMIZED=1 - some test fail after it.
   nice -n 20 make all VERBOSE=1 \
      $@  # Extra args if any, like -j16 for example.

fi

#------------------------------------------------------------------------------
# Step: Install LLVM.
#------------------------------------------------------------------------------
if [ "$do_install_llvm" == "yes" ] ; then

   cd ${BUILD_ROOT}/${LLVM_obj}
   # NOTE: Do not build with ENABLE_OPTIMIZED=1 - some test fail after it.
   nice -n 20 make install VERBOSE=1 \
      $@  # Extra args if any, like -j16 for example.
   
fi

#------------------------------------------------------------------------------
# Step: Test LLVM.
#------------------------------------------------------------------------------
if [ "$do_test_llvm" == "yes" ] ; then

   cd ${BUILD_ROOT}/${LLVM_obj}
   make check-lit VERBOSE=1 \
      $@  # Extra args if any, like -j16 for example.

fi

#------------------------------------------------------------------------------
# Step: Configure LLVM-GCC.
#------------------------------------------------------------------------------
if [ "$do_configure_llvmgcc" == "yes" ] ; then

   # Remove previously build files if any.
   rm -rf ${BUILD_ROOT}/${LLVM_GCC_obj}
   mkdir -p ${BUILD_ROOT}/${LLVM_GCC_obj}
   chmod a+rx ${BUILD_ROOT}/${LLVM_GCC_obj}
   cd ${BUILD_ROOT}/${LLVM_GCC_obj}

   ../${LLVM_GCC_src}/configure --prefix=${PRIVATE_INSTALL}      \
      --build=i686-pc-mingw32                                    \
      --host=i686-pc-mingw32                                     \
      --target=arm-none-linux-gnueabi                            \
      --disable-nls                                              \
      --enable-languages=c,c++                                   \
      --enable-llvm=${BUILD_ROOT}/${LLVM_obj}                    \
      --enable-checking                                          \
      --program-prefix=llvm-                                     \
      --disable-bootstrap                                        \
      --with-cpu=cortex-a9                                       \
      --with-fpu=neon                                            \
      --with-float=hard                                          \
      --with-abi=aapcs                                           \
      --disable-shared                                           \
      $@  # Extra args if any
      
fi

#------------------------------------------------------------------------------
# Step: Make LLVM-GCC.
#------------------------------------------------------------------------------
if [ "$do_make_llvmgcc" == "yes" ] ; then

   cd ${BUILD_ROOT}/${LLVM_GCC_obj}
   nice -n 20 make all \
      $@  # Extra args if any
      
fi

#------------------------------------------------------------------------------
# Step: Install LLVM-GCC.
#------------------------------------------------------------------------------
if [ "$do_install_llvmgcc" == "yes" ] ; then

   cd ${BUILD_ROOT}/${LLVM_GCC_obj}
   nice -n 20 make install \
      $@  # Extra args if any
   
fi
