# HG changeset patch # User Rik # Date 1657256824 25200 # Node ID c4f52c6c5944310d4bf160c3ac746289261835c4 # Parent 441aa6226223e9592101bc1cbaa3fae99061aead build: cache JAVA_LDPATH and Java "jni.h" path (bug #62715) * configure.ac: Use AC_CACHE_VAL macro for "octave_cv_java_ldpath", "octave_cv_java_have_jni". Cache actual path for "jni.h" in "octave_cv_java_jni_h_path" variable.. diff -r 441aa6226223 -r c4f52c6c5944 configure.ac --- a/configure.ac Thu Jul 07 21:27:00 2022 -0700 +++ b/configure.ac Thu Jul 07 22:07:04 2022 -0700 @@ -2497,55 +2497,59 @@ AC_MSG_CHECKING([for $jvmlib]) - if test -z "$JAVA_LDPATH"; then - ## Run Java to try and determine library path to libjvm.so. - JAVA_TMP_LDPATH=`$JAVA -classpath ${srcdir}/build-aux OctJavaQry JAVA_LDPATH` - JAVA_TMP_LDPATH=`echo $JAVA_TMP_LDPATH | $SED -e "s/${PATH_SEPARATOR}/ /g"` - for dir in $JAVA_TMP_LDPATH; do - if test -f "$dir/$jvmlib"; then - JAVA_LDPATH=$dir - break - fi - done - fi - - if test -z "$JAVA_LDPATH"; then - ## Nothing found. Try Java again using bootpath argument. - JAVA_TMP_LDPATH=`$JAVA -classpath ${srcdir}/build-aux OctJavaQry JAVA_BOOTPATH` - JAVA_TMP_LDPATH="${JAVA_TMP_LDPATH} ${JAVA_TMP_LDPATH}/client ${JAVA_TMP_LDPATH}/server" - for dir in $JAVA_TMP_LDPATH; do - if test -f "$dir/$jvmlib"; then - JAVA_LDPATH=$dir - break + AC_CACHE_VAL([octave_cv_java_ldpath],[ + if test -z "$JAVA_LDPATH"; then + ## Run Java to try and determine library path to libjvm.so. + JAVA_TMP_LDPATH=`$JAVA -classpath ${srcdir}/build-aux OctJavaQry JAVA_LDPATH` + JAVA_TMP_LDPATH=`echo $JAVA_TMP_LDPATH | $SED -e "s/${PATH_SEPARATOR}/ /g"` + for dir in $JAVA_TMP_LDPATH; do + if test -f "$dir/$jvmlib"; then + JAVA_LDPATH=$dir + break + fi + done + fi + + if test -z "$JAVA_LDPATH"; then + ## Nothing found. Try Java again using bootpath argument. + JAVA_TMP_LDPATH=`$JAVA -classpath ${srcdir}/build-aux OctJavaQry JAVA_BOOTPATH` + JAVA_TMP_LDPATH="${JAVA_TMP_LDPATH} ${JAVA_TMP_LDPATH}/client ${JAVA_TMP_LDPATH}/server" + for dir in $JAVA_TMP_LDPATH; do + if test -f "$dir/$jvmlib"; then + JAVA_LDPATH=$dir + break + fi + done + fi + + if test -z "$JAVA_LDPATH"; then + ## Java failed to find its own library path. Guess wildly. + JAVA_TMP_LDPATH=`ls -d $JAVA_HOME/jre/lib/*/client` + JAVA_TMP_LDPATH="${JAVA_TMP_LDPATH} `ls -d $JAVA_HOME/jre/lib/*/server`" + ## Add some paths that might work on Macs. + JAVA_TMP_LDPATH="${JAVA_TMP_LDPATH} ${JAVA_HOME}/../Libraries ${JAVA_HOME}/Libraries" + ## Add some paths that might work on MinGW + JAVA_TMP_LDPATH="${JAVA_TMP_LDPATH} ${JAVA_HOME}/bin/client ${JAVA_HOME}/bin/server" + for dir in $JAVA_TMP_LDPATH; do + if test -f "$dir/$jvmlib"; then + JAVA_LDPATH=$dir + break + fi + done + fi + + ## Verify value passed in option --with-java-libdir + if test -n "$JAVA_LDPATH"; then + if test -f "${JAVA_LDPATH}/$jvmlib"; then + : # libjvm found + else + JAVA_LDPATH="" fi - done - fi - - if test -z "$JAVA_LDPATH"; then - ## Java failed to find its own library path. Guess wildly. - JAVA_TMP_LDPATH=`ls -d $JAVA_HOME/jre/lib/*/client` - JAVA_TMP_LDPATH="${JAVA_TMP_LDPATH} `ls -d $JAVA_HOME/jre/lib/*/server`" - ## Add some paths that might work on Macs. - JAVA_TMP_LDPATH="${JAVA_TMP_LDPATH} ${JAVA_HOME}/../Libraries ${JAVA_HOME}/Libraries" - ## Add some paths that might work on MinGW - JAVA_TMP_LDPATH="${JAVA_TMP_LDPATH} ${JAVA_HOME}/bin/client ${JAVA_HOME}/bin/server" - for dir in $JAVA_TMP_LDPATH; do - if test -f "$dir/$jvmlib"; then - JAVA_LDPATH=$dir - break - fi - done - fi - - ## Verify value passed in option --with-java-libdir - if test -n "$JAVA_LDPATH"; then - if test -f "${JAVA_LDPATH}/$jvmlib"; then - : # libjvm found - else - JAVA_LDPATH="" fi - fi - + + octave_cv_java_ldpath=$JAVA_LDPATH + ]) + JAVA_LDPATH=$octave_cv_java_ldpath if test -z "$JAVA_LDPATH"; then AC_MSG_RESULT([not found]) warn_java="Library $jvmlib not found. Octave will not be able to call Java methods." @@ -2575,13 +2579,19 @@ esac ## Verify jni.h include file exists. - JNI_PATH=`echo $JAVA_CPPFLAGS | $SED -e 's/-I//g'` - have_jni=no - for dir in $JNI_PATH; do - if test -f "${dir}/jni.h"; then have_jni=yes; break; fi - done - if test $have_jni = yes; then - AC_MSG_RESULT([$dir]) + AC_CACHE_VAL([octave_cv_java_have_jni],[ + JNI_PATH=`echo $JAVA_CPPFLAGS | $SED -e 's/-I//g'` + octave_cv_java_have_jni=no + for dir in $JNI_PATH; do + if test -f "${dir}/jni.h"; then + octave_cv_java_have_jni=yes + octave_cv_java_jni_h_path=$dir + break + fi + done + ]) + if test $octave_cv_java_have_jni = yes; then + AC_MSG_RESULT([$octave_cv_java_jni_h_path]) else AC_MSG_RESULT([not found]) warn_java="Include file not found. Octave will not be able to call Java methods."