changeset 31130:c4f52c6c5944

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..
author Rik <rik@octave.org>
date Thu, 07 Jul 2022 22:07:04 -0700
parents 441aa6226223
children f8d3c0f035d0
files configure.ac
diffstat 1 files changed, 64 insertions(+), 54 deletions(-) [+]
line wrap: on
line diff
--- 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 <jni.h> not found.  Octave will not be able to call Java methods."