#!/bin/sh

# backup config
cp config.mk config.mk.bak

function perform_check
{
  if ! make clean check > /dev/null ; then
    echo "fail."
  else
    echo "ok."
  fi
}

function perform_check_cxx
{
  # we cannot mute the warnings, so throw every everything
  if ! make clean check-cxx > /dev/null 2> /dev/null ; then
    echo "fail."
  else
    echo "ok."
  fi
}

for cc in clang gcc; do
  CC=$cc ./configure --debug > /dev/null
  printf "Check $cc... "
  perform_check
  printf "Check $cc (c++)... "
  perform_check_cxx
done

printf "Check w/o szmul builtin... "
./configure --debug --disable-szmul-builtin > /dev/null
perform_check
printf "Check w/o szmul builtin (c++)... "
perform_check_cxx

printf "Check release config... "
./configure --release > /dev/null
perform_check

printf "Check gcc C23 preview... "
CC=gcc CFLAGS=-std=c23 ./configure --debug > /dev/null
perform_check

# clean build files and restore config
make clean > /dev/null
mv config.mk.bak config.mk
