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