Define HAVE_X11_XAW_COMMAND explicitly.
[m17n/m17n-lib.git] / configure.ac
1 dnl configure.ac -- autoconf script for the m17n library.
2
3 dnl Copyright (C) 2003, 2004
4 dnl   National Institute of Advanced Industrial Science and Technology (AIST)
5 dnl   Registration Number H15PRO112
6
7 dnl This file is part of the m17n library.
8
9 dnl The m17n library is free software; you can redistribute it and/or
10 dnl modify it under the terms of the GNU Lesser General Public License
11 dnl as published by the Free Software Foundation; either version 2.1 of
12 dnl the License, or (at your option) any later version.
13
14 dnl The m17n library is distributed in the hope that it will be useful,
15 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
16 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17 dnl Lesser General Public License for more details.
18
19 dnl You should have received a copy of the GNU Lesser General Public
20 dnl License along with the m17n library; if not, write to the Free
21 dnl Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
22 dnl 02111-1307, USA.
23
24 dnl Process this file with autoconf to produce a configure script.
25
26 AC_INIT(m17n-lib, 1.2.0, m17n-lib-bug@m17n.org)
27 AM_INIT_AUTOMAKE(m17n-lib, 1.2.0)
28 AM_CONFIG_HEADER(src/config.h)
29
30 API_VERSION=1:0:1
31 AC_SUBST(API_VERSION)
32
33 dnl Checks for programs for compiling.
34 AC_PROG_CC
35 AC_LIBTOOL_DLOPEN
36 AC_LIBLTDL_CONVENIENCE
37 AM_PROG_LIBTOOL
38
39 dnl Checks for X libraries.
40 AC_PATH_XTRA
41
42 dnl Checks for standard header files.
43 AC_HEADER_STDC
44 AC_HEADER_DIRENT
45 AC_HEADER_TIME
46 AC_CHECK_HEADERS([fcntl.h langinfo.h limits.h locale.h stdlib.h \
47                           string.h strings.h sys/time.h unistd.h])
48 AC_CHECK_HEADER(X11/Xaw/Command.h, HAVE_XAW=yes)
49 if test "x$HAVE_XAW" = "xyes"; then
50   XAW_LD_FLAGS=-lXaw
51   AC_DEFINE(HAVE_X11_XAW_COMMAND_H, 1,
52             [Define to 1 if you have the Xaw header files.])
53 fi
54
55 AC_SUBST(XAW_LD_FLAGS)
56
57 dnl Checks for typedefs, structures, and compiler characteristics.
58 AC_C_CONST
59 AC_C_INLINE
60 AC_TYPE_SIZE_T
61 AC_STRUCT_TM
62
63 dnl Checks for endian.  This influence the default UTF-16 definition.
64 AC_C_BIGENDIAN
65
66 dnl Checks for library functions.
67 AC_FUNC_ALLOCA
68 AC_FUNC_MALLOC
69 AC_FUNC_REALLOC
70 AC_FUNC_MEMCMP
71 AC_FUNC_STAT
72 AC_FUNC_STRCOLL
73 AC_FUNC_STRFTIME
74 AC_FUNC_STRTOD
75 AC_CHECK_FUNCS(memmove memset nl_langinfo putenv regcomp setlocale)
76 AC_CHECK_FUNCS(strchr strdup gettimeofday)
77
78 dnl Checks where the m17n database is installed.
79
80 AC_CHECK_PROG(HAVE_M17N_DB, m17n-db, yes)
81 if test "x$HAVE_M17N_DB" = "xyes"; then
82   M17NDIR=`m17n-db`
83 else
84   M17NDIR="${datadir}/m17n"
85 fi
86 AC_SUBST(M17NDIR)
87
88
89 dnl Checks if dlopen exists, and if it's in libc or libdl.
90
91 AC_SEARCH_LIBS(dlopen, dl,
92                AC_DEFINE(HAVE_DLOPEN, 1,
93                [Define to 1 if you have the funciton dlopen.]))
94
95 dnl Check several libraries without adding -lxxx to LIBS, without
96 dnl defining HAVE_LIBXXX nor HAVE_XXX_H because they are used only by
97 dnl some libraries (e.g. libm17n-X.so).  Instead, define XXX_LD_FLAGS
98 dnl and HAVE_XXX if library XXX is available.  CPPFLAGS will be
99 dnl augmented.
100
101 M17N_EXT_LIBS=
102
103 dnl Check for fribidi library.
104 save_CPPFLAGS="$CPPFLAGS"
105 save_LIBS="$LIBS"
106 AC_CHECK_PROG(HAVE_FRIBIDI_CONFIG, fribidi-config, yes)
107 if test "$HAVE_FRIBIDI_CONFIG" = "xyes"; then
108   CPPFLAGS="$CPPFLAGS `fribidi-config --cflags`"
109   FRIBIDI_LD_FLAGS="`fribidi-config --libs`"
110   LIBS="$LIBS $FRIBIDI_LD_FLAGS"
111 else
112   FRIBIDI_LD_FLAGS=-lfribidi
113 fi
114 AC_CHECK_LIB(fribidi, fribidi_set_mirroring, HAVE_FRIBIDI=yes, HAVE_FRIBIDI=no)
115 AC_CHECK_HEADER(fribidi/fribidi.h,, HAVE_FRIBIDI=no)
116 if test "x$HAVE_FRIBIDI" = "xyes"; then
117   AC_DEFINE(HAVE_FRIBIDI, 1, 
118             [Define to 1 if you have Fribidi library and header file.])
119   M17N_EXT_LIBS="$M17N_EXT_LIBS fribidi"
120 else
121   CPPFLAGS="$save_CPPFLAGS"
122   FRIBIDI_LD_FLAGS=
123 fi
124 LIBS="$save_LIBS"
125 AC_SUBST(FRIBIDI_LD_FLAGS)
126
127 dnl Check for otflib usability.
128 save_CPPFLAGS="$CPPFLAGS"
129 save_LIBS="$LIBS"
130 AC_CHECK_PROG(HAVE_OTFLIB_CONFIG, libotf-config, yes)
131 if test "x$HAVE_OTFLIB_CONFIG" = "xyes"; then
132   CPPFLAGS="$CPPFLAGS `libotf-config --cflags`"
133   OTF_LD_FLAGS="`libotf-config --libs`  "
134   LIBS="$LIBS $OTF_LD_FLAGS"
135 else
136   OTF_LD_FLAGS=-lotf
137 fi
138 AC_CHECK_LIB(otf, OTF_open, HAVE_OTF=yes, HAVE_OTF=no)
139 AC_CHECK_HEADER(otf.h,, HAVE_OTF=no)
140 CPPFLAGS="$save_CPPFLAGS"
141 if test "x$HAVE_OTF" = "xyes"; then
142   AC_DEFINE(HAVE_OTF, 1, 
143             [Define to 1 if you have OTF library and header file.])
144   M17N_EXT_LIBS="$M17N_EXT_LIBS libotf"
145 else
146   CPPFLAGS="$save_CPPFLAGS"
147   OTF_LD_FLAGS=
148 fi
149 LIBS="$save_LIBS"
150 AC_SUBST(OTF_LD_FLAGS)
151
152 dnl Check for Freetype2 usability.
153 AC_CHECK_PROG(HAVE_FREETYPE_CONFIG, freetype-config, yes)
154 if test "x$HAVE_FREETYPE_CONFIG" = "xyes"; then
155   FREETYPE_INC=`freetype-config --cflags`
156   save_CPPFLAGS="$CPPFLAGS"
157   CPPFLAGS="$CPPFLAGS $FREETYPE_INC"
158   AC_CHECK_HEADER(ft2build.h, HAVE_FREETYPE=yes,
159                               HAVE_FREETYPE=no CPPFLAGS="$save_CPPFLAGS")
160   if test "x$HAVE_FREETYPE" = "xyes" ; then
161     save_LIBS="$LIBS"
162     LIBS="$LIBS `freetype-config --libs`"
163     AC_CHECK_LIB(freetype, FT_Init_FreeType, HAVE_FREETYPE=yes,
164                                              HAVE_FREETYPE=no)
165     LIBS="$save_LIBS"
166     if test "x$HAVE_FREETYPE" = "xyes"; then
167       FREETYPE_LD_FLAGS=`freetype-config --libs`
168       AC_DEFINE(HAVE_FREETYPE, 1, 
169                 [Define to 1 if you have FreeType library and header file.])
170       M17N_EXT_LIBS="$M17N_EXT_LIBS freetype"
171       AC_CHECK_HEADER(freetype/ftbdf.h, HAVE_FTBDF_H=yes, HAVE_FTBDF_H=no,
172                       [#include <ft2build.h>
173 #include FT_FREETYPE_H])
174       if test "x$HAVE_FTBDF_H" = "xyes"; then
175         AC_DEFINE(HAVE_FTBDF_H, 1,
176                   [Define to 1 if you have freetype/ftbdf.h.])
177       fi
178     fi
179   fi
180 fi
181 AC_SUBST(FREETYPE_LD_FLAGS)
182
183 AC_CHECK_PROG(HAVE_PKG_CONFIG, pkg-config, yes)
184
185 dnl Check for Xft2 usability.
186 save_CPPFLAGS="$CPPFLAGS"
187 save_LIBS="$LIBS"
188 XFT2_LD_FLAGS="-lXft -lfreetype -lfontconfig -lXrender -lX11"
189 AC_CHECK_PROG(HAVE_XFT_CONFIG, xft-config, yes)
190 if test "x$HAVE_XFT_CONFIG" = "xyes"; then
191   CPPFLAGS="$CPPFLAGS `xft-config --cflags`"
192   XFT2_LD_FLAGS="`xft-config --libs`"
193 elif test "x$HAVE_PKG_CONFIG" = "xyes" ; then
194   if pkg-config xft ; then
195     CPPFLAGS="$CPPFLAGS `pkg-config --cflags xft`"
196     XFT2_LD_FLAGS="`pkg-config --libs xft`"
197   fi
198 fi
199 LIBS="$LIBS $XFT2_LD_FLAGS"
200 AC_CHECK_LIB(Xft, XftDrawCreate, HAVE_XFT2=yes, HAVE_XFT2=no)
201 AC_CHECK_HEADER(X11/Xft/Xft.h,, HAVE_XFT2=no, 
202                 [#include <X11/Xft/Xft.h>
203 #if XftVersion >= 20000
204 #else
205 Version too old.  Compiling this line should fail.
206 #endif])
207 if test "x$HAVE_XFT2" = "xyes"; then
208   AC_DEFINE(HAVE_XFT2, 1,
209             [Define to 1 if you have Xft2 library and header file.])
210   M17N_EXT_LIBS="$M17N_EXT_LIBS xft2"
211 else
212   XFT2_LD_FLAGS=
213   CPPFLAGS="$save_CPPFLAGS"
214 fi
215 LIBS="$save_LIBS"
216 AC_SUBST(XFT2_LD_FLAGS)
217
218 dnl Check for fontconfig usability.
219 save_CPPFLAGS="$CPPFLAGS"
220 save_LIBS="$LIBS"
221 FONTCONFIG_LD_FLAGS=-lfontconfig
222 if test "x$HAVE_PKG_CONFIG" = "xyes"; then
223   if pkg-config --exists fontconfig; then
224     CPPFLAGS="$CPPFLAGS `pkg-config --cflags fontconfig`"
225     FONTCONFIG_LD_FLAGS="`pkg-config --libs fontconfig`"
226     LIBS="$LIBS $FONTCONFIG_LD_FLAGS"
227   fi
228 fi
229 AC_CHECK_LIB(fontconfig, FcInit, HAVE_FONTCONFIG=yes, HAVE_FONTCONFIG=no)
230 AC_CHECK_HEADER(fontconfig/fontconfig.h, , HAVE_FONTCONFIG=no)
231 if test "x$HAVE_FONTCONFIG" = "xyes"; then
232   AC_DEFINE(HAVE_FONTCONFIG, 1,
233               [Define to 1 if you have fontconfig library and header file.])
234   M17N_EXT_LIBS="$M17N_EXT_LIBS fontconfig"
235 else
236   FONTCONFIG_LD_FLAGS=
237   CPPFLAGS="$save_CPPFLAGS"
238 fi
239 LIBS="$save_LIBS"
240 AC_SUBST(FONTCONFIG_LD_FLAGS)
241
242 dnl Check for gdlib usability.
243 save_LIBS="$LIBS"
244 AC_CHECK_LIB(gd, gdImageCreate, HAVE_GD=yes, HAVE_GD=no)
245 AC_CHECK_HEADER(gd.h, , HAVE_GD=no)
246 if test "x$HAVE_GD" = "xyes"; then
247   AC_CHECK_LIB(gd, gdImageCreateTrueColor, HAVE_GD=2, HAVE_GD=1)
248   AC_DEFINE_UNQUOTED(HAVE_GD, $HAVE_GD,
249             [Define to 1 or 2 if you have gd library and header file.])
250   M17N_EXT_LIBS="$M17N_EXT_LIBS gdlib"
251   GD_LD_FLAGS=-lgd
252 fi
253 LIBS="$save_LIBS"
254 AC_SUBST(GD_LD_FLAGS)
255
256 dnl Check for libxml2 usability.
257 save_CPPFLAGS="$CPPFLAGS"
258 save_LIBS="$LIBS"
259 AC_CHECK_PROG(HAVE_XML2_CONFIG, xml2-config, yes)
260 if test "x$HAVE_XML2_CONFIG" = "xyes"; then
261   CPPFLAGS="$CPPFLAGS `xml2-config --cflags`"
262   XML2_LD_FLAGS="`xml2-config --libs`"
263   LIBS="$LIBS $XML2_LD_FLAGS"
264 else
265   CPPFLAGS="$CPPFLAGS -I/usr/include/libxml2"
266   XML2_LD_FLAGS="-lxml2 -lz -lpthread -lm"
267 fi
268 AC_CHECK_LIB(xml2, xmlParseMemory, HAVE_XML2=yes, HAVE_XML2=no)
269 AC_CHECK_HEADER(libxml/tree.h,, HAVE_XML2=no, /**/)
270 if test "x$HAVE_XML2" = "xyes"; then
271   AC_DEFINE(HAVE_XML2, 1,
272             [Define to 1 if you have libxml2 library and header file])
273   M17N_EXT_LIBS="$M17N_EXT_LIBS xml2"
274 else
275   XML2_LD_FLAGS=
276   CPPFLAGS="$save_CPPFLAGS"
277 fi
278 LIBS="$save_LIBS"
279 AC_SUBST(XML2_LD_FLAGS)
280
281 dnl Check for Anthy usability.
282 AC_CHECK_LIB(anthydic, anthy_init_sessions, HAVE_ANTHY=yes, HAVE_ANTHY=no)
283 if test "x$HAVE_ANTHY" = "xyes"; then
284   AC_CHECK_LIB(anthy, anthy_init, HAVE_ANTHY=yes, HAVE_ANTHY=no, -lanthydic)
285   if test "x$HAVE_ANTHY" = "xyes"; then
286     AC_CHECK_HEADER(anthy/anthy.h, HAVE_ANTHY=yes, HAVE_ANTHY=no)
287     if test "x$HAVE_ANTHY" = "xyes"; then
288     AC_DEFINE(HAVE_ANTHY, 1,
289               [Define to 1 if you have Anthy library and header file])
290     M17N_EXT_LIBS="$M17N_EXT_LIBS anthy"
291     ANTHY_LD_FLAGS="-lanthy -lanthydic"
292     fi
293   fi
294 fi
295 AC_SUBST(ANTHY_LD_FLAGS)
296
297 dnl Check for Ispell usability.
298 AC_CHECK_PROG(HAVE_ISPELL, ispell, yes)
299 if test "x$HAVE_ISPELL" = "xyes"; then
300   AC_DEFINE(HAVE_ISPELL, 1, [Define if ispell is available.])
301   M17N_EXT_LIBS="$M17N_EXT_LIBS ispell"
302 fi
303
304 dnl Check for Thai word-segmentation library.
305 dnl If we have one, define HAVE_THAI_WORDSEG and one of these:
306 dnl   HAVE_LIBTHAI, HAVE_WORDCUT, or HAVE_WORDCUT_OLD
307 dnl In addition, set THAI_WORDSEG_LD_FLAGS to a proper value.
308
309 PKG_CHECK_MODULES(LIBTHAI, libthai, HAVE_LIBTHAI=yes, HAVE_LIBTHAI=no)
310 PKG_CHECK_MODULES(WORDCUT, wordcut, HAVE_WORDCUT=yes, HAVE_WORDCUT=no)
311
312 if test "x$HAVE_LIBTHAI" == "xyes"; then
313
314   AC_DEFINE(HAVE_LIBTHAI, 1, [Define if you have libthai])
315   THAI_WORDSEG_LD_FLAGS="$LIBTHAI_LIBS"
316   M17N_EXT_LIBS="$M17N_EXT_LIBS libthai"
317   HAVE_THAI_WORDSEG=yes
318
319 elif test "x$HAVE_WORDCUT" = "xyes"; then
320
321   save_CPPFLAGS="$CPPFLAGS"
322   CPPFLAGS="$CPPFLAGS $WORDCUT_CFLAGS"
323   AC_TRY_CPP([#include <wordcut/wcwordcut.h>], , HAVE_WORDCUT=no)
324   if test "x$HAVE_WORDCUT" = "xno"; then
325     PKG_CHECK_MODULES(GLIB_2_0, glib-2.0, HAVE_GLIB_2_0=yes, HAVE_GLIB_2_0=no)
326     if test "x$HAVE_GLIB_2_0" = "xyes"; then
327       CPPFLAGS="$CPPFLAGS $GLIB_2_0_CFLAGS"
328       AC_TRY_CPP([#include <wordcut/wcwordcut.h>], HAVE_WORDCUT=yes)
329     fi
330   fi
331   if test "x$HAVE_WORDCUT" = "xyes"; then
332     THAI_WORDSEG_LD_FLAGS="$WORDCUT_LIBS"
333     AC_DEFINE(HAVE_WORDCUT, 1,
334               [Define if you have the wordcut library and header file])
335     M17N_EXT_LIBS="$M17N_EXT_LIBS wordcut"
336     HAVE_THAI_WORDSEG=yes
337   else
338     CPPFLAGS="$save_CPPFLAGS"
339   fi
340
341 else
342
343   AC_CHECK_LIB(wordcut, wordcut_init, HAVE_WORDCUT_OLD=yes)
344   if test "x$HAVE_WORDCUT_OLD" = "xyes"; then
345     if test -f "/usr/share/wordcut/tdict.wcd"; then
346       tdict="/usr/share/wordcut/tdict.wcd"
347     elif test -f "/usr/local/share/wordcut/tdict.wcd"; then
348       tdict="/usr/local/share/wordcut/tdict.wcd"
349     fi
350     echo "TDICT=$tdict"
351     if test "x$tdict" != "x"; then
352       AC_DEFINE(HAVE_WORDCUT_OLD, 1,
353                 [Define if you have the old version of wordcut library])
354       AC_DEFINE_UNQUOTED(WORDCUT_TDICT, "$tdict", [Define tdict file name])
355       THAI_WORDSEG_LD_FLAGS=-lwordcut
356       M17N_EXT_LIBS="$M17N_EXT_LIBS wordcut-old"
357       HAVE_THAI_WORDSEG=yes
358     else
359       HAVE_WORDCUT=no
360     fi
361   fi
362 fi  
363
364 if test "x$HAVE_THAI_WORDSEG" = "xyes"; then
365   AC_DEFINE(HAVE_THAI_WORDSEG, 1,
366             [Define if you have some Thai word-segmentation library])
367 fi
368 AC_SUBST(THAI_WORDSEG_LD_FLAGS)
369
370 dnl We can't include X_CFLAGS in AM_CPPFLAGS because the generated
371 dnl Makefile put ${AM_CPPFLAGS} before ${CPPFLAGS} and that leads to
372 dnl inclusion of an incorrect header file.  So, append X_CFLAGS to
373 dnl CPPFLAGS here directly.
374
375 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
376
377 dnl AC_ARG_ENABLE(xom, 
378 dnl           [  --enable-xom            build and install XOM library.],
379 dnl           XOM="$enableval")
380
381 SHLIB_EXT=".so"
382 case $host_os in
383 darwin* | rhapsody*)
384   SHLIB_EXT=".dylib";;
385 esac
386 AC_DEFINE_UNQUOTED(DLOPEN_SHLIB_EXT, "$SHLIB_EXT",
387                    [Define to loadable module extention])
388
389 AC_CONFIG_FILES([Makefile
390                  src/Makefile
391                  example/Makefile
392                  m17n-config
393                  m17n-core.pc
394                  m17n-shell.pc
395                  m17n-gui.pc
396                  ])
397
398 dnl if test "x$XOM" = "xyes"; then
399 dnl  AC_CONFIG_FILES(omM17N/Makefile)
400 dnl fi
401
402 AC_OUTPUT
403
404 echo "The m17n library is configured with these external libraries."
405 echo " $M17N_EXT_LIBS"
406
407 dnl Local Variables:
408 dnl comment-start: "dnl "
409 dnl comment-end: ""
410 dnl comment-start-skip: "\\bdnl\\b\\s *"
411 dnl End: