Skip to content
Snippets Groups Projects
Select Git revision
  • d048d8eb1ba96ec462a78fa404caef223b4f3ce9
  • master default protected
  • 9.0
  • 8.0
  • nt-tools
  • 7.8
  • 7.6
  • 7.4
  • 7.2
  • 7.0
  • 0.6
  • rosuav/latex-markdown-renderer
  • rxnpatch/rxnpatch
  • marcus/gobject-introspection
  • rxnpatch/8.0
  • rosuav/pre-listening-ports
  • rosuav/async-annotations
  • rosuav/pgsql-ssl
  • rxnpatch/rxnpatch-broken/2023-10-06T094250
  • grubba/fdlib
  • grubba/wip/sakura/8.0
  • v8.0.2020
  • v8.0.2018
  • v8.0.2016
  • v8.0.2014
  • v8.0.2012
  • v8.0.2008
  • v8.0.2006
  • v8.0.2004
  • v8.0.2002
  • v8.0.2000
  • v8.0.1998
  • v8.0.1996
  • v8.0.1994
  • v8.0.1992
  • v8.0.1990
  • v8.0.1988
  • v8.0.1986
  • rxnpatch/clusters/8.0/2025-04-29T124414
  • rxnpatch/2025-04-29T124414
  • v8.0.1984
41 results

configure.in

