lyx_mirror/src/frontends/xforms/forms/fdfix.sh
John Levon ebfa493a41 build fix
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@5188 a592a061-630c-0410-9148-cb99ea01b6c8
2002-08-30 16:36:02 +00:00

144 lines
3.4 KiB
Bash

#!/bin/sh
#
# \file fdfix.sh
# Copyright 2002 the LyX Team
# Read the file COPYING
#
# \author Angus Leeming, leeming@lyx.org
#
# This shell script takes the dialog created with fdesign and generates the
# .C and .h files used by LyX from it.
# Note that the REAL magic is to be found in the sed scripts fdfixc.sed and
# fdfixh.sed used by this shell script.
INTRO_MESSAGE ()
{
DATE=`date +"%Y"`
# Note that we can't create a variable containing this and then
# echo it across because some machines require -e to recognize \n et al.
# Other machines, of course output -e, it not being an option they
# recognise ;-)
# Set ${OUTPUT_FILE} to ${HOUT} or ${COUT} as appropriate
cat - > ${OUTPUT_FILE} <<EOF
// File generated by fdesign from ${FDFILE}
// and modified by fdfix.sh for use by LyX.
// WARNING! All changes made to this file will be lost!
// Copyright $DATE the LyX Team
// Read the file COPYING
EOF
}
#===============
# Initial checks
if [ ! -f $1 ]; then
echo "Input file does not exist. Cannot continue"
exit 1
fi
DIRNAME=`dirname $1`
BASENAME=`basename $1 .fd`
if [ $1 = ${BASENAME} ]; then
echo "Input file is not a .fd file. Cannot continue"
exit 1
fi
#===================================
# Create the initial .c and .h files
FDESIGN=fdesign
FDFILE=${BASENAME}.fd
(cd ${DIRNAME}; ${FDESIGN} -convert ${FDFILE})
if [ $? -ne 0 ]; then
echo "\"${FDESIGN} -convert ${FDFILE}\" failed. Please investigate."
exit 1
fi
#==================================
# Modify the .h file for use by LyX
HIN=${DIRNAME}/${BASENAME}.h
HPATCH=${DIRNAME}/${BASENAME}.h.patch
HOUT=${BASENAME}.hpp
FDFIXH=${DIRNAME}/fdfixh.sed
OUTPUT_FILE=${HOUT}
INTRO_MESSAGE
sed -f $FDFIXH < $HIN >> ${HOUT}
# Patch the .h file if a patch exists
if [ -f "${HPATCH}" ] ; then
echo "Patching ${HOUT} with ${HPATCH}"
patch -s ${HOUT} < ${HPATCH}
fi
# Clean up, to leave the finished .h file. We can be a little tricky here
# testing to see if the finished file exists already and if it does
# testing whether there are any differences.
# If there are no differences, then don't overwrite to prevent unnecessary
# compilation in the xforms directory.
rm -f ${HIN}
MOVE_H_FILE=1
if [ -r ${BASENAME}.h ]; then
cmp -s ${HOUT} ${BASENAME}.h
if [ $? -eq 0 ]; then
MOVE_H_FILE=0
fi
fi
if [ ${MOVE_H_FILE} -eq 1 ]; then
mv ${HOUT} ${BASENAME}.h
else
rm -f ${HOUT}
fi
#==================================
# Create the .C file for use by LyX
CIN=${DIRNAME}/${BASENAME}.c
CPATCH=${DIRNAME}/${BASENAME}.C.patch
COUT=${BASENAME}.cpp
FINAL_COUT=${BASENAME}.C
FDFIXC=${DIRNAME}/fdfixc.sed
OUTPUT_FILE=${COUT}
INTRO_MESSAGE
echo >> ${COUT}
echo "#include <config.h>" >> ${COUT}
echo "#include \"forms_gettext.h\"" >> ${COUT}
echo "#include \"gettext.h\"" >> ${COUT}
grep bmtable ${CIN} > /dev/null
if [ $? -eq 0 ]; then
echo "#include \"bmtable.h\"" >> ${COUT}
fi
# This is (I hope) a very temporary fudge.
# FormMathsPanel should be modified in input() to not use the data parameter.
# Instead, use the FL_OBJECT * parameter.
# Angus 12 June, 2002.
grep MM_ ${CIN} > /dev/null
if [ $? -eq 0 ]; then
echo "#include \"MathsCallbacks.h\"" >> ${COUT}
fi
echo >> ${COUT}
sed -f ${FDFIXC} < ${CIN} >> ${COUT}
# Patch the .C file if a patch exists
if [ -f "$CPATCH" ] ; then
echo "Patching ${COUT} with $CPATCH"
patch -s ${COUT} < $CPATCH
fi
# Clean up, to leave the finished .C file
rm -f ${CIN}
mv ${COUT} ${FINAL_COUT}
#========================================