Fixed bug #316: Numerical sort does not work for search.
[idzebra-moved-to-github.git] / configure.in
1 dnl Zebra, Index Data ApS, 1995-2005
2 dnl $Id: configure.in,v 1.120 2005-04-28 18:56:13 adam Exp $
3 dnl
4 AC_INIT(include/idzebra/version.h)
5 AM_INIT_AUTOMAKE(idzebra,1.4.0)
6 dnl ------ Substitutions
7 AC_SUBST(TCL_INCLUDE)
8 AC_SUBST(TCL_LIB)
9 AC_SUBST(READLINE_LIBS)
10 dnl
11 dnl ------ Checking programs
12 AC_PROG_CC
13 AC_PROG_CPP
14 AM_DISABLE_SHARED
15 AM_PROG_LIBTOOL
16 dnl
17 dnl ------ headers
18 AC_CHECK_HEADERS(sys/times.h unistd.h)
19 dnl
20 dnl ------ threads
21 AC_ARG_ENABLE(threads, [  --disable-threads       disable threads],[enable_threads=$enableval],[enable_threads=yes])
22 if test "$enable_threads" = "yes"; then
23         yazflag=threads
24 else
25         yazflag=""
26 fi
27 dnl
28 dnl ------ YAZ
29 YAZ_INIT($yazflag,2.1.3)
30 YAZ_DOC
31 dnl ----- libXSLT
32 AC_SUBST(XSLT_LIBS)
33 AC_SUBST(XSLT_CFLAGS)
34 xsltdir=yes
35 AC_ARG_WITH(xslt,[[  --with-xslt[=PREFIX]    use libxslt in PREFIX]],xsltdir=$withval)
36 if test "$xsltdir" = "yes"; then
37         for d in /usr /usr/local; do
38                 if test -x $d/bin/xslt-config; then
39                         xsltdir=$d
40                 fi
41         done
42 fi
43 if test "$xsltdir" != "no"; then
44         AC_MSG_CHECKING(for libXSLT)
45         if test -x $xsltdir/bin/xslt-config; then
46                 XSLT_LIBS=`$xsltdir/bin/xslt-config --libs`
47                 XSLT_CFLAGS=`$xsltdir/bin/xslt-config --cflags`
48                 XSLT_VER=`$xsltdir/bin/xslt-config --version`
49                 AC_MSG_RESULT($XSLT_VER)
50                 AC_DEFINE(HAVE_XSLT)
51         else
52                 AC_MSG_RESULT(Not found)
53         fi
54 fi
55 dnl ------ Look for Tcl
56 dnl See if user has specified location of tclConfig.sh; otherwise
57 dnl see if tclConfig.sh exists in same prefix lcoation as tclsh; otherwise
58 dnl disable Tcl.
59 TCL_LIB=""
60 TCL_INCLUDE=""
61 tclconfig=NONE
62 AC_ARG_WITH(tclconfig, [  --with-tclconfig=DIR    tclConfig.sh in DIR], [tclconfig=$withval])
63 if test "x$tclconfig" = xNONE; then
64         saveprefix=${prefix}
65         AC_PREFIX_PROGRAM(tclsh)
66         tclconfig=${prefix}/lib
67         prefix=${saveprefix}
68         if test ! -r ${tclconfig}/tclConfig.sh; then
69                 # Not found, try search for Tcl on Debian systems.
70                 for d in /usr/lib/tcl*; do
71                         if test -f $d/tclConfig.sh; then
72                                 tclconfig=$d
73                         fi
74                 done
75         fi
76 fi
77 AC_MSG_CHECKING(for Tcl)
78 if test -r ${tclconfig}/tclConfig.sh; then
79         . ${tclconfig}/tclConfig.sh
80         if test -r ${tclconfig}/../generic/tcl.h; then
81                 TCL_INCLUDE=-I${tclconfig}/../generic
82                 TCL_LIB="$TCL_BUILD_LIB_SPEC $TCL_LIBS"
83         elif test -d ${TCL_PREFIX}/include/tcl${TCL_VERSION}; then
84                 TCL_INCLUDE=-I${TCL_PREFIX}/include/tcl${TCL_VERSION}
85                 TCL_LIB="$TCL_LIB_SPEC $TCL_LIBS"
86         else
87                 TCL_INCLUDE=-I${TCL_PREFIX}/include
88                 TCL_LIB="$TCL_LIB_SPEC $TCL_LIBS"
89         fi
90         TCL_LIB=`echo $TCL_LIB|sed 's%-L/usr/lib%%g'`
91         SHLIB_CFLAGS=$TCL_SHLIB_CFLAGS
92         SHLIB_LD=$TCL_SHLIB_LD
93         SHLIB_SUFFIX=$TCL_SHLIB_SUFFIX
94         SHLIB_VERSION=$TCL_SHLIB_VERSION
95         AC_MSG_RESULT($TCL_VERSION)
96         AC_DEFINE(HAVE_TCL_H,1)
97 else
98         AC_MSG_RESULT(Not found)
99         AC_DEFINE(HAVE_TCL_H,0)
100 fi
101 dnl
102 dnl ------ mkstemp
103 AC_CHECK_FUNCS(mkstemp)
104 dnl
105 dnl ------ GNU Readline
106 READLINE_SHARED_LIBADD=""
107 AC_CHECK_LIB(ncurses, tgetent, [READLINE_SHARED_LIBADD="-lncurses"],
108         AC_CHECK_LIB(termcap, tgetent, [READLINE_SHARED_LIBADD="-ltermcap"])
109 )
110 READLINE_LIBS=""
111 AC_CHECK_LIB(readline, readline, [READLINE_LIBS="$READLINE_LIBS -lreadline $READLINE_SHARED_LIBADD"],,$READLINE_SHARED_LIBADD)
112 AC_CHECK_LIB(history, add_history, [READLINE_LIBS="$READLINE_LIBS -lhistory"])
113 if test "$ac_cv_lib_readline_readline" = "yes"; then
114         AC_CHECK_HEADERS(readline/readline.h readline/history.h)
115         xLIBS=$LIBS
116         LIBS="$LIBS $READLINE_LIBS"
117         AC_TRY_LINK([
118         #include <stdio.h>
119         #include <readline/readline.h>
120         ],[
121                 rl_attempted_completion_over = 0;
122         ],AC_DEFINE(HAVE_READLINE_COMPLETION_OVER))
123         AC_TRY_LINK([
124         #include <stdio.h>
125         #include <readline/readline.h>
126         ],[
127                 rl_completion_matches (0, 0);
128         ],AC_DEFINE(HAVE_READLINE_RL_COMPLETION_MATCHES))
129         LIBS=$xLIBS
130 fi
131 dnl
132 dnl ------ iconv
133 AC_ARG_WITH(iconv, [  --with-iconv[=DIR]        iconv library in DIR])
134 if test "$with_iconv" != "no"; then
135         AC_MSG_CHECKING(for iconv)
136         oldLIBS="$LIBS"
137         oldCPPFLAGS="${CPPFLAGS}"
138         if test "$with_iconv" != "yes" -a "$with_iconv" != ""; then
139                 LIBS="$LIBS -L${with_iconv}/lib"
140                 CPPFLAGS="${CPPFLAGS} -I${with_iconv}/include"
141         fi
142         AC_TRY_LINK([
143                 #include <iconv.h>
144         ],[
145                 iconv_t t = iconv_open("", "");
146         ],[
147                 AC_DEFINE(HAVE_ICONV_H)
148                 AC_MSG_RESULT(yes)
149         ],[
150                 LIBS="$LIBS -liconv"
151                 AC_TRY_LINK([
152                         #include <iconv.h>
153                 ],[
154                         iconv_t t = iconv_open("", "");
155                 ],[
156                         AC_DEFINE(HAVE_ICONV_H)
157                         AC_MSG_RESULT(yes)
158                 ],[
159                         LIBS="$oldLIBS"
160                         CPPFLAGS="$oldCPPFLAGS"
161                         AC_MSG_RESULT(no)
162                 ])
163         ])
164 fi
165 dnl
166 dnl ------- BZIP2
167 AC_CHECK_LIB(bz2,bzCompressInit)
168 if test "$ac_cv_lib_bz2_bzCompressInit" = "yes"; then
169         AC_CHECK_HEADERS(bzlib.h)
170 else
171         AC_CHECK_LIB(bz2,BZ2_bzCompressInit)
172         if test "$ac_cv_lib_bz2_BZ2_bzCompressInit" = "yes"; then
173                 AC_CHECK_HEADERS(bzlib.h)
174         fi
175 fi
176 dnl
177 dnl ------ -lm
178 AC_CHECK_LIB(m,sqrt)
179 dnl ------ -ldl
180 AC_CHECK_LIB(dl,dlopen)
181 dnl
182 dnl ------ EXPAT
183 expat=yes
184 AC_SUBST(EXPAT_LIBS)
185 AC_ARG_WITH(expat,   [  --with-expat[=DIR]        EXPAT library in DIR],[expat=$withval])
186 if test "$expat" != "no"; then
187         xLIBS="$LIBS";
188         xCFLAGS="$CFLAGS";
189         if test "$expat" != "yes"; then
190                 EXPAT_CFLAGS="-I$expat/include"
191                 EXPAT_LIBS="-L$expat/lib"
192                 CFLAGS="$EXPAT_CFLAGS $CFLAGS"
193                 LIBS="$EXPAT_LIBS $LIBS"
194         fi
195         AC_CHECK_LIB(expat,XML_ParserCreate,[EXPAT_LIBS="$EXPAT_LIBS -lexpat"])
196         if test "$ac_cv_lib_expat_XML_ParserCreate" = "yes"; then
197                 AC_CHECK_HEADERS(expat.h)
198         fi
199         LIBS="$xLIBS"
200         CFLAGS="$xCFLAGS"
201 fi
202 dnl
203 dnl ------- 64 bit files
204 AC_MSG_CHECKING(for LFS)
205 AC_TRY_RUN([#define _FILE_OFFSET_BITS 64
206 #include <sys/types.h>
207 #include <unistd.h>
208 #include <string.h>
209 #include <stdio.h>
210 #include <fcntl.h>
211 #include <errno.h>
212 int main(int argc, char **argv)
213 {
214         off_t o;
215         char tmp_str[32];
216         int fd;
217         struct flock area;
218         if (sizeof(off_t) != 8) 
219                 exit (1);
220         o = 2000000000;
221         sprintf (tmp_str, "%Ld", o+o+o);
222         if (strcmp (tmp_str, "6000000000"))
223                 exit (1);
224         fd = creat ("config.tmp", 0644);
225         if (fd < 0)
226                 exit (1);
227         area.l_type = F_WRLCK;
228         area.l_whence = SEEK_SET;
229         area.l_len = area.l_start = 0L;
230         if (fcntl(fd, F_SETLKW, &area))
231                 exit (1);
232         close (fd);
233         unlink ("config.tmp");
234         exit (0);
235 }
236 ],bits=64,bits=32,bits=32)
237 if test "$bits" = "64"; then
238         AC_DEFINE(_FILE_OFFSET_BITS,64)
239         AC_MSG_RESULT(yes)
240 else
241         AC_MSG_RESULT(no)
242 fi
243 dnl ------ Modules
244 AC_SUBST(SHARED_MODULE_LA)
245 SHARED_MODULE_LA=""
246 AC_SUBST(STATIC_MODULE_OBJ)
247 STATIC_MODULE_OBJ=""
248 AC_SUBST(STATIC_MODULE_LADD)
249 STATIC_MODULE_LADD=""
250 AC_DEFUN([ZEBRA_MODULE],[
251         AC_ARG_ENABLE(mod-$1,[$3],[myen=$enableval],[myen=$2])
252         AC_MSG_CHECKING([for module $1])
253         if test "$myen" = "yes"; then
254            myen="shared" 
255         fi
256         if test "$enable_shared" != "yes"; then
257            if test "$myen" = "shared"; then
258               myen="static"
259            fi
260         fi
261         m=`echo $1|tr .- __`
262         if test "$myen" = "shared"; then
263            AC_MSG_RESULT([shared])
264            SHARED_MODULE_LA="${SHARED_MODULE_LA} mod-$1.la"
265         elif test "$myen" = "static" -o "$myen" = "yes"; then
266            AC_MSG_RESULT([static])
267            STATIC_MODULE_OBJ="${STATIC_MODULE_OBJ} \$(mod_${m}_la_OBJECTS)"
268            STATIC_MODULE_LADD="${STATIC_MODULE_LADD} \$(mod_${m}_la_LADD)"
269            modcpp=`echo $1|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
270            AC_DEFINE_UNQUOTED([IDZEBRA_STATIC_$modcpp])
271         elif test "$myen" = "no"; then
272            AC_MSG_RESULT([disabled])
273         else
274            AC_MSG_RESULT([$myen])
275            AC_MSG_ERROR([invalid --enable-mod-$1 value. Use on,off,static or shared])
276         fi
277 ])
278
279 ZEBRA_MODULE(text,static,    [  --enable-mod-text       Text filter])
280 ZEBRA_MODULE(grs-sgml,static,[  --enable-mod-grs-sgml   Simple SGML/XML filter])
281 ZEBRA_MODULE(grs-regx,shared,[  --enable-mod-grs-regx   REGX/TCL filter])
282 ZEBRA_MODULE(grs-marc,shared,[  --enable-mod-grs-marc   MARC filter])
283 ZEBRA_MODULE(grs-danbib,shared,[  --enable-mod-grs-danbib DanBib filter (DBC)])
284 ZEBRA_MODULE(safari,shared,  [  --enable-mod-safari Safari filter (DBC)])
285 if test "$ac_cv_header_expat_h" = "yes"; then
286    def="shared"
287 else
288    def="no"
289 fi
290 ZEBRA_MODULE(grs-xml,[$def], [  --enable-mod-grs-xml    XML filter (Expat based)])
291 if test "$XSLT_VER"; then
292    def="shared"
293 else
294    def="no"
295 fi
296 ZEBRA_MODULE(xslt,[$def],    [  --enable-mod-xslt       XSLT filter])
297 ZEBRA_MODULE(alvis,shared,   [  --enable-mod-alvis      ALVIS filter])
298 dnl ------ ANSI C Header files
299 AC_STDC_HEADERS
300 if test "$ac_cv_header_stdc" = "no"; then
301         AC_MSG_WARN(Your system doesn't seem to support ANSI C)
302 fi
303 AC_SUBST(IDZEBRA_SRC_ROOT)
304 AC_SUBST(IDZEBRA_BUILD_ROOT)
305 IDZEBRA_SRC_ROOT=`cd ${srcdir}; pwd`
306 IDZEBRA_BUILD_ROOT=`pwd`
307 dnl ------ Create Makefiles
308 AC_OUTPUT([
309   Makefile
310   util/Makefile
311   bfile/Makefile
312   dfa/Makefile
313   dict/Makefile
314   isamb/Makefile
315   isams/Makefile
316   isamc/Makefile
317   rset/Makefile
318   data1/Makefile
319   recctrl/Makefile
320   index/Makefile
321   include/Makefile include/idzebra/Makefile
322   tab/Makefile
323   doc/Makefile
324   doc/zebra.xml
325   doc/zebrahtml.dsl
326   doc/zebraprint.dsl
327   doc/zebraphp.dsl
328   doc/tkl.xsl
329   test/Makefile test/gils/Makefile test/usmarc/Makefile test/api/Makefile
330   test/xslt/Makefile
331   test/xpath/Makefile
332   test/rusmarc/Makefile test/cddb/Makefile test/malxml/Makefile 
333   test/mbox/Makefile
334   test/config/Makefile test/sort2/Makefile
335   test/xelm/Makefile
336   test/dmoz/Makefile test/sort/Makefile test/zsh/Makefile
337   test/marcxml/Makefile test/charmap/Makefile test/codec/Makefile
338   test/espec/Makefile
339   examples/Makefile examples/gils/Makefile examples/zthes/Makefile
340   examples/marc21/Makefile
341   idzebra.spec
342   idzebra-config
343   Doxyfile
344 ],[sed s%idzebra_echo_source=yes%idzebra_echo_source=no%g < idzebra-config > util/idzebra-config && chmod +x idzebra-config util/idzebra-config])
345 if test  -z "$YAZLIB"; then
346         echo "YAZ was not found. Use --with-yaz=DIR to specify location."
347         test -f /etc/debian_version && echo "Debian package libyaz-dev is required."
348 fi
349