Blame
  • Henrik Grubbström (Grubba)'s avatar
    Henrik (Grubba) Grubbström authored
    Rev: src/modules/Java/configure.in:1.42
    d048d8eb
    History
    configure.in 13.70 KiB
    AC_INIT(jvm.c)
    AC_CONFIG_HEADER(config.h)
    
    AC_MODULE_INIT()
    
    MODULE_PMOD_IN=module.pmod.in
    
    OLD_LIBS=$LIBS
    OLD_LDFLAGS=$LDFLAGS
    OLD_CPPFLAGS=$CPPFLAGS
    OLD_LIBPATH=$LIBPATH
    JAVA_LIBS=""
    JAVA_LIBPATH=""
    JAVA_AVAILABLE=0
    LINKER_OPTIONS=""
    
    AC_ARG_WITH(java,  [  --without-java       no support for Java],[],[with_java=yes])
    AC_ARG_WITH(java-include-dir, 
    	[  --with-java-include-dir=dir    look for header-files in dir],
    	[pike_java_user_include_directory=$withval])
    AC_ARG_WITH(java-lib-dir, 
    	[  --with-java-lib-dir=dir    look for JRE libs in dir],
    	[pike_java_user_lib_directory=$withval])
    
    PIKE_FEATURE_WITHOUT(Java)
    
    if test "x$with_java" = xyes; then
    
      PIKE_FEATURE_NODEP(Java)
    
      AC_MSG_CHECKING(which operating system we are using)
      AC_CACHE_VAL(pike_cv_java_sysos, [
        pike_cv_java_sysos="`uname | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`"
        case "$pike_cv_java_sysos" in
          sunos)
            case "`uname -r`" in
              5.*|6.*|7.*) pike_cv_java_sysos="solaris";
            esac
          ;;
          *windows*)
            pike_cv_java_sysos=windows_nt
          ;;
        esac
      ])
      AC_MSG_RESULT($pike_cv_java_sysos)
    
      AC_MSG_CHECKING(which architecture we are using)
      AC_CACHE_VAL(pike_cv_java_arch, [
        if test "x$pike_cv_java_sysos" = xwindows_nt; then
          uname=uname
        elif test -f "/usr/bin/uname"; then
          uname=/usr/bin/uname
        else
          uname=/bin/uname
        fi
        if test aix = "$pike_cv_java_sysos" && aix_cputype=`/usr/sbin/lsattr -El proc0 | awk '$1=="type" { print $2; ok=1; exit } END { exit !ok }'`; then
          case "$aix_cputype" in
    	PowerPC*) pike_cv_java_arch=powerpc;;
    	POWER*) pike_cv_java_arch=rs6000;;
    	*) pike_cv_java_arch="`echo $aix_cputype | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`";;
          esac
        else
          if pike_cv_java_arch="`$uname -p || uname -p 2>/dev/null`"; then :;
          else pike_cv_java_arch=no; fi
        fi
    
        dnl Linux kluge
    
        if test x"$pike_cv_java_arch":"$pike_cv_java_sysos" = xunknown:linux -o \
    	    x"$pike_cv_java_arch":"$pike_cv_java_sysos" = xno:linux; then
          pike_cv_java_arch="`uname -m | sed -e 's/^i[[4-9]]86/i386/'`"
        fi
      ])
      AC_MSG_RESULT($pike_cv_java_arch)
    
      AC_MSG_CHECKING(what kind of threads to use)
      AC_CACHE_VAL(pike_cv_java_threads_type, [
        if test "x$THREADS_FLAG" = x; then
          pike_cv_java_threads_type=native_threads
        else
          pike_cv_java_threads_type="${THREADS_FLAG}_threads"
        fi
      ])
      AC_MSG_RESULT($pike_cv_java_threads_type)
    
      if test x"$pike_cv_java_threads_type" = xnative_threads; then
        :
      else
        AC_MSG_WARN([Only native_threads are known to work.])
        AC_MSG_WARN([If you are unsure, please unset \$THREADS_FLAG and rerun configure.])
      fi
    
      AC_MSG_CHECKING(for working ls)
      AC_CACHE_VAL(pike_cv_ls, [
        pike_cv_ls=no
        IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
        for ac_dir in $PATH; do
          if test -x "$ac_dir"/ls && "$ac_dir"/ls . >/dev/null 2>&1; then
            if "$ac_dir"/ls ./fnord/fnord/fnord/fnurkelfoo 2>/dev/null; then
    	  :
    	else
    	  pike_cv_ls="$ac_dir"/ls
    	fi
          else
    	:
          fi
        done
        IFS="$ac_save_ifs"
      ])
      AC_MSG_RESULT($pike_cv_ls)
      if test no = "$pike_cv_ls"; then
        AC_MSG_WARN([no working ls found!  Java configure will almost certainly fail.])
        LS="false"
      else
        LS="$pike_cv_ls"
      fi
    
      AC_MSG_CHECKING(for JAVA_HOME)
    
      AC_CACHE_VAL(pike_cv_java_java_home, [[
        if test "x$JAVA_HOME" = x; then
          pike_cv_java_java_home=no
    
          # balance brackets: [ 
          #
          # I know this is bloody ugly, bug in modern (>2.13) 
          # autoconf's changequote doesn't work (and this is 
          # the only thing that breaks so far) /Mirar
    
          java_home_guess="`java -verbose fnord.fnord.fnord 2>&1 | sed -e 's:^\[[^]/]*\(/.*\)/[^/]*\.\(jar\|zip\)[] ].*$:\1:' -e t -e d | sed -e 's:^.* from /:/:' -e 's:/[Cc]lasses$::' -e 's:/lib$::' -e 1q`"
          for tmp_java_home in /usr/java /usr/local/java /usr/local/jdk* /usr/java*/jre /usr/java/jdk*/jre /usr/local/java*/jre /usr/local/jdk*/jre /usr/local/jre* /usr/local/j2sdk*/jre /usr/local/j2re* "$java_home_guess" "$pike_java_user_lib_directory"/..; do
            if test -d $tmp_java_home/.; then
              if "$LS" "$tmp_java_home/lib/$pike_cv_java_arch/$pike_cv_java_threads_type"/libjvm* >/dev/null 2>&1 || \
    	    "$LS" "$tmp_java_home/lib/$pike_cv_java_arch"/libjvm* >/dev/null 2>&1 || \
    	    "$LS" "$tmp_java_home/lib/$pike_cv_java_arch"/classic/libjvm* >/dev/null 2>&1 || \
    	    "$LS" "$tmp_java_home/bin"/classic/libjvm* >/dev/null 2>&1 || \
    	    "$LS" "$tmp_java_home/Libraries"/libjvm* >/dev/null 2>&1; then
    	      pike_cv_java_java_home="$tmp_java_home"
    	  else
    	    :
    	  fi
            else
              :
            fi
          done
        else
          if test -d "$JAVA_HOME"/jre/lib; then
            pike_cv_java_java_home="$JAVA_HOME"/jre
          else
            pike_cv_java_java_home="$JAVA_HOME"
          fi
        fi
      ]])
      AC_MSG_RESULT($pike_cv_java_java_home)
    
      AC_MSG_CHECKING(for Java libraries)
      AC_CACHE_VAL(pike_cv_java_lib_dir, [
        pike_cv_java_lib_dir=""
        if test -z "$pike_java_user_lib_directory"; then
          tmp_java_lib_dir="$pike_cv_java_java_home/lib"
        else
          tmp_java_lib_dir="$pike_java_user_lib_directory"
        fi
        for i in "$pike_cv_java_arch/$pike_cv_java_threads_type" \
                 "$pike_cv_java_arch/classic" "$pike_cv_java_arch" \
    	     "." "../bin" "../bin/classic"; do
          if test -d "$tmp_java_lib_dir/$i/." && "$LS" $tmp_java_lib_dir/$i/lib* >/dev/null 2>&1; then
            pike_cv_java_lib_dir="$pike_cv_java_lib_dir$tmp_java_lib_dir/$i "
          else
    	:
          fi
        done
        if test -z "$pike_cv_java_lib_dir" ; then pike_cv_java_lib_dir=no; else
          :
        fi
      ])
      AC_MSG_RESULT($pike_cv_java_lib_dir)
    
      if test "x$pike_cv_java_lib_dir" = xno; then :; else
        echo Adding $pike_cv_java_lib_dir to the library search path.
        for i in $pike_cv_java_lib_dir; do
          LDFLAGS="-L$i -R$i ${LDFLAGS}"
          LINKER_OPTIONS="-L$i -R$i ${LINKER_OPTIONS}"
          JAVA_LIBPATH="${JAVA_LIBPATH}${JAVA_LIBPATH:+:}$i"
          LIBPATH="${LIBPATH}${LIBPATH:+:}$i"
        done
        export LIBPATH
      fi
    
      AC_MSG_CHECKING(for the Java include directory)
      AC_CACHE_VAL(pike_cv_java_include_dir, [
        pike_cv_java_include_dir=no
        for tmp_java_incdir in /usr/java* /usr/local/java* /usr/local/jdk* /usr/local/jre* /usr/local/j2sdk* "$pike_cv_java_java_home"/../.. "$pike_cv_java_java_home"/.. "$pike_cv_java_java_home" "$pike_java_user_include_directory"; do
          if test -d $tmp_java_incdir/. && "$LS" "$tmp_java_incdir/include/jni.h" >/dev/null 2>&1 ; then
    	 pike_cv_java_include_dir="$tmp_java_incdir/include"
          else
            if test -d $tmp_java_incdir/. -a -d $tmp_java_incdir/Headers/. &&\
            	  "$LS" "$tmp_java_incdir/Headers/jni.h" >/dev/null 2>&1 ; then
    	  pike_cv_java_include_dir="$tmp_java_incdir/Headers"
    	else
    	  :
    	fi
          fi
        done
      ])
      AC_MSG_RESULT($pike_cv_java_include_dir)
    
      if test "x$pike_cv_java_include_dir" = xno; then :; else
        echo "Adding $pike_cv_java_include_dir to the include search path."
        CPPFLAGS="-I$pike_cv_java_include_dir ${CPPFLAGS}"
        if test -d "$pike_cv_java_include_dir/$pike_cv_java_sysos/."; then
          echo "Adding $pike_cv_java_include_dir/$pike_cv_java_sysos to the include search path."
          CPPFLAGS="-I$pike_cv_java_include_dir/$pike_cv_java_sysos ${CPPFLAGS}"
        else
          :
        fi
        if test -d "$pike_cv_java_include_dir/$pike_cv_java_arch/."; then
          echo "Adding $pike_cv_java_include_dir/$pike_cv_java_arch to the include search path."
          CPPFLAGS="-I$pike_cv_java_include_dir/$pike_cv_java_arch ${CPPFLAGS}"
        else
          :
        fi
      fi
    
      AC_MSG_CHECKING([for JavaVM (MacOS X)])
      AC_CACHE_VAL(pike_cv_java_javavm, [
        pike_cv_java_javavm=no;
        for tmp_java_javavm in ../.. .. .; do
          if test -f "$pike_cv_java_java_home"/"$tmp_java_javavm"/JavaVM; then
            pike_cv_java_javavm="$pike_cv_java_java_home"/"$tmp_java_javavm"/JavaVM
          else
            :
          fi
        done
      ])
      AC_MSG_RESULT($pike_cv_java_javavm)
    
      if test osf1 = "$pike_cv_java_sysos"; then
        CPPFLAGS="-D_REENTRANT $CPPFLAGS"
      else
        :
      fi
      AC_CHECK_HEADERS(jni.h winbase.h setjmp.h)
    
      pike_cv_java=no
    
      if test "$ac_cv_header_jni_h" = yes; then
    
        AC_CHECK_LIB(hpi, sysOpen, [
          LIBS="$LIBS -lhpi"
          JAVA_LIBS="${JAVA_LIBS} -lhpi"
        ], [])
    
        if test x"$pike_cv_java_javavm" = xno; then
          :
        else
          AC_MSG_CHECKING([for JNI_CreateJavaVM in "$pike_cv_java_javavm"])
          AC_CACHE_VAL(ac_cv_lib_javavm_JNI_CreateJavaVM, [
            ac_save_LIBS="$LIBS"
            LIBS="$pike_cv_java_javavm $LIBS"
            AC_TRY_LINK([#include <jni.h>], dnl
    	  [JNI_CreateJavaVM((JavaVM**)0,(void**)0,(void*)0);], dnl
    	  [ac_cv_lib_javavm_JNI_CreateJavaVM=yes], dnl
    	  [ac_cv_lib_javavm_JNI_CreateJavaVM=no])
            LIBS="$ac_save_LIBS"
          ])
          if test x"$ac_cv_lib_javavm_JNI_CreateJavaVM" = xyes; then
            LIBS="$pike_cv_java_javavm $LIBS"
            JAVA_LIBS="$pike_cv_java_javavm ${JAVA_LIBS}"
            pike_cv_java=yes;
            AC_MSG_RESULT(yes)
          else
            AC_MSG_RESULT(no)
          fi      
        fi
    
        if test x"$pike_cv_java" = xyes; then
          :
        else
    
          AC_MSG_CHECKING([for JNI_CreateJavaVM in -ljvm])
          AC_CACHE_VAL(ac_cv_lib_jvm_JNI_CreateJavaVM, [
            ac_save_LIBS="$LIBS"
            LIBS="-ljvm $LIBS"
            AC_TRY_LINK([#include <jni.h>], dnl
    	  [JNI_CreateJavaVM((JavaVM**)0,(void**)0,(void*)0);], dnl
    	  [ac_cv_lib_jvm_JNI_CreateJavaVM=yes], dnl
    	  [ac_cv_lib_jvm_JNI_CreateJavaVM=no])
            LIBS="$ac_save_LIBS"
          ])
          if test x"$ac_cv_lib_jvm_JNI_CreateJavaVM" = xyes; then
            LIBS="-ljvm $LIBS"
            JAVA_LIBS="-ljvm ${JAVA_LIBS}"
            pike_cv_java=yes;
            AC_MSG_RESULT(yes)
          else
            AC_MSG_RESULT(no)
          fi
    
        fi
    
        if test "$pike_cv_java" = yes; then
    
          AC_CHECK_LIB(java, Java_java_lang_Class_isInstance, [
            LIBS="-ljava $LIBS"
            JAVA_LIBS="-ljava ${JAVA_LIBS}"
          ], [])
    
          AC_CHECK_LIB(zip, Java_java_util_zip_Inflater_inflateBytes, [
            LIBS="-lzip $LIBS"
            JAVA_LIBS="-lzip ${JAVA_LIBS}"
          ], [])
    
          AC_CHECK_LIB(thread, thr_create, [
            LIBS="$LIBS -lthread"
            JAVA_LIBS="${JAVA_LIBS} -lthread"
    	LINKER_OPTIONS="${LINKER_OPTIONS} -lthread"
          ], [])
    
          # Java/AIX has this. For debug...
          AC_CHECK_LIB(java, ibmFindDLL, [
            AC_DEFINE(HAVE_IBMFINDDLL)
          ])
        else
          :
        fi
      else
        :
      fi
    
      PIKE_FEATURE(Java,[no (no known JVM found)])
    
      if test "$pike_cv_java" = yes; then
        AC_MSG_CHECKING(if the JVM really works)
        AC_CACHE_VAL(pike_cv_java_working, [
          OLD_CPPFLAGS="$CPPFLAGS"
          CPPFLAGS="-I$srcdir $OLD_CPPFLAGS"
          AC_TRY_RUN([#ifdef HAVE_JNI_H
    #include <jni.h>
    #endif
    #ifdef HAVE_SETJMP_H
    #include <setjmp.h>
    #endif
    #include <stdio.h>
    #ifdef __NT__
    #include <windows.h>
    #include "ntdl.c"
    #endif
            int main(int argc, char *argv[])
            {
              JavaVM *jvm;
              JNIEnv *env;
              JavaVMInitArgs vm_args;
              JavaVMOption vm_options[2];
    	  jint res;
    	  jmp_buf jbuf;
    #ifndef __NT__
    	  alarm(50);
    #endif
    #ifdef __NT__
    	  switch(open_nt_dll()) {
    	    case -1:
    	      fprintf(stderr, "Can't load DLL\\n");
                  exit(1);
    	    case -2:
                  fprintf(stderr, "Can't GetProcAddress %s\\n", "JNI_CreateJavaVM");
    	    default:
                  exit(1);
    	    case 0:
    	      ;
    	  }
    #endif
              vm_args.version = 0x00010002;
              vm_args.nOptions = 0;
              vm_args.options = vm_options;
              vm_args.ignoreUnrecognized = JNI_TRUE;
    #ifndef __NT__
              vm_options[0].optionString = "-Djava.library.path=$JAVA_LIBPATH";
              vm_options[0].extraInfo = NULL;
              vm_args.nOptions++;
    #endif
              if((res=JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args))) {
    	    fprintf(stderr, "JNI_CreateJavaVM failed code %d\\n", (int)res);
                exit(1);
    	  }
    	  if(!setjmp(jbuf))
    	    longjmp(jbuf,1);
    #ifdef HAVE_IBMFINDDLL
    	  {
    	    /* Debug... */
    	    extern char *ibmFindDLL(void);
    	    fprintf(stderr, "ibmFindDLL: \"%s\"\n", ibmFindDLL());
    	  }
    #endif
    	  return 0;
            };
          ], [pike_cv_java_working=yes], [pike_cv_java_working=no])
          CPPFLAGS="$OLD_CPPFLAGS"
        ])
        AC_MSG_RESULT($pike_cv_java_working)
        PIKE_FEATURE(Java,[yes ($JAVA_LIBS)])
        if test "$pike_cv_java_working" = no; then
          pike_cv_java=no;
          PIKE_FEATURE(Java,[no (JVM does not work)])
        fi
      else
        :
      fi
    
      if test "x$pike_cv_java" = xno; then
        LIBS="$OLD_LIBS"
        CPPFLAGS="$OLD_CPPFLAGS"
        LDFLAGS="$OLD_LDFLAGS"
        JAVA_LIBS=""
        LINKER_OPTIONS=""
      else
        AC_DEFINE(HAVE_JAVA)
        JAVA_AVAILABLE=1
        if test "x$pike_cv_java_java_home" = xno; then :; else
          AC_DEFINE_UNQUOTED(JAVA_HOME, "${pike_cv_java_java_home}")
        fi
        if test "x$pike_cv_sys_os" = xWindows_NT ; then
          # We'll do LoadLibrary ourselves instead of relying on jvm.lib to
          # do it for us.  That way we'll avoid nasty popup dialogs...
          JAVA_LIBS=""
        else
          :
        fi
      fi
    
      AC_MSG_CHECKING(for known machine language)
      AC_CACHE_VAL(pike_cv_java_cpu, [
        case $pike_cv_java_arch  in
          sparc) pike_cv_java_cpu=sparc;;
          i386|x86) pike_cv_java_cpu=x86;;
          powerpc|ppc) pike_cv_java_cpu=ppc;;
          alpha) pike_cv_java_cpu=alpha;;
          *) pike_cv_java_cpu=no;;
        esac
      ])
      AC_MSG_RESULT($pike_cv_java_cpu)
    
      case $pike_cv_java_cpu in
        sparc) AC_DEFINE(HAVE_SPARC_CPU);;
        x86) AC_DEFINE(HAVE_X86_CPU);;
        ppc) AC_DEFINE(HAVE_PPC_CPU);;
        alpha) AC_DEFINE(HAVE_ALPHA_CPU);;
      esac
    
      if test "x$JAVA_LIBPATH" = x; then :; else
        AC_DEFINE_UNQUOTED(JAVA_LIBPATH, "${JAVA_LIBPATH}")
      fi
    
      true
    else
      :
    fi
    
    if test x"${pike_cv_java}${pike_cv_sys_os}" = xyesWindows_NT ; then
      JAVA_LIBS="-lkernel32 -lws2_32 -ladvapi32 $JAVA_LIBS"
      PIKE_FEATURE(Java,[yes ($JAVA_LIBS)])
    fi
    
    
    LIBPATH="$OLD_LIBPATH"
    
    AC_SUBST(LINKER_OPTIONS)
    AC_SUBST(JAVA_LIBS)
    AC_SUBST(JAVA_AVAILABLE)
    
    AC_OUTPUT(Makefile module.pmod.in,echo FOO >stamp-h )