* configure.ac (AC_CHECK_WITH_CLASSPATH_INCLUDEDIR): Removed.
authorChristian Thalinger <twisti@complang.tuwien.ac.at>
Wed, 5 Mar 2008 11:13:06 +0000 (12:13 +0100)
committerChristian Thalinger <twisti@complang.tuwien.ac.at>
Wed, 5 Mar 2008 11:13:06 +0000 (12:13 +0100)
[!WITH_JRE_LAYOUT] (AC_CHECK_WITH_CLASSPATH_LIBDIR): Conditional.
(AC_CHECK_WITH_JNI_MD_H): Added.
(AC_CHECK_WITH_JNI_H): Likewise.
(AM_CPPFLAGS): Added.

* m4/classpath.m4 (AC_CHECK_WITH_CLASSPATH_INCLUDEDIR): Removed.
(AC_CHECK_WITH_JNI_MD_H): New macro.
(AC_CHECK_WITH_JNI_H): Likewise.

* src/native/jni.h (__GCJ_JNI_MD_H__): Removed the quick hack.
(CLASSPATH_JNI_MD_H): Removed.
(CLASSPATH_JNI_H): Likewise.
(INCLUDE_JNI_MD_H): Added.
(INCLUDE_JNI_H): Likewise.

configure.ac
m4/classpath.m4
src/native/jni.h

index 60d461a75b1ca6f9f82c36e452da59f039702ca7..e232388c6721bf4110fc583d590b39f1d6639fbe 100644 (file)
@@ -195,12 +195,6 @@ CFLAGS="$ARCH_CFLAGS $OPT_CFLAGS"
 dnl set interpreter flags
 AC_SUBST(INTRP_CFLAGS)
 
-dnl define some stuff required for --fullversion
-AC_DEFINE_UNQUOTED(VERSION_CONFIGURE_ARGS, "$ac_configure_args", [configure arguments])
-AC_DEFINE_UNQUOTED(VERSION_CC, "$CC", [CC used])
-AC_DEFINE_UNQUOTED(VERSION_CFLAGS, "$OPT_CFLAGS $ARCH_CFLAGS", [CFLAGS used])
-
-
 dnl define and substitute some architecture specific variables
 AC_DEFINE_UNQUOTED([ARCH_DIR], "${ARCH_DIR}", [architecture directory])
 AC_DEFINE_UNQUOTED([JAVA_ARCH], "${JAVA_ARCH}", [Java architecture name])
@@ -768,11 +762,21 @@ AC_SUBST(CACAO_VM_ZIP)
 
 AC_CHECK_WITH_CACAOH
 AC_CHECK_WITH_CLASSPATH
+
+dnl Now we check for jre-layout so we can skip some checks that are
+dnl not required.
+AC_CHECK_WITH_JRE_LAYOUT
+
 AC_CHECK_WITH_CLASSPATH_PREFIX
 AC_CHECK_WITH_CLASSPATH_CLASSES
-AC_CHECK_WITH_CLASSPATH_LIBDIR
-AC_CHECK_WITH_CLASSPATH_INCLUDEDIR
-AC_CHECK_WITH_JRE_LAYOUT
+
+if test x"${WITH_JRE_LAYOUT}" = "xno"; then
+   AC_CHECK_WITH_CLASSPATH_LIBDIR
+fi
+
+dnl The check for jni_md.h must be before jni.h.
+AC_CHECK_WITH_JNI_MD_H
+AC_CHECK_WITH_JNI_H
 
 
 dnl check for some programs we need
@@ -815,10 +819,18 @@ AZ_PYTHON_CSPEC
 AZ_PYTHON_LSPEC
 
 
+dnl define some stuff required for --fullversion
+AC_DEFINE_UNQUOTED(VERSION_CONFIGURE_ARGS, "$ac_configure_args", [configure arguments])
+AC_DEFINE_UNQUOTED(VERSION_CC, "$CC", [CC used])
+AC_DEFINE_UNQUOTED(VERSION_CFLAGS, "$OPT_CFLAGS $ARCH_CFLAGS $CPPFLAGS_INCLUDE", [CFLAGS used])
+
+
 dnl finally pass CFLAGS to Makefiles via AM_CFLAGS
-CFLAGS=$OPT_CFLAGS
+CFLAGS="$OPT_CFLAGS"
 AM_CFLAGS=$ARCH_CFLAGS
+AM_CPPFLAGS="$CPPFLAGS_INCLUDE"
 AC_SUBST(AM_CFLAGS)
+AC_SUBST(AM_CPPFLAGS)
 
 
 AC_CONFIG_FILES([Makefile]
index 3e873ed1db0f6e830a20cf724cf354c3c7c825bb..b484bff0766d1261f76afa99f689ef4e3bdb23d2 100644 (file)
@@ -1,28 +1,24 @@
 dnl m4/classpath.m4
 dnl
-dnl Copyright (C) 2007 R. Grafl, A. Krall, C. Kruegel,
-dnl C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
-dnl E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
-dnl J. Wenninger, Institut f. Computersprachen - TU Wien
-dnl 
+dnl Copyright (C) 2007, 2008
+dnl CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
+dnl
 dnl This file is part of CACAO.
-dnl 
+dnl
 dnl This program is free software; you can redistribute it and/or
 dnl modify it under the terms of the GNU General Public License as
 dnl published by the Free Software Foundation; either version 2, or (at
 dnl your option) any later version.
-dnl 
+dnl
 dnl This program is distributed in the hope that it will be useful, but
 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 dnl General Public License for more details.
-dnl 
+dnl
 dnl You should have received a copy of the GNU General Public License
 dnl along with this program; if not, write to the Free Software
 dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 dnl 02110-1301, USA.
-dnl 
-dnl $Id: classpath.m4 8398 2007-08-22 16:56:45Z twisti $
 
 
 dnl which Java core library should we use
@@ -126,29 +122,42 @@ AC_SUBST(CLASSPATH_LIBDIR)
 ])
 
 
