#!/bin/sh

#  Test GCC.
#  Copyright (C) 1999-2025 Free Software Foundation, Inc.

#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 3 of the License, or
#  (at your option) any later version.

#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.

#  You should have received a copy of the GNU General Public License
#  along with this program; see the file COPYING3.  If not see
#  <http://www.gnu.org/licenses/>.

# INPUT:
# btest <options> <target> <source> <prefix> <state> <build>

add_passes_despite_regression=0
dashj=''
handle_xpass_as_fail=false

# <options> can be
# --add-passes-despite-regression:
#  Add new "PASSes" despite there being some regressions.
# -j<n>:
#  Pass '-j<n>' to make.
# --handle-xpass-as-fail:
#  Count XPASS as a FAIL (default ignored).

while : ; do
  case "$1" in
   --add-passes-despite-regression)
    add_passes_despite_regression=1;;
   --handle-xpass-as-fail)
    handle_xpass_as_fail=true;;
   -j*)
    dashj=$1;;
   -*) echo "Invalid option: $1"; exit 2;;
   *) break;;
  esac
  shift
done

# TARGET is the target triplet.  It should be the same one as used in
# constructing PREFIX.  Or it can be the keyword 'native', indicating
# a target of whatever platform the script is running on.
TARGET=$1
# SOURCE is the directory containing the toplevel configure.
SOURCE=$2

# PREFIX is the directory for the --prefix option to configure.
#   For cross compilers, it needs to contain header files,
#   libraries, and binutils.  PATH should probably include
#   $PREFIX/bin.  
PREFIX=$3
# This script also needs to include the GDB testsuite in
#   $PREFIX/share/gdb-testsuite.
GDB_TESTSUITE=$PREFIX/share/gdb-testsuite

# STATE is where the tester maintains its internal state,
#   described below.
STATE=$4

# BUILD is a temporary directory that this script will
#   delete and recreate, containing the build tree.
BUILD=$5

# you also probably need to set these variables:
# PATH: should contain a native gcc, and a cross gdb.
# DEJAGNU: should point to a site.exp suitable for testing
#   the compiler and debugger.


# OUTPUT: in $RESULT, one of the following keywords:
#   error	the script failed due to
#		a misconfiguration or resource limitation
#   build	the build failed
#   regress-<n>	the build succeeded, but there were <n>
#		testsuite regressions, listed in $REGRESS
#   pass	build succeeded and there were no regressions
RESULT=$STATE/RESULT
# in BUILD_LOG, the output of the build
BUILD_LOG=$STATE/build_log
# in FAILED, a list of failing testcases
FAILED=$STATE/failed
# in PASSES, the list of testcases we expect to pass
PASSES=$STATE/passes
# in REGRESS, a list of testcases we expected to pass but that failed
REGRESS=$STATE/regress

# Make sure various files exist.
[ -d $STATE ] || mkdir $STATE
[ -f $PASSES ] || touch $PASSES

# These lines should stay in this order, because
# that way if something is badly wrong and $RESULT can't
# be modified then cron will mail the error message.
# The reverse order could lead to the testsuite claiming that
# everything always passes, without running any tests.
echo error > $RESULT || exit 1
exec > $BUILD_LOG 2>&1 || exit 1

set -x

# Nuke $BUILD and recreate it.
rm -rf $BUILD $REGRESS $FAILED
mkdir $BUILD || exit 1
cd $BUILD || exit 1

H_BUILD=`$SOURCE/config.guess || exit 1`
H_HOST=$H_BUILD
if [ $TARGET = native ] ; then
  H_TARGET=$H_HOST
else
  H_TARGET=$TARGET
fi
H_REAL_TARGET=`$SOURCE/config.sub $H_TARGET || exit 1`

# TESTLOGS is the list of dejagnu .sum files that the tester should
# look at.
TESTLOGS="gcc/testsuite/gcc/gcc.sum
gcc/testsuite/g++/g++.sum
gcc/testsuite/objc/objc.sum"

# Build.
echo build > $RESULT
if [ $H_HOST = $H_TARGET ] ; then
  $SOURCE/configure --prefix=$PREFIX --target=$H_TARGET || exit 1
  if ! make $dashj bootstrap ; then
    [ -s .bad_compare ] || exit 1
    cat .bad_compare >> $REGRESS || exit 1
    touch compare || exit 1   # Prevent the comparison from running again
    make $dashj all || exit 1
  fi
else
  withopt="--with-gnu-ld --with-gnu-as"
  case "$H_TARGET" in
    *-linux*) ;;
    *) withopt="$withopt --with-newlib";;
  esac
  $SOURCE/configure --prefix=$PREFIX --target=$H_TARGET $withopt || exit 1
  make $dashj || exit 1
fi
echo error > $RESULT || exit 1

