#! /bin/sh
#
# mkoctfile -- create a .oct file suitable for dynamic linking by
# Octave.

set -e

if [ $# -eq 1 ]; then
  srcfile="$1"
  basnm=`echo $srcfile | sed 's,\.cc$,,'`
  objfile=$basnm.o
  octfile=$basnm.oct
else
  echo "usage: mkoctfile file.cc" 1>&2
  exit 1
fi

# Configuration:  these variables are filled in at configuration time.

CPPFLAGS=""
INCFLAGS="-I/usr/include -I/usr/include/octave-2.0.5"
CXX="c++"
CXX_VERSION="2.7.2.1"
CXXFLAGS="-O2"
CXXPICFLAG="-fPIC"
HOST_CXXFLAGS=""
NO_IMPLICIT_TEMPLATES="-fno-implicit-templates"
GCC_IEEE_FP_FLAG="-mieee-fp"

LDFLAGS="-s"
LIBFLAGS="-L/usr/lib/octave"
RLD_FLAG="-Xlinker -rpath -Xlinker /usr/lib/octave"
FLIBS="-lf2c -L/usr/lib/gcc-lib/i486-linux/2.7.2.1 -lgcc"
LIBS=""
LEXLIB=""
CXXLIBS="-lstdc++ -lm -L/usr/lib/gcc-lib/i486-linux/2.7.2.1 -lstdc++ -lm -lgcc -lc -lgcc"
TERMLIBS="-lncurses"
LIBPLPLOT=""
LIBDLFCN=""

# For now, leave -lglob out (glob/Makefile.in needs to be fixed to
# install it.

OCTAVE_LIBS="-loctinterp -loctave -ltinst -lcruft \
  $LIBPLPLOT -lreadline -lkpathsea $LIBDLFCN"

ALL_CXXFLAGS="$INCFLAGS $HOST_CXXFLAGS $NO_IMPLICIT_TEMPLATES \
  $GCC_IEEE_FP_FLAG $CXXFLAGS"

echo "making $objfile from $srcfile"

$CXX -c $CPPFLAGS $CXXPICFLAG $ALL_CXXFLAGS $srcfile -o $objfile

echo "making $octfile from $objfile"

$CXX -shared -o $octfile $objfile $LIBFLAGS $RLD_FLAG $OCTAVE_LIBS $FLIBS $LEXLIB $TERMLIBS $LIBS
