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