# Test GCC against its internal testsuite.
make $dashj -k check

if [ -f gcc/testsuite/gfortran/gfortran.sum ] ; then
  TESTLOGS="$TESTLOGS gcc/testsuite/gfortran/gfortran.sum"
fi

if [ -f $BUILD/$H_TARGET/libstdc++-v3/testsuite/libstdc++.sum ] ; then
  TESTLOGS="$TESTLOGS $H_TARGET/libstdc++-v3/testsuite/libstdc++.sum"
fi

if [ -f $BUILD/$H_TARGET/libffi/testsuite/libffi.sum ] ; then
  TESTLOGS="$TESTLOGS $H_TARGET/libffi/testsuite/libffi.sum"
fi

if [ -f $BUILD/$H_TARGET/libjava/testsuite/libjava.sum ] ; then
  TESTLOGS="$TESTLOGS $H_TARGET/libjava/testsuite/libjava.sum"
fi

if [ -f $BUILD/$H_TARGET/libgomp/testsuite/libgomp.sum ] ; then
  TESTLOGS="$TESTLOGS $H_TARGET/libgomp/testsuite/libgomp.sum"
fi

if [ -f $BUILD/$H_TARGET/libmudflap/testsuite/libmudflap.sum ] ; then
  TESTLOGS="$TESTLOGS $H_TARGET/libmudflap/testsuite/libmudflap.sum"
fi

# Test the just-built GCC with the GDB testsuite.
if [ -d $GDB_TESTSUITE ] ; then
  mkdir test-gdb || exit 1
  cd $GDB_TESTSUITE || exit 1
  for i in gdb.* ; do
    if [ -d $i ] ; then
      mkdir $BUILD/test-gdb/$i
    fi
  done
  cd $BUILD/test-gdb || exit 1
  echo "set host_alias $H_HOST" > site.exp
  echo "set host_triplet $H_HOST" >> site.exp
  echo "set target_alias $H_TARGET" >> site.exp
  echo "set target_triplet $H_REAL_TARGET" >> site.exp
  echo "set build_alias $H_BUILD" >> site.exp
  echo "set build_triplet $H_BUILD" >> site.exp
  echo "set srcdir $GDB_TESTSUITE" >> site.exp
  runtest --tool gdb
  TESTLOGS="$TESTLOGS test-gdb/gdb.sum"
fi

# Sanity-check the testlogs.  They should contain at least one PASS.
cd $BUILD || exit 1
for LOG in $TESTLOGS ; do
  if ! grep ^PASS: $LOG > /dev/null ; then
    echo build > $RESULT
    exit 1
  fi
done

# Work out what failed
for LOG in $TESTLOGS ; do
  L=`basename $LOG`
  if $handle_xpass_as_fail ; then
   awk '/^(FAIL|XPASS): / { print "'$L'",$2; }' $LOG || exit 1
  else
   awk '/^FAIL: / { print "'$L'",$2; }' $LOG || exit 1
  fi
done | sort | uniq > $FAILED || exit 1
comm -12 $FAILED $PASSES >> $REGRESS || exit 1
NUMREGRESS=`wc -l < $REGRESS | tr -d ' '`

if [ $NUMREGRESS -eq 0 ] || [ $add_passes_despite_regression -ne 0 ] ; then
  # Update the state.
  for LOG in $TESTLOGS ; do
    L=`basename $LOG`
    awk '/^PASS: / { print "'$L'",$2; }' $LOG || exit 1
  done | sort | uniq | comm -23 - $FAILED > ${PASSES}~ || exit 1
  [ -s ${PASSES}~ ] || exit 1
  if [ $NUMREGRESS -ne 0 ] ; then
    # The way we keep track of new PASSes when in "regress-N" for
    # --add-passes-despite-regression, is to *add* them to previous
    # PASSes.  Just as without this option, we don't forget *any* PASS
    # lines, because besides the ones in $REGRESS that we definitely
    # don't want to lose, their removal or rename may have been a
    # mistake (as in, the cause of the "regress-N" state).  If they
    # come back, we then know they're regressions.
    cat ${PASSES}~ ${PASSES} | sort -u > ${PASSES}~~
    mv ${PASSES}~~ ${PASSES} || exit 1
    rm ${PASSES}~ || exit 1
  else
    # In contrast to the merging for "regress-N", we just overwrite
    # the known PASSes when in the "pass" state, so we get rid of
    # stale PASS lines for removed, moved or otherwise changed tests
    # which may be added back with a different meaning later on.
    mv ${PASSES}~ ${PASSES} || exit 1
  fi
fi

if [ $NUMREGRESS -ne 0 ] ; then
  echo regress-$NUMREGRESS > $RESULT
  exit 1
fi

echo pass > $RESULT
exit 0
