configure.ac revision eceda581
1dnl 2dnl fontconfig/configure.in 3dnl 4dnl Copyright © 2003 Keith Packard 5dnl 6dnl Permission to use, copy, modify, distribute, and sell this software and its 7dnl documentation for any purpose is hereby granted without fee, provided that 8dnl the above copyright notice appear in all copies and that both that 9dnl copyright notice and this permission notice appear in supporting 10dnl documentation, and that the name of the author(s) not be used in 11dnl advertising or publicity pertaining to distribution of the software without 12dnl specific, written prior permission. The authors make no 13dnl representations about the suitability of this software for any purpose. It 14dnl is provided "as is" without express or implied warranty. 15dnl 16dnl THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 17dnl INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 18dnl EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR 19dnl CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 20dnl DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 21dnl TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 22dnl PERFORMANCE OF THIS SOFTWARE. 23dnl 24dnl Process this file with autoconf to create configure. 25 26AC_PREREQ(2.61) 27 28dnl ========================================================================== 29dnl Versioning 30dnl ========================================================================== 31 32dnl This is the package version number, not the shared library 33dnl version. This same version number must appear in fontconfig/fontconfig.h 34dnl Yes, it is a pain to synchronize version numbers. Unfortunately, it's 35dnl not possible to extract the version number here from fontconfig.h 36AC_INIT([fontconfig], [2.14.1], [https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/new]) 37AM_INIT_AUTOMAKE([1.11 parallel-tests dist-xz]) 38m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) 39 40dnl ========================================================================== 41 42AC_CONFIG_HEADERS(config.h) 43AC_CONFIG_MACRO_DIR([m4]) 44 45AC_PROG_CC 46AC_USE_SYSTEM_EXTENSIONS 47AC_SYS_LARGEFILE 48AC_PROG_INSTALL 49AC_PROG_LN_S 50AC_PROG_MAKE_SET 51PKG_PROG_PKG_CONFIG 52m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], AC_SUBST([pkgconfigdir], ${libdir}/pkgconfig)) 53 54AM_MISSING_PROG([GIT], [git]) 55AM_MISSING_PROG([GPERF], [gperf]) 56AM_PATH_PYTHON([3]) 57 58AC_MSG_CHECKING([for RM macro]) 59_predefined_rm=`make -p -f /dev/null 2>/dev/null|grep '^RM ='|sed -e 's/^RM = //'` 60if test "x$_predefined_rm" = "x"; then 61 AC_MSG_RESULT([no predefined RM]) 62 AC_CHECK_PROG(RM, rm, [rm -f]) 63else 64 AC_MSG_RESULT($_predefined_rm) 65fi 66 67dnl Initialize libtool 68LT_PREREQ([2.2]) 69LT_INIT([disable-static win32-dll]) 70 71dnl libtool versioning 72 73dnl bump revision when fixing bugs 74dnl bump current and age, reset revision to zero when adding APIs 75dnl bump current, leave age, reset revision to zero when changing/removing APIS 76LIBT_CURRENT=13 77LIBT_REVISION=0 78AC_SUBST(LIBT_CURRENT) 79AC_SUBST(LIBT_REVISION) 80LIBT_AGE=12 81 82LIBT_VERSION_INFO="$LIBT_CURRENT:$LIBT_REVISION:$LIBT_AGE" 83AC_SUBST(LIBT_VERSION_INFO) 84 85LIBT_CURRENT_MINUS_AGE=`expr $LIBT_CURRENT - $LIBT_AGE` 86AC_SUBST(LIBT_CURRENT_MINUS_AGE) 87 88PKGCONFIG_REQUIRES= 89PKGCONFIG_REQUIRES_PRIVATELY= 90 91dnl ========================================================================== 92AC_CANONICAL_HOST 93os_win32=no 94os_darwin=no 95case "${host_os}" in 96 cygwin*|mingw*) 97 os_win32=yes 98 ;; 99 darwin*) 100 os_darwin=yes 101 ;; 102esac 103AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes") 104AM_CONDITIONAL(OS_DARWIN, test "$os_darwin" = "yes") 105 106dnl ========================================================================== 107dnl gettext stuff 108dnl ========================================================================== 109GETTEXT_PACKAGE=$PACKAGE 110AC_SUBST(GETTEXT_PACKAGE) 111AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Gettext package]) 112 113AM_GNU_GETTEXT_VERSION([0.19.7]) 114AM_GNU_GETTEXT([external]) 115 116dnl ========================================================================== 117 118if test "$os_win32" = "yes"; then 119 AC_CHECK_PROG(ms_librarian, lib.exe, yes, no) 120fi 121AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes) 122 123AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"]) 124WARN_CFLAGS="" 125WARNING_CPP_DIRECTIVE="no" 126if test "x$GCC" = "xyes"; then 127 WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \ 128 -Wmissing-prototypes -Wmissing-declarations \ 129 -Wnested-externs -fno-strict-aliasing" 130 WARNING_CPP_DIRECTIVE="yes" 131elif test "x$SUNCC" = "xyes"; then 132 WARN_CFLAGS="-v -fd" 133 WARNING_CPP_DIRECTIVE="yes" 134fi 135if test "x$WARNING_CPP_DIRECTIVE" = "xyes"; then 136 AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1, 137 [Can use #warning in C files]) 138fi 139AC_SUBST(WARN_CFLAGS) 140 141 142dnl ========================================================================== 143 144AX_CC_FOR_BUILD() 145AC_ARG_VAR(CC_FOR_BUILD, [build system C compiler]) 146AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes) 147AM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = "yes") 148 149dnl ========================================================================== 150 151AC_ARG_WITH(arch, 152 [AC_HELP_STRING([--with-arch=ARCH], 153 [Force architecture to ARCH])], 154 arch="$withval", arch=auto) 155 156if test "x$arch" != xauto; then 157 AC_DEFINE_UNQUOTED([FC_ARCHITECTURE], "$arch", [Architecture prefix to use for cache file names]) 158fi 159 160 161dnl ========================================================================== 162 163# Checks for header files. 164AC_HEADER_DIRENT 165AC_HEADER_STDC 166AC_CHECK_HEADERS([dirent.h fcntl.h stdlib.h string.h unistd.h sys/statvfs.h sys/vfs.h sys/statfs.h sys/param.h sys/mount.h]) 167AX_CREATE_STDINT_H([src/fcstdint.h]) 168 169# Checks for typedefs, structures, and compiler characteristics. 170AC_C_CONST 171AC_C_INLINE 172AC_C_FLEXIBLE_ARRAY_MEMBER 173AC_TYPE_PID_T 174 175# Checks for library functions. 176AC_FUNC_VPRINTF 177AC_FUNC_MMAP 178AC_CHECK_FUNCS([link mkstemp mkostemp _mktemp_s mkdtemp getopt getopt_long getprogname getexecname rand random lrand48 random_r rand_r readlink fstatvfs fstatfs lstat strerror strerror_r]) 179 180dnl AC_CHECK_FUNCS doesn't check for header files. 181dnl posix_fadvise() may be not available in older libc. 182AC_CHECK_SYMBOL([posix_fadvise], [fcntl.h], [fc_func_posix_fadvise=1], [fc_func_posix_fadvise=0]) 183AC_DEFINE_UNQUOTED([HAVE_POSIX_FADVISE], [$fc_func_posix_fadvise], [Define to 1 if you have the 'posix_fadvise' function.]) 184 185# 186AC_CHECK_MEMBERS([struct stat.st_mtim],,, [#include <sys/stat.h>]) 187 188# 189if test "x$ac_cv_func_fstatvfs" = "xyes"; then 190 AC_CHECK_MEMBERS([struct statvfs.f_basetype, struct statvfs.f_fstypename],,, 191 [#include <sys/statvfs.h>]) 192fi 193if test "x$ac_cv_func_fstatfs" = "xyes"; then 194 AC_CHECK_MEMBERS([struct statfs.f_flags, struct statfs.f_fstypename],,, [ 195#ifdef HAVE_SYS_VFS_H 196#include <sys/vfs.h> 197#endif 198#ifdef HAVE_SYS_STATFS_H 199#include <sys/statfs.h> 200#endif 201#ifdef HAVE_SYS_PARAM_H 202#include <sys/param.h> 203#endif 204#ifdef HAVE_SYS_MOUNT_H 205#include <sys/mount.h> 206#endif]) 207fi 208AC_CHECK_MEMBERS([struct dirent.d_type],,, 209 [#include <dirent.h>]) 210 211# Check the argument type of the gperf hash/lookup function 212AC_MSG_CHECKING([The type of len parameter of gperf hash/lookup function]) 213fc_gperf_test="$(echo 'foo' | gperf -L ANSI-C)" 214AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 215 #include <string.h> 216 217 const char *in_word_set(register const char *, register size_t); 218 $fc_gperf_test 219 ]])], [FC_GPERF_SIZE_T=size_t], 220 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 221 #include <string.h> 222 223 const char *in_word_set(register const char *, register unsigned int); 224 $fc_gperf_test 225 ]])], [FC_GPERF_SIZE_T="unsigned int"], 226 [AC_MSG_ERROR([Unable to determine the type of the len parameter of the gperf hash/lookup function])] 227)]) 228AC_DEFINE_UNQUOTED(FC_GPERF_SIZE_T, $FC_GPERF_SIZE_T, [The type of len parameter of the gperf hash/lookup function]) 229AC_MSG_RESULT($FC_GPERF_SIZE_T) 230 231# 232# Checks for iconv 233# 234AC_ARG_ENABLE(iconv, 235 [AC_HELP_STRING([--enable-iconv], 236 [Use iconv to support non-Unicode SFNT name])], 237 ,enable_iconv=no) 238AC_ARG_WITH(libiconv, 239 [AC_HELP_STRING([--with-libiconv=DIR], 240 [Use libiconv in DIR])], 241 [if test "x$withval" = "xyes"; then 242 libiconv_prefix=$prefix 243 else 244 libiconv_prefix=$withval 245 fi], 246 [libiconv_prefix=auto]) 247AC_ARG_WITH(libiconv-includes, 248 [AC_HELP_STRING([--with-libiconv-includes=DIR], 249 [Use libiconv includes in DIR])], 250 [libiconv_includes=$withval], 251 [libiconv_includes=auto]) 252AC_ARG_WITH(libiconv-lib, 253 [AC_HELP_STRING([--with-libiconv-lib=DIR], 254 [Use libiconv library in DIR])], 255 [libiconv_lib=$withval], 256 [libiconv_lib=auto]) 257 258# if no libiconv,libiconv-includes,libiconv-lib are specified, 259# libc's iconv has a priority. 260if test "$libiconv_includes" != "auto" -a -r ${libiconv_includes}/iconv.h; then 261 libiconv_cflags="-I${libiconv_includes}" 262elif test "$libiconv_prefix" != "auto" -a -r ${libiconv_prefix}/include/iconv.h; then 263 libiconv_cflags="-I${libiconv_prefix}/include" 264else 265 libiconv_cflags="" 266fi 267libiconv_libs="" 268if test "x$libiconv_cflags" != "x"; then 269 if test "$libiconv_lib" != "auto" -a -d ${libiconv_lib}; then 270 libiconv_libs="-L${libiconv_lib} -liconv" 271 elif test "$libiconv_prefix" != "auto" -a -d ${libiconv_prefix}/lib; then 272 libiconv_libs="-L${libiconv_prefix}/lib -liconv" 273 else 274 libiconv_libs="-liconv" 275 fi 276fi 277 278use_iconv=0 279if test "x$enable_iconv" != "xno"; then 280 AC_MSG_CHECKING([for a usable iconv]) 281 if test "x$libiconv_cflags" != "x" -o "x$libiconv_libs" != "x"; then 282 iconvsaved_CFLAGS="$CFLAGS" 283 iconvsaved_LIBS="$LIBS" 284 CFLAGS="$CFLAGS $libiconv_cflags" 285 LIBS="$LIBS $libiconv_libs" 286 287 AC_TRY_LINK([#include <iconv.h>], 288 [iconv_open ("from", "to");], 289 [iconv_type="libiconv" 290 use_iconv=1 291 ICONV_CFLAGS="$libiconv_cflags" 292 ICONV_LIBS="$libiconv_libs" 293 ], 294 [use_iconv=0]) 295 296 CFLAGS="$iconvsaved_CFLAGS" 297 LIBS="$iconvsaved_LIBS" 298 fi 299 if test "x$use_iconv" = "x0"; then 300 AC_TRY_LINK([#include <iconv.h>], 301 [iconv_open ("from", "to");], 302 [iconv_type="libc" 303 use_iconv=1], 304 [iconv_type="not found" 305 use_iconv=0]) 306 fi 307 308 AC_MSG_RESULT([$iconv_type]) 309 AC_SUBST(ICONV_CFLAGS) 310 AC_SUBST(ICONV_LIBS) 311fi 312AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.]) 313# 314# Checks for FreeType 315# 316dnl See http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/VERSIONS.TXT for versioning in freetype 317PKG_CHECK_MODULES(FREETYPE, freetype2 >= 21.0.15) 318PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES freetype2 >= 21.0.15" 319 320AC_SUBST(FREETYPE_LIBS) 321AC_SUBST(FREETYPE_CFLAGS) 322 323fontconfig_save_libs="$LIBS" 324fontconfig_save_cflags="$CFLAGS" 325LIBS="$LIBS $FREETYPE_LIBS" 326CFLAGS="$CFLAGS $FREETYPE_CFLAGS" 327AC_CHECK_FUNCS(FT_Get_BDF_Property FT_Get_PS_Font_Info FT_Has_PS_Glyph_Names FT_Get_X11_Font_Format FT_Done_MM_Var) 328 329AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 330 #include <ft2build.h> 331 #include FT_CONFIG_OPTIONS_H 332 #ifndef PCF_CONFIG_OPTION_LONG_FAMILY_NAMES 333 # error "No pcf long family names support" 334 #endif 335 ]])], [have_pcf_long_family_names=yes], [have_pcf_long_family_names=no]) 336AM_CONDITIONAL(FREETYPE_PCF_LONG_FAMILY_NAMES, test "x$have_pcf_long_family_names" = xyes) 337 338LIBS="$fontconfig_save_libs" 339CFLAGS="$fontconfig_save_cflags" 340 341# 342# Check expat configuration 343# 344AC_ARG_WITH(expat, 345 [AC_HELP_STRING([--with-expat=DIR], 346 [Use Expat in DIR])], 347 [expat_prefix=$withval], 348 [expat_prefix=auto]) 349AC_ARG_WITH(expat-includes, 350 [AC_HELP_STRING([--with-expat-includes=DIR], 351 [Use Expat includes in DIR])], 352 [expat_includes=$withval], 353 [expat_includes=auto]) 354AC_ARG_WITH(expat-lib, 355 [AC_HELP_STRING([--with-expat-lib=DIR])], 356 [expat_lib=$withval], 357 [expat_lib=auto]) 358 359if test "$enable_libxml2" != "yes"; then 360 use_pkgconfig_for_expat=yes 361 if test "$expat_prefix" = "auto" -a "$expat_includes" = "auto" -a "$expat_lib" = "auto"; then 362 PKG_CHECK_MODULES(EXPAT, expat,,use_pkgconfig_for_expat=no) 363 else 364 use_pkgconfig_for_expat=no 365 fi 366 if test "x$use_pkgconfig_for_expat" = "xno"; then 367 if test "$expat_includes" != "auto" -a -r ${expat_includes}/expat.h; then 368 EXPAT_CFLAGS="-I${expat_includes}" 369 elif test "$expat_prefix" != "auto" -a -r ${expat_prefix}/include/expat.h; then 370 EXPAT_CFLAGS="-I${expat_prefix}/include" 371 else 372 EXPAT_CFLAGS="" 373 fi 374 if test "$expat_lib" != "auto"; then 375 EXPAT_LIBS="-L${expat_lib} -lexpat" 376 elif test "$expat_prefix" != "auto"; then 377 EXPAT_LIBS="-L${expat_prefix}/lib -lexpat" 378 else 379 EXPAT_LIBS="-lexpat" 380 fi 381 PKG_EXPAT_CFLAGS=$EXPAT_CFLAGS 382 PKG_EXPAT_LIBS=$EXPAT_LIBS 383 else 384 PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY expat" 385 PKG_EXPAT_CFLAGS= 386 PKG_EXPAT_LIBS= 387 fi 388 389 expatsaved_CPPFLAGS="$CPPFLAGS" 390 expatsaved_LIBS="$LIBS" 391 CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS" 392 LIBS="$LIBS $EXPAT_LIBS" 393 394 AC_CHECK_HEADER(expat.h) 395 if test "$ac_cv_header_expat_h" = "no"; then 396 AC_CHECK_HEADER(xmlparse.h) 397 if test "$ac_cv_header_xmlparse_h" = "yes"; then 398 HAVE_XMLPARSE_H=1 399 AC_SUBST(HAVE_XMLPARSE_H) 400 AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H, 401 [Use xmlparse.h instead of expat.h]) 402 else 403 AC_MSG_ERROR([ 404*** expat is required. or try to use --enable-libxml2]) 405 fi 406 fi 407 AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler) 408 if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then 409 AC_MSG_ERROR([ 410*** expat is required. or try to use --enable-libxml2]) 411 fi 412 CPPFLAGS="$expatsaved_CPPFLAGS" 413 LIBS="$expatsaved_LIBS" 414 415 AC_SUBST(EXPAT_CFLAGS) 416 AC_SUBST(EXPAT_LIBS) 417 AC_SUBST(PKG_EXPAT_CFLAGS) 418 AC_SUBST(PKG_EXPAT_LIBS) 419fi 420 421# 422# Check libxml2 configuration 423# 424AC_ARG_ENABLE(libxml2, 425 [AC_HELP_STRING([--enable-libxml2], 426 [Use libxml2 instead of Expat])]) 427 428if test "$enable_libxml2" = "yes"; then 429 PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6]) 430 PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY libxml-2.0 >= 2.6" 431 AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat]) 432 433 AC_SUBST(LIBXML2_CFLAGS) 434 AC_SUBST(LIBXML2_LIBS) 435 436 fc_saved_CFLAGS="$CFLAGS" 437 CFLAGS="$CFLAGS $LIBXML2_CFLAGS" 438 AC_MSG_CHECKING([SAX1 support in libxml2]) 439 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 440 #include <libxml/xmlversion.h> 441 #if !defined(LIBXML_SAX1_ENABLED) 442 # include "error: No SAX1 support in libxml2" 443 #endif 444 ]])], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([ 445*** SAX1 support in libxml2 is required. enable it or use expat instead.])]) 446 CFLAGS="$fc_saved_CFLAGS" 447fi 448 449# 450# Check json-c 451# 452PKG_CHECK_MODULES([JSONC], [json-c], [use_jsonc=yes], [use_jsonc=no]) 453 454AM_CONDITIONAL(ENABLE_JSONC, test "x$use_jsonc" = "xyes") 455AC_SUBST(JSONC_CFLAGS) 456AC_SUBST(JSONC_LIBS) 457 458# 459# Set default hinting 460# 461 462AC_ARG_WITH(default-hinting, 463 [AC_HELP_STRING([--with-default-hinting=NAME], 464 [Enable your preferred hinting configuration (none/slight/medium/full) [default=slight]])], 465 preferred_hinting="$withval", preferred_hinting=slight) 466 467case "$preferred_hinting" in 468none|slight|medium|full) 469 PREFERRED_HINTING="$preferred_hinting" 470 AC_SUBST(PREFERRED_HINTING) 471 ;; 472*) 473 AC_MSG_ERROR([Invalid hinting. please choose one of none, slight, medium, or full]) 474 ;; 475esac 476 477# 478# Set default font directory 479# 480 481AC_ARG_WITH(default-fonts, 482 [AC_HELP_STRING([--with-default-fonts=DIR1,DIR2,...], 483 [Use fonts from DIR1,DIR2,... when config is busted])], 484 default_fonts="$withval", default_fonts=yes) 485 486case "$default_fonts" in 487yes) 488 if test "$os_win32" = "yes"; then 489 default_fonts="WINDOWSFONTDIR,WINDOWSUSERFONTDIR" 490 elif test "$os_darwin" = "yes"; then 491 default_fonts="/System/Library/Fonts,/Library/Fonts,~/Library/Fonts,/System/Library/Assets/com_apple_MobileAsset_Font3,/System/Library/Assets/com_apple_MobileAsset_Font4" 492 else 493 default_fonts="/usr/share/fonts" 494 fi 495 ;; 496esac 497 498FC_DEFAULT_FONTS="" 499if test x${default_fonts+set} = xset; then 500 fc_IFS=$IFS 501 IFS="," 502 for p in $default_fonts; do 503 if test x"$FC_DEFAULT_FONTS" != x; then 504 FC_DEFAULT_FONTS="$FC_DEFAULT_FONTS " 505 fi 506 FC_DEFAULT_FONTS="$FC_DEFAULT_FONTS<dir>$p</dir>" 507 done 508 IFS=$fc_IFS 509fi 510 511AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$FC_DEFAULT_FONTS", 512 [System font directory]) 513 514AC_SUBST(FC_DEFAULT_FONTS) 515 516# 517# Add more fonts if available. By default, add only the directories 518# with outline fonts; those with bitmaps can be added as desired in 519# local.conf or ~/.fonts.conf 520# 521AC_ARG_WITH(add-fonts, 522 [AC_HELP_STRING([--with-add-fonts=DIR1,DIR2,...], 523 [Find additional fonts in DIR1,DIR2,... ])], 524 add_fonts="$withval", add_fonts=yes) 525 526case "$add_fonts" in 527yes) 528 FC_ADD_FONTS="" 529 for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do 530 case x"$FC_ADD_FONTS" in 531 x) 532 sub="$dir/fonts" 533 if test -d "$sub"; then 534 case x$FC_ADD_FONTS in 535 x) 536 FC_ADD_FONTS="$sub" 537 ;; 538 *) 539 FC_ADD_FONTS="$FC_ADD_FONTS,$sub" 540 ;; 541 esac 542 fi 543 ;; 544 esac 545 done 546 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories]) 547 ;; 548no) 549 FC_ADD_FONTS="" 550 ;; 551*) 552 FC_ADD_FONTS="$add_fonts" 553 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories]) 554 ;; 555esac 556 557AC_SUBST(FC_ADD_FONTS) 558 559FC_FONTPATH="" 560 561case "$FC_ADD_FONTS" in 562"") 563 ;; 564*) 565 FC_FONTPATH=`echo $FC_ADD_FONTS | 566 sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'` 567 ;; 568esac 569 570AC_SUBST(FC_FONTPATH) 571 572# 573# Set default cache directory path 574# 575AC_ARG_WITH(cache-dir, 576 [AC_HELP_STRING([--with-cache-dir=DIR], 577 [Use DIR to store cache files [default=LOCALSTATEDIR/cache/fontconfig]])], 578 fc_cachedir="$withval", fc_cachedir=yes) 579 580case $fc_cachedir in 581no|yes) 582 if test "$os_win32" = "yes"; then 583 fc_cachedir="LOCAL_APPDATA_FONTCONFIG_CACHE" 584 else 585 fc_cachedir='${localstatedir}/cache/${PACKAGE}' 586 fi 587 ;; 588*) 589 ;; 590esac 591AC_SUBST(fc_cachedir) 592FC_CACHEDIR=${fc_cachedir} 593AC_SUBST(FC_CACHEDIR) 594 595FC_FONTDATE=`LC_ALL=C date` 596 597AC_SUBST(FC_FONTDATE) 598 599# 600# Set configuration paths 601# 602 603AC_ARG_WITH(templatedir, 604 [AC_HELP_STRING([--with-templatedir=DIR], 605 [Use DIR to store the configuration template files [default=DATADIR/fontconfig/conf.avail]])], 606 [templatedir="$withval"], 607 [templatedir=yes]) 608AC_ARG_WITH(baseconfigdir, 609 [AC_HELP_STRING([--with-baseconfigdir=DIR], 610 [Use DIR to store the base configuration files [default=SYSCONFDIR/fonts]])], 611 [baseconfigdir="$withval"], 612 [baseconfigdir=yes]) 613AC_ARG_WITH(configdir, 614 [AC_HELP_STRING([--with-configdir=DIR], 615 [Use DIR to store active configuration files [default=BASECONFIGDIR/conf.d]])], 616 [configdir="$withval"], 617 [configdir=yes]) 618AC_ARG_WITH(xmldir, 619 [AC_HELP_STRING([--with-xmldir=DIR], 620 [Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])], 621 [xmldir="$withval"], 622 [xmldir=yes]) 623 624case "$templatedir" in 625no|yes) 626 templatedir='${datadir}'/fontconfig/conf.avail 627 ;; 628*) 629 ;; 630esac 631case "$baseconfigdir" in 632no|yes) 633 baseconfigdir='${sysconfdir}'/fonts 634 ;; 635*) 636 ;; 637esac 638case "$configdir" in 639no|yes) 640 configdir='${BASECONFIGDIR}'/conf.d 641 ;; 642*) 643 ;; 644esac 645case "$xmldir" in 646no|yes) 647 xmldir='${datadir}'/xml/fontconfig 648 ;; 649*) 650 ;; 651esac 652 653TEMPLATEDIR=${templatedir} 654BASECONFIGDIR=${baseconfigdir} 655CONFIGDIR=${configdir} 656XMLDIR=${xmldir} 657AC_SUBST(TEMPLATEDIR) 658AC_SUBST(BASECONFIGDIR) 659AC_SUBST(CONFIGDIR) 660AC_SUBST(XMLDIR) 661 662 663dnl =========================================================================== 664 665# 666# Thread-safety primitives 667# 668 669AC_CACHE_CHECK([stdatomic.h atomic primitives], fc_cv_have_stdatomic_atomic_primitives, [ 670 fc_cv_have_stdatomic_atomic_primitives=false 671 AC_TRY_LINK([ 672 #include <stdatomic.h> 673 674 void memory_barrier (void) { atomic_thread_fence (memory_order_acq_rel); } 675 int atomic_add (atomic_int *i) { return atomic_fetch_add_explicit (i, 1, memory_order_relaxed); } 676 int mutex_trylock (atomic_flag *m) { return atomic_flag_test_and_set_explicit (m, memory_order_acquire); } 677 void mutex_unlock (atomic_flag *m) { atomic_flag_clear_explicit (m, memory_order_release); } 678 ], [], fc_cv_have_stdatomic_atomic_primitives=true 679 ) 680]) 681if $fc_cv_have_stdatomic_atomic_primitives; then 682 AC_DEFINE(HAVE_STDATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives]) 683fi 684 685AC_CACHE_CHECK([for Intel atomic primitives], fc_cv_have_intel_atomic_primitives, [ 686 fc_cv_have_intel_atomic_primitives=false 687 AC_TRY_LINK([ 688 void memory_barrier (void) { __sync_synchronize (); } 689 int atomic_add (int *i) { return __sync_fetch_and_add (i, 1); } 690 int mutex_trylock (int *m) { return __sync_lock_test_and_set (m, 1); } 691 void mutex_unlock (int *m) { __sync_lock_release (m); } 692 ], [], fc_cv_have_intel_atomic_primitives=true 693 ) 694]) 695if $fc_cv_have_intel_atomic_primitives; then 696 AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives]) 697fi 698 699AC_CACHE_CHECK([for Solaris atomic operations], fc_cv_have_solaris_atomic_ops, [ 700 fc_cv_have_solaris_atomic_ops=false 701 AC_TRY_LINK([ 702 #include <atomic.h> 703 /* This requires Solaris Studio 12.2 or newer: */ 704 #include <mbarrier.h> 705 void memory_barrier (void) { __machine_rw_barrier (); } 706 int atomic_add (volatile unsigned *i) { return atomic_add_int_nv (i, 1); } 707 void *atomic_ptr_cmpxchg (volatile void **target, void *cmp, void *newval) { return atomic_cas_ptr (target, cmp, newval); } 708 ], [], fc_cv_have_solaris_atomic_ops=true 709 ) 710]) 711if $fc_cv_have_solaris_atomic_ops; then 712 AC_DEFINE(HAVE_SOLARIS_ATOMIC_OPS, 1, [Have Solaris __machine_*_barrier and atomic_* operations]) 713fi 714 715if test "$os_win32" = no && ! $have_pthread; then 716 AC_CHECK_HEADERS(sched.h) 717 AC_SEARCH_LIBS(sched_yield,rt,AC_DEFINE(HAVE_SCHED_YIELD, 1, [Have sched_yield])) 718fi 719 720have_pthread=false 721if test "$os_win32" = no; then 722 AX_PTHREAD([have_pthread=true]) 723fi 724if $have_pthread; then 725 LIBS="$PTHREAD_LIBS $LIBS" 726 CFLAGS="$CFLAGS $PTHREAD_CFLAGS" 727 CC="$PTHREAD_CC" 728 AC_DEFINE(HAVE_PTHREAD, 1, [Have POSIX threads]) 729fi 730AM_CONDITIONAL(HAVE_PTHREAD, $have_pthread) 731 732 733dnl =========================================================================== 734 735# 736# Let people not build/install docs if they don't have docbook 737# 738 739AC_ARG_ENABLE(docbook, 740 [AS_HELP_STRING([--disable-docbook], 741 [Disable building docs with docbook2html (default: no)])],,) 742 743if test x$enable_docbook != xno; then 744 AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no) 745fi 746 747AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes) 748 749default_docs="yes" 750# 751# Check if docs exist or can be created 752# 753if test x$HASDOCBOOK = xno; then 754 if test -f $srcdir/doc/fonts-conf.5; then 755 : 756 else 757 default_docs="no" 758 fi 759fi 760 761AC_ARG_ENABLE(docs, 762 [AC_HELP_STRING([--disable-docs], 763 [Don't build and install documentation])], 764 , 765 enable_docs=$default_docs) 766 767AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes) 768 769if test "x$enable_docs" = xyes; then 770 tmp=funcs.$$ 771 cat $srcdir/doc/*.fncs | awk ' 772 /^@TITLE@/ { if (!done) { printf ("%s\n", $2); done = 1; } } 773 /^@FUNC@/ { if (!done) { printf ("%s\n", $2); done = 1; } } 774 /^@@/ { done = 0; }' > $tmp 775 DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'` 776 echo DOCMAN3 $DOCMAN3 777 rm -f $tmp 778else 779 DOCMAN3="" 780fi 781AC_SUBST(DOCMAN3) 782 783dnl =========================================================================== 784default_cache_build="yes" 785if test $cross_compiling = "yes"; then 786 default_cache_build="no" 787fi 788AC_ARG_ENABLE(cache-build, 789 [AC_HELP_STRING([--disable-cache-build], 790 [Don't run fc-cache during the build])], 791 , 792 enable_cache_build=$default_cache_build) 793 794AM_CONDITIONAL(ENABLE_CACHE_BUILD, test "x$enable_cache_build" = xyes) 795 796 797dnl Figure out what cache format suffix to use for this architecture 798AC_C_BIGENDIAN 799AC_CHECK_SIZEOF([void *]) 800AC_CHECK_ALIGNOF([double]) 801AC_CHECK_ALIGNOF([void *]) 802 803dnl include the header file for workaround of miscalculating size on autoconf 804dnl particularly for fat binaries 805AH_BOTTOM([#include "config-fixups.h"]) 806 807dnl 808dnl 809AC_SUBST(PKGCONFIG_REQUIRES) 810AC_SUBST(PKGCONFIG_REQUIRES_PRIVATELY) 811 812dnl 813AC_CONFIG_FILES([ 814Makefile 815fontconfig/Makefile 816fc-lang/Makefile 817fc-case/Makefile 818src/Makefile 819conf.d/Makefile 820fc-cache/Makefile 821fc-cat/Makefile 822fc-conflist/Makefile 823fc-list/Makefile 824fc-match/Makefile 825fc-pattern/Makefile 826fc-query/Makefile 827fc-scan/Makefile 828fc-validate/Makefile 829doc/Makefile 830doc/version.sgml 831its/Makefile 832po/Makefile.in 833po-conf/Makefile.in 834test/Makefile 835fontconfig.pc 836fontconfig-zip 837]) 838AC_OUTPUT 839