Version 1.3.50.
[idzebra-moved-to-github.git] / configure.in
1 dnl Zebra, Index Data Aps, 1995-2007
2 dnl $Id: configure.in,v 1.91.2.36 2007-10-16 10:10:37 adam Exp $
3 dnl
4 AC_INIT(include/zebraver.h)
5 AM_INIT_AUTOMAKE(idzebra,1.3.50)
6 PACKAGE_SUFFIX="-1.3"
7 AC_SUBST(PACKAGE_SUFFIX)
8 dnl ------ Substitutions
9 AC_SUBST(TCL_INCLUDE)
10 AC_SUBST(TCL_LIB)
11 AC_SUBST(READLINE_LIBS)
12 dnl ------ Perl substitutions
13 AC_SUBST(PERL_BINARY)
14 AC_SUBST(PERL_XS_INIT)
15 AC_SUBST(PERL_XS_INIT_INCLUDE)
16 AC_SUBST(PERL_LIBS)
17 AC_SUBST(PERL_CFLAGS)
18 AC_SUBST(ZPERL_LIBS)
19 dnl
20 dnl ------ Checking programs
21 AC_PROG_CC
22 AC_PROG_CPP
23 AC_PROG_INSTALL
24 AC_PROG_RANLIB
25 dnl
26 dnl ------ threads
27 AC_ARG_ENABLE(threads, [  --disable-threads       disable threads],[enable_threa
28 ds=$enableval],[enable_threads=yes])
29 if test "$enable_threads" = "yes"; then
30         yazflag=threads
31 else
32         yazflag=""
33 fi
34 YAZ_INIT($yazflag,2.0.18)
35 YAZ_DOC
36 dnl ------ Look for Tcl
37 dnl See if user has specified location of tclConfig.sh; otherwise
38 dnl see if tclConfig.sh exists in same prefix lcoation as tclsh; otherwise
39 dnl disable Tcl.
40 TCL_LIB=""
41 TCL_INCLUDE=""
42 tclconfig=NONE
43 AC_ARG_WITH(tclconfig, [  --with-tclconfig=DIR    tclConfig.sh in DIR], [tclconfig=$withval])
44 if test "x$tclconfig" = xNONE; then
45         saveprefix=${prefix}
46         AC_PREFIX_PROGRAM(tclsh)
47         tclconfig=${prefix}/lib
48         prefix=${saveprefix}
49         if test ! -r ${tclconfig}/tclConfig.sh; then
50                 # Not found, try search for Tcl on Debian systems.
51                 for d in /usr/lib/tcl*; do
52                         if test -f $d/tclConfig.sh; then
53                                 tclconfig=$d
54                         fi
55                 done
56         fi
57 fi
58 AC_MSG_CHECKING(for Tcl)
59 if test -r ${tclconfig}/tclConfig.sh; then
60         . ${tclconfig}/tclConfig.sh
61         if test -r ${tclconfig}/../generic/tcl.h; then
62                 TCL_INCLUDE=-I${tclconfig}/../generic
63                 TCL_LIB="$TCL_BUILD_LIB_SPEC $TCL_LIBS"
64         elif test -d ${TCL_PREFIX}/include/tcl${TCL_VERSION}; then
65                 TCL_INCLUDE=-I${TCL_PREFIX}/include/tcl${TCL_VERSION}
66                 TCL_LIB="$TCL_LIB_SPEC $TCL_LIBS"
67         else
68                 TCL_INCLUDE=-I${TCL_PREFIX}/include
69                 TCL_LIB="$TCL_LIB_SPEC $TCL_LIBS"
70         fi
71         TCL_LIB=`echo $TCL_LIB|sed 's%-L/usr/lib%%g'`
72         SHLIB_CFLAGS=$TCL_SHLIB_CFLAGS
73         SHLIB_LD=$TCL_SHLIB_LD
74         SHLIB_SUFFIX=$TCL_SHLIB_SUFFIX
75         SHLIB_VERSION=$TCL_SHLIB_VERSION
76         AC_MSG_RESULT($TCL_VERSION)
77
78         old_CPPFLAGS=$CPPFLAGS
79         CPPFLAGS="${TCL_INCLUDE} $CPPFLAGS"
80         AC_CHECK_HEADERS(tcl.h)
81         CPPFLAGS=${old_CPPFLAGS}
82 else
83         AC_MSG_RESULT(Not found)
84         AC_DEFINE(HAVE_TCL_H,0)
85 fi
86 dnl
87 dnl ------ times
88 AC_CHECK_HEADERS(sys/times.h sys/time.h)
89 dnl
90 dnl ------ crypt
91 AC_CHECK_LIB(crypt, crypt)
92 if test "$ac_cv_lib_crypt_crypt" = "yes"; then
93         AC_CHECK_HEADERS(crypt.h)
94 fi
95 dnl
96 dnl ------ mkstemp
97 AC_CHECK_FUNCS(mkstemp)
98 dnl
99 dnl ------ GNU Readline
100 READLINE_SHARED_LIBADD=""
101 AC_CHECK_LIB(ncurses, tgetent, [READLINE_SHARED_LIBADD="-lncurses"],
102         AC_CHECK_LIB(termcap, tgetent, [READLINE_SHARED_LIBADD="-ltermcap"])
103 )
104 READLINE_LIBS=""
105 AC_CHECK_LIB(readline, readline, [READLINE_LIBS="$READLINE_LIBS -lreadline $READLINE_SHARED_LIBADD"],,$READLINE_SHARED_LIBADD)
106 AC_CHECK_LIB(history, add_history, [READLINE_LIBS="$READLINE_LIBS -lhistory"])
107 if test "$ac_cv_lib_readline_readline" = "yes"; then
108         AC_CHECK_HEADERS(readline/readline.h readline/history.h)
109         xLIBS=$LIBS
110         LIBS="$LIBS $READLINE_LIBS"
111         AC_TRY_LINK([
112         #include <stdio.h>
113         #include <readline/readline.h>
114         ],[ 
115                 rl_attempted_completion_over = 0;
116         ],AC_DEFINE(HAVE_READLINE_COMPLETION_OVER))
117         AC_TRY_LINK([
118         #include <stdio.h>
119         #include <readline/readline.h>
120         ],[
121                 rl_completion_matches (0, 0);
122         ],AC_DEFINE(HAVE_READLINE_RL_COMPLETION_MATCHES))
123         LIBS=$xLIBS
124 fi
125 dnl
126 dnl ------ iconv
127 AC_ARG_WITH(iconv, [  --with-iconv[=DIR]        iconv library in DIR])
128 if test "$with_iconv" != "no"; then
129         AC_MSG_CHECKING(for iconv)
130         oldLIBS="$LIBS"
131         oldCPPFLAGS="${CPPFLAGS}"
132         if test "$with_iconv" != "yes" -a "$with_iconv" != ""; then
133                 LIBS="$LIBS -L${with_iconv}/lib"
134                 CPPFLAGS="${CPPFLAGS} -I${with_iconv}/include"
135         fi
136         AC_TRY_LINK([
137                 #include <iconv.h>
138         ],[
139                 iconv_t t = iconv_open("", "");
140         ],[
141                 AC_DEFINE(HAVE_ICONV_H)
142                 AC_MSG_RESULT(yes)
143         ],[
144                 LIBS="$LIBS -liconv"
145                 AC_TRY_LINK([
146                         #include <iconv.h>
147                 ],[
148                         iconv_t t = iconv_open("", "");
149                 ],[
150                         AC_DEFINE(HAVE_ICONV_H)
151                         AC_MSG_RESULT(yes)
152                 ],[
153                         LIBS="$oldLIBS"
154                         CPPFLAGS="$oldCPPFLAGS"
155                         AC_MSG_RESULT(no)
156                 ])
157         ])
158 fi
159 dnl
160 dnl ------- BZIP2
161 AC_CHECK_LIB(bz2,bzCompressInit)
162 if test "$ac_cv_lib_bz2_bzCompressInit" = "yes"; then
163         AC_CHECK_HEADERS(bzlib.h)
164 else
165         AC_CHECK_LIB(bz2,BZ2_bzCompressInit)
166         if test "$ac_cv_lib_bz2_BZ2_bzCompressInit" = "yes"; then
167                 AC_CHECK_HEADERS(bzlib.h)
168         fi
169 fi
170 dnl
171 dnl ------ -lm
172 AC_CHECK_LIB(m,sqrt)
173 dnl
174 dnl ------ EXPAT
175 expat=yes
176 AC_ARG_WITH(expat,   [  --with-expat[=DIR]        EXPAT library in DIR],[expat=$withval])
177 if test "$expat" != "no"; then
178         xLIBS="$LIBS";
179         xCFLAGS="$CFLAGS";
180         if test "$expat" != "yes"; then
181                 EXPAT_CFLAGS="-I$expat/include"
182                 EXPAT_LIBS="-L$expat/lib"
183                 CFLAGS="$EXPAT_CFLAGS $CFLAGS"
184                 LIBS="$EXPAT_LIBS $LIBS"
185         fi
186         AC_CHECK_LIB(expat,XML_ParserCreate,[LIBS="$LIBS -lexpat"])
187         if test "$ac_cv_lib_expat_XML_ParserCreate" = "yes"; then
188                 AC_CHECK_HEADERS(expat.h)
189         else
190                 LIBS="$xLIBS"
191                 CFLAGS="$xCFLAGS"
192         fi
193 fi
194 dnl
195 dnl ------ PERL
196 AM_CONDITIONAL(perl,false)
197 perl=no
198 PERL_XS_INIT="NULL"
199 PERL_XS_INIT_INCLUDE=''
200 PERL_BINARY=""
201 AC_ARG_WITH(perl,   [  --with-perl[=FILE]        perl binary location],[perl=$withval])
202 if test "$perl" != "no"; then
203         AC_MSG_CHECKING(for perl binary)
204         if test "$perl" = "yes"; then
205             perlbin=`which perl`
206         else
207             perlbin="$perl"
208         fi 
209         if test -x "$perlbin"; then
210             AC_MSG_RESULT($perlbin)     
211             AC_MSG_CHECKING(perl core directory)
212             archdir=`$perlbin -MConfig -e 'print $Config{archlib}'`;
213             perlcore="$archdir/CORE";
214             if test -d "$perlcore"; then
215                 PERL_BINARY="$perlbin"
216                 AC_MSG_RESULT($perlcore)        
217             else
218                 AC_MSG_RESULT(Failed)   
219             fi
220
221             AC_MSG_CHECKING("for ExtUtils::Embed to determine ccopts")
222             PERL_CFLAGS=`$perlbin -MExtUtils::Embed -e ccopts 2>/dev/null`
223             if test "$PERL_CFLAGS"; then
224                 AC_MSG_RESULT(OK)       
225             else
226                 PERL_CFLAGS="-I$perlcore"
227                 AC_MSG_RESULT(Using defaults)   
228             fi
229
230             AC_MSG_CHECKING("for ExtUtils::Embed to determine ldflags")
231             PERL_LIBS=`$perlbin -MExtUtils::Embed -e ldopts 2>/dev/null`
232             if test "$PERL_LIBS"; then
233                 AC_MSG_RESULT(OK)       
234             else
235                 PERL_LIBS="-L$perlcore -lperl -lm"
236                 AC_MSG_RESULT(Using defaults)   
237             fi
238
239             AC_MSG_CHECKING("for ExtUtils::Embed to create xs_init")
240             xsf="recctrl/xsinit.h"
241             `rm $xsf 2>/dev/null`;
242
243             `$perlbin -MExtUtils::Embed -e xsinit -- -o $xsf 2>/dev/null`
244             if test -r "$xsf"; then
245                 AC_MSG_RESULT(OK)       
246                 PERL_XS_INIT="xs_init"
247                 PERL_XS_INIT_INCLUDE='#include "xsinit.h"'
248             else
249                 AC_MSG_RESULT(XS libraries are not going to be available)
250             fi
251
252             xLIBS="$LIBS"
253             xCFLAGS="$CFLAGS"
254             CFLAGS="$PERL_CFLAGS $CFLAGS"
255             LIBS="$PERL_LIBS $LIBS"
256
257             AC_MSG_CHECKING(for perl library)
258             AC_TRY_LINK([
259             #include <stdio.h>
260              ],[
261             void f()
262             {
263                 ;
264             }
265                 ],AM_CONDITIONAL(perl,true)
266                   AC_DEFINE(HAVE_PERL,1)
267                   AC_MSG_RESULT(found)
268                   ZPERL_LIBS="$xLIBS"
269                         ,
270                   AC_MSG_RESULT(not found)
271                   AC_DEFINE(HAVE_PERL,0)
272                   LIBS="$xLIBS"
273                   CFLAGS="$xCFLAGS")
274         else
275             AC_DEFINE(HAVE_PERL,0)
276             AC_MSG_RESULT(Not found)
277         fi
278 fi
279 dnl ------- 64 bit files
280 AC_MSG_CHECKING(for LFS)
281 AC_TRY_RUN([#define _FILE_OFFSET_BITS 64
282 #include <sys/types.h>
283 #include <unistd.h>
284 #include <string.h>
285 #include <stdio.h>
286 #include <fcntl.h>
287 #include <errno.h>
288 int main(int argc, char **argv)
289 {
290         off_t o;
291         char tmp_str[32];
292         int fd;
293         struct flock area;
294         if (sizeof(off_t) != 8) 
295                 exit (1);
296         o = 2000000000;
297         if ((o+o+o) / 3 != o)
298                 exit(1);
299         fd = creat ("config.tmp", 0644);
300         if (fd < 0)
301                 exit (1);
302         area.l_type = F_WRLCK;
303         area.l_whence = SEEK_SET;
304         area.l_len = area.l_start = 0L;
305         if (fcntl(fd, F_SETLKW, &area))
306                 exit (1);
307         close (fd);
308         unlink ("config.tmp");
309         exit (0);
310 }
311 ],bits=64,bits=32,bits=32)
312 if test "$bits" = "64"; then
313         AC_DEFINE(_FILE_OFFSET_BITS,64)
314         AC_MSG_RESULT(yes)
315 else
316         AC_MSG_RESULT(no)
317 fi
318 dnl
319 dnl ------ ANSI C Header files
320 AC_STDC_HEADERS
321 if test "$ac_cv_header_stdc" = "no"; then
322         AC_MSG_WARN(Your system doesn't seem to support ANSI C)
323 fi
324 dnl ------ Create Makefiles
325 AC_OUTPUT([
326   Makefile
327   util/Makefile
328   bfile/Makefile
329   dfa/Makefile
330   dict/Makefile
331   isamb/Makefile
332   isams/Makefile
333   isamc/Makefile
334   isam/Makefile
335   rset/Makefile
336   data1/Makefile
337   recctrl/Makefile
338   recctrl/perlread.h
339   index/Makefile
340   include/Makefile
341   tab/Makefile
342   doc/Makefile
343   doc/zebra.xml
344   doc/zebrahtml.dsl
345   doc/zebraprint.dsl
346   doc/zebraphp.dsl
347   doc/tkl.xsl
348   test/Makefile test/gils/Makefile test/usmarc/Makefile test/api/Makefile
349   test/rusmarc/Makefile test/cddb/Makefile test/malxml/Makefile 
350   test/config/Makefile test/sort2/Makefile
351   perl/Makefile.PL test/xelm/Makefile
352   test/dmoz/Makefile test/xpath/Makefile test/sort/Makefile test/zsh/Makefile
353   test/marcxml/Makefile test/charmap/Makefile test/codec/Makefile
354   examples/Makefile examples/gils/Makefile examples/zthes/Makefile
355   examples/mail/Makefile
356   idzebra.spec
357 ])
358 if test -x "$perlbin"; then
359         res=`cd perl ; $perlbin Makefile.PL ; cd .. ;`;
360 fi
361 if test  -z "$YAZLIB"; then
362         echo "YAZ was not found. Use --with-yaz=DIR to specify location."
363         test -f /etc/debian_version && echo "Debian package libyaz-dev is required."
364 fi
365