Macro: ac_check_class

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

Synopsis

  `AC_CHECK_CLASS`

Version

  1.1.1.1 (2001/07/26) Java_Support @ ac-archive-0.5.39

Author

  Stephane Bortzmeyer <bortzmeyer@pasteur.fr>

Description

  AC_CHECK_CLASS tests the existence of a given Java class, either in a jar or in a '.class' file.

  *Warning*: its success or failure can depend on a proper setting of the CLASSPATH env. variable.

  Note: This is part of the set of autoconf M4 macros for Java programs. It is VERY IMPORTANT that you download the whole set, some macros depend on other. Unfortunately, the autoconf archive does not support the concept of set of macros, so I had to break it for submission. The general documentation, as well as the sample configure.in, is included in the AC_PROG_JAVA macro.

M4 Source Code

      AC_DEFUN([AC_CHECK_CLASS],[
      AC_REQUIRE([AC_PROG_JAVA])
      ac_var_name=`echo $1 | sed 's/\./_/g'`
      dnl Normaly I'd use a AC_CACHE_CHECK here but since the variable name is
      dnl dynamic I need an extra level of extraction
      AC_MSG_CHECKING([for $1 class])
      AC_CACHE_VAL(ac_cv_class_$ac_var_name, [
      if test x$ac_cv_prog_uudecode_base64 = xyes; then
      dnl /**
      dnl  * Test.java: used to test dynamicaly if a class exists.
      dnl  */
      dnl public class Test
      dnl {
      dnl
      dnl public static void
      dnl main( String[] argv )
      dnl {
      dnl     Class lib;
      dnl     if (argv.length < 1)
      dnl      {
      dnl             System.err.println ("Missing argument");
      dnl             System.exit (77);
      dnl      }
      dnl     try
      dnl      {
      dnl             lib = Class.forName (argv[0]);
      dnl      }
      dnl     catch (ClassNotFoundException e)
      dnl      {
      dnl             System.exit (1);
      dnl      }
      dnl     lib = null;
      dnl     System.exit (0);
      dnl }
      dnl
      dnl }
      cat << \EOF > Test.uue
      begin-base64 644 Test.class
      yv66vgADAC0AKQcAAgEABFRlc3QHAAQBABBqYXZhL2xhbmcvT2JqZWN0AQAE
      bWFpbgEAFihbTGphdmEvbGFuZy9TdHJpbmc7KVYBAARDb2RlAQAPTGluZU51
      bWJlclRhYmxlDAAKAAsBAANlcnIBABVMamF2YS9pby9QcmludFN0cmVhbTsJ
      AA0ACQcADgEAEGphdmEvbGFuZy9TeXN0ZW0IABABABBNaXNzaW5nIGFyZ3Vt
      ZW50DAASABMBAAdwcmludGxuAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWCgAV
      ABEHABYBABNqYXZhL2lvL1ByaW50U3RyZWFtDAAYABkBAARleGl0AQAEKEkp
      VgoADQAXDAAcAB0BAAdmb3JOYW1lAQAlKExqYXZhL2xhbmcvU3RyaW5nOylM
      amF2YS9sYW5nL0NsYXNzOwoAHwAbBwAgAQAPamF2YS9sYW5nL0NsYXNzBwAi
      AQAgamF2YS9sYW5nL0NsYXNzTm90Rm91bmRFeGNlcHRpb24BAAY8aW5pdD4B
      AAMoKVYMACMAJAoAAwAlAQAKU291cmNlRmlsZQEACVRlc3QuamF2YQAhAAEA
      AwAAAAAAAgAJAAUABgABAAcAAABtAAMAAwAAACkqvgSiABCyAAwSD7YAFBBN
      uAAaKgMyuAAeTKcACE0EuAAaAUwDuAAasQABABMAGgAdACEAAQAIAAAAKgAK
      AAAACgAAAAsABgANAA4ADgATABAAEwASAB4AFgAiABgAJAAZACgAGgABACMA
      JAABAAcAAAAhAAEAAQAAAAUqtwAmsQAAAAEACAAAAAoAAgAAAAQABAAEAAEA
      JwAAAAIAKA==
      ====
      EOF
                      if uudecode$EXEEXT Test.uue; then
                              :
                      else
                              echo "configure: __oline__: uudecode had trouble decoding base 64 file 'Test.uue'" >&AC_FD_CC
                              echo "configure: failed file was:" >&AC_FD_CC
                              cat Test.uue >&AC_FD_CC
                              ac_cv_prog_uudecode_base64=no
                      fi
              rm -f Test.uue
              if AC_TRY_COMMAND($JAVA $JAVAFLAGS Test $1) >/dev/null 2>&1; then
                      eval "ac_cv_class_$ac_var_name=yes"
              else
                      eval "ac_cv_class_$ac_var_name=no"
              fi
              rm -f Test.class
      else
              AC_TRY_COMPILE_JAVA([$1], , [eval "ac_cv_class_$ac_var_name=yes"],
                      [eval "ac_cv_class_$ac_var_name=no"])
      fi
      eval "ac_var_val=$`eval echo ac_cv_class_$ac_var_name`"
      eval "HAVE_$ac_var_name=$`echo ac_cv_class_$ac_var_val`"
      HAVE_LAST_CLASS=$ac_var_val
      if test x$ac_var_val = xyes; then
              ifelse([$2], , :, [$2])
      else
              ifelse([$3], , :, [$3])
      fi
      ])
      dnl for some reason the above statment didn't fall though here?
      dnl do scripts have variable scoping?
      eval "ac_var_val=$`eval echo ac_cv_class_$ac_var_name`"
      AC_MSG_RESULT($ac_var_val)
      ])