#!/bin/sh
#
# This script creates a "fallbacks.cc" file for the current directory,
# if one is appropriate (i.e. if this directory has a Makefile for a
# SUIF program or library).
#
# IMPORTANT: The SUIFHOME variable must be set to a directory in which
# any libraries this program might need have already been installed --
# it uses the auto_init_libs database from that directory.


AUTOINITDIR=$SUIFHOME/auto_init_libs


TARGET=`grep '^TARGET' Makefile | sed s/\ //g | sed s/\	//g | sed s/TARGET=//`
LIBS=`grep '^LIBS' Makefile | sed s/LIBS//g | sed 's/^[\ \	]*//g' | \
        sed 's/^=//' | sed 's/^[\ \	]*//g'`

if test ${TARGET}"" = "" ; then
    exit 0
fi

echo '/*' > fallbacks.cc
echo ' *  "fallbacks.cc" file for '$TARGET'.' >> fallbacks.cc
echo ' *  This file contains code that is ordinarily created automatically' \
    >> fallbacks.cc
echo ' *  by the SUIF Makefile system in the files "suif_init.cc" and' >> \
    fallbacks.cc
echo ' *  "prog_ver.cc", or "lib_ver.cc".  This replacement is provided for' \
    >> fallbacks.cc
echo ' *  systems that cannot use the SUIF Makefile system.' >> fallbacks.cc
echo ' *' >> fallbacks.cc
echo ' *  This file was created automatically by create_fallbacks.' >> \
    fallbacks.cc
echo ' */' >> fallbacks.cc
echo >> fallbacks.cc


suif_system_version="(unknown version)"

if test -r stamp-version; then
    prog_version=`cat stamp-version`
else
    prog_version="(unnumbered test version)"
fi


if test `echo $LIBS | sed 's/\ .*//g'`"" = "" ; then

# In this case we have a library.

echo 'char *lib'$TARGET'_ver_string = "'${prog_version}' [fallback]";' >> \
    fallbacks.cc
echo 'char *lib'$TARGET'_who_string = "(unknown compile data) [fallback]";' \
    >> fallbacks.cc
echo 'char *lib'$TARGET'_suif_string = "'${suif_system_version}' [fallback]";'\
    >> fallbacks.cc

else

# In this case we have a whole program.

echo "#include <suif.h>" >> fallbacks.cc

echo >> fallbacks.cc
echo 'char *prog_ver_string = "'${prog_version}' [fallback]";' >> fallbacks.cc
echo 'char *prog_who_string = "(unknown compile data) [fallback]";' >> \
    fallbacks.cc
echo 'char *prog_suif_string = "'${suif_system_version}' [fallback]";' >> \
    fallbacks.cc

echo >> fallbacks.cc
echo "extern void start_suif(int &argc, char *argv[])" >> fallbacks.cc
echo "  {" >> fallbacks.cc
found_a_suif_lib=no
for i in ${LIBS}; do
    suif_lib_prefix=`echo $i | cut -c-2`
    sln=`echo $i | cut -c3-`
    if test '(' "l-l" = "l"$suif_lib_prefix ')' -a '(' -f \
            ${AUTOINITDIR}/$sln ')' ; then
        echo "    LIBRARY("$sln", init_"$sln"," "exit_"$sln");" >> \
            fallbacks.cc
        found_a_suif_lib=yes
    fi
done
if test $found_a_suif_lib = "yes" ; then
    echo >> fallbacks.cc
else
    echo > /dev/null
fi
echo "    init_suif(argc, argv);" >> fallbacks.cc
echo "  }" >> fallbacks.cc

fi
