source: main/trunk/greenstone3/src/packages/javagdbm/configure.in@ 35376

Last change on this file since 35376 was 35376, checked in by davidb, 3 years ago

MacOS JNI code updated to work off JAVA_HOME, in line with approach taken with Linux

  • Property svn:keywords set to Author Date Id Revision
File size: 6.6 KB
Line 
1dnl Process this file with autoconf to produce a configure script.
2
3dnl autoconf configuration script for the JNI part of the
4dnl au.com.pharos.gdbm Java package
5dnl $Id: configure.in 35376 2021-09-13 07:03:13Z davidb $
6
7AC_REVISION($Revision: 35376 $)
8
9# Copyright (C) 1997 by Pharos IP Pty Ltd
10#
11# This program is free software; you can redistribute it and/or modify
12# it under the terms of the GNU General Public License as published by
13# the Free Software Foundation; either version 2 of the License, or
14# (at your option) any later version.
15#
16# This program is distributed in the hope that it will be useful,
17# but WITHOUT ANY WARRANTY; without even the implied warranty of
18# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19# GNU General Public License for more details.
20#
21# You should have received a copy of the GNU General Public License
22# along with this program; if not, write to the Free Software
23# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24
25AC_INIT(jni/gdbmjava.c)
26
27dnl
28dnl look for libgdbm if not in standard location
29dnl
30AC_ARG_WITH(gdbm, [ --with-gdbm=dir Use local gdbm library and headers], gdbmdir=$withval)
31
32dnl get $target_cpu, $target_vendor, and $target_os
33dnl (as well as host_*)
34AC_CANONICAL_SYSTEM
35
36# TODO: allow the user to specify whether they want a debugging
37# library or not?
38
39# check for compilers and other tools
40AC_PROG_CC
41AC_PROG_INSTALL
42AC_PROG_LN_S
43
44AC_MSG_CHECKING(to see if architecture is 64-bit)
45arch_64bit=no
46case "$host_cpu" in
47x86_64) arch_64bit=yes ;;
48esac
49
50if test "$arch_64bit" = yes; then
51 AC_MSG_RESULT(yes)
52 if test -z "$ARCH_DEP_FLAGS" ; then
53 ARCH_DEP_FLAGS="-fPIC"
54 gsdlarch='64'
55 fi
56else
57 AC_MSG_RESULT(no)
58 if test -z "$ARCH_DEP_FLAGS" ; then
59 ARCH_DEP_FLAGS=
60 gsdlarch='32'
61 fi
62fi
63
64export ARCH_DEP_FLAGS
65AC_SUBST(ARCH_DEP_FLAGS)
66
67AC_CHECK_SIZEOF(void *)
68AC_CHECK_SIZEOF(int)
69AC_CHECK_SIZEOF(long)
70
71######## check for the JDK and tools within the JDK
72######## look in the JAVA_HOME environment variable at configure-time
73#AC_MSG_CHECKING([for the JDK])
74#if test "z$JAVA_HOME" != z &&
75# test -d $JAVA_HOME &&
76# (test -d $JAVA_HOME/bin)
77## The following used to be the test, but failed on newer versions of MacOS
78## Cut back to something simpler, and rely on the later tests for JNIINC to confirm
79## files like 'jni.h' can be found
80## test -d $JAVA_HOME &&
81## (test -d $JAVA_HOME/include || test -d $JAVA_HOME/../Headers)
82#then
83# AC_SUBST(JAVA_HOME)
84# AC_MSG_RESULT([found in $JAVA_HOME])
85#else
86# AC_MSG_ERROR([not found in \$JAVA_HOME])
87#fi
88
89## TODO: Check for specific header files in the JDK, or
90## functions/definitions within those headers?
91
92## TODO: guess which include directory to use under the JDK
93
94#AC_PATH_PROG(javagdbm_cv_path_javah, javah, missing_javah)
95#if test "$javagdbm_cv_path_javah" = missing_javah; then
96# AC_MSG_ERROR([javah not found.])
97#fi
98
99#AC_PATH_PROG(javagdbm_cv_path_java, java, missing)
100#if test "$javagdbm_cv_path_java" = missing; then
101# AC_MSG_ERROR([java not found.])
102#fi
103
104# Replacing the above with a more streamlined test for 'javac'
105# This should have the advantage of meaning its not mandated
106# that JAVA_HOME must be set for it to locate a javac
107AC_PROG_JAVAC
108
109# check for gdbm library
110#AC_CHECK_LIB(gdbm, gdbm_open, [javagdbm_cv_lib_gdbm="-lgdbm"],
111# [javagdbm_cv_lib_gdbm=no])
112#if test "$javagdbm_cv_lib_gdbm" = "no"; then
113# AC_MSG_ERROR([no native gdbm library found.])
114#fi
115#LIBS="$javagdbm_cv_lib_gdbm"
116
117# gdbm stuff copied from gsdl [kjdon]
118
119dnl
120dnl Check that the GDBM library is available
121dnl
122dnl check libgdbm manually, in case it's not in the standard location.
123
124AC_MSG_CHECKING(that the GDBM library is available)
125if test ! -z "$gdbmdir" ; then
126 # look in given directory for header file
127 if test -r $gdbmdir/include/gdbm.h ; then
128 GDBM_INCLUDE="-I$gdbmdir/include" ;
129 elif test -r $gdbmdir/gdbm.h ; then
130 GDBM_INCLUDE="-I$gdbmdir" ;
131 fi
132
133 # look in given directory for library
134 if test -r $gdbmdir/libgdbm.a ; then
135 GDBM_LIBPATH="-L$gdbmdir" ;
136 elif test -r $gdbmdir/lib/libgdbm.a ; then
137 GDBM_LIBPATH="-L$gdbmdir/lib" ;
138 elif test -r $gdbmdir/.libs/libgdbm.a ; then
139 GDBM_LIBPATH="-L$gdbmdir/.libs" ;
140 fi
141
142 if test ! -z "$GDBM_LIBPATH" -a ! -z "$GDBM_INCLUDE" ; then
143 AC_MSG_RESULT($gdbmdir) ;
144 else
145 AC_MSG_RESULT(can't find gdbm.h and libgdbm.a in $gdbmdir);
146 AC_MSG_CHECKING( looking for GDBM library in default locations)
147 fi
148fi
149
150# look in default path and in /usr/local
151if test -z "$GDBM_INCLUDE" ; then
152 # try in system directory
153 AC_TRY_COMPILE(
154 [#include <gdbm.h>
155],
156 [],
157 success=yes,
158 success=no
159 )
160
161 if test $success = "no"; then
162# last chance - look in /usr/local (eg FreeBSD)
163 GDBM_LIBPATH=-L/usr/local/lib
164 GDBM_INCLUDE=-I/usr/local/include
165 ac_save_CXXFLAGS="$CXXFLAGS"
166 ac_save_LIBS="$LIBS"
167 CXXFLAGS="$CXXFLAGS -I/usr/local/include"
168 LIBS="$LIBS -L/usr/local/lib -lgdbm"
169 AC_TRY_LINK(
170 [#include <gdbm.h>
171#include <stdio.h>
172 ],
173 [printf("%s",gdbm_version);],
174 success=/usr/local,
175 success=no
176 )
177 CXXFLAGS=$ac_save_CXXFLAGS
178 LIBS=$ac_save_LIBS
179 fi
180
181 AC_MSG_RESULT($success)
182 if test $success = "no"; then
183 AC_MSG_ERROR(GDBM Library not available - cannot install)
184 fi
185fi
186dnl I don't think anything actually checks this define, but...
187AC_DEFINE(HAVE_LIBGDBM , 1)
188
189AC_SUBST(GDBM_LIBPATH)
190AC_SUBST(GDBM_INCLUDE)
191
192########## set compiler options
193# TODO: is there a more appropriate way to guess which switches to use
194# with which systems/compilers?
195CFLAGS="-Wall -O2 -fpic"
196PKG="au.com.pharos.gdbm"
197AC_SUBST(CFLAGS)
198AC_SUBST(PKG)
199AC_SUBST(LIBS)
200
201# we need to set an extended JNI path for Mac OS/Darwin, as jni.h is on
202# a non-standard Path
203# is there a better way to do this??
204AC_MSG_CHECKING(for OS to set JNI options)
205# set defaults
206JNIINC=""
207JNIPREFIX="lib"
208JNISUFFIX="so"
209JNICFLAGS=""
210JNILDFLAGS="-shared"
211
212if test "`(uname -s) 2> /dev/null`" = 'Darwin'; then
213 AC_MSG_RESULT(Darwin)
214 JNIINC="-I\$(JAVA_HOME)/include/darwin -I\$(JAVA_HOME)/include "
215 JNISUFFIX="jnilib"
216 JNILDFLAGS="-dynamiclib -fno-common -single_module -framework JavaVM"
217fi
218if test "`(uname -s) 2> /dev/null`" = 'SunOS'; then
219 AC_MSG_RESULT(Solaris)
220 JNIINC="-I\$(JAVA_HOME)/include/solaris "
221fi
222if test "`(uname -s) 2> /dev/null`" = 'Linux'; then
223 AC_MSG_RESULT(Linux)
224 JNIINC="-I\$(JAVA_HOME)/include/linux -I\$(JAVA_HOME)/include "
225fi
226
227if test "x$crossOS" != "x" ; then
228 if test "$crossOS" = "windows" ; then
229 JNIINC="-I../java-windows-include/win32 -I../java-windows-include "
230 JNICFLAGS="-Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at"
231 JNIPREFIX=""
232 JNISUFFIX="dll"
233 fi
234fi
235
236AC_SUBST(JNIINC)
237AC_SUBST(JNIPREFIX)
238AC_SUBST(JNISUFFIX)
239AC_SUBST(JNICFLAGS)
240AC_SUBST(JNILDFLAGS)
241
242# write the output
243AC_OUTPUT([Makefile jni/Makefile java/Makefile])
Note: See TracBrowser for help on using the repository browser.