#! /bin/sh
# Usage: spmkrs <output file> \
# [+c <list of C files>] \
# [+o <list of object files>] \
# [+l <list of libraries>] \
# [+r <resources>]
outfile=$1
cfiles=
libraries=
rnames=
rfiles=
rlibs=
shift
# Collect file names
while [ "$1" ] ; do
if [ "$1" = "+c" ] ; then
pref=c
elif [ "$1" = "+o" ] ; then
pref=o
elif [ "$1" = "+l" ] ; then
pref=l
elif [ "$1" = "+r" ] ; then
pref=r
elif [ $pref = c ] ; then
cfiles="$cfiles $1"
elif [ $pref = o ] ; then
ofiles="$ofiles $1"
elif [ $pref = l ] ; then
libraries="$libraries $1"
elif [ $pref = r ] ; then
case $1 in
# Suffixed resource
*.s.o | *.so)
rfile=$1
;;
# Unsuffixed resource, prefer *.s.o (i.e. static) if both exist
*)
if [ -r $1.s.o ] ; then
rfile=$1.s.o
else
rfile=$1.so
fi
;;
esac
case $rfile in
*.s.o)
rname=`basename $rfile .s.o`
rlibs="$rlibs `/usr/local/lib/sicstus3/bin/bin/spxtrlib $rfile`"
;;
*.so)
rname=`basename $rfile .so`
;;
esac
if [ $rnames ] ; then
rnames="$rnames,$rname"
else
rnames=$rname
fi
rfiles="$rfiles $rfile"
fi
shift
done
rtable=`/usr/local/lib/sicstus3/bin/bin/sptmp`.c
prtable=\'$rtable\'
echo "prolog:prepare_resource_table([$rnames],$prtable). " | /usr/local/lib/sicstus3/sicstus -f
# Here C-files, object files and libraries are compiled and liked with
# the runtime kernel to an executable
cc -shared -O3 -fomit-frame-pointer -m486 \
-malign-loops=2 -malign-jumps=2 -malign-functions=2 \
/usr/local/lib/sicstus3/bin/bin/runtime.o $rtable $cfiles \
-I/usr/local/lib/sicstus3/include \
-I/usr/local/jdk1.1.3/include \
-I/usr/local/jdk1.1.3/include/genunix \
$ofiles $rfiles $rlibs $libraries -rdynamic -ldl -lm -o ${outfile}
/bin/rm -f $rtable
|
Java Native Method Interface に関する設定は、太字になってるところです。