Macro: ac_jni_include_dirs

Back to the Main Page. | # ac_jni_include_dirs | Download the M4 Source.

Synopsis

  `AC_JNI_INCLUDE_DIR`

Version

  1.1 (2001/09/25) Installed_Packages @ ac-archive-0.5.39

Author

  Don Anderson <dda@sleepycat.com>

Description

  AC_JNI_INCLUDE_DIR finds include directories needed for compiling programs using the JNI interface.

  JNI include directories are usually in the java distribution This is deduced from the value of JAVAC. When this macro completes, a list of directories is left in the variable JNI_INCLUDE_DIRS.

  Example usage follows:

  `AC_JNI_INCLUDE_DIR`

  `for JNI_INCLUDE_DIR in $JNI_INCLUDE_DIRS`
  `do`
  `CPPFLAGS="$CPPFLAGS -I$JNI_INCLUDE_DIR"`
  `done`

  If you want to force a specific compiler:

  - at the configure.in level, set JAVAC=yourcompiler before calling
  AC_JNI_INCLUDE_DIR

  - at the configure level, setenv JAVAC

  Note: This macro can work with the autoconf M4 macros for Java programs. This particular macro is not part of the original set of macros.

M4 Source Code

      AC_DEFUN(AC_JNI_INCLUDE_DIR,[

      JNI_INCLUDE_DIRS=""

      test "x$JAVAC" = x && AC_MSG_ERROR(['$JAVAC' undefined])
      AC_PATH_PROG(_ACJNI_JAVAC, $JAVAC, no)
      test "x$_ACJNI_JAVAC" = xno && AC_MSG_ERROR([$JAVAC could not be found in path])

      _ACJNI_FOLLOW_SYMLINKS("$_ACJNI_JAVAC")
      _JTOPDIR=`echo "$_ACJNI_FOLLOWED" | sed -e 's://*:/:g' -e 's:/[[^/]]*$::'`
      case "$host_os" in
              darwin*)        _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[[^/]]*$::'`
                              _JINC="$_JTOPDIR/Headers";;
              *)              _JINC="$_JTOPDIR/include";;
      esac
      if test -f "$_JINC/jni.h"; then
              JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JINC"
      else
              _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[[^/]]*$::'`
              if test -f "$_JTOPDIR/include/jni.h"; then
                      JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include"
              else
                      AC_MSG_ERROR([cannot find java include files])
              fi
      fi

      # get the likely subdirectories for system specific java includes
      case "$host_os" in
      bsdi*)          _JNI_INC_SUBDIRS="bsdos";;
      linux*)         _JNI_INC_SUBDIRS="linux genunix";;
      osf*)           _JNI_INC_SUBDIRS="alpha";;
      solaris*)       _JNI_INC_SUBDIRS="solaris";;
      *)              _JNI_INC_SUBDIRS="genunix";;
      esac

      # add any subdirectories that are present
      for JINCSUBDIR in $_JNI_INC_SUBDIRS
      do
              if test -d "$_JTOPDIR/include/$JINCSUBDIR"; then
                      JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include/$JINCSUBDIR"
              fi
      done
      ])

      # _ACJNI_FOLLOW_SYMLINKS <path>
      # Follows symbolic links on <path>,
      # finally setting variable _ACJNI_FOLLOWED
      # --------------------
      AC_DEFUN(_ACJNI_FOLLOW_SYMLINKS,[
      # find the include directory relative to the javac executable
      _cur="$1"
      while ls -ld "$_cur" 2>/dev/null | grep " -> " >/dev/null; do
              AC_MSG_CHECKING(symlink for $_cur)
              _slink=`ls -ld "$_cur" | sed 's/.* -> //'`
              case "$_slink" in
              /*) _cur="$_slink";;
              # 'X' avoids triggering unwanted echo options.
              *) _cur=`echo "X$_cur" | sed -e 's/^X//' -e 's:[[^/]]*$::'`"$_slink";;
              esac
              AC_MSG_RESULT($_cur)
      done
      _ACJNI_FOLLOWED="$_cur"
      ])# _ACJNI