From: Christian Thalinger Date: Wed, 5 Mar 2008 11:13:06 +0000 (+0100) Subject: * configure.ac (AC_CHECK_WITH_CLASSPATH_INCLUDEDIR): Removed. X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=cacao.git;a=commitdiff_plain;h=1ac4d32ec79658327c4e5f0620b4ae96fd9310c2 * configure.ac (AC_CHECK_WITH_CLASSPATH_INCLUDEDIR): Removed. [!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. --- diff --git a/configure.ac b/configure.ac index 60d461a75..e232388c6 100644 --- a/configure.ac +++ b/configure.ac @@ -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] diff --git a/m4/classpath.m4 b/m4/classpath.m4 index 3e873ed1d..b484bff07 100644 --- a/m4/classpath.m4 +++ b/m4/classpath.m4 @@ -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=,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=,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=,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]) ]) diff --git a/src/native/jni.h b/src/native/jni.h index 05a013659..ae6d1733b 100644 --- a/src/native/jni.h +++ b/src/native/jni.h @@ -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. @@ -25,27 +23,34 @@ */ -/* 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