#!/bin/sh -
#	$Id: s_javah,v 1.1 2002/10/04 18:16:58 brian Exp $
#
# Use javah to build the libdb_java/com_*.h header files.
#
# To run this, you will need a javac and javah in your PATH.
# If possible, install tools with a recent vintage, JDK 1.3 or higher is good.
# Using Sun's JDK rather than some other installation ensures
# that the header files will not be constantly changed.

. RELEASE

JAVAC=javac
JAVAH=javah
export CLASSPATH
CLASSPATH=

# CLASSES are only those classes for which we have native methods.
D=com.sleepycat.db
CLASSES="$D.Dbc $D.DbEnv $D.Db $D.DbLock $D.DbLogc $D.DbLsn $D.Dbt $D.DbTxn $D.xa.DbXAResource"

d=/tmp/__javah
c=$d/classes
trap 'rm -rf $d; exit 0' 0 1 2 3 13 15

rm -rf $d
mkdir $d || exit 1
mkdir $c || exit 1

# Make skeleton versions of XA classes and interfaces
# We only need to compile them, not run them.
pkg="package javax.transaction.xa"
echo "$pkg; public interface XAResource {}" > $d/XAResource.java
echo "$pkg; public interface Xid {}" > $d/Xid.java
echo "$pkg; public class XAException extends Exception {}" \
	> $d/XAException.java


# Create the .class files and use them with javah to create the .h files
${JAVAC} -d $c $d/*.java \
	../java/src/com/sleepycat/db/*.java \
	../java/src/com/sleepycat/db/xa/*.java || exit 1
${JAVAH} -classpath $c -d $d ${CLASSES} || exit 1

for cl in ${CLASSES}; do
	h=`echo $cl | sed -e 's/\./_/g'`.h
	t=$d/$h
	f=../libdb_java/$h
	if [ ! -f $t ]; then
		echo "ERROR: $t does not exist"
		exit 1
	fi
	cmp $t $f > /dev/null 2>&1 ||
	    (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f)
done
