#! /bin/sh -x
#

TARGET=${1}
do_clean="yes"
do_clean="no"

do_fortran="no"
#do_rust="no"
do_rust="no"
#do_rust="yes"

# maybe disable C++ for speed temporarily
do_cxx="yes"


# Temporary until merged
GCC=gcc
#GCC=gccrs

# PREFIX=/home/joel/test-gcc/install-4.9-branch
# PREFIX=/home/joel/test-gcc/install-4.8-branch
# PREFIX=/home/joel/test-gcc/install-gcc9
# PREFIX=/home/joel/test-gcc/install-gcc10
#PREFIX=/home/joel/test-gcc/install-gccrs
PREFIX=/home/joel/test-gcc/install-master

if [ $# -ne 1 ] ; then
  echo USAGE: $0 TARGET
  exit 1
fi

if [ ! -d ${GCC} ] ; then
  echo "no GCC source present"
  exit 1
fi

rm -rf b-${TARGET}-gcc
mkdir b-${TARGET}-gcc
cd b-${TARGET}-gcc

# ada=",ada"

if [ ${do_fortran} = "yes" ] ; then
  # Best to avoid FORTRAN on some targets
  case ${TARGET} in
    m32c)*  fortran=""     ;;
    avr*)   fortran=""     ;;
    h8300*) fortran=""     ;;
    sh*)    fortran=""     ;; # single/double float issue
    lm32*)  fortran=""     ;; # See GCC 79120
    m68k*)  fortran=""     ;; # See GCC 78480
    *)      fortran=",fortran" ;;
    #*)      cxx="" ;;
  esac
else
  fortran=""
fi

#rust=""
if [ ${do_rust} = "yes" ] ; then
  rust=",rust"
fi

# Best to avoid C++ on some targets
case ${TARGET} in
  # m32c)*  cxx=""     ;;
  avr*)   cxx=""     ;;
  h8300*) cxx=""     ;;
  v850*)  cxx=""     ;; # See GCC PR65501
  lm32*)  cxx=""     ;; # See GCC PR_TBD
  *)      cxx=",c++" ;;
  #*)      cxx="" ;;
esac


# Best to avoid iconv on some targets
case ${TARGET} in
  avr*)   enable_iconv="--disable-iconv" ;;
  h8300*) enable_iconv="--disable-iconv" ;;
  m32c*)  enable_iconv="--disable-iconv --disable-libssp" ;;
  *)
    enable_iconv="--enable-newlib-iconv \
 --enable-newlib-iconv-encodings=big5,cp775,cp850,cp852,cp855,\
cp866,euc_jp,euc_kr,euc_tw,iso_8859_1,iso_8859_10,iso_8859_11,\
iso_8859_13,iso_8859_14,iso_8859_15,iso_8859_2,iso_8859_3,\
iso_8859_4,iso_8859_5,iso_8859_6,iso_8859_7,iso_8859_8,iso_8859_9,\
iso_ir_111,koi8_r,koi8_ru,koi8_u,koi8_uni,ucs_2,ucs_2_internal,\
ucs_2be,ucs_2le,ucs_4,ucs_4_internal,ucs_4be,ucs_4le,us_ascii,\
utf_16,utf_16be,utf_16le,utf_8,win_1250,win_1251,win_1252,\
win_1253,win_1254,win_1255,win_1256,win_1257,win_1258"
  ;;
esac

../${GCC}/configure \
 --prefix=${PREFIX} \
 --bindir=${PREFIX}/bin \
 --exec_prefix=${PREFIX} \
 --includedir=${PREFIX}/include \
 --libdir=${PREFIX}/lib \
 --libexecdir=${PREFIX}/libexec \
 --mandir=${PREFIX}/share/man \
 --infodir=${PREFIX}/share/info \
 --datadir=${PREFIX}/share \
 --target=${TARGET} \
 ${sjlj} \
 --disable-libstdcxx-pch \
 --with-gnu-as --with-gnu-ld --verbose \
 --with-newlib \
 --with-system-zlib \
 --disable-nls --without-included-gettext \
 --disable-win32-registry \
 --enable-version-specific-runtime-libs \
 ${enable_iconv} \
 --disable-lto \
 --enable-newlib-io-c99-formats \
 --enable-threads \
 --disable-plugin \
 --enable-languages="c${cxx}${fortran}${ada}${rust}" >c.log 2>&1 && \
make -j >b.log 2>&1 && \
make install >i.log 2>&1
status=$?

if [ ${status} -eq 0 -a ${do_clean} = "yes" ] ; then
  rm -rf ../b-${TARGET}-gcc
fi
echo $status
exit $status
