Blame itest

Packit b513ef
#! /bin/sh
Packit b513ef
# $Id$
Packit b513ef
# ----------------------------------------------------------------------
Packit b513ef
#
Packit b513ef
Packit b513ef
case `uname` in
Packit b513ef
    CYGWIN*)
Packit b513ef
	execsuffix=.exe ;;
Packit b513ef
    *)
Packit b513ef
	execsuffix= ;;
Packit b513ef
esac
Packit b513ef
ocamlfind="src/findlib/ocamlfind${execsuffix}"
Packit b513ef
Packit b513ef
PATH="./tools:$PATH"
Packit b513ef
export PATH
Packit b513ef
Packit b513ef
check_linkage () {
Packit b513ef
    p=$1
Packit b513ef
    shift
Packit b513ef
    rm -f itest-aux/simple
Packit b513ef
    $ocamlfind ocamlc -linkall -linkpkg -custom "$@" -o itest-aux/simple itest-aux/simple_$p.ml >itest-aux/err.out 2>&1
Packit b513ef
    output=`cat itest-aux/err.out | sed -e '/WARNING.*/ d'`
Packit b513ef
    error=0
Packit b513ef
    if [ -n "$output" ]; then
Packit b513ef
	echo "* When trying to compile with"
Packit b513ef
	echo "       $ocamlfind ocamlc -linkall -linkpkg -custom "$@" -o itest-aux/simple itest-aux/simple_$p.ml"
Packit b513ef
   	echo "  an error has occurred. The error error message has been written"
Packit b513ef
	echo "  to itest-aux/err.out."
Packit b513ef
	error=1
Packit b513ef
    fi
Packit b513ef
    if [ "$error" = "0" ]; then
Packit b513ef
	result=`itest-aux/simple${execsuffix}`
Packit b513ef
        [ "x$result" = "xOK" ]
Packit b513ef
    else
Packit b513ef
	return $error
Packit b513ef
    fi
Packit b513ef
}
Packit b513ef
Packit b513ef
problems () {
Packit b513ef
    echo "* This test failed. Please check the settings in site-lib-src/$1/META,"
Packit b513ef
    echo "  especially the 'linkopts' variable, and try again. You can invoke"
Packit b513ef
    echo "  this test directly by: ./itest $1"
Packit b513ef
}
Packit b513ef
Packit b513ef
Packit b513ef
do_test () {
Packit b513ef
    case "$1" in
Packit b513ef
    dbm|graphics|num|str|unix|bigarray|labltk)
Packit b513ef
	echo "* Checking linker options for $1 library"
Packit b513ef
	rm -f itest-aux/testdb*
Packit b513ef
	if check_linkage $1 -package $1; then
Packit b513ef
	    echo "ok"
Packit b513ef
	else
Packit b513ef
	    problems $1
Packit b513ef
	fi
Packit b513ef
	;;
Packit b513ef
    threads)
Packit b513ef
	echo "* Checking linker options for threads library"
Packit b513ef
	if check_linkage $1 -package $1 -thread; then
Packit b513ef
	    echo "ok"
Packit b513ef
	else
Packit b513ef
	    problems $1
Packit b513ef
	fi
Packit b513ef
	;;
Packit b513ef
Packit b513ef
    camlp4)
Packit b513ef
	echo "* Checking options for camlp4 preprocessor"
Packit b513ef
	if check_linkage $1 -package $1 -syntax camlp4r; then
Packit b513ef
	    echo "ok"
Packit b513ef
	else
Packit b513ef
	    problems $1
Packit b513ef
	fi
Packit b513ef
	;;
Packit b513ef
Packit b513ef
    *)
Packit b513ef
	echo "unknown test: $1"
Packit b513ef
	;;
Packit b513ef
    esac
Packit b513ef
}
Packit b513ef
Packit b513ef
Packit b513ef
OCAMLPATH="./site-lib-src"
Packit b513ef
export OCAMLPATH
Packit b513ef
Packit b513ef
if [ ! -f "$ocamlfind" ]; then
Packit b513ef
    echo "Sorry, you must first compile the library before you can invoke" 1>&2
Packit b513ef
    echo "the integration test." 1>&2
Packit b513ef
    exit 1
Packit b513ef
fi
Packit b513ef
Packit b513ef
if [ "$#" = "0" ]; then
Packit b513ef
    for t in unix str dbm graphics num threads bigarray labltk camlp4; do
Packit b513ef
	if [ -f "site-lib-src/$t/META" ]; then
Packit b513ef
	    echo "------------------------------------------------------------------------------"
Packit b513ef
	    do_test $t
Packit b513ef
	    echo
Packit b513ef
	fi
Packit b513ef
    done
Packit b513ef
else
Packit b513ef
    do_test $1
Packit b513ef
fi