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