#!/bin/sh - # $Id: s_javah,v 1.1 2002/08/14 17:14:24 dda 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