Check if the OTF library has OTF_drive_gpos2 ().
[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.6.0],[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=4:0:4
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     AC_CHECK_LIB(otf, OTF_drive_gpos2, HAVE_OTF_DRIVE_GPOS2=yes,
175                  HAVE_OTF_DRIVE_GPOS2=no)
176     if test "x$HAVE_OTF_DRIVE_GPOS2" = "xyes"; then
177       AC_DEFINE(HAVE_OTF_DRIVE_GPOS2, 1,
178                 [Define to 1 if the OTF library has OTF_drive_gpos2().])
179     fi
180   else
181     CPPFLAGS="$save_CPPFLAGS"
182     OTF_LD_FLAGS=
183   fi
184   LIBS="$save_LIBS"
185 fi
186 AC_SUBST(OTF_LD_FLAGS)
187
188 dnl Check for Freetype2 usability.
189 AC_CHECK_PROG(HAVE_FREETYPE_CONFIG, freetype-config, yes)
190 if test "x$HAVE_FREETYPE_CONFIG" = "xyes"; then
191   FREETYPE_INC=`freetype-config --cflags`
192   save_CPPFLAGS="$CPPFLAGS"
193   CPPFLAGS="$CPPFLAGS $FREETYPE_INC"
194   AC_CHECK_HEADER(ft2build.h, HAVE_FREETYPE=yes,
195                               HAVE_FREETYPE=no CPPFLAGS="$save_CPPFLAGS")
196   if test "x$HAVE_FREETYPE" = "xyes" ; then
197     save_LIBS="$LIBS"
198     LIBS="$LIBS `freetype-config --libs`"
199     AC_CHECK_LIB(freetype, FT_Init_FreeType, HAVE_FREETYPE=yes,
200                                              HAVE_FREETYPE=no)
201     LIBS="$save_LIBS"
202     if test "x$HAVE_FREETYPE" = "xyes"; then
203       FREETYPE_LD_FLAGS=`freetype-config --libs`
204       AC_DEFINE(HAVE_FREETYPE, 1, 
205                 [Define to 1 if you have FreeType library and header file.])
206       M17N_EXT_LIBS="$M17N_EXT_LIBS freetype"
207       AC_CHECK_HEADER(freetype/ftbdf.h, HAVE_FTBDF_H=yes, HAVE_FTBDF_H=no,
208                       [#include <ft2build.h>
209 #include FT_FREETYPE_H])
210       if test "x$HAVE_FTBDF_H" = "xyes"; then
211         AC_DEFINE(HAVE_FTBDF_H, 1,
212                   [Define to 1 if you have freetype/ftbdf.h.])
213       fi
214       CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_FREETYPE"
215     fi
216   fi
217 fi
218 AC_SUBST(FREETYPE_LD_FLAGS)
219
220 dnl Check for Xft2 usability.
221 save_CPPFLAGS="$CPPFLAGS"
222 save_LIBS="$LIBS"
223 XFT2_LD_FLAGS="-lXft -lfreetype -lfontconfig -lXrender -lX11"
224 AC_CHECK_PROG(HAVE_XFT_CONFIG, xft-config, yes)
225 if test "x$HAVE_XFT_CONFIG" = "xyes"; then
226   CPPFLAGS="$CPPFLAGS `xft-config --cflags`"
227   XFT2_LD_FLAGS="`xft-config --libs`"
228 elif test "x$HAVE_PKG_CONFIG" = "xyes" ; then
229   if pkg-config xft ; then
230     CPPFLAGS="$CPPFLAGS `pkg-config --cflags xft`"
231     XFT2_LD_FLAGS="`pkg-config --libs xft`"
232   fi
233 fi
234 LIBS="$LIBS $XFT2_LD_FLAGS"
235 AC_CHECK_LIB(Xft, XftDrawCreate, HAVE_XFT2=yes, HAVE_XFT2=no)
236 AC_CHECK_HEADER(X11/Xft/Xft.h,, HAVE_XFT2=no, 
237                 [#include <X11/Xft/Xft.h>
238 #if XftVersion >= 20000
239 #else
240 Version too old.  Compiling this line should fail.
241 #endif])
242 if test "x$HAVE_XFT2" = "xyes"; then
243   AC_DEFINE(HAVE_XFT2, 1,
244             [Define to 1 if you have Xft2 library and header file.])
245   M17N_EXT_LIBS="$M17N_EXT_LIBS xft2"
246 else
247   XFT2_LD_FLAGS=
248   CPPFLAGS="$save_CPPFLAGS"
249 fi
250 LIBS="$save_LIBS"
251 AC_SUBST(XFT2_LD_FLAGS)
252
253 dnl Check for fontconfig usability.
254 AC_ARG_WITH(fontconfig,
255             AS_HELP_STRING([--with-fontconfig],[with FontConfig library (default is YES)]))
256 if test "x$with_fontconfig" != "xno"; then
257   save_CPPFLAGS="$CPPFLAGS"
258   save_LIBS="$LIBS"
259   FONTCONFIG_LD_FLAGS=-lfontconfig
260   if test "x$HAVE_PKG_CONFIG" = "xyes"; then
261     if pkg-config --exists fontconfig; then
262       CPPFLAGS="$CPPFLAGS `pkg-config --cflags fontconfig`"
263       FONTCONFIG_LD_FLAGS="`pkg-config --libs fontconfig`"
264       LIBS="$LIBS $FONTCONFIG_LD_FLAGS"
265     fi
266   fi
267   AC_CHECK_LIB(fontconfig, FcInit, HAVE_FONTCONFIG=yes, HAVE_FONTCONFIG=no)
268   AC_CHECK_HEADER(fontconfig/fontconfig.h, , HAVE_FONTCONFIG=no)
269   if test "x$HAVE_FONTCONFIG" = "xyes"; then
270     AC_DEFINE(HAVE_FONTCONFIG, 1,
271               [Define to 1 if you have fontconfig library and header file.])
272     M17N_EXT_LIBS="$M17N_EXT_LIBS fontconfig"
273   else
274     FONTCONFIG_LD_FLAGS=
275     CPPFLAGS="$save_CPPFLAGS"
276   fi
277   LIBS="$save_LIBS"
278 fi
279 AC_SUBST(FONTCONFIG_LD_FLAGS)
280
281 dnl Check for gdlib usability.
282 AC_ARG_WITH(gd, 
283             AS_HELP_STRING([--with-gd],[suport graphic device by GD library (default is YES)]))
284
285 if test "x$with_gd" != "xno"; then
286   save_LIBS="$LIBS"
287   AC_CHECK_LIB(gd, gdImageCreate, HAVE_GD=yes, HAVE_GD=no)
288   AC_CHECK_HEADER(gd.h, , HAVE_GD=no)
289   if test "x$HAVE_GD" = "xyes"; then
290     AC_CHECK_LIB(gd, gdImageCreateTrueColor, HAVE_GD=2, HAVE_GD=1)
291     AC_DEFINE_UNQUOTED(HAVE_GD, $HAVE_GD,
292               [Define to 1 or 2 if you have gd library and header file.])
293     M17N_EXT_LIBS="$M17N_EXT_LIBS gdlib"
294     GD_LD_FLAGS=-lgd
295     CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_GD=$HAVE_GD"
296   fi
297   LIBS="$save_LIBS"
298 fi
299 AC_SUBST(GD_LD_FLAGS)
300
301 fi
302
303 dnl Check for libxml2 usability.
304 save_CPPFLAGS="$CPPFLAGS"
305 save_LIBS="$LIBS"
306 AC_CHECK_PROG(HAVE_XML2_CONFIG, xml2-config, yes)
307 if test "x$HAVE_XML2_CONFIG" = "xyes"; then
308   CPPFLAGS="$CPPFLAGS `xml2-config --cflags`"
309   XML2_LD_FLAGS="`xml2-config --libs`"
310   LIBS="$LIBS $XML2_LD_FLAGS"
311 else
312   CPPFLAGS="$CPPFLAGS -I/usr/include/libxml2"
313   XML2_LD_FLAGS="-lxml2 -lz -lpthread -lm"
314 fi
315 AC_CHECK_LIB(xml2, xmlParseMemory, HAVE_XML2=yes, HAVE_XML2=no)
316 AC_CHECK_HEADER(libxml/tree.h,, HAVE_XML2=no, /**/)
317 if test "x$HAVE_XML2" = "xyes"; then
318   AC_DEFINE(HAVE_XML2, 1,
319             [Define to 1 if you have libxml2 library and header file])
320   M17N_EXT_LIBS="$M17N_EXT_LIBS xml2"
321 else
322   XML2_LD_FLAGS=
323   CPPFLAGS="$save_CPPFLAGS"
324 fi
325 LIBS="$save_LIBS"
326 AC_SUBST(XML2_LD_FLAGS)
327
328 dnl Check for Anthy usability.
329
330 PKG_CHECK_MODULES(ANTHY, anthy, HAVE_ANTHY=yes, HAVE_ANTHY=no)
331 if test "x$HAVE_ANTHY" = "xyes"; then
332   AC_DEFINE(HAVE_ANTHY, 1,
333            [Define to 1 if you have Anthy library and header file])
334   M17N_EXT_LIBS="$M17N_EXT_LIBS anthy"
335   ANTHY_LD_FLAGS="$ANTHY_LIBS"
336   CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_ANTHY"
337 fi
338 AC_SUBST(ANTHY_LD_FLAGS)
339
340 dnl Check for Ispell usability.
341 AC_CHECK_PROG(HAVE_ISPELL, ispell, yes)
342 if test "x$HAVE_ISPELL" = "xyes"; then
343   AC_DEFINE(HAVE_ISPELL, 1, [Define if ispell is available.])
344   M17N_EXT_LIBS="$M17N_EXT_LIBS ispell"
345   CONFIG_FLAGS="$CONFIG_FLAGS -DHAVE_ISPELL"
346 fi
347
348 dnl Check for Thai word-segmentation library.
349 dnl If we have one, define HAVE_THAI_WORDSEG and one of these:
350 dnl   HAVE_LIBTHAI, HAVE_WORDCUT, or HAVE_WORDCUT_OLD
351 dnl In addition, set THAI_WORDSEG_LD_FLAGS to a proper value.
352
353 PKG_CHECK_MODULES(LIBTHAI, libthai, HAVE_LIBTHAI=yes, HAVE_LIBTHAI=no)
354 PKG_CHECK_MODULES(WORDCUT, wordcut, HAVE_WORDCUT=yes, HAVE_WORDCUT=no)
355
356 if test "x$HAVE_LIBTHAI" == "xyes"; then
357
358   AC_DEFINE(HAVE_LIBTHAI, 1, [Define if you have libthai])
359   THAI_WORDSEG_LD_FLAGS="$LIBTHAI_LIBS"
360   M17N_EXT_LIBS="$M17N_EXT_LIBS libthai"
361   HAVE_THAI_WORDSEG=yes
362
363 elif test "x$HAVE_WORDCUT" = "xyes"; then
364
365   save_CPPFLAGS="$CPPFLAGS"
366   CPPFLAGS="$CPPFLAGS $WORDCUT_CFLAGS"
367   AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <wordcut/wcwordcut.h>]])],[],[HAVE_WORDCUT=no])
368   if test "x$HAVE_WORDCUT" = "xno"; then
369     PKG_CHECK_MODULES(GLIB_2_0, glib-2.0, HAVE_GLIB_2_0=yes, HAVE_GLIB_2_0=no)
370     if test "x$HAVE_GLIB_2_0" = "xyes"; then
371       CPPFLAGS="$CPPFLAGS $GLIB_2_0_CFLAGS"
372       AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <wordcut/wcwordcut.h>]])],[HAVE_WORDCUT=yes],[])
373     fi
374   fi
375   if test "x$HAVE_WORDCUT" = "xyes"; then
376     THAI_WORDSEG_LD_FLAGS="$WORDCUT_LIBS"
377     AC_DEFINE(HAVE_WORDCUT, 1,
378               [Define if you have the wordcut library and header file])
379     M17N_EXT_LIBS="$M17N_EXT_LIBS wordcut"
380     HAVE_THAI_WORDSEG=yes
381   else
382     CPPFLAGS="$save_CPPFLAGS"
383   fi
384
385 else
386
387   AC_CHECK_LIB(wordcut, wordcut_init, HAVE_WORDCUT_OLD=yes)
388   if test "x$HAVE_WORDCUT_OLD" = "xyes"; then
389     if test -f "/usr/share/wordcut/tdict.wcd"; then
390       tdict="/usr/share/wordcut/tdict.wcd"
391     elif test -f "/usr/local/share/wordcut/tdict.wcd"; then
392       tdict="/usr/local/share/wordcut/tdict.wcd"
393     fi
394     echo "TDICT=$tdict"
395     if test "x$tdict" != "x"; then
396       AC_DEFINE(HAVE_WORDCUT_OLD, 1,
397                 [Define if you have the old version of wordcut library])
398       AC_DEFINE_UNQUOTED(WORDCUT_TDICT, "$tdict", [Define tdict file name])
399       THAI_WORDSEG_LD_FLAGS=-lwordcut
400       M17N_EXT_LIBS="$M17N_EXT_LIBS wordcut-old"
401       HAVE_THAI_WORDSEG=yes
402     else
403       HAVE_WORDCUT=no
404     fi
405   fi
406 fi  
407
408 if test "x$HAVE_THAI_WORDSEG" = "xyes"; then
409   AC_DEFINE(HAVE_THAI_WORDSEG, 1,
410             [Define if you have some Thai word-segmentation library])
411 fi
412 AC_SUBST(THAI_WORDSEG_LD_FLAGS)
413
414 AC_SUBST(CONFIG_FLAGS)
415
416 dnl We can't include X_CFLAGS in AM_CPPFLAGS because the generated
417 dnl Makefile put ${AM_CPPFLAGS} before ${CPPFLAGS} and that leads to
418 dnl inclusion of an incorrect header file.  So, append X_CFLAGS to
419 dnl CPPFLAGS here directly.
420
421 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
422
423 dnl AC_ARG_ENABLE(xom, 
424 dnl           [  --enable-xom            build and install XOM library.],
425 dnl           XOM="$enableval")
426
427 SHLIB_EXT=".so"
428 case $host_os in
429 darwin* | rhapsody*)
430   SHLIB_EXT=".dylib";;
431 esac
432 AC_DEFINE_UNQUOTED(DLOPEN_SHLIB_EXT, "$SHLIB_EXT",
433                    [Define to loadable module extention])
434
435 AC_CONFIG_FILES([Makefile po/Makefile.in intl/Makefile
436                  src/Makefile
437                  example/Makefile
438                  m17n-config
439                  m17n-core.pc
440                  m17n-shell.pc
441                  m17n-flt.pc
442                  m17n-gui.pc
443                  ])
444
445 dnl if test "x$XOM" = "xyes"; then
446 dnl  AC_CONFIG_FILES(omM17N/Makefile)
447 dnl fi
448
449 AC_OUTPUT
450
451 echo "The m17n library is configured with these external libraries."
452 echo " $M17N_EXT_LIBS"
453
454 dnl Local Variables:
455 dnl comment-start: "dnl "
456 dnl comment-end: ""
457 dnl comment-start-skip: "\\bdnl\\b\\s *"
458 dnl End: