#! /bin/sh
# This file is part of GNU epsilon, a functional language implementation

# Copyright (C) 2002, 2003 Luca Saiu

# GNU epsilon is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published
# by the Free Software Foundation; either version 2, or (at your
# option) any later version.

# GNU epsilon is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with epsilon; see the file COPYING.  If not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.


./make_instructions_h
./make_all_c_instructions
./make_stringified_c_instructions

echo "/* This file is automatically generated. Don't edit */" > output_c.c
cat output_c_c.head >> output_c.c

cd all_c_instructions
for i in *; do
    if test $i != "CVS"; then
	if test $i != "nln"; then
	    echo "    case $i:{"   >> ../output_c.c

            #echo "      fprintf(output_stream, \" printf(\\\"$i: begin\\\\n\\\"); \");" >> ../output_c.c

	    echo "      char* text;" >> ../output_c.c
	    echo "      fprintf(output_stream, \"{\\n\");" >> ../output_c.c

	    #echo "      fprintf(output_stream,\"asm(\\\"# --- Code for instruction "$i "---\\\");\\n\");" >> ../output_c.c

	    echo "      text=" >> ../output_c.c
	    echo "#include \"stringified_c_instructions/$i\"" >> ../output_c.c
	    echo "        ;" >> ../output_c.c
	    echo "      fprintf(output_stream, \"%s\", text);" >> ../output_c.c
	    echo "      fprintf(output_stream, \"}\\n\");" >> ../output_c.c

	    #echo "      fprintf(output_stream, \"}}\\n\");" >> ../output_c.c
            #echo "      fprintf(output_stream, \" printf(\\\"$i: end\\\\n\\\"); \");" >> ../output_c.c

	    echo "      break;" >> ../output_c.c
	    echo "    }" >> ../output_c.c
	fi
    fi
done
cd ..

cat output_c_c.tail >> output_c.c
