summaryrefslogtreecommitdiffstats
path: root/clucene.m4
blob: 312a97a083070036f5c0439727161617972f8f04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
##	-*- autoconf -*-
dnl This file was created by Lee Carpenter <[email protected]>
dnl Later modified by Martin Gruner <[email protected]>
dnl It provides macros for the autoconf package to find the CLucene library on your system.

dnl ----------------------------------------------------------------------
dnl		Check for clucene installation
dnl             First argument specifies whether or not to link
dnl             CLucene statically
dnl ----------------------------------------------------------------------
AC_DEFUN(AC_CHECK_CLUCENE,
[
dnl AC_MSG_CHECKING([for a clucene installation])

dnl The option for the configure script
AC_ARG_WITH(clucene-dir,
[  --with-clucene-dir=DIR     Path where CLucene is installed (default=/usr) ],
[
  ac_clucene_dir=$withval
],ac_clucene_dir=/usr
)

AC_ARG_ENABLE(static-clucene,
[  --enable-static-clucene    Link to the static CLucene library],
 	ac_static_clucene="YES",
 	[ ac_static_clucene="$1" ]
)

dnl try to find CLucene library files
AC_MSG_CHECKING([for CLucene library files])
clucene_multiarch_libs="/usr/lib/`uname -m`-linux-gnu"
ac_clucene_library_dirs="$ac_clucene_dir/lib $exec_prefix/lib $prefix/lib /usr/lib /usr/lib64 /usr/local/lib $clucene_multiarch_libs"

if test "x$ac_static_clucene" = "xYES"; then
	SEARCH_LIBS="libclucene.a";
else
	SEARCH_LIBS="libclucene.so libclucene.so.0 libclucene.so.0.0.0 libcluene.a";
fi


AC_CACHE_VAL(ac_cv_clucene_libdir, AC_FIND_FILE($SEARCH_LIBS, $ac_clucene_library_dirs, ac_cv_clucene_libdir))

if test "x$ac_cv_clucene_libdir" = "xNO"; then
  AC_MSG_CHECKING([for CLucene 2.x library files])
  SEARCH_LIBS="libclucene-shared.so libclucene-shared.so.1";
  AC_CACHE_VAL(ac_cv_clucene2_libdir, AC_FIND_FILE($SEARCH_LIBS, $ac_clucene_library_dirs, ac_cv_clucene_libdir))

  if test "x$ac_cv_clucene2_libdir" = "xNO"; then
    AC_MSG_ERROR(CLucene library not found. Try to use configure with --with-clucene-dir=/path/to/clucene);
  fi
else
  ac_cv_clucene2_libdir="NO"
fi

if test "x$ac_static_clucene" = "xYES"; then
	LIB_CLUCENE="$ac_cv_clucene_libdir/libclucene.a";
else
	if test "x$ac_cv_clucene2_libdir" = "xNO"; then
		LIB_CLUCENE="-lclucene";
	else
		CXXFLAGS="$CXXFLAGS -DCLUCENE_V2"
		LIB_CLUCENE="-lclucene-shared";
	fi
fi

AC_SUBST(CLUCENE_LIBRARY_PATH)
AC_SUBST(LIB_CLUCENE)
all_libraries="$all_libraries -L$ac_cv_clucene_libdir"

if test "x$ac_static_clucene" = "xYES"; then
	MESSAGE="static library $ac_cv_clucene_libdir/libclucene.a";
else
	MESSAGE="$ac_cv_clucene_libdir";
fi
AC_MSG_RESULT([$MESSAGE])

dnl -- try to find CLucene include files --
AC_MSG_CHECKING([for Clucene include files])
ac_clucene_include_dirs="$ac_clucene_dir/include $exec_prefix/include $prefix/include /usr/include /usr/local/include"

AC_CACHE_VAL(ac_cv_clucene_incdir, AC_FIND_FILE(CLucene.h, $ac_clucene_include_dirs, ac_cv_clucene_incdir))

if test "x$ac_cv_clucene_incdir" = "xNO"; then
	AC_MSG_ERROR([The CLucene include file files were not found.
Please try to use configure with --with-clucene-dir=/path/to/clucene 
])
fi

CLUCENE_INCLUDES="-I$ac_cv_clucene_incdir"
AC_SUBST(CLUCENE_INCLUDES)
all_includes="$all_includes -I$ac_cv_clucene_incdir -I$ac_cv_clucene_libdir -I$ac_cv_sword_incdir" #$ac_cv_clucene_libdir needed for Clucene/clucene-config.h

AC_MSG_RESULT([$ac_cv_clucene_incdir])



dnl -- CLucene installed test --

AC_MSG_CHECKING([for CLucene version])

AC_CACHE_VAL(ac_cv_installed_clucene_version,
[
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
ac_LD_LIBRARY_PATH_safe=$LD_LIBRARY_PATH
ac_LIBRARY_PATH="$LIBRARY_PATH"
ac_cxxflags_safe="$CXXFLAGS"
ac_ldflags_safe="$LDFLAGS"
ac_libs_safe="$LIBS"

CXXFLAGS="$CXXFLAGS -I$"
LDFLAGS="$LDFLAGS -L$ac_cv_clucene_libdir -L$ac_cv_sword_libdir"
LIBS="$LIB_CLUCENE -lz -lsword -ltqt"
LD_LIBRARY_PATH="$ac_cv_clucene_libdir"
export LD_LIBRARY_PATH
LIBRARY_PATH=
export LIBRARY_PATH

cat > conftest.$ac_ext <<EOF
#include <iostream>
#include <swversion.h>
#include <CLucene/clucene-config.h>

int main(int argc, char* argv[[]]) {
	if ( sword::SWVersion( _CL_VERSION ) >= sword::SWVersion( "0.9.16" ) ){
		std::cout << "ok";
	}
	else{
		std::cout << "not-ok";
	}
	return 0;
}
EOF


ac_link='$LIBTOOL_SHELL --silent --mode=link ${CXX-g++} -o conftest $CXXFLAGS $all_includes $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
if AC_TRY_EVAL(ac_link) && test -s conftest; then
	if test -x conftest; then
		eval ac_cv_installed_clucene_version=`./conftest 2>&5`
	fi
else
  echo "configure: failed program was:" >&AC_FD_CC
  AC_MSG_ERROR([Failed to compile the test program to check the CLucene version! Please have a look at config.log! Report this to the BibleTime developers!]);
  cat conftest.$ac_ext >&AC_FD_CC
fi

rm -f conftest*
CXXFLAGS="$ac_cxxflags_safe"
LDFLAGS="$ac_ldflags_safe"
LIBS="$ac_libs_safe"

LD_LIBRARY_PATH="$ac_LD_LIBRARY_PATH_safe"
export LD_LIBRARY_PATH
LIBRARY_PATH="$ac_LIBRARY_PATH"
export LIBRARY_PATH
AC_LANG_RESTORE
])

if test "x$ac_cv_installed_clucene_version" = "xok"; then
	AC_MSG_RESULT([ok, version is recent enough]);
elif test "x$ac_cv_installed_clucene_version" = "xnot-ok"; then
	AC_MSG_RESULT([installed]);
  	AC_MSG_ERROR([Your CLucene version is not recent enough! Please upgrade to version >= 0.9.16!]);
fi;

])