-dnl where are Java core library headers installed
-
-AC_DEFUN([AC_CHECK_WITH_CLASSPATH_INCLUDEDIR],[
-AC_MSG_CHECKING(where Java core library headers are installed)
-AC_ARG_WITH([classpath-includedir],
-            [AS_HELP_STRING(--with-classpath-includedir=<dir>,installation directory of Java core library headers [[default=/usr/local/classpath/include]])],
-            [CLASSPATH_INCLUDEDIR=${withval}],
-            [CLASSPATH_INCLUDEDIR=${CLASSPATH_PREFIX}/include])
-AC_MSG_RESULT(${CLASSPATH_INCLUDEDIR})
-
-if test x"${WITH_CLASSPATH}" = "xsun"; then
-    AC_CHECK_HEADER([${CLASSPATH_INCLUDEDIR}/${OS_DIR}/jni_md.h],
-                    [AC_DEFINE_UNQUOTED([CLASSPATH_JNI_MD_H], "${CLASSPATH_INCLUDEDIR}/${OS_DIR}/jni_md.h", [Java core library jni_md.h header])],
-                    [AC_MSG_ERROR(cannot find jni_md.h)])
-else
-    AC_CHECK_HEADER([${CLASSPATH_INCLUDEDIR}/jni_md.h],
-                    [AC_DEFINE_UNQUOTED([CLASSPATH_JNI_MD_H], "${CLASSPATH_INCLUDEDIR}/jni_md.h", [Java core library jni_md.h header])],
-                    [AC_MSG_ERROR(cannot find jni_md.h)])
-fi
-
-AC_CHECK_HEADER([${CLASSPATH_INCLUDEDIR}/jni.h],
-                [AC_DEFINE_UNQUOTED([CLASSPATH_JNI_H], "${CLASSPATH_INCLUDEDIR}/jni.h", [Java core library jni.h header])],
+dnl where jni_md.h is installed
+
+AC_DEFUN([AC_CHECK_WITH_JNI_MD_H],[
+AC_MSG_CHECKING(where jni_md.h is installed)
+AC_ARG_WITH([jni_md_h],
+            [AS_HELP_STRING(--with-jni_md_h=<dir>,path to jni_md.h [[default=CLASSPATH_PREFIX/include]])],
+            [WITH_JNI_MD_H=${withval}],
+            [WITH_JNI_MD_H=${CLASSPATH_PREFIX}/include])
+AC_MSG_RESULT(${WITH_JNI_MD_H})
+
+dnl We use CPPFLAGS so jni.h can find jni_md.h
+CPPFLAGS_INCLUDE="${CPPFLAGS_INCLUDE} -I${WITH_JNI_MD_H}"
+CPPFLAGS="${CPPFLAGS_INCLUDE}"
+
+AC_CHECK_HEADER([${WITH_JNI_MD_H}/jni_md.h],
+                [AC_DEFINE_UNQUOTED([INCLUDE_JNI_MD_H], "${WITH_JNI_MD_H}/jni_md.h", [Java core library jni_md.h header])],
+                [AC_MSG_ERROR(cannot find jni_md.h)])
+])
+
+
+dnl where jni.h is installed
+
+AC_DEFUN([AC_CHECK_WITH_JNI_H],[
+AC_MSG_CHECKING(where jni.h is installed)
+AC_ARG_WITH([jni_h],
+            [AS_HELP_STRING(--with-jni_h=<dir>,path to jni.h [[default=CLASSPATH_PREFIX/include]])],
+            [WITH_JNI_H=${withval}],
+            [WITH_JNI_H=${CLASSPATH_PREFIX}/include])
+AC_MSG_RESULT(${WITH_JNI_H})
+
+dnl We use CPPFLAGS so jni.h can find jni_md.h
+CPPFLAGS_INCLUDE="${CPPFLAGS_INCLUDE} -I${WITH_JNI_H}"
+CPPFLAGS="${CPPFLAGS_INCLUDE}"
+
+AC_CHECK_HEADER([${WITH_JNI_H}/jni.h],
+                [AC_DEFINE_UNQUOTED([INCLUDE_JNI_H], "${WITH_JNI_H}/jni.h", [Java core library jni.h header])],
                 [AC_MSG_ERROR(cannot find jni.h)],
-                [#define __GCJ_JNI_MD_H__
-                 #include CLASSPATH_JNI_MD_H])
+                [#include INCLUDE_JNI_MD_H])
 ])
index 05a013659d12f8a74c0041aa7cff4d89f3ccbece..ae6d1733bd2b2f5d6be65dc49abccb0c79abeee3 100644 (file)
@@ -1,9 +1,7 @@
 /* src/native/jni.h - JNI types and data structures
 
-   Copyright (C) 1996-2005, 2006, 2007 R. Grafl, A. Krall, C. Kruegel,
-   C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
-   E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
-   J. Wenninger, Institut f. Computersprachen - TU Wien
+   Copyright (C) 1996-2005, 2006, 2007, 2008
+   CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
 
    This file is part of CACAO.
 
 */
 
 
-/* GNU Classpath jni.h *********************************************************
+/* jni.h ***********************************************************************
 
    ATTENTION: We include this file before we actually define our own
-   jni.h.  We do this because, otherwise we can get into unresolvable
+   jni.h.  We do this because otherwise we can get into unresolvable
    circular header dependencies.
 
    This is OK as GNU Classpath defines:
 
+   #define __CLASSPATH_JNI_MD_H__
    #define _CLASSPATH_JNI_H
 
-   CLASSPATH_JNI_H is in config.h defined.
+   and OpenJDK defines:
+
+   #define _JAVASOFT_JNI_MD_H_
+   #define _JAVASOFT_JNI_H_
+
+   CLASSPATH_JNI_MD_H and CLASSPATH_JNI_H are defined in config.h.
 
 *******************************************************************************/
 
 #include "config.h"
 
-/* XXX quick hack to not include GCJ's jni_md.h */
-#define __GCJ_JNI_MD_H__
+/* We include both headers with the absolute path so we can be sure
+   that the preprocessor does not take another header.  Furthermore we
+   include jni_md.h before jni.h as the latter includes the former. */
 
-#include CLASSPATH_JNI_MD_H
-#include CLASSPATH_JNI_H
+#include INCLUDE_JNI_MD_H
+#include INCLUDE_JNI_H
 
 #ifndef _JNI_H
 #define _JNI_H