#! /bin/sh

. sh/base-conf.sh
. sh/verbose.sh
. sh/tmp-c.sh
. sh/echo-n.sh
. sh/tmp.sh
. sh/version-number.sh
. sh/info.sh

## Flags
general_flags="-D_GNU_SOURCE -fno-rtti"
debug_flags="-g -Wall -W -Werror"
optimize_flags="-DNDEBUG -O2"

BASECXXFLAGS="$general_flags"
if [ -z "$build_type" ]
then
    BASECXXFLAGS="$BASECXXFLAGS $debug_flags"
else
    if [ $build_type != none ]
    then
        BASECXXFLAGS="$BASECXXFLAGS $optimize_flags"
	LDFLAGS="$LDFLAGS -s"

	if [ $build_type = profile ]
	then
	    BASECXXFLAGS="$BASECXXFLAGS -pg"
	fi
    fi
fi

BASECXXFLAGS="`echo $BASECXXFLAGS $CXXFLAGS`"
CXXFLAGS="$BASECXXFLAGS $MANDATORY_CXXFLAGS"
export CXX CXXFLAGS LDFLAGS



## Variables for Make
echo "
CXX:=$CXX
CXXFLAGS:=$CXXFLAGS
LDFLAGS:=$LDFLAGS
build_without_test:=$build_without_test
build_without_gui:=$build_without_gui
BABYCHESS_VERSION_NUMBER:=$BABYCHESS_VERSION_NUMBER
export CXX CXXFLAGS LDFLAGS
"

## config.hh
{
    echo "\
#ifndef CONFIG_HH
#define CONFIG_HH

#define CXXFLAGS        \"$BASECXXFLAGS\" 
#define VERSION_NUMBER  \"$BABYCHESS_VERSION_NUMBER\"
#define E_MAIL          \"$BABYCHESS_E_MAIL\"
#define WEB_SITE        \"$BABYCHESS_WEB_SITE\"
"

    ## We must compile with all flags in $CXXFLAGS, but don't use the warning
    ## flags, else GCC could fail due to unused variables or such, despite of
    ## the function tested for working.   
    features="`echo feature/*.cc | sed 's,feature/\([^ .][^ .]*\)\.cc,\1,g'`"
    flags="`echo \" $CXXFLAGS \" | sed 's/-W[^ ]*/ /g'`"
    tmp_file=$TMP/$$.tmp
    for feature in $features
    do
        if [ "$verbose"  -ge 2 ] 
	then
	    echo >&4 "Checking for $feature..."
	else
	    $echo_n >&4 "Checking for $feature...$echo_c"
	fi

	<feature/$feature.cc >&5 sed 's/^\(.*\)$/ | \1/'

        if sh/do $CXX $flags feature/$feature.cc -o $tmp_e 1>&5 2>&5
        then
            >&5 echo $tmp_e
            $tmp_e 2>&1 >$tmp_file
            ret=$?
            if [ $ret = 0 ]
            then
     	        result=1
            else
	        result=
            fi
            if [ -z "$result" ] ; then >&5 echo "exit code $ret" ; fi
            if [ "$result" ] ; then ok=1 ; else ok= ; fi 
        else
            ok=
        fi

        if [ "$ok" ]
	then
	    value=1
	    word=yes
	else
	    value=0
	    word=no
	fi

	$echo_n "#define $echo_c"
	echo HAVE_$feature $value | tr a-z A-Z

	if [ "$verbose" -ge 2 ]
	then
	    echo >&4 ...$word
	else
	    echo >&4 $word
	fi
    done

    echo "
#endif /* ! CONFIG_HH */"

} >config.hh


[ -d bin ] || mkdir bin
