Fix a build issue on Solaris 10
[platform/upstream/fontconfig.git] / configure.ac
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_PREREQ(2.61)
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 AC_INIT([fontconfig], [2.11.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=fontconfig])
37 AM_INIT_AUTOMAKE([1.11 parallel-tests dist-bzip2])
38 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
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=9
46 LIBT_REVISION=0
47 AC_SUBST(LIBT_CURRENT)
48 AC_SUBST(LIBT_REVISION)
49 LIBT_AGE=8
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 PKGCONFIG_REQUIRES=
58 PKGCONFIG_REQUIRES_PRIVATELY=
59
60 dnl ==========================================================================
61
62 AC_CONFIG_HEADERS(config.h)
63 AC_CONFIG_MACRO_DIR([m4])
64
65 AC_PROG_CC
66 AC_USE_SYSTEM_EXTENSIONS
67 AC_SYS_LARGEFILE
68 AC_PROG_INSTALL
69 AC_PROG_LN_S
70 AC_LIBTOOL_WIN32_DLL
71 AM_PROG_LIBTOOL
72 AC_PROG_MAKE_SET
73 PKG_PROG_PKG_CONFIG
74 m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], AC_SUBST([pkgconfigdir], ${libdir}/pkgconfig))
75
76 AM_MISSING_PROG([GIT], [git])
77 AM_MISSING_PROG([GPERF], [gperf])
78
79 AC_MSG_CHECKING([for RM macro])
80 _predefined_rm=`make -p -f /dev/null 2>/dev/null|grep '^RM ='|sed -e 's/^RM = //'`
81 if test "x$_predefined_rm" = "x"; then
82         AC_MSG_RESULT([no predefined RM])
83         AC_CHECK_PROG(RM, rm, [rm -f])
84 else
85         AC_MSG_RESULT($_predefined_rm)
86 fi
87
88 dnl ==========================================================================
89
90 case "$host" in
91   *-*-mingw*)
92     os_win32=yes
93     ;;
94   *)
95     os_win32=no
96 esac
97 AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
98
99 if test "$os_win32" = "yes"; then
100   AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
101 fi
102 AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)
103
104 WARN_CFLAGS=""
105 if test "x$GCC" = "xyes"; then
106         WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \
107         -Wmissing-prototypes -Wmissing-declarations \
108         -Wnested-externs -fno-strict-aliasing"
109         AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1,
110         [Can use #warning in C files])
111 fi
112 AC_SUBST(WARN_CFLAGS)
113
114
115 dnl ==========================================================================
116
117 AX_CC_FOR_BUILD()
118 AC_ARG_VAR(CC_FOR_BUILD, [build system C compiler])
119 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
120 AM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = "yes")
121
122 dnl ==========================================================================
123
124 AC_ARG_WITH(arch,
125         [AC_HELP_STRING([--with-arch=ARCH],
126                         [Force architecture to ARCH])],
127         arch="$withval", arch=auto)
128
129 if test "x$arch" != xauto; then
130         AC_DEFINE_UNQUOTED([FC_ARCHITECTURE], "$arch", [Architecture prefix to use for cache file names])
131 fi
132
133
134 dnl ==========================================================================
135
136 # Checks for header files.
137 AC_HEADER_DIRENT
138 AC_HEADER_STDC
139 AC_CHECK_HEADERS([fcntl.h regex.h stdlib.h string.h unistd.h sys/vfs.h sys/statfs.h sys/param.h sys/mount.h])
140 AX_CREATE_STDINT_H([src/fcstdint.h])
141
142 # Checks for typedefs, structures, and compiler characteristics.
143 AC_C_CONST
144 AC_C_INLINE
145 AC_C_FLEXIBLE_ARRAY_MEMBER
146 AC_TYPE_PID_T
147
148 # Checks for library functions.
149 AC_FUNC_VPRINTF
150 AC_FUNC_MMAP
151 AC_CHECK_FUNCS([link mkstemp mkostemp _mktemp_s mkdtemp getopt getopt_long getprogname getexecname rand random lrand48 random_r rand_r regcomp regerror regexec regfree fstatvfs fstatfs lstat])
152
153 dnl AC_CHECK_FUNCS doesn't check for header files.
154 dnl posix_fadvise() may be not available in older libc.
155 fc_saved_CFLAGS="$CFLAGS"
156 CFLAGS="$CFLAGS $WARN_CFLAGS -Werror"
157 AC_MSG_CHECKING([for posix_fadvise])
158 AC_LINK_IFELSE([AC_LANG_SOURCE([[
159         #include <fcntl.h>
160         int main(void) {
161             return posix_fadvise(0, 0, 0, 0);
162         }
163         ]])],[
164                 AC_MSG_RESULT([yes])
165                 AC_DEFINE([HAVE_POSIX_FADVISE], [1], [Define to 1 if you have the 'posix_fadvise' function.])
166         ],[AC_MSG_RESULT([no])])
167 if test "$os_win32" = "no"; then
168         AC_MSG_CHECKING([for scandir])
169         AC_LINK_IFELSE([AC_LANG_SOURCE([[
170                 #include <dirent.h>
171                 int comp(const struct dirent **, const struct dirent **);
172                 int comp(const struct dirent **a, const struct dirent **b) { return 0; }
173                 int main(void) {
174                     struct dirent **d;
175                     return scandir(".", &d, 0, &comp) >= 0;
176                 }
177                 ]])],[
178                         AC_MSG_RESULT([yes])
179                         AC_DEFINE([HAVE_SCANDIR], [1], [Define to 1 if you have the 'scandir' function.])
180                 ],[
181                         AC_LINK_IFELSE([AC_LANG_SOURCE([[
182                                 #include <dirent.h>
183                                 int comp(const void *, const void *);
184                                 int comp(const void *a, const void *b) { return 0; }
185                                 int main(void) {
186                                     struct dirent **d;
187                                     return scandir(".", &d, 0, &comp) >= 0;
188                                 }
189                         ]])],[
190                                 AC_MSG_RESULT([yes])
191                                 AC_DEFINE([HAVE_SCANDIR_VOID_P], [1], [Define to 1 if you have the 'scandir' function with int (* compar)(const void *, const void *)])
192                         ],[
193                                 AC_MSG_ERROR([
194 *** No scandir function available.])
195                         ])
196                 ])
197 fi
198 CFLAGS="$fc_saved_CFLAGS"
199
200 #
201 if test "x$ac_cv_func_fstatvfs" = "xyes"; then
202         AC_CHECK_MEMBERS([struct statvfs.f_basetype, struct statvfs.f_fstypename],,,
203                 [#include <sys/statvfs.h>])
204 fi
205 if test "x$ac_cv_func_fstatfs" = "xyes"; then
206         AC_CHECK_MEMBERS([struct statfs.f_flags, struct statfs.f_fstypename],,, [
207 #ifdef HAVE_SYS_VFS_H
208 #include <sys/vfs.h>
209 #endif
210 #ifdef HAVE_SYS_STATFS_H
211 #include <sys/statfs.h>
212 #endif
213 #ifdef HAVE_SYS_PARAM_H
214 #include <sys/param.h>
215 #endif
216 #ifdef HAVE_SYS_MOUNT_H
217 #include <sys/mount.h>
218 #endif])
219 fi
220 AC_CHECK_MEMBERS([struct dirent.d_type],,,
221         [#include <dirent.h>])
222 #
223 # regex
224 #
225 if test "x$ac_cv_func_regcomp" = "xyes" -a "x$ac_cv_func_regerror" = "xyes" -a "x$ac_cv_func_regexec" = "xyes" -a "x$ac_cv_func_regfree"; then
226         AC_DEFINE(USE_REGEX,,[Use regex])
227 fi
228
229 #
230 # Checks for iconv
231 #
232 AC_ARG_ENABLE(iconv,
233         [AC_HELP_STRING([--enable-iconv],
234                         [Use iconv to support non-Unicode SFNT name])],
235         ,enable_iconv=no)
236 AC_ARG_WITH(libiconv,
237         [AC_HELP_STRING([--with-libiconv=DIR],
238                         [Use libiconv in DIR])],
239         [if test "x$withval" = "xyes"; then
240                 libiconv_prefix=$prefix
241          else
242                 libiconv_prefix=$withval
243          fi],
244         [libiconv_prefix=auto])
245 AC_ARG_WITH(libiconv-includes,
246         [AC_HELP_STRING([--with-libiconv-includes=DIR],
247                         [Use libiconv includes in DIR])],
248         [libiconv_includes=$withval],
249         [libiconv_includes=auto])
250 AC_ARG_WITH(libiconv-lib,
251         [AC_HELP_STRING([--with-libiconv-lib=DIR],
252                         [Use libiconv library in DIR])],
253         [libiconv_lib=$withval],
254         [libiconv_lib=auto])
255
256 # if no libiconv,libiconv-includes,libiconv-lib are specified,
257 # libc's iconv has a priority.
258 if test "$libiconv_includes" != "auto" -a -r ${libiconv_includes}/iconv.h; then
259         libiconv_cflags="-I${libiconv_includes}"
260 elif test "$libiconv_prefix" != "auto" -a -r ${libiconv_prefix}/include/iconv.h; then
261         libiconv_cflags="-I${libiconv_prefix}/include"
262 else
263         libiconv_cflags=""
264 fi
265 libiconv_libs=""
266 if test "x$libiconv_cflags" != "x"; then
267         if test "$libiconv_lib" != "auto" -a -d ${libiconv_lib}; then
268                 libiconv_libs="-L${libiconv_lib} -liconv"
269         elif test "$libiconv_prefix" != "auto" -a -d ${libiconv_prefix}/lib; then
270                 libiconv_libs="-L${libiconv_prefix}/lib -liconv"
271         else
272                 libiconv_libs="-liconv"
273         fi
274 fi
275
276 use_iconv=0
277 if test "x$enable_iconv" != "xno"; then
278         AC_MSG_CHECKING([for a usable iconv])
279         if test "x$libiconv_cflags" != "x" -o "x$libiconv_libs" != "x"; then
280                 iconvsaved_CFLAGS="$CFLAGS"
281                 iconvsaved_LIBS="$LIBS"
282                 CFLAGS="$CFLAGS $libiconv_cflags"
283                 LIBS="$LIBS $libiconv_libs"
284
285                 AC_TRY_LINK([#include <iconv.h>],
286                         [iconv_open ("from", "to");],
287                         [iconv_type="libiconv"
288                          use_iconv=1
289                          ICONV_CFLAGS="$libiconv_cflags"
290                          ICONV_LIBS="$libiconv_libs"
291                          ],
292                         [use_iconv=0])
293
294                 CFLAGS="$iconvsaved_CFLAGS"
295                 LIBS="$iconvsaved_LIBS"
296         fi
297         if test "x$use_iconv" = "x0"; then
298                 AC_TRY_LINK([#include <iconv.h>],
299                         [iconv_open ("from", "to");],
300                         [iconv_type="libc"
301                          use_iconv=1],
302                         [iconv_type="not found"
303                          use_iconv=0])
304         fi
305
306         AC_MSG_RESULT([$iconv_type])
307         AC_SUBST(ICONV_CFLAGS)
308         AC_SUBST(ICONV_LIBS)
309 fi
310 AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
311 #
312 # Checks for FreeType
313 #
314 PKG_CHECK_MODULES(FREETYPE, freetype2)
315 PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES freetype2"
316
317 AC_SUBST(FREETYPE_LIBS)
318 AC_SUBST(FREETYPE_CFLAGS)
319
320 fontconfig_save_libs="$LIBS"
321 fontconfig_save_cflags="$CFLAGS"
322 LIBS="$LIBS $FREETYPE_LIBS"
323 CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
324 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)
325 AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem,
326                 HAVE_FT_BITMAP_SIZE_Y_PPEM=1,
327                 HAVE_FT_BITMAP_SIZE_Y_PPEM=0,
328 [#include <ft2build.h>
329 #include FT_FREETYPE_H])
330 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,$HAVE_FT_BITMAP_SIZE_Y_PPEM,
331                    [FT_Bitmap_Size structure includes y_ppem field])
332 CFLAGS="$fontconfig_save_cflags"
333 LIBS="$fontconfig_save_libs"
334
335 #
336 # Check expat configuration
337 #
338 AC_ARG_WITH(expat,
339         [AC_HELP_STRING([--with-expat=DIR],
340                         [Use Expat in DIR])],
341         [expat_prefix=$withval],
342         [expat_prefix=auto])
343 AC_ARG_WITH(expat-includes,
344         [AC_HELP_STRING([--with-expat-includes=DIR],
345                         [Use Expat includes in DIR])],
346         [expat_includes=$withval],
347         [expat_includes=auto])
348 AC_ARG_WITH(expat-lib,
349         [AC_HELP_STRING([--with-expat-lib=DIR])],
350         [expat_lib=$withval],
351         [expat_lib=auto])
352
353 if test "$enable_libxml2" != "yes"; then
354         use_pkgconfig_for_expat=yes
355         if test "$expat_prefix" = "auto" -a "$expat_includes" = "auto" -a "$expat_lib" = "auto"; then
356                 PKG_CHECK_MODULES(EXPAT, expat,,use_pkgconfig_for_expat=no)
357         else
358                 use_pkgconfig_for_expat=no
359         fi
360         if test "x$use_pkgconfig_for_expat" = "xno"; then
361                 if test "$expat_includes" != "auto" -a -r ${expat_includes}/expat.h; then
362                         EXPAT_CFLAGS="-I${expat_includes}"
363                 elif test "$expat_prefix" != "auto" -a -r ${expat_prefix}/include/expat.h; then
364                         EXPAT_CFLAGS="-I${expat_prefix}/include"
365                 else
366                         EXPAT_CFLAGS=""
367                 fi
368                 if test "$expat_lib" != "auto"; then
369                         EXPAT_LIBS="-L${expat_lib} -lexpat"
370                 elif test "$expat_prefix" != "auto"; then
371                         EXPAT_LIBS="-L${expat_prefix}/lib -lexpat"
372                 else
373                         EXPAT_LIBS="-lexpat"
374                 fi
375         else
376                 PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY expat"
377         fi
378
379         expatsaved_CPPFLAGS="$CPPFLAGS"
380         expatsaved_LIBS="$LIBS"
381         CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS"
382         LIBS="$LIBS $EXPAT_LIBS"
383
384         AC_CHECK_HEADER(expat.h)
385         if test "$ac_cv_header_expat_h" = "no"; then
386                 AC_CHECK_HEADER(xmlparse.h)
387                 if test "$ac_cv_header_xmlparse_h" = "yes"; then
388                         HAVE_XMLPARSE_H=1
389                         AC_SUBST(HAVE_XMLPARSE_H)
390                         AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H,
391                                 [Use xmlparse.h instead of expat.h])
392                 else
393                         AC_MSG_ERROR([
394 *** expat is required. or try to use --enable-libxml2])
395                 fi
396         fi
397         AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler)
398         if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then
399                 AC_MSG_ERROR([
400 *** expat is required. or try to use --enable-libxml2])
401         fi
402         CPPFLAGS="$expatsaved_CPPFLAGS"
403         LIBS="$expatsaved_LIBS"
404
405         AC_SUBST(EXPAT_CFLAGS)
406         AC_SUBST(EXPAT_LIBS)
407 fi
408
409 #
410 # Check libxml2 configuration
411 #
412 AC_ARG_ENABLE(libxml2,
413         [AC_HELP_STRING([--enable-libxml2],
414                         [Use libxml2 instead of Expat])])
415
416 if test "$enable_libxml2" = "yes"; then
417     PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6])
418     PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY libxml-2.0"
419     AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat])
420
421     AC_SUBST(LIBXML2_CFLAGS)
422     AC_SUBST(LIBXML2_LIBS)
423
424     fc_saved_CFLAGS="$CFLAGS"
425     CFLAGS="$CFLAGS $LIBXML2_CFLAGS"
426     AC_MSG_CHECKING([SAX1 support in libxml2])
427     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
428         #include <libxml/xmlversion.h>
429         #if !defined(LIBXML_SAX1_ENABLED)
430         #  include "error: No SAX1 support in libxml2"
431         #endif
432         ]])], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([
433 *** SAX1 support in libxml2 is required. enable it or use expat instead.])])
434     CFLAGS="$fc_saved_CFLAGS"
435 fi
436
437 #
438 # Set default font directory
439 #
440
441 AC_ARG_WITH(default-fonts,
442         [AC_HELP_STRING([--with-default-fonts=DIR],
443                         [Use fonts from DIR when config is busted])],
444         default_fonts="$withval", default_fonts=yes)
445
446 case "$default_fonts" in
447 yes)
448         if test "$os_win32" = "yes"; then
449                 FC_DEFAULT_FONTS="WINDOWSFONTDIR"
450                 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "WINDOWSFONTDIR", 
451                                    [Windows font directory])
452         else
453                 FC_DEFAULT_FONTS="/usr/share/fonts"
454                 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "/usr/share/fonts", 
455                                    [System font directory])
456         fi
457         ;;
458 *)
459         FC_DEFAULT_FONTS="$default_fonts"
460         AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$default_fonts",
461                            [System font directory])
462         ;;
463 esac
464
465 AC_SUBST(FC_DEFAULT_FONTS)
466
467 #
468 # Add more fonts if available.  By default, add only the directories
469 # with outline fonts; those with bitmaps can be added as desired in
470 # local.conf or ~/.fonts.conf
471 #
472 AC_ARG_WITH(add-fonts,
473         [AC_HELP_STRING([--with-add-fonts=DIR1,DIR2,...],
474                         [Find additional fonts in DIR1,DIR2,... ])],
475         add_fonts="$withval", add_fonts=yes)
476
477 case "$add_fonts" in
478 yes)
479         FC_ADD_FONTS=""
480         for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do
481                 case x"$FC_ADD_FONTS" in
482                 x)
483                         sub="$dir/fonts"
484                         if test -d "$sub"; then
485                                 case x$FC_ADD_FONTS in
486                                 x)
487                                         FC_ADD_FONTS="$sub"
488                                         ;;
489                                 *)
490                                         FC_ADD_FONTS="$FC_ADD_FONTS,$sub"
491                                         ;;
492                                 esac
493                         fi
494                         ;;
495                 esac
496         done
497         AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
498         ;;
499 no)
500         FC_ADD_FONTS=""
501         ;;
502 *)
503         FC_ADD_FONTS="$add_fonts"
504         AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
505         ;;
506 esac
507
508 AC_SUBST(FC_ADD_FONTS)
509
510 FC_FONTPATH=""
511
512 case "$FC_ADD_FONTS" in
513 "")
514         ;;
515 *)
516         FC_FONTPATH=`echo $FC_ADD_FONTS | 
517                         sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'`
518         ;;
519 esac
520
521 AC_SUBST(FC_FONTPATH)
522
523 #
524 # Set default cache directory path
525 #
526 AC_ARG_WITH(cache-dir,
527         [AC_HELP_STRING([--with-cache-dir=DIR],
528                         [Use DIR to store cache files [default=LOCALSTATEDIR/cache/fontconfig]])],
529         fc_cachedir="$withval", fc_cachedir=yes)
530
531 case $fc_cachedir in
532 no|yes)
533         if test "$os_win32" = "yes"; then
534                 fc_cachedir="WINDOWSTEMPDIR_FONTCONFIG_CACHE"
535         else
536                 fc_cachedir='${localstatedir}/cache/${PACKAGE}'
537         fi
538         ;;
539 *)
540         ;;
541 esac
542 AC_SUBST(fc_cachedir)
543 FC_CACHEDIR=${fc_cachedir}
544 AC_SUBST(FC_CACHEDIR)
545
546 FC_FONTDATE=`LC_ALL=C date`
547
548 AC_SUBST(FC_FONTDATE)
549
550 #
551 # Set configuration paths
552 #
553
554 AC_ARG_WITH(templatedir,
555         [AC_HELP_STRING([--with-templatedir=DIR],
556                         [Use DIR to store the configuration template files [default=DATADIR/fontconfig/conf.avail]])],
557         [templatedir="$withval"],
558         [templatedir=yes])
559 AC_ARG_WITH(baseconfigdir,
560         [AC_HELP_STRING([--with-baseconfigdir=DIR],
561                         [Use DIR to store the base configuration files [default=SYSCONFDIR/fonts]])],
562         [baseconfigdir="$withval"],
563         [baseconfigdir=yes])
564 AC_ARG_WITH(configdir,
565         [AC_HELP_STRING([--with-configdir=DIR],
566                         [Use DIR to store active configuration files [default=BASECONFIGDIR/conf.d]])],
567         [configdir="$withval"],
568         [configdir=yes])
569 AC_ARG_WITH(xmldir,
570         [AC_HELP_STRING([--with-xmldir=DIR],
571                         [Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])],
572         [xmldir="$withval"],
573         [xmldir=yes])
574
575 case "$templatedir" in
576 no|yes)
577         templatedir='${datadir}'/fontconfig/conf.avail
578         ;;
579 *)
580         ;;
581 esac
582 case "$baseconfigdir" in
583 no|yes)
584         baseconfigdir='${sysconfdir}'/fonts
585         ;;
586 *)
587         ;;
588 esac
589 case "$configdir" in
590 no|yes)
591         configdir='${BASECONFIGDIR}'/conf.d
592         ;;
593 *)
594         ;;
595 esac
596 case "$xmldir" in
597 no|yes)
598         xmldir='${datadir}'/xml/fontconfig
599         ;;
600 *)
601         ;;
602 esac
603
604 TEMPLATEDIR=${templatedir}
605 BASECONFIGDIR=${baseconfigdir}
606 CONFIGDIR=${configdir}
607 XMLDIR=${xmldir}
608 AC_SUBST(TEMPLATEDIR)
609 AC_SUBST(BASECONFIGDIR)
610 AC_SUBST(CONFIGDIR)
611 AC_SUBST(XMLDIR)
612
613
614 dnl ===========================================================================
615
616 #
617 # Thread-safety primitives
618 #
619
620 AC_CACHE_CHECK([for Intel atomic primitives], fc_cv_have_intel_atomic_primitives, [
621         fc_cv_have_intel_atomic_primitives=false
622         AC_TRY_LINK([
623                 void memory_barrier (void) { __sync_synchronize (); }
624                 int atomic_add (int *i) { return __sync_fetch_and_add (i, 1); }
625                 int mutex_trylock (int *m) { return __sync_lock_test_and_set (m, 1); }
626                 void mutex_unlock (int *m) { __sync_lock_release (m); }
627                 ], [], fc_cv_have_intel_atomic_primitives=true
628         )
629 ])
630 if $fc_cv_have_intel_atomic_primitives; then
631         AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives])
632 fi
633
634 AC_CACHE_CHECK([for Solaris atomic operations], fc_cv_have_solaris_atomic_ops, [
635         fc_cv_have_solaris_atomic_ops=false
636         AC_TRY_LINK([
637                 #include <atomic.h>
638                 /* This requires Solaris Studio 12.2 or newer: */
639                 #include <mbarrier.h>
640                 void memory_barrier (void) { __machine_rw_barrier (); }
641                 int atomic_add (volatile unsigned *i) { return atomic_add_int_nv (i, 1); }
642                 void *atomic_ptr_cmpxchg (volatile void **target, void *cmp, void *newval) { return atomic_cas_ptr (target, cmp, newval); }
643                 ], [], fc_cv_have_solaris_atomic_ops=true
644         )
645 ])
646 if $fc_cv_have_solaris_atomic_ops; then
647         AC_DEFINE(HAVE_SOLARIS_ATOMIC_OPS, 1, [Have Solaris __machine_*_barrier and atomic_* operations])
648 fi
649
650 if test "$os_win32" = no && ! $have_pthread; then
651         AC_CHECK_HEADERS(sched.h)
652         AC_SEARCH_LIBS(sched_yield,rt,AC_DEFINE(HAVE_SCHED_YIELD, 1, [Have sched_yield]))
653 fi
654
655 have_pthread=false
656 if test "$os_win32" = no; then
657         AX_PTHREAD([have_pthread=true])
658 fi
659 if $have_pthread; then
660         LIBS="$PTHREAD_LIBS $LIBS"
661         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
662         CC="$PTHREAD_CC"
663         AC_DEFINE(HAVE_PTHREAD, 1, [Have POSIX threads])
664 fi
665 AM_CONDITIONAL(HAVE_PTHREAD, $have_pthread)
666
667
668 dnl ===========================================================================
669
670 #
671 # Let people not build/install docs if they don't have docbook
672 #
673
674 AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
675
676 AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes)
677
678 default_docs="yes"
679 #
680 # Check if docs exist or can be created
681 #
682 if test x$HASDOCBOOK = xno; then
683         if test -f $srcdir/doc/fonts-conf.5; then
684                 :
685         else
686                 default_docs="no"
687         fi
688 fi
689
690 AC_ARG_ENABLE(docs,
691         [AC_HELP_STRING([--disable-docs],
692                         [Don't build and install documentation])],
693         ,
694         enable_docs=$default_docs)
695
696 AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes)
697
698 if test "x$enable_docs" = xyes; then
699         tmp=funcs.$$
700         cat $srcdir/doc/*.fncs | awk '
701         /^@TITLE@/      { if (!done) { printf ("%s\n", $2); done = 1; } }
702         /^@FUNC@/       { if (!done) { printf ("%s\n", $2); done = 1; } }
703         /^@@/           { done = 0; }' > $tmp
704         DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'`
705         echo DOCMAN3 $DOCMAN3
706         rm -f $tmp
707 else
708         DOCMAN3=""
709 fi
710 AC_SUBST(DOCMAN3)
711
712
713 dnl Figure out what cache format suffix to use for this architecture
714 AC_C_BIGENDIAN
715 AC_CHECK_SIZEOF([void *])
716 AC_CHECK_ALIGNOF([double])
717
718 dnl include the header file for workaround of miscalculating size on autoconf
719 dnl particularly for fat binaries
720 AH_BOTTOM([#include "config-fixups.h"])
721
722 dnl
723 dnl
724 AC_SUBST(PKGCONFIG_REQUIRES)
725 AC_SUBST(PKGCONFIG_REQUIRES_PRIVATELY)
726
727 dnl
728 AC_CONFIG_FILES([
729 Makefile
730 fontconfig/Makefile
731 fc-lang/Makefile
732 fc-glyphname/Makefile
733 fc-case/Makefile
734 src/Makefile
735 conf.d/Makefile
736 fc-cache/Makefile
737 fc-cat/Makefile
738 fc-list/Makefile
739 fc-match/Makefile
740 fc-pattern/Makefile
741 fc-query/Makefile
742 fc-scan/Makefile
743 fc-validate/Makefile
744 doc/Makefile
745 doc/version.sgml
746 test/Makefile
747 fontconfig.spec
748 fontconfig.pc
749 fontconfig-zip
750 ])
751 AC_OUTPUT