#!/bin/bash
if [ $# != 2 ]
then if [ $# != 3 ]
     then echo "USAGE: $(basename "$0") [-O] <input_file> <output_file>";
          exit 1;
     elif [ "$1" != "-O" ]
     then echo "USAGE: $(basename "$0") [-O] <input file> <output_file>";
          exit 1;
     fi
fi

FLEXOPTS=""
FILE1=$1;
FILE2=$2;

if [ $# = 2 ]
then if [ ! -e "$1" ]
     then echo "ERROR: '$1' file not found";
          exit 1;
     fi
fi

if [ $# = 3 ]
then if [ ! -e "$2" ]
     then echo "ERROR: '$2' file not found";
          exit 1;
     fi
     FLEXOPTS="-Cfer";
     FILE1=$2;
     FILE2=$3;
fi
xmllint --dtdvalid "/usr/share/apertium"/format.dtd --noout "$FILE1" && \
xsltproc "/usr/share/apertium"/reformat.xsl "$FILE1" >/tmp/$$.reformat.l && \
/usr/bin/flex $FLEXOPTS -o/tmp/$$.lex.cc /tmp/$$.reformat.l && \
/usr/bin/x86_64-pld-linux-gnux32-g++ -DGENFORMAT -Wall -Wextra -O2 -fwrapv -pipe -gdwarf-4 -fno-debug-types-section -fvar-tracking-assignments -g2 -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -Werror=trampolines -fPIC -mtune=generic -march=x86-64 -gdwarf-4 -fno-debug-types-section -fvar-tracking-assignments -g2 -Wformat -Werror=format-security  -std=c++23 -w  -I /usr/include -o "$FILE2" /tmp/$$.lex.cc 2>/dev/null &&\
rm /tmp/$$.reformat.l /tmp/$$.lex.cc
