#!/bin/sh 

if test "$EMPRESSPATH" = "" 
then
	echo "EMPRESSPATH not set"
	exit 1

elif test ! -d $EMPRESSPATH
then
	echo "invalid EMPRESSPATH"
	exit 1
fi

USAGE="*** $0 *** {-src | -testsrc | -odbccl_testsrc} dir"

. $EMPRESSPATH/config/options

if test "$MS_XTARGET" != ""
then
	. $EMPRESSPATH/config/xcfg/$MS_XTARGET
fi

case $# in
  2) CHKTYPE=$1; CHKTARGET=$2 ;;
  *) echo "$USAGE" ; exit 1 ;;
esac

case $CHKTYPE in
 -src)
	SRCGUI="MSFEATURE_GUI gui guiapp guimgr sup/audio sup/no_audio"
	SRCF77="MSFEATURE_F77 fortran/f77 mp/mpf77main util/fortmain mp/mpf77
			mp/mpf77run mp/mpf77parse"
	SRCF90="MSFEATURE_F90 fortran/f90 mp/mpf90main util/fortmain mp/mpf90
			mp/mpf90run mp/mpf90parse"
	SRC4GL="MSFEATURE_4GL ap"
	SRC4GLX11="MSFEATURE_4GLX11 ap/scg util/x11main"
	SRCCXX="MSFEATURE_CXX util/cxxmain util/cxxmain_t"
	SRCUNIX="MSSYS_PLATFORM_WIN32 gust/gust_readline"
	SRCWIN32="MSSYS_PLATFORM_UNIX binsrc/win32_odbcutil"
	SRCMTHREAD="MSFEATURE_MULTI_THREAD api/mrapi_t api/msapi_t
			api/mxapi_t util/globmain_t util/cxxmain_t"
	SRCMPDEV="MSFEATURE_NO_MP_DEV
			mp/mpcc mp/mpcmain
			mp/mpf77 mp/mpf77main mp/mpf77parse
			mp/mpf90 mp/mpf90main mp/mpf90parse
			mp/mpmisc mp/mpparse
	"

	REJECTLIST=
	test "$MSFEATURE_GUI" = "yes" || REJECTLIST="$REJECTLIST $SRCGUI"
	test "$MSFEATURE_F77" = "yes" || REJECTLIST="$REJECTLIST $SRCF77"
	test "$MSFEATURE_F90" = "yes" || REJECTLIST="$REJECTLIST $SRCF90"
	test "$MSFEATURE_4GL" = "yes" || REJECTLIST="$REJECTLIST $SRC4GL"
	test "$MSFEATURE_4GLX11" = "yes" || REJECTLIST="$REJECTLIST $SRC4GLX11"
	test "$MSFEATURE_CXX" = "yes" || REJECTLIST="$REJECTLIST $SRCCXX"
	test "$MS_XTARGET" = "" || REJECTLIST="$REJECTLIST $SRCMPDEV"
	
	if test "$MSSYS_PLATFORM" = "SYS_OS_WIN32"
	then
		case $MS_XTARGET in
		  SYS_OS_WINCE* | "")
			REJECTLIST="$REJECTLIST $SRCUNIX"
			;;
		  *)
			REJECTLIST="$REJECTLIST $SRCWIN32"
			;;
		esac
	else
		REJECTLIST="$REJECTLIST $SRCWIN32"
	fi

	test "$MSFEATURE_MULTI_THREAD" = "yes" || \
			REJECTLIST="$REJECTLIST $SRCMTHREAD"

	for I in $REJECTLIST
	do
		case $I in
		   MSFEATURE*)	MESSAGE="$I"
				continue ;;
		   MSSYS_PLATFORM_UNIX)	
				MESSAGE="MSSYS_PLATFORM = SYS_OS_UNIX"
				continue ;;
		   MSSYS_PLATFORM_WIN32)	
				MESSAGE="MSSYS_PLATFORM = SYS_OS_WIN32"
				continue ;;
		esac

		case $CHKTARGET in
		  */src/$I | */src/$I/*)	echo "$MESSAGE" ; exit 0 ;;
		esac
	done
	echo
	;;
 -testsrc)
	SRCGUI="MSFEATURE_GUI gui mbbldx/bldx_g"
	SRCF77="MSFEATURE_F77 f77 mpfort/f77 mpfort/f77_2 mpfort/f77_3
		mpfort/f77_4 mpfxx/f77 mpfxx/f77_2 mpfxx/f77_3
		sequence/f77"
	SRCF90="MSFEATURE_F90 f90 mpfort/f90 mpfort/f90_2 mpfort/f90_3
		mpfxx/f90 mpfxx/f90_2 mpfxx/f90_3
		sequence/f90"
	SRC4GL="MSFEATURE_4GL mb psm_4gl 
			mbeuc mbeuc3 mkc/ag mkc/form mkc/mb util/clr4gllk
			util/dbname/emp4gl
			z_cnvt/cnvt/mb1 z_cnvt/cnvt/cltermdb"
	SRC4GLX11="MSFEATURE_4GLX11 mbbldxeuc mbbldx"
	SRCCXX="MSFEATURE_CXX cxx ms/mx_cpp mpcxx mpfxx psm/cxx psm/cxx_noshlib
			psm_union/cxx"
	SRCDBSRV="MSFEATURE_DBSERVER util/ckgdd util/ckscf rep/rep_dbsv sv"
	SRCDBSRV2="MSNETTEST sv"
	SRCSTATICPSM="MSFEATURE_SHLIB psm/st_esql psm/st_mr"
	SRCPTHREAD="MSFEATURE_PTHREAD a_sys/pthread"
	SRCMTHREAD="MSFEATURE_MULTI_THREAD a_thr mp_thr psm_thr"

	SRCWIN32="WIN32 z_cnvt/cvwin2"
	# the ctrl program of z_olb test suites was not ported to win32
	# hence, trans1 and trans2 cannot be run.
	SRCUNIX="
		UNIX z_cnvt/cnvt z_olb/trans1 z_olb/trans2 
		initend z_cnvt/cv610 z_cnvt/cv64 z_cnvt/cv68 
		z_footprint
		kill/empkill"

	REJECTLIST=
	test "$MSFEATURE_GUI" = "yes" || REJECTLIST="$REJECTLIST $SRCGUI"
	test "$MSFEATURE_F77" = "yes" || REJECTLIST="$REJECTLIST $SRCF77"
	test "$MSFEATURE_F90" = "yes" || REJECTLIST="$REJECTLIST $SRCF90"
	test "$MSFEATURE_4GL" = "yes" || REJECTLIST="$REJECTLIST $SRC4GL"
	test "$MSFEATURE_4GLX11" = "yes" || REJECTLIST="$REJECTLIST $SRC4GLX11"
	test "$MSFEATURE_CXX" = "yes" || REJECTLIST="$REJECTLIST $SRCCXX"
	test "$MSFEATURE_DBSERVER" = "yes" || \
			REJECTLIST="$REJECTLIST $SRCDBSRV"
	test "$MSNETTEST" = "" && REJECTLIST="$REJECTLIST $SRCDBSRV2"

	case "$MSFEATURE_SHLIB" in
	  "" | no)
		REJECTLIST="$REJECTLIST NO_SHLIB a_sys/dll"
		;;
	  *)
		REJECTLIST="$REJECTLIST STATICPSM $SRCSTATICPSM"
		;;
	esac
	test "$MSFEATURE_PTHREAD" = "yes" || \
			REJECTLIST="$REJECTLIST $SRCPTHREAD"
	test "$MSFEATURE_MULTI_THREAD" = "yes" || \
			REJECTLIST="$REJECTLIST $SRCMTHREAD"


	if test "$MSSYS_PLATFORM" = "SYS_OS_WIN32"
	then
		REJECTLIST="$REJECTLIST $SRCUNIX"
	else
		REJECTLIST="$REJECTLIST $SRCWIN32"
	fi

	for I in $REJECTLIST
	do
		case $I in
		   WIN32)
				MESSAGE="MSSYS_PLATFORM != SYS_OS_WIN32"
				continue
				;;
		   UNIX)
				MESSAGE="MSSYS_PLATFORM != SYS_OS_UNIX"
				continue
				;;
		   NO_SHLIB)
				MESSAGE="Shared library not support"
				continue
				;;
		   STATICPSM)
				MESSAGE="static psm not support"
				continue
				;;
		   MSFEATURE*)	MESSAGE="$I != yes"
				continue ;;
		   MSNETTEST)	MESSAGE="Not running server test"
				continue ;;
		esac

		case $CHKTARGET in
		  */testsrc/$I | */testsrc/$I/*)
			echo "$MESSAGE" ; exit 0;
				;;
		  */testsrc/[a-z]*/$I | */testsrc/[a-z]*/$I/*)
			echo "$MESSAGE" ; exit 0;
				;;
		  */test/$I | */test/$I/*)
			echo "$MESSAGE" ; exit 0;
				;;
		esac
	done
	echo
	;;
 -odbccl_testsrc)
	SRCUNIX="UNIX php_test"
	SRCWIN32="WIN32 win32"
	SRCCXX="MSFEATURE_CXX odbc_ex/devguide"
	SRCMTHREAD="MSFEATURE_MULTI_THREAD odbc3/thread"

	REJECTLIST=
	test "$MSFEATURE_CXX" = "yes" || REJECTLIST="$REJECTLIST $SRCCXX"

	if test "$MSSYS_PLATFORM" = "SYS_OS_WIN32"
	then
		REJECTLIST="$REJECTLIST $SRCUNIX"
	else
		REJECTLIST="$REJECTLIST $SRCWIN32"
	fi
	test "$MSFEATURE_MULTI_THREAD" = "yes" || \
			REJECTLIST="$REJECTLIST $SRCMTHREAD"

	for I in $REJECTLIST
	do
		case $I in
		   WIN32)
				MESSAGE="MSSYS_PLATFORM != SYS_OS_WIN32"
				continue
				;;
		   UNIX)
				MESSAGE="MSSYS_PLATFORM != SYS_OS_UNIX"
				continue
				;;
		   MSFEATURE_SHLIB)
				MESSAGE="$I != \"\""
				continue
				;;
		   MSFEATURE*)	MESSAGE="$I != yes"
				continue ;;
		esac

		case $CHKTARGET in
		  */testsrc/$I | */testsrc/$I/*)
			echo "$MESSAGE" ; exit 0;
				;;
		  */testsrc/[a-z]*/$I | */testsrc/[a-z]*/$I/*)
			echo "$MESSAGE" ; exit 0;
				;;
		  */test/$I | */test/$I/*)
			echo "$MESSAGE" ; exit 0;
				;;
		esac
	done
	echo
	;;
 *)	echo "$USAGE" ; exit 1 ;;
esac
