Check fontconfig even if Xft is available. Check
[m17n/m17n-lib.git] / configure.ac
1 dnl configure.ac -- autoconf script for the m17n library.
2
3 dnl Copyright (C) 2003, 2004
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.1.0, m17n-lib-bug@m17n.org)
27 AM_INIT_AUTOMAKE(m17n-lib, 1.1.0)
28 AM_CONFIG_HEADER(src/config.h)
29
30 # Checks for programs for compiling.
31 AC_PROG_CC
32 AC_LIBTOOL_DLOPEN
33 AC_LIBLTDL_CONVENIENCE
34 AM_PROG_LIBTOOL
35
36 # Checks for X libraries.
37 AC_PATH_XTRA
38
39 # Checks for standard header files.
40 AC_HEADER_STDC
41 AC_HEADER_DIRENT
42 AC_HEADER_TIME
43 AC_CHECK_HEADERS([fcntl.h langinfo.h limits.h locale.h stdlib.h \
44                           string.h strings.h sys/time.h unistd.h])
45
46 # Checks for typedefs, structures, and compiler characteristics.
47 AC_C_CONST
48 AC_C_INLINE
49 AC_TYPE_SIZE_T
50 AC_STRUCT_TM
51
52 # Checks for endian.  This influence the default UTF-16 definition.
53 AC_C_BIGENDIAN
54
55 # Checks for library functions.
56 AC_FUNC_ALLOCA
57 AC_FUNC_MALLOC
58 AC_FUNC_REALLOC
59 AC_FUNC_MEMCMP
60 AC_FUNC_STAT
61 AC_FUNC_STRCOLL
62 AC_FUNC_STRFTIME
63 AC_FUNC_STRTOD
64 AC_CHECK_FUNCS(memmove memset nl_langinfo putenv regcomp setlocale)
65 AC_CHECK_FUNCS(strchr strdup gettimeofday)
66
67 # Check several libraries without adding -lxxx to LIBS, without
68 # defining HAVE_LIBXXX nor HAVE_XXX_H because they are used only for
69 # libm17-X.so.  Instead, define XXX_LD_FLAGS and HAVE_XXX if library
70 # XXX is available.  CPPFLAGS will be augmented.
71
72 # Check for fribidi library.
73 save_CPPFLAGS="$CPPFLAGS"
74 save_LIBS="$LIBS"
75 AC_CHECK_PROG(HAVE_FRIBIDI_CONFIG, fribidi-config, yes)
76 if test "$HAVE_FRIBIDI_CONFIG" = "xyes"; then
77   CPPFLAGS="$CPPFLAGS `fribidi-config --cflags`"
78   FRIBIDI_LD_FLAGS="`fribidi-config --libs`"
79   LIBS="$LIBS $FRIBIDI_LD_FLAGS"
80 else
81   FRIBIDI_LD_FLAGS=-lfribidi
82 fi
83 AC_CHECK_LIB(fribidi, fribidi_set_mirroring, HAVE_FRIBIDI=yes, HAVE_FRIBIDI=no)
84 AC_CHECK_HEADER(fribidi/fribidi.h,, HAVE_FRIBIDI=no)
85 if test "x$HAVE_FRIBIDI" = "xyes"; then
86   AC_DEFINE(HAVE_FRIBIDI, 1, 
87             [Define to 1 if you have Fribidi library and header file.])
88 else
89   CPPFLAGS="$save_CPPFLAGS"
90   FRIBIDI_LD_FLAGS=
91 fi
92 LIBS="$save_LIBS"
93 AC_SUBST(FRIBIDI_LD_FLAGS)
94
95 # Check for otflib usability.
96 save_CPPFLAGS="$CPPFLAGS"
97 save_LIBS="$LIBS"
98 AC_CHECK_PROG(HAVE_OTFLIB_CONFIG, libotf-config, yes)
99 if test "x$HAVE_OTFLIB_CONFIG" = "xyes"; then
100   CPPFLAGS="$CPPFLAGS `libotf-config --cflags`"
101   OTF_LD_FLAGS="`libotf-config --libs`  "
102   LIBS="$LIBS $OTF_LD_FLAGS"
103 else
104   OTF_LD_FLAGS=-lotf
105 fi
106 AC_CHECK_LIB(otf, OTF_open, HAVE_OTF=yes, HAVE_OTF=no)
107 AC_CHECK_HEADER(otf.h,, HAVE_OTF=no)
108 CPPFLAGS="$save_CPPFLAGS"
109 if test "x$HAVE_OTF" = "xyes"; then
110   AC_DEFINE(HAVE_OTF, 1, 
111             [Define to 1 if you have OTF library and header file.])
112 else
113   CPPFLAGS="$save_CPPFLAGS"
114   OTF_LD_FLAGS=
115 fi
116 LIBS="$save_LIBS"
117 AC_SUBST(OTF_LD_FLAGS)
118
119 # Check for Freetype2 usability.
120 AC_CHECK_PROG(HAVE_FREETYPE_CONFIG, freetype-config, yes)
121 if test "x$HAVE_FREETYPE_CONFIG" = "xyes"; then
122   FREETYPE_INC=`freetype-config --cflags`
123   save_CPPFLAGS="$CPPFLAGS"
124   CPPFLAGS="$CPPFLAGS $FREETYPE_INC"
125   AC_CHECK_HEADER(ft2build.h, HAVE_FREETYPE=yes,
126                               HAVE_FREETYPE=no CPPFLAGS="$save_CPPFLAGS")
127   if test "x$HAVE_FREETYPE" = "xyes" ; then
128     save_LIBS="$LIBS"
129     LIBS="$LIBS `freetype-config --libs`"
130     AC_CHECK_LIB(freetype, FT_Init_FreeType, HAVE_FREETYPE=yes,
131                                              HAVE_FREETYPE=no)
132     LIBS="$save_LIBS"
133     if test "x$HAVE_FREETYPE" = "xyes"; then
134       FREETYPE_LD_FLAGS=`freetype-config --libtool`
135       AC_DEFINE(HAVE_FREETYPE, 1, 
136                 [Define to 1 if you have FreeType library and header file.])
137     fi
138   fi
139 fi
140 AC_SUBST(FREETYPE_LD_FLAGS)
141
142 # Check for Xft2 usability.
143 save_CPPFLAGS="$CPPFLAGS"
144 save_LIBS="$LIBS"
145 AC_CHECK_PROG(HAVE_XFT_CONFIG, xft-config, yes)
146 if test "x$HAVE_XFT_CONFIG" = "xyes"; then
147   CPPFLAGS="$CPPFLAGS `xft-config --cflags`"
148   XFT2_LD_FLAGS="`xft-config --libs`"
149   LIBS="$LIBS $XFT2_LD_FLAGS"
150 else
151   XFT2_LD_FLAGS="-lXft -lfreetype -lfontconfig -lXrender -lX11"
152 fi
153 AC_CHECK_LIB(Xft, XftDrawCreate, HAVE_XFT2=yes, HAVE_XFT2=no)
154 AC_CHECK_HEADER(X11/Xft/Xft.h,, HAVE_XFT2=no, 
155                 [#include <X11/Xft/Xft.h>
156 #if XftVersion >= 20000
157 #else
158 Version too old.  Compiling this line should fail.
159 #endif])
160 if test "x$HAVE_XFT2" = "xyes"; then
161   AC_DEFINE(HAVE_XFT2, 1,
162             [Define to 1 if you have Xft2 library and header file.])
163 else
164   CPPFLAGS="$save_CPPFLAGS"
165 fi
166 LIBS="$save_LIBS"
167 AC_SUBST(XFT2_LD_FLAGS)
168
169 # Check for fontconfig usability.
170 save_CPPFLAGS="$CPPFLAGS"
171 save_LIBS="$LIBS"
172 FONTCONFIG_LD_FLAGS=-lfontconfig
173 AC_CHECK_PROG(HAVE_PKG_CONFIG, pkg-config, yes)
174 if test "x$HAVE_PKG_CONFIG" = "xyes"; then
175   if pkg-config --exists fontconfig; then
176     CPPFLAGS="$CPPFLAGS `pkg-config --cflags fontconfig`"
177     FONTCONFIG_LD_FLAGS="`pkg-config --libs fontconfig`"
178     LIBS="$LIBS $FONTCONFIG_LD_FLAGS"
179   fi
180 fi
181 AC_CHECK_LIB(fontconfig, FcInit, HAVE_FONTCONFIG=yes, HAVE_FONTCONFIG=no)
182 AC_CHECK_HEADER(fontconfig/fontconfig.h, , HAVE_FONTCONFIG=no)
183 if test "x$HAVE_FONTCONFIG" = "xyes"; then
184   AC_DEFINE(HAVE_FONTCONFIG, 1,
185               [Define to 1 if you have fontconfig library and header file.])
186 else
187   FONTCONFIG_LD_FLAGS=
188   CPPFLAGS="$save_CPPFLAGS"
189 fi
190 LIBS="$save_LIBS"
191 AC_SUBST(FONTCONFIG_LD_FLAGS)
192
193 # Check for gdlib usability.
194 save_LIBS="$LIBS"
195 AC_CHECK_LIB(gd, gdImageCreate, HAVE_GD=yes, HAVE_GD=no)
196 AC_CHECK_HEADER(gd.h, , HAVE_GD=no)
197 if test "x$HAVE_GD" = "xyes"; then
198   AC_CHECK_LIB(gd, gdImageCreateTrueColor, HAVE_GD=2, HAVE_GD=1)
199   AC_DEFINE_UNQUOTED(HAVE_GD, $HAVE_GD,
200             [Define to 1 if you have gd library and header file.])
201   GD_LD_FLAGS=-lgd
202 fi
203 LIBS="$save_LIBS"
204 AC_SUBST(GD_LD_FLAGS)
205
206 # Check for libxml2 usability.
207 save_CPPFLAGS="$CPPFLAGS"
208 save_LIBS="$LIBS"
209 AC_CHECK_PROG(HAVE_XML2_CONFIG, xml2-config, yes)
210 if test "x$HAVE_XML2_CONFIG" = "xyes"; then
211   CPPFLAGS="$CPPFLAGS `xml2-config --cflags`"
212   XML2_LD_FLAGS="`xml2-config --libs`"
213   LIBS="$LIBS $XML2_LD_FLAGS"
214 else
215   CPPFLAGS="$CPPFLAGS -I/usr/include/libxml2"
216   XML2_LD_FLAGS="-lxml2 -lz -lpthread -lm"
217 fi
218 AC_CHECK_LIB(xml2, xmlParseMemory, HAVE_XML2=yes, HAVE_XML2=no)
219 AC_CHECK_HEADER(libxml/tree.h,, HAVE_XML2=no, /**/)
220 if test "x$HAVE_XML2" = "xyes"; then
221   AC_DEFINE(HAVE_XML2, 1,
222             [Define to 1 if you have libxml2 library and header file])
223 else
224   CPPFLAGS="$save_CPPFLAGS"
225 fi
226 LIBS="$save_LIBS"
227 AC_SUBST(XML2_LD_FLAGS)
228
229 # Check for Anthy usability.
230 AC_CHECK_LIB(anthydic, anthy_init_sessions, HAVE_ANTHY=yes, HAVE_ANTHY=no)
231 if test "x$HAVE_ANTHY" = "xyes"; then
232   AC_CHECK_LIB(anthy, anthy_init, HAVE_ANTHY=yes, HAVE_ANTHY=no, -lanthydic)
233   if test "x$HAVE_ANTHY" = "xyes"; then
234     AC_CHECK_HEADER(anthy/anthy.h, HAVE_ANTHY=yes, HAVE_ANTHY=no)
235     if test "x$HAVE_ANTHY" = "xyes"; then
236     AC_DEFINE(HAVE_ANTHY, 1,
237               [Define to 1 if you have Anthy library and header file])
238     ANTHY_LD_FLAGS="-lanthy -lanthydic"
239     fi
240   fi
241 fi
242 AC_SUBST(ANTHY_LD_FLAGS)
243
244 # Check for Ispell usability.
245 AC_CHECK_PROG(HAVE_ISPELL, ispell, yes)
246 if test "x$HAVE_ISPELL" = "xyes"; then
247   AC_DEFINE(HAVE_ISPELL, 1, [Define if ispell is available.])
248 fi
249
250 # Check for libwordcut (for Thai).
251 AC_CHECK_LIB(wordcut, wordcut_init, HAVE_WORDCUT=yes, HAVE_WORDCUT=no)
252 if test "x$HAVE_WORDCUT" = "xyes"; then
253   if test -f "/usr/share/wordcut/tdict.wcd"; then
254     tdict="/usr/share/wordcut/tdict.wcd"
255   elif test -f "/usr/local/share/wordcut/tdict.wcd"; then
256     tdict="/usr/local/share/wordcut/tdict.wcd"
257   fi
258   echo "TDICT=$tdict"
259   if test "x$tdict" != "x"; then
260     AC_DEFINE(HAVE_WORDCUT, 1,
261               [Define if you have the wordcut library and header file])
262     AC_DEFINE_UNQUOTED(WORDCUT_TDICT, "$tdict", [Define to tdict file name])
263     WORDCUT_LD_FLAGS=-lwordcut
264   fi
265 fi
266 AC_SUBST(WORDCUT_LD_FLAGS)
267
268 dnl AC_ARG_ENABLE(xom, 
269 dnl           [  --enable-xom            build and install XOM library.],
270 dnl           XOM="$enableval")
271
272 case $host_os in
273 darwin* | rhapsody*)
274   AC_DEFINE(DLOPEN_SHLIB_EXT, ".dylib",
275             [Define to loadable module extention]);;
276 esac
277
278 AC_CONFIG_FILES([Makefile
279                  src/Makefile
280                  example/Makefile
281                  m17n-config
282                  ])
283
284 dnl if test "x$XOM" = "xyes"; then
285 dnl  AC_CONFIG_FILES(omM17N/Makefile)
286 dnl fi
287
288 AC_OUTPUT
289
290 dnl Local Variables:
291 dnl comment-start: "dnl "
292 dnl comment-end: ""
293 dnl comment-start-skip: "\\bdnl\\b\\s *"
294 dnl End: