Fix previous change.
[m17n/m17n-lib.git] / configure.ac
1 dnl configure.ac -- autoconf script for the m17n library.
2
3 dnl Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
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., 51 Franklin Street, Fifth Floor,
22 dnl Boston, MA 02110-1301, USA.
23
24 dnl Process this file with autoconf to produce a configure script.
25
26 AC_INIT([m17n-lib],[1.5.5],[m17n-lib-bug@m17n.org])
27 AC_CONFIG_MACRO_DIR([m4])
28 AM_INIT_AUTOMAKE
29 AC_CONFIG_HEADERS([src/config.h])
30 AM_MAINTAINER_MODE
31
32 API_VERSION=3:0:3
33 AC_SUBST(API_VERSION)
34
35 AM_GNU_GETTEXT
36 GETTEXTDIR="$datadir/locale"
37 AC_SUBST(GETTEXTDIR)
38
39 dnl Checks for programs for compiling.
40 AC_PROG_CC
41 LT_PREREQ([2.2.4])
42 LT_INIT
43
44 dnl Checks for X libraries.
45 AC_PATH_XTRA
46
47 dnl Checks for standard header files.
48 AC_HEADER_STDC
49 AC_HEADER_DIRENT
50 AC_HEADER_TIME
51 AC_CHECK_HEADERS([fcntl.h langinfo.h limits.h locale.h stdlib.h \
52                           string.h strings.h sys/time.h unistd.h])
53 AC_CHECK_HEADER(X11/Xaw/Command.h, HAVE_XAW=yes)
54
55 dnl Checks for typedefs, structures, and compiler characteristics.
56 AC_C_CONST
57 AC_C_INLINE
58 AC_TYPE_SIZE_T
59 AC_STRUCT_TM
60
61 dnl Checks for endian.  This influence the default UTF-16 definition.
62 AC_C_BIGENDIAN
63
64 dnl Checks for library functions.
65 AC_FUNC_ALLOCA
66 AC_FUNC_MALLOC
67 AC_FUNC_REALLOC
68 AC_FUNC_MEMCMP
69 AC_FUNC_STAT
70 AC_FUNC_STRCOLL
71 AC_FUNC_STRFTIME
72 AC_FUNC_STRTOD
73 AC_CHECK_FUNCS(memmove memset nl_langinfo putenv regcomp setlocale)
74 AC_CHECK_FUNCS(strchr strdup gettimeofday)
75
76 dnl Checks where the m17n database is installed.
77
78 AC_CHECK_PROG(HAVE_M17N_DB, m17n-db, yes)
79 if test "x$HAVE_M17N_DB" = "xyes"; then
80   M17NDIR=`m17n-db`
81 else
82   M17NDIR="${datadir}/m17n"
83 fi
84 AC_SUBST(M17NDIR)
85
86 dnl Checks which levels of APIs should be compiled.
87
88 AC_ARG_ENABLE(gui,
89               AS_HELP_STRING([--with-gui],[with GUI level APIs (default is YES)]))
90
91 AM_CONDITIONAL(WITH_GUI, test x$with_gui != xno)
92
93 if test x$with_gui != xno; then
94
95 dnl Checks if dlopen exists, and if it's in libc or libdl.
96
97 AC_SEARCH_LIBS(dlopen, dl,
98                AC_DEFINE(HAVE_DLOPEN, 1,
99                [Define to 1 if you have the function dlopen.]))
100
101 dnl Check several libraries without adding -lxxx to LIBS, without
102 dnl defining HAVE_LIBXXX nor HAVE_XXX_H because they are used only by
103 dnl some libraries (e.g. libm17n-X.so).  Instead, define XXX_LD_FLAGS
104 dnl and HAVE_XXX if library XXX is available.  CPPFLAGS will be
105 dnl augmented.
106
107 M17N_EXT_LIBS=
108
109 AC_CHECK_PROG(HAVE_PKG_CONFIG, pkg-config, yes)
110
111 if test "x$no_x" != "xyes"; then
112   AC_DEFINE(HAVE_X11, 1, [Define to 1 if you have X11.])
113   X11_LD_FLAGS="-lXt -lX11"
114   M17N_EXT_LIBS="$M17N_EXT_LIBS X11"
115
116   if test "x$HAVE_XAW" = "xyes"; then
117     AC_DEFINE(HAVE_X11_XAW_COMMAND_H, 1,
118               [Define to 1 if you have the Xaw header files.])
119     XAW_LD_FLAGS="-lXaw -lXmu"
120     CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_X11_XAW_COMMAND_H"
121     M17N_EXT_LIBS="$M17N_EXT_LIBS Xaw"
122   fi
123 fi
124 AC_SUBST(X11_LD_FLAGS)
125 AC_SUBST(XAW_LD_FLAGS)
126
127 dnl Check for fribidi library.
128 save_CPPFLAGS="$CPPFLAGS"
129 save_LIBS="$LIBS"
130 AC_CHECK_PROG(HAVE_FRIBIDI_CONFIG, fribidi-config, yes)
131 if test "x$HAVE_FRIBIDI_CONFIG" = "xyes"; then
132   CPPFLAGS="$CPPFLAGS `fribidi-config --cflags`"
133   FRIBIDI_LD_FLAGS="`fribidi-config --libs`"
134   LIBS="$LIBS $FRIBIDI_LD_FLAGS"
135 else
136   FRIBIDI_LD_FLAGS=-lfribidi
137 fi
138 AC_CHECK_LIB(fribidi, fribidi_set_mirroring, HAVE_FRIBIDI=yes, HAVE_FRIBIDI=no)
139 AC_CHECK_HEADER(fribidi/fribidi.h,, HAVE_FRIBIDI=no)
140 if test "x$HAVE_FRIBIDI" = "xyes"; then
141   AC_DEFINE(HAVE_FRIBIDI, 1, 
142             [Define to 1 if you have Fribidi library and header file.])
143   M17N_EXT_LIBS="$M17N_EXT_LIBS fribidi"
144 else
145   CPPFLAGS="$save_CPPFLAGS"
146   FRIBIDI_LD_FLAGS=
147 fi
148 LIBS="$save_LIBS"
149 AC_SUBST(FRIBIDI_LD_FLAGS)
150
151 dnl Check for otflib usability.
152 AC_ARG_WITH(libotf, 
153             AS_HELP_STRING([--with-libotf],[with OpenType font suport (default is YES)]))
154
155 if test "x$with_libotf" != "xno"; then
156   save_CPPFLAGS="$CPPFLAGS"
157   save_LIBS="$LIBS"
158   AC_CHECK_PROG(HAVE_OTFLIB_CONFIG, libotf-config, yes)
159   if test "x$HAVE_OTFLIB_CONFIG" = "xyes"; then
160     CPPFLAGS="$CPPFLAGS `libotf-config --cflags`"
161     OTF_LD_FLAGS="`libotf-config --libs`"
162     LIBS="$LIBS $OTF_LD_FLAGS"
163   else
164     OTF_LD_FLAGS=-lotf
165   fi
166   ## We check the availability of OTF_check_features
167   ## because we need libotf-0.9.4 or the later.
168   AC_CHECK_LIB(otf, OTF_check_features, HAVE_OTF=yes, HAVE_OTF=no)
169   AC_CHECK_HEADER(otf.h,, HAVE_OTF=no)
170   if test "x$HAVE_OTF" = "xyes"; then
171     AC_DEFINE(HAVE_OTF, 1, 
172               [Define to 1 if you have OTF library and header file.])
173     M17N_EXT_LIBS="$M17N_EXT_LIBS libotf"
174   else
175     CPPFLAGS="$save_CPPFLAGS"
176     OTF_LD_FLAGS=
177   fi
178   LIBS="$save_LIBS"
179 fi
180 AC_SUBST(OTF_LD_FLAGS)
181
182 dnl Check for Freetype2 usability.
183 AC_CHECK_PROG(HAVE_FREETYPE_CONFIG, freetype-config, yes)
184 if test "x$HAVE_FREETYPE_CONFIG" = "xyes"; then
185   FREETYPE_INC=`freetype-config --cflags`
186   save_CPPFLAGS="$CPPFLAGS"
187   CPPFLAGS="$CPPFLAGS $FREETYPE_INC"
188   AC_CHECK_HEADER(ft2build.h, HAVE_FREETYPE=yes,
189                               HAVE_FREETYPE=no CPPFLAGS="$save_CPPFLAGS")
190   if test "x$HAVE_FREETYPE" = "xyes" ; then
191     save_LIBS="$LIBS"
192     LIBS="$LIBS `freetype-config --libs`"
193     AC_CHECK_LIB(freetype, FT_Init_FreeType, HAVE_FREETYPE=yes,
194                                              HAVE_FREETYPE=no)
195     LIBS="$save_LIBS"
196     if test "x$HAVE_FREETYPE" = "xyes"; then
197       FREETYPE_LD_FLAGS=`freetype-config --libs`
198       AC_DEFINE(HAVE_FREETYPE, 1, 
199                 [Define to 1 if you have FreeType library and header file.])
200       M17N_EXT_LIBS="$M17N_EXT_LIBS freetype"
201       AC_CHECK_HEADER(freetype/ftbdf.h, HAVE_FTBDF_H=yes, HAVE_FTBDF_H=no,
202                       [#include <ft2build.h>
203 #include FT_FREETYPE_H])
204       if test "x$HAVE_FTBDF_H" = "xyes"; then
205         AC_DEFINE(HAVE_FTBDF_H, 1,
206                   [Define to 1 if you have freetype/ftbdf.h.])
207       fi
208       CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_FREETYPE"
209     fi
210   fi
211 fi
212 AC_SUBST(FREETYPE_LD_FLAGS)
213
214 dnl Check for Xft2 usability.
215 save_CPPFLAGS="$CPPFLAGS"
216 save_LIBS="$LIBS"
217 XFT2_LD_FLAGS="-lXft -lfreetype -lfontconfig -lXrender -lX11"
218 AC_CHECK_PROG(HAVE_XFT_CONFIG, xft-config, yes)
219 if test "x$HAVE_XFT_CONFIG" = "xyes"; then
220   CPPFLAGS="$CPPFLAGS `xft-config --cflags`"
221   XFT2_LD_FLAGS="`xft-config --libs`"
222 elif test "x$HAVE_PKG_CONFIG" = "xyes" ; then
223   if pkg-config xft ; then
224     CPPFLAGS="$CPPFLAGS `pkg-config --cflags xft`"
225     XFT2_LD_FLAGS="`pkg-config --libs xft`"
226   fi
227 fi
228 LIBS="$LIBS $XFT2_LD_FLAGS"
229 AC_CHECK_LIB(Xft, XftDrawCreate, HAVE_XFT2=yes, HAVE_XFT2=no)
230 AC_CHECK_HEADER(X11/Xft/Xft.h,, HAVE_XFT2=no, 
231                 [#include <X11/Xft/Xft.h>
232 #if XftVersion >= 20000
233 #else
234 Version too old.  Compiling this line should fail.
235 #endif])
236 if test "x$HAVE_XFT2" = "xyes"; then
237   AC_DEFINE(HAVE_XFT2, 1,
238             [Define to 1 if you have Xft2 library and header file.])
239   M17N_EXT_LIBS="$M17N_EXT_LIBS xft2"
240 else
241   XFT2_LD_FLAGS=
242   CPPFLAGS="$save_CPPFLAGS"
243 fi
244 LIBS="$save_LIBS"
245 AC_SUBST(XFT2_LD_FLAGS)
246
247 dnl Check for fontconfig usability.
248 AC_ARG_WITH(fontconfig,
249             AS_HELP_STRING([--with-fontconfig],[with FontConfig library (default is YES)]))
250 if test "x$with_fontconfig" != "xno"; then
251   save_CPPFLAGS="$CPPFLAGS"
252   save_LIBS="$LIBS"
253   FONTCONFIG_LD_FLAGS=-lfontconfig
254   if test "x$HAVE_PKG_CONFIG" = "xyes"; then
255     if pkg-config --exists fontconfig; then
256       CPPFLAGS="$CPPFLAGS `pkg-config --cflags fontconfig`"
257       FONTCONFIG_LD_FLAGS="`pkg-config --libs fontconfig`"
258       LIBS="$LIBS $FONTCONFIG_LD_FLAGS"
259     fi
260   fi
261   AC_CHECK_LIB(fontconfig, FcInit, HAVE_FONTCONFIG=yes, HAVE_FONTCONFIG=no)
262   AC_CHECK_HEADER(fontconfig/fontconfig.h, , HAVE_FONTCONFIG=no)
263   if test "x$HAVE_FONTCONFIG" = "xyes"; then
264     AC_DEFINE(HAVE_FONTCONFIG, 1,
265               [Define to 1 if you have fontconfig library and header file.])
266     M17N_EXT_LIBS="$M17N_EXT_LIBS fontconfig"
267   else
268     FONTCONFIG_LD_FLAGS=
269     CPPFLAGS="$save_CPPFLAGS"
270   fi
271   LIBS="$save_LIBS"
272 fi
273 AC_SUBST(FONTCONFIG_LD_FLAGS)
274
275 dnl Check for gdlib usability.
276 AC_ARG_WITH(gd, 
277             AS_HELP_STRING([--with-gd],[suport graphic device by GD library (default is YES)]))
278
279 if test "x$with_gd" != "xno"; then
280   save_LIBS="$LIBS"
281   AC_CHECK_LIB(gd, gdImageCreate, HAVE_GD=yes, HAVE_GD=no)
282   AC_CHECK_HEADER(gd.h, , HAVE_GD=no)
283   if test "x$HAVE_GD" = "xyes"; then
284     AC_CHECK_LIB(gd, gdImageCreateTrueColor, HAVE_GD=2, HAVE_GD=1)
285     AC_DEFINE_UNQUOTED(HAVE_GD, $HAVE_GD,
286               [Define to 1 or 2 if you have gd library and header file.])
287     M17N_EXT_LIBS="$M17N_EXT_LIBS gdlib"
288     GD_LD_FLAGS=-lgd
289     CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_GD=$HAVE_GD"
290   fi
291   LIBS="$save_LIBS"
292 fi
293 AC_SUBST(GD_LD_FLAGS)
294
295 fi
296
297 dnl Check for libxml2 usability.
298 save_CPPFLAGS="$CPPFLAGS"
299 save_LIBS="$LIBS"
300 AC_CHECK_PROG(HAVE_XML2_CONFIG, xml2-config, yes)
301 if test "x$HAVE_XML2_CONFIG" = "xyes"; then
302   CPPFLAGS="$CPPFLAGS `xml2-config --cflags`"
303   XML2_LD_FLAGS="`xml2-config --libs`"
304   LIBS="$LIBS $XML2_LD_FLAGS"
305 else
306   CPPFLAGS="$CPPFLAGS -I/usr/include/libxml2"
307   XML2_LD_FLAGS="-lxml2 -lz -lpthread -lm"
308 fi
309 AC_CHECK_LIB(xml2, xmlParseMemory, HAVE_XML2=yes, HAVE_XML2=no)
310 AC_CHECK_HEADER(libxml/tree.h,, HAVE_XML2=no, /**/)
311 if test "x$HAVE_XML2" = "xyes"; then
312   AC_DEFINE(HAVE_XML2, 1,
313             [Define to 1 if you have libxml2 library and header file])
314   M17N_EXT_LIBS="$M17N_EXT_LIBS xml2"
315 else
316   XML2_LD_FLAGS=
317   CPPFLAGS="$save_CPPFLAGS"
318 fi
319 LIBS="$save_LIBS"
320 AC_SUBST(XML2_LD_FLAGS)
321
322 dnl Check for Anthy usability.
323
324 PKG_CHECK_MODULES(ANTHY, anthy, HAVE_ANTHY=yes, HAVE_ANTHY=no)
325 if test "x$HAVE_ANTHY" = "xyes"; then
326   AC_DEFINE(HAVE_ANTHY, 1,
327            [Define to 1 if you have Anthy library and header file])
328   M17N_EXT_LIBS="$M17N_EXT_LIBS anthy"
329   ANTHY_LD_FLAGS="$ANTHY_LIBS"
330   CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_ANTHY"
331 fi
332 AC_SUBST(ANTHY_LD_FLAGS)
333
334 dnl Check for Ispell usability.
335 AC_CHECK_PROG(HAVE_ISPELL, ispell, yes)
336 if test "x$HAVE_ISPELL" = "xyes"; then
337   AC_DEFINE(HAVE_ISPELL, 1, [Define if ispell is available.])
338   M17N_EXT_LIBS="$M17N_EXT_LIBS ispell"
339   CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_ISPELL"
340 fi
341
342 dnl Check for Thai word-segmentation library.
343 dnl If we have one, define HAVE_THAI_WORDSEG and one of these:
344 dnl   HAVE_LIBTHAI, HAVE_WORDCUT, or HAVE_WORDCUT_OLD
345 dnl In addition, set THAI_WORDSEG_LD_FLAGS to a proper value.
346
347 PKG_CHECK_MODULES(LIBTHAI, libthai, HAVE_LIBTHAI=yes, HAVE_LIBTHAI=no)
348 PKG_CHECK_MODULES(WORDCUT, wordcut, HAVE_WORDCUT=yes, HAVE_WORDCUT=no)
349
350 if test "x$HAVE_LIBTHAI" == "xyes"; then
351
352   AC_DEFINE(HAVE_LIBTHAI, 1, [Define if you have libthai])
353   THAI_WORDSEG_LD_FLAGS="$LIBTHAI_LIBS"
354   M17N_EXT_LIBS="$M17N_EXT_LIBS libthai"
355   HAVE_THAI_WORDSEG=yes
356
357 elif test "x$HAVE_WORDCUT" = "xyes"; then
358
359   save_CPPFLAGS="$CPPFLAGS"
360   CPPFLAGS="$CPPFLAGS $WORDCUT_CFLAGS"
361   AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <wordcut/wcwordcut.h>]])],[],[HAVE_WORDCUT=no])
362   if test "x$HAVE_WORDCUT" = "xno"; then
363     PKG_CHECK_MODULES(GLIB_2_0, glib-2.0, HAVE_GLIB_2_0=yes, HAVE_GLIB_2_0=no)
364     if test "x$HAVE_GLIB_2_0" = "xyes"; then
365       CPPFLAGS="$CPPFLAGS $GLIB_2_0_CFLAGS"
366       AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <wordcut/wcwordcut.h>]])],[HAVE_WORDCUT=yes],[])
367     fi
368   fi
369   if test "x$HAVE_WORDCUT" = "xyes"; then
370     THAI_WORDSEG_LD_FLAGS="$WORDCUT_LIBS"
371     AC_DEFINE(HAVE_WORDCUT, 1,
372               [Define if you have the wordcut library and header file])
373     M17N_EXT_LIBS="$M17N_EXT_LIBS wordcut"
374     HAVE_THAI_WORDSEG=yes
375   else
376     CPPFLAGS="$save_CPPFLAGS"
377   fi
378
379 else
380
381   AC_CHECK_LIB(wordcut, wordcut_init, HAVE_WORDCUT_OLD=yes)
382   if test "x$HAVE_WORDCUT_OLD" = "xyes"; then
383     if test -f "/usr/share/wordcut/tdict.wcd"; then
384       tdict="/usr/share/wordcut/tdict.wcd"
385     elif test -f "/usr/local/share/wordcut/tdict.wcd"; then
386       tdict="/usr/local/share/wordcut/tdict.wcd"
387     fi
388     echo "TDICT=$tdict"
389     if test "x$tdict" != "x"; then
390       AC_DEFINE(HAVE_WORDCUT_OLD, 1,
391                 [Define if you have the old version of wordcut library])
392       AC_DEFINE_UNQUOTED(WORDCUT_TDICT, "$tdict", [Define tdict file name])
393       THAI_WORDSEG_LD_FLAGS=-lwordcut
394       M17N_EXT_LIBS="$M17N_EXT_LIBS wordcut-old"
395       HAVE_THAI_WORDSEG=yes
396     else
397       HAVE_WORDCUT=no
398     fi
399   fi
400 fi  
401
402 if test "x$HAVE_THAI_WORDSEG" = "xyes"; then
403   AC_DEFINE(HAVE_THAI_WORDSEG, 1,
404             [Define if you have some Thai word-segmentation library])
405 fi
406 AC_SUBST(THAI_WORDSEG_LD_FLAGS)
407
408 AC_SUBST(CONFIG_FLAGS)
409
410 dnl We can't include X_CFLAGS in AM_CPPFLAGS because the generated
411 dnl Makefile put ${AM_CPPFLAGS} before ${CPPFLAGS} and that leads to
412 dnl inclusion of an incorrect header file.  So, append X_CFLAGS to
413 dnl CPPFLAGS here directly.
414
415 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
416
417 dnl AC_ARG_ENABLE(xom, 
418 dnl           [  --enable-xom            build and install XOM library.],
419 dnl           XOM="$enableval")
420
421 SHLIB_EXT=".so"
422 case $host_os in
423 darwin* | rhapsody*)
424   SHLIB_EXT=".dylib";;
425 esac
426 AC_DEFINE_UNQUOTED(DLOPEN_SHLIB_EXT, "$SHLIB_EXT",
427                    [Define to loadable module extention])
428
429 AC_CONFIG_FILES([Makefile po/Makefile.in intl/Makefile
430                  src/Makefile
431                  example/Makefile
432                  m17n-config
433                  m17n-core.pc
434                  m17n-shell.pc
435                  m17n-flt.pc
436                  m17n-gui.pc
437                  ])
438
439 dnl if test "x$XOM" = "xyes"; then
440 dnl  AC_CONFIG_FILES(omM17N/Makefile)
441 dnl fi
442
443 AC_OUTPUT
444
445 echo "The m17n library is configured with these external libraries."
446 echo " $M17N_EXT_LIBS"
447
448 dnl Local Variables:
449 dnl comment-start: "dnl "
450 dnl comment-end: ""
451 dnl comment-start-skip: "\\bdnl\\b\\s *"
452 dnl End: