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