]> git.wh0rd.org - fontconfig.git/blob - configure.in
d128fb02fb0a09043f6853efc21207824c09fc85
[fontconfig.git] / configure.in
1 dnl
2 dnl fontconfig/configure.in
3 dnl
4 dnl Copyright © 2003 Keith Packard
5 dnl
6 dnl Permission to use, copy, modify, distribute, and sell this software and its
7 dnl documentation for any purpose is hereby granted without fee, provided that
8 dnl the above copyright notice appear in all copies and that both that
9 dnl copyright notice and this permission notice appear in supporting
10 dnl documentation, and that the name of the author(s) not be used in
11 dnl advertising or publicity pertaining to distribution of the software without
12 dnl specific, written prior permission. The authors make no
13 dnl representations about the suitability of this software for any purpose. It
14 dnl is provided "as is" without express or implied warranty.
15 dnl
16 dnl THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
17 dnl INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
18 dnl EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
19 dnl CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
20 dnl DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
21 dnl TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
22 dnl PERFORMANCE OF THIS SOFTWARE.
23 dnl
24 dnl Process this file with autoconf to create configure.
25
26 AC_INIT(fonts.dtd)
27
28 dnl ==========================================================================
29 dnl Versioning
30 dnl ==========================================================================
31
32 dnl This is the package version number, not the shared library
33 dnl version. This same version number must appear in fontconfig/fontconfig.h
34 dnl Yes, it is a pain to synchronize version numbers. Unfortunately, it's
35 dnl not possible to extract the version number here from fontconfig.h
36 AM_INIT_AUTOMAKE(fontconfig, 2.8.90)
37 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
38 AM_MAINTAINER_MODE
39
40 dnl libtool versioning
41
42 dnl bump revision when fixing bugs
43 dnl bump current and age, reset revision to zero when adding APIs
44 dnl bump current, leave age, reset revision to zero when changing/removing APIS
45 LIBT_CURRENT=5
46 LIBT_REVISION=4
47 AC_SUBST(LIBT_CURRENT)
48 AC_SUBST(LIBT_REVISION)
49 LIBT_AGE=4
50
51 LIBT_VERSION_INFO="$LIBT_CURRENT:$LIBT_REVISION:$LIBT_AGE"
52 AC_SUBST(LIBT_VERSION_INFO)
53
54 LIBT_CURRENT_MINUS_AGE=`expr $LIBT_CURRENT - $LIBT_AGE`
55 AC_SUBST(LIBT_CURRENT_MINUS_AGE)
56
57 dnl ==========================================================================
58
59 AC_CONFIG_HEADERS(config.h)
60
61 AC_PROG_CC
62 AC_PROG_INSTALL
63 AC_PROG_LN_S
64 AC_LIBTOOL_WIN32_DLL
65 AM_PROG_LIBTOOL
66 AC_PROG_MAKE_SET
67
68 dnl ==========================================================================
69
70 case "$host" in
71 *-*-mingw*)
72 os_win32=yes
73 ;;
74 *)
75 os_win32=no
76 esac
77 AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
78
79 if test "$os_win32" = "yes"; then
80 AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
81 fi
82 AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)
83
84 WARN_CFLAGS=""
85 if test "x$GCC" = "xyes"; then
86 WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \
87 -Wmissing-prototypes -Wmissing-declarations \
88 -Wnested-externs -fno-strict-aliasing"
89 AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1,
90 [Can use #warning in C files])
91 fi
92 AC_SUBST(WARN_CFLAGS)
93
94
95 dnl ==========================================================================
96
97 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
98
99 dnl ==========================================================================
100
101 AC_ARG_WITH(arch, [ --with-arch=ARCH Force architecture to ARCH], arch="$withval", arch=auto)
102
103 if test "x$arch" != xauto; then
104 AC_DEFINE_UNQUOTED([FC_ARCHITECTURE], "$arch", [Architecture prefix to use for cache file names])
105 fi
106
107
108 dnl ==========================================================================
109
110 # Checks for header files.
111 AC_HEADER_DIRENT
112 AC_HEADER_STDC
113 AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h])
114
115 # Checks for typedefs, structures, and compiler characteristics.
116 AC_C_CONST
117 AC_C_INLINE
118 AC_TYPE_PID_T
119
120 # Checks for library functions.
121 AC_FUNC_VPRINTF
122 AC_FUNC_MMAP
123 AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand random lrand48])
124
125 #
126 # Checks for iconv
127 #
128 AC_MSG_CHECKING([for a usable iconv])
129 ICONV_LIBS=""
130 AC_TRY_LINK([#include <iconv.h>],
131 [iconv_open ("from", "to");],
132 [use_iconv=1],
133 [use_iconv=0])
134 if test x$use_iconv = x1; then
135 AC_MSG_RESULT([libc])
136 else
137 # try using libiconv
138 fontconfig_save_libs="$LIBS"
139 LIBS="$LIBS -liconv"
140
141 AC_TRY_LINK([#include <iconv.h>],
142 [iconv_open ("from", "to");],
143 [use_iconv=1],
144 [use_iconv=0])
145
146 if test x$use_iconv = x1; then
147 ICONV_LIBS="-liconv"
148 AC_MSG_RESULT([libiconv])
149 else
150 AC_MSG_RESULT([no])
151 fi
152
153 LIBS="$fontconfig_save_libs"
154 fi
155 AC_SUBST(ICONV_LIBS)
156 AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
157
158 #
159 # Checks for FreeType
160 #
161
162 AC_ARG_WITH(freetype-config, [ --with-freetype-config=PROG Use FreeType configuration program PROG], freetype_config=$withval, freetype_config=yes)
163
164 if test "$freetype_config" = "yes"; then
165 AC_PATH_PROG(ft_config,freetype-config,no)
166 if test "$ft_config" = "no"; then
167 AC_MSG_ERROR([You must have freetype installed; see http://www.freetype.org/])
168 fi
169 else
170 ft_config="$freetype_config"
171 fi
172
173 FREETYPE_CFLAGS="`$ft_config --cflags`"
174 FREETYPE_LIBS="`$ft_config --libs`"
175
176 AC_SUBST(FREETYPE_LIBS)
177 AC_SUBST(FREETYPE_CFLAGS)
178
179 fontconfig_save_libs="$LIBS"
180 fontconfig_save_cflags="$CFLAGS"
181 LIBS="$LIBS $FREETYPE_LIBS"
182 CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
183 AC_CHECK_FUNCS(FT_Get_Next_Char FT_Get_BDF_Property FT_Get_PS_Font_Info FT_Has_PS_Glyph_Names FT_Get_X11_Font_Format FT_Select_Size)
184 AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem,
185 HAVE_FT_BITMAP_SIZE_Y_PPEM=1,
186 HAVE_FT_BITMAP_SIZE_Y_PPEM=0,
187 [#include <ft2build.h>
188 #include FT_FREETYPE_H])
189 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,$HAVE_FT_BITMAP_SIZE_Y_PPEM,
190 [FT_Bitmap_Size structure includes y_ppem field])
191 CFLAGS="$fontconfig_save_cflags"
192 LIBS="$fontconfig_save_libs"
193
194 #
195 # Check expat configuration
196 #
197
198 AC_ARG_WITH(expat, [ --with-expat=DIR Use Expat in DIR], expat=$withval, expat=yes)
199 AC_ARG_WITH(expat-includes, [ --with-expat-includes=DIR Use Expat includes in DIR], expat_includes=$withval, expat_includes=yes)
200 AC_ARG_WITH(expat-lib, [ --with-expat-lib=DIR Use Expat library in DIR], expat_lib=$withval, expat_lib=yes)
201
202 if test "$enable_libxml2" != "yes"; then
203 case "$expat" in
204 no)
205 ;;
206 *)
207 case "$expat_includes" in
208 yes)
209 case "$expat" in
210 yes)
211 ;;
212 *)
213 EXPAT_CFLAGS="-I$expat/include"
214 ;;
215 esac
216 ;;
217 no)
218 EXPAT_CFLAGS=""
219 ;;
220 *)
221 EXPAT_CFLAGS="-I$expat_includes"
222 ;;
223 esac
224 case "$expat_lib" in
225 yes)
226 case "$expat" in
227 yes)
228 EXPAT_LIBS="-lexpat"
229 ;;
230 *)
231 EXPAT_LIBS="-L$expat/lib -lexpat"
232 ;;
233 esac
234 ;;
235 no)
236 ;;
237 *)
238 EXPAT_LIBS="-L$expat_lib -lexpat"
239 ;;
240 esac
241
242 expatsaved_CPPFLAGS="$CPPFLAGS"
243 CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS"
244 expatsaved_LIBS="$LIBS"
245 LIBS="$LIBS $EXPAT_LIBS"
246
247 AC_CHECK_HEADER(expat.h)
248 case "$ac_cv_header_expat_h" in
249 no)
250 AC_CHECK_HEADER(xmlparse.h)
251 case "$ac_cv_header_xmlparse_h" in
252 no)
253 have_expat_header=no;
254 ;;
255 yes)
256 HAVE_XMLPARSE_H=1
257 AC_SUBST(HAVE_XMLPARSE_H)
258 AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H,
259 [Use xmlparse.h instead of expat.h])
260 have_expat_header=yes
261 ;;
262 esac
263 ;;
264 yes)
265 have_expat_header=yes
266 ;;
267 esac
268 case "$have_expat_header" in
269 no)
270 expat=no
271 ;;
272 yes)
273 AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler)
274 case "$ac_cv_func_XML_SetDoctypeDeclHandler" in
275 yes)
276 HAVE_EXPAT=1
277 AC_SUBST(HAVE_EXPAT)
278 AC_DEFINE_UNQUOTED(HAVE_EXPAT,$HAVE_EXPAT,
279 [Found a useable expat library])
280 ;;
281 *)
282 expat=no
283 ;;
284 esac
285 ;;
286 esac
287 CPPFLAGS="$expatsaved_CPPFLAGS"
288 LIBS="$expatsaved_LIBS"
289 ;;
290 esac
291
292 AC_SUBST(EXPAT_CFLAGS)
293 AC_SUBST(EXPAT_LIBS)
294
295 case "$expat" in
296 no)
297 EXPAT_CFLAGS=""
298 EXPAT_LIBS=""
299
300 AC_MSG_WARN([Cannot find usable expat library. Trying to use libxml2 as fallback.])
301 ;;
302 esac
303 fi
304
305 #
306 # Check libxml2 configuration
307 #
308
309 AC_ARG_ENABLE(libxml2, [ --enable-libxml2 Use libxml2 instead of Expat])
310
311 PKG_PROG_PKG_CONFIG
312
313 if test "$enable_libxml2" = "yes" -o "$expat" = "no"; then
314 PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6])
315 AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat])
316
317 AC_SUBST(LIBXML2_CFLAGS)
318 AC_SUBST(LIBXML2_LIBS)
319 fi
320
321 #
322 # Set default font directory
323 #
324
325 AC_ARG_WITH(default-fonts, [ --with-default-fonts=DIR Use fonts from DIR when config is busted], default_fonts="$withval", default_fonts=yes)
326
327 case "$default_fonts" in
328 yes)
329 if test "$os_win32" = "yes"; then
330 FC_DEFAULT_FONTS="WINDOWSFONTDIR"
331 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "WINDOWSFONTDIR",
332 [Windows font directory])
333 else
334 FC_DEFAULT_FONTS="/usr/share/fonts"
335 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "/usr/share/fonts",
336 [System font directory])
337 fi
338 ;;
339 *)
340 FC_DEFAULT_FONTS="$default_fonts"
341 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$default_fonts",
342 [System font directory])
343 ;;
344 esac
345
346 AC_SUBST(FC_DEFAULT_FONTS)
347
348 #
349 # Add more fonts if available. By default, add only the directories
350 # with outline fonts; those with bitmaps can be added as desired in
351 # local.conf or ~/.fonts.conf
352 #
353 AC_ARG_WITH(add-fonts, [ --with-add-fonts=DIR1,DIR2,...Find additional fonts in DIR1,DIR2,... ], add_fonts="$withval", add_fonts=yes)
354
355 case "$add_fonts" in
356 yes)
357 FC_ADD_FONTS=""
358 for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do
359 case x"$FC_ADD_FONTS" in
360 x)
361 sub="$dir/fonts"
362 if test -d "$sub"; then
363 case x$FC_ADD_FONTS in
364 x)
365 FC_ADD_FONTS="$sub"
366 ;;
367 *)
368 FC_ADD_FONTS="$FC_ADD_FONTS,$sub"
369 ;;
370 esac
371 fi
372 ;;
373 esac
374 done
375 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
376 ;;
377 no)
378 FC_ADD_FONTS=""
379 ;;
380 *)
381 FC_ADD_FONTS="$add_fonts"
382 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
383 ;;
384 esac
385
386 AC_SUBST(FC_ADD_FONTS)
387
388 FC_FONTPATH=""
389
390 case "$FC_ADD_FONTS" in
391 "")
392 ;;
393 *)
394 FC_FONTPATH=`echo $FC_ADD_FONTS |
395 sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'`
396 ;;
397 esac
398
399 AC_SUBST(FC_FONTPATH)
400
401 #
402 # Set default cache directory path
403 #
404 AC_ARG_WITH(cache-dir, [ --with-cache-dir=DIR Use DIR to store cache files (default LOCALSTATEDIR/cache/fontconfig)], fc_cachedir="$withval", fc_cachedir=yes)
405
406 case $fc_cachedir in
407 no|yes)
408 if test "$os_win32" = "yes"; then
409 fc_cachedir="WINDOWSTEMPDIR_FONTCONFIG_CACHE"
410 else
411 fc_cachedir='${localstatedir}/cache/${PACKAGE}'
412 fi
413 ;;
414 *)
415 ;;
416 esac
417 AC_SUBST(fc_cachedir)
418 FC_CACHEDIR=${fc_cachedir}
419 AC_SUBST(FC_CACHEDIR)
420
421 FC_FONTDATE=`LC_ALL=C date`
422
423 AC_SUBST(FC_FONTDATE)
424
425 AC_ARG_WITH(confdir, [ --with-confdir=DIR Use DIR to store configuration files (default SYSCONFDIR/fonts)], confdir="$withval", confdir=yes)
426
427 #
428 # Set CONFDIR and FONTCONFIG_PATH
429 #
430
431 case "$confdir" in
432 no|yes)
433 confdir='${sysconfdir}'/fonts
434 ;;
435 *)
436 ;;
437 esac
438 AC_SUBST(confdir)
439 CONFDIR=${confdir}
440 AC_DEFINE_UNQUOTED(CONFDIR, "$CONFDIR",[Font configuration directory])
441 AC_SUBST(CONFDIR)
442
443 #
444 # Let people not build/install docs if they don't have docbook
445 #
446
447 AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
448
449 AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes)
450
451 default_docs="yes"
452 #
453 # Check if docs exist or can be created
454 #
455 if test x$HASDOCBOOK = xno; then
456 if test -f $srcdir/doc/fonts-conf.5; then
457 :
458 else
459 default_docs="no"
460 fi
461 fi
462
463 AC_ARG_ENABLE(docs, [ --disable-docs Don't build and install documentation],,enable_docs=$default_docs)
464
465 AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes)
466
467 if test "x$enable_docs" = xyes; then
468 DOCSRC="doc"
469 tmp=funcs.$$
470 cat $srcdir/doc/*.fncs | awk '
471 /^@TITLE@/ { if (!done) { printf ("%s\n", $2); done = 1; } }
472 /^@FUNC@/ { if (!done) { printf ("%s\n", $2); done = 1; } }
473 /^@@/ { done = 0; }' > $tmp
474 DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'`
475 echo DOCMAN3 $DOCMAN3
476 rm -f $tmp
477 else
478 DOCSRC=""
479 DOCMAN3=""
480 fi
481
482 AC_SUBST(DOCSRC)
483 AC_SUBST(DOCMAN3)
484
485
486 dnl Figure out what cache format suffix to use for this architecture
487 AC_C_BIGENDIAN
488 AC_CHECK_SIZEOF([void *])
489 AC_CHECK_ALIGNOF([double])
490
491
492
493 AC_OUTPUT([
494 Makefile
495 fontconfig/Makefile
496 fc-lang/Makefile
497 fc-glyphname/Makefile
498 fc-case/Makefile
499 src/Makefile
500 conf.d/Makefile
501 fc-cache/Makefile
502 fc-cat/Makefile
503 fc-list/Makefile
504 fc-match/Makefile
505 fc-pattern/Makefile
506 fc-query/Makefile
507 fc-scan/Makefile
508 doc/Makefile
509 doc/version.sgml
510 test/Makefile
511 fontconfig.spec
512 fontconfig.pc
513 fontconfig-zip
514 ])