view GEMBASSY-1.0.3/m4/java.m4 @ 0:8300eb051bea draft

Initial upload
author ktnyt
date Fri, 26 Jun 2015 05:19:29 -0400
parents
children
line wrap: on
line source

dnl                                            -*- Autoconf -*-
dnl @synopsis CHECK_JAVA()
dnl
dnl Need to specify --with-java and --with-javaos
dnl @author Alan Bleasby
dnl
dnl This macro calls:
dnl
dnl   AC_SUBST([JAVA_CFLAGS])
dnl   AC_SUBST([JAVA_CPPFLAGS])
dnl   AC_SUBST([JAVA_LDFLAGS])
dnl
dnl   AM_CONDITIONAL([JAVA_BUILD], ...)
dnl
dnl And sets:
dnl
dnl   AC_DEFINE([HAVE_JAVA], ...)
dnl
dnl   AC_PATH_PROG([ANT], ...)
dnl   AC_PATH_PROG([JAR], ...)
dnl   AC_PATH_PROG([JAVA], ...)
dnl   AC_PATH_PROG([JAVAC], ...)

AC_DEFUN([CHECK_JAVA],
[
  JAVA_CFLAGS=""
  JAVA_CPPFLAGS=""
  JAVA_LDFLAGS=""

  have_java="yes"
  auth_java=""

  AC_MSG_CHECKING([for Java JNI])

  AC_ARG_WITH([java],
  [AS_HELP_STRING([--with-java@<:@=ARG@:>@],
  [root directory path of Java installation])],
  [
    AC_MSG_RESULT([${withval}])
    AS_IF([test "x${withval}" = "xno"], [have_java="no"])
  ],
  [
    AC_MSG_RESULT([no])
    have_java="no"
  ])

  AS_IF([test "x${have_java}" = "xyes"],
  [
    # If specified, the Java JNI include directory has to exist.
    AS_IF([test -d ${with_java}],
    [AS_VAR_SET([JAVA_CPPFLAGS], ["-I${withval}"])],
    [
      have_java="no"
      AC_MSG_ERROR([Java include directory ${withval} does not exist])
    ])
  ])

  AC_MSG_CHECKING([for Java JNI OS])

  AC_ARG_WITH([javaos],
  [AS_HELP_STRING([--with-javaos@<:@=ARG@:>@],
  [root directory path of Java OS include])],
  [
    AC_MSG_RESULT([${withval}])

    AS_IF([test "x${withval}" != "xno"],
    [
      # If specified, the Java JNI OS include directory has to exist.
      AS_IF([test "x${have_java}" = "xyes" && test -d ${withval}],
      [AS_VAR_APPEND([JAVA_CPPFLAGS], [" -I${withval}"])],
      [
        have_java="no"
        AC_MSG_ERROR([Java OS include directory ${withval} does not exist])
      ])
    ])
  ],
  [
    AC_MSG_RESULT([no])
  ])

  # Authorisation type

  AC_MSG_CHECKING([for authorisation type])

  AC_ARG_WITH([auth],
  [AS_HELP_STRING([--with-auth@<:@=ARG@:>@],
  [authorisation mechanism for Jemboss server @<:@default=PAM@:>@])],
  [
    AS_IF([test "x${withval}" != "xno"],
    [
      AC_MSG_RESULT([yes])

      AS_CASE([${withval}],
      [yes],
      [
        auth_java="PAM"
        AC_CHECK_LIB([pam], [main],
        [AS_VAR_APPEND([JAVA_LDFLAGS], [" -lpam"])])
      ],
      [pam],
      [
        auth_java="PAM"
        AC_CHECK_LIB([pam], [main],
        [AS_VAR_APPEND([JAVA_LDFLAGS], [" -lpam"])])
      ],
      [shadow],
      [
        auth_java="N_SHADOW"
        AC_CHECK_LIB([crypy], [main],
        [AS_VAR_APPEND([JAVA_LDFLAGS], [" -lcrypt"])])
      ],
      [rshadow],
      [
        auth_java="R_SHADOW"
        AC_CHECK_LIB([crypy], [main],
        [AS_VAR_APPEND([JAVA_LDFLAGS], [" -lcrypt"])])
      ],
      [noshadow],
      [auth_java="NO_SHADOW"],
      [rnoshadow],
      [auth_java="RNO_SHADOW"],
      [aixshadow],
      [auth_java="AIX_SHADOW"],
      [hpuxshadow],
      [auth_java="HPUX_SHADOW"])
    ],
    [AC_MSG_RESULT([no])])
  ],
  [AC_MSG_RESULT([no])])

  AS_IF([test -n "${auth_java}"],
  [AS_VAR_APPEND([JAVA_CPPFLAGS], [" -D${auth_java}"])],
  [AS_VAR_APPEND([JAVA_CPPFLAGS], [" -DNO_AUTH"])])

  # Threading type

  AC_MSG_CHECKING([for threading type])

  AC_ARG_WITH([thread],
  [AS_HELP_STRING([--with-thread@<:@=ARG@:>@],
  [thread type @<:@default=linux@:>@])],
  [
    AS_IF([test "x${withval}" != "xno"],
    [
      AC_MSG_RESULT([yes])

      AS_CASE([${withval}],
      [yes],
      [
        AS_VAR_APPEND([JAVA_CPPFLAGS], [" -D_REENTRANT"])
        AS_VAR_APPEND([JAVA_LDFLAGS], [" -lpthread"])
        # AS_VAR_APPEND([LIBS], [" -lpthread"])
      ],
      [freebsd],
      [
        AS_VAR_APPEND([JAVA_CPPFLAGS], [" -D_THREAD_SAFE"])
        AS_VAR_APPEND([JAVA_LDFLAGS], [" -pthread"])
        # AS_VAR_APPEND([LIBS], [" -lc_r"])
      ],
      [linux],
      [
        AS_VAR_APPEND([JAVA_CPPFLAGS], [" -D_REENTRANT"])
        AS_VAR_APPEND([JAVA_LDFLAGS], [" -lpthread"])
        # AS_VAR_APPEND([LIBS], [" -lpthread"])
      ],
      [solaris],
      [
        AS_VAR_APPEND([JAVA_CPPFLAGS], [" -D_POSIX_C_SOURCE=199506L"])
        AS_VAR_APPEND([JAVA_LDFLAGS], [" -lpthread"])
        # AS_VAR_APPEND([LIBS], [" -lpthread"])
      ],
      [macos],
      [
        # AS_VAR_APPEND([JAVA_CPPFLAGS], [""])
        # AS_VAR_APPEND([JAVA_LDFLAGS], [" -lpthread"])
        # AS_VAR_APPEND([LIBS], [" -lpthread"])
      ],
      [hpux],
      [
        AS_VAR_APPEND([JAVA_CFLAGS], [" -Ae +z"])
        AS_VAR_APPEND([JAVA CPPFLAGS], [" -DNATIVE -D_POSIX_C_SOURCE=199506L"])
        AS_VAR_APPEND([JAVA_LDFLAGS], [" -lpthread"])
        # AS_VAR_APPEND([LIBS], [" -lpthread"])
      ],
      [irix],
      [
        # AS_VAR_APPEND([JAVA_CFLAGS], [""])
        AS_VAR_APPEND([JAVA_LDFLAGS], [" -lpthread"])
        AS_VAR_APPEND([LIBS], [" -lpthread"])
      ],
      [aix],
      [
        AS_VAR_APPEND([JAVA_CPPFLAGS], [" -D_REENTRANT"])
        AS_VAR_APPEND([JAVA_LDFLAGS], [" -lpthread"])
        AS_VAR_APPEND([LIBS], [" -lpthread"])
      ],
      [osf],
      [
        AS_VAR_APPEND([JAVA_CPPFLAGS], [" -D_REENTRANT -D_OSF_SOURCE"])
        AS_VAR_APPEND([JAVA_LDFLAGS], [" -lpthread"])
        AS_VAR_APPEND([LIBS], [" -lpthread"])
      ])
    ],
    [AC_MSG_RESULT([no])])
  ],
  [AC_MSG_RESULT([no])])

  # Test for programs ant, jar, java and javac.

  AS_IF([test "x${have_java}" = "xyes"],
  [
    AC_PATH_PROG([ANT], [ant], [no])
    AS_IF([test "x${ANT}" = "xno"], [have_java="no"])

    AC_PATH_PROG([JAR], [jar], [no])
    AS_IF([test "x${JAR}" = "xno"], [have_java="no"])

    AC_PATH_PROG([JAVA], [java], [no])
    AS_IF([test "x${JAVA}" = "xno"], [have_java="no"])

    AC_PATH_PROG([JAVAC], [javac], [no])
    AS_IF([test "x${JAVAC}" = "xno"], [have_java="no"])
  ])

  AS_IF([test "x${have_java}" = "xyes"],
  [
    AC_DEFINE([HAVE_JAVA], [1],
    [Define to 1 if the Java Native Interface (JNI) is available.])

    ### FIXME: Append -DDEBIAN for the moment.
    # Debian uses PAM service "ssh" instead of "login", see ajjava.c
    # This could use AC_DEFINE() if no better option was avialable.
    # Ultimately, this should be configurable via server configuration
    # files.
    AS_IF([test -f "/etc/debian_release" || test -f /etc/debian_version],
    [AS_VAR_APPEND([JAVA_CPPFLAGS], [" -DDEBIAN"])])
  ])

  AC_ARG_VAR([ANT], [Path to the Apache Ant make tool])
  AC_ARG_VAR([JAR], [Path to the Java archive tool])
  AC_ARG_VAR([JAVA], [Path to the Java application launcher])
  AC_ARG_VAR([JAVAC], [Path to the Java compiler])

  AC_SUBST([JAVA_CFLAGS])
  AC_SUBST([JAVA_CPPFLAGS])
  AC_SUBST([JAVA_LDFLAGS])

  AM_CONDITIONAL([JAVA_BUILD], [test "x${have_java}" = "xyes"])
])