configure.ac revision 1cc69409
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.2], [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 sub-pixel rendering 460# 461 462AC_ARG_WITH(default-sub-pixel-rendering, 463 [AC_HELP_STRING([--with-default-sub-pixel-rendering=NAME], 464 [Enable your preferred sub-pixel rendering configuration (none/bgr/rgb/vbgr/vrgb) [default=none]])], 465 preferred_sub_pixel_rendering="$withval", preferred_sub_pixel_rendering=none) 466 467case "$preferred_sub_pixel_rendering" in 468none|bgr|rgb|vbgr|vrgb) 469 PREFERRED_SUB_PIXEL_RENDERING="$preferred_sub_pixel_rendering" 470 AC_SUBST(PREFERRED_SUB_PIXEL_RENDERING) 471 ;; 472*) 473 AC_MSG_ERROR([Invalid sub-pixel rendering. please choose one of none, bgr, rgb, vbgr, or vrgb]) 474 ;; 475esac 476 477# 478# Set default hinting 479# 480 481AC_ARG_WITH(default-hinting, 482 [AC_HELP_STRING([--with-default-hinting=NAME], 483 [Enable your preferred hinting configuration (none/slight/medium/full) [default=slight]])], 484 preferred_hinting="$withval", preferred_hinting=slight) 485 486case "$preferred_hinting" in 487none|slight|medium|full) 488 PREFERRED_HINTING="$preferred_hinting" 489 AC_SUBST(PREFERRED_HINTING) 490 ;; 491*) 492 AC_MSG_ERROR([Invalid hinting. please choose one of none, slight, medium, or full]) 493 ;; 494esac 495 496# 497# Set default font directory 498# 499 500AC_ARG_WITH(default-fonts, 501 [AC_HELP_STRING([--with-default-fonts=DIR1,DIR2,...], 502 [Use fonts from DIR1,DIR2,... when config is busted])], 503 default_fonts="$withval", default_fonts=yes) 504 505case "$default_fonts" in 506yes) 507 if test "$os_win32" = "yes"; then 508 default_fonts="WINDOWSFONTDIR,WINDOWSUSERFONTDIR" 509 elif test "$os_darwin" = "yes"; then 510 default_fonts="/System/Library/Fonts,/Library/Fonts,~/Library/Fonts,/System/Library/Assets/com_apple_MobileAsset_Font3,/System/Library/Assets/com_apple_MobileAsset_Font4" 511 else 512 default_fonts="/usr/share/fonts" 513 fi 514 ;; 515esac 516 517FC_DEFAULT_FONTS="" 518if test x${default_fonts+set} = xset; then 519 fc_IFS=$IFS 520 IFS="," 521 for p in $default_fonts; do 522 if test x"$FC_DEFAULT_FONTS" != x; then 523 FC_DEFAULT_FONTS="$FC_DEFAULT_FONTS " 524 fi 525 FC_DEFAULT_FONTS="$FC_DEFAULT_FONTS<dir>$p</dir>" 526 done 527 IFS=$fc_IFS 528fi 529 530AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$FC_DEFAULT_FONTS", 531 [System font directory]) 532 533AC_SUBST(FC_DEFAULT_FONTS) 534 535# 536# Add more fonts if available. By default, add only the directories 537# with outline fonts; those with bitmaps can be added as desired in 538# local.conf or ~/.fonts.conf 539# 540AC_ARG_WITH(add-fonts, 541 [AC_HELP_STRING([--with-add-fonts=DIR1,DIR2,...], 542 [Find additional fonts in DIR1,DIR2,... ])], 543 add_fonts="$withval", add_fonts=yes) 544 545case "$add_fonts" in 546yes) 547 FC_ADD_FONTS="" 548 for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do 549 case x"$FC_ADD_FONTS" in 550 x) 551 sub="$dir/fonts" 552 if test -d "$sub"; then 553 case x$FC_ADD_FONTS in 554 x) 555 FC_ADD_FONTS="$sub" 556 ;; 557 *) 558 FC_ADD_FONTS="$FC_ADD_FONTS,$sub" 559 ;; 560 esac 561 fi 562 ;; 563 esac 564 done 565 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories]) 566 ;; 567no) 568 FC_ADD_FONTS="" 569 ;; 570*) 571 FC_ADD_FONTS="$add_fonts" 572 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories]) 573 ;; 574esac 575 576AC_SUBST(FC_ADD_FONTS) 577 578FC_FONTPATH="" 579 580case "$FC_ADD_FONTS" in 581"") 582 ;; 583*) 584 FC_FONTPATH=`echo $FC_ADD_FONTS | 585 sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'` 586 ;; 587esac 588 589AC_SUBST(FC_FONTPATH) 590 591# 592# Set default cache directory path 593# 594AC_ARG_WITH(cache-dir, 595 [AC_HELP_STRING([--with-cache-dir=DIR], 596 [Use DIR to store cache files [default=LOCALSTATEDIR/cache/fontconfig]])], 597 fc_cachedir="$withval", fc_cachedir=yes) 598 599case $fc_cachedir in 600no|yes) 601 if test "$os_win32" = "yes"; then 602 fc_cachedir="LOCAL_APPDATA_FONTCONFIG_CACHE" 603 else 604 fc_cachedir='${localstatedir}/cache/${PACKAGE}' 605 fi 606 ;; 607*) 608 ;; 609esac 610AC_SUBST(fc_cachedir) 611FC_CACHEDIR=${fc_cachedir} 612AC_SUBST(FC_CACHEDIR) 613 614FC_FONTDATE=`LC_ALL=C date` 615 616AC_SUBST(FC_FONTDATE) 617 618# 619# Set configuration paths 620# 621 622AC_ARG_WITH(templatedir, 623 [AC_HELP_STRING([--with-templatedir=DIR], 624 [Use DIR to store the configuration template files [default=DATADIR/fontconfig/conf.avail]])], 625 [templatedir="$withval"], 626 [templatedir=yes]) 627AC_ARG_WITH(baseconfigdir, 628 [AC_HELP_STRING([--with-baseconfigdir=DIR], 629 [Use DIR to store the base configuration files [default=SYSCONFDIR/fonts]])], 630 [baseconfigdir="$withval"], 631 [baseconfigdir=yes]) 632AC_ARG_WITH(configdir, 633 [AC_HELP_STRING([--with-configdir=DIR], 634 [Use DIR to store active configuration files [default=BASECONFIGDIR/conf.d]])], 635 [configdir="$withval"], 636 [configdir=yes]) 637AC_ARG_WITH(xmldir, 638 [AC_HELP_STRING([--with-xmldir=DIR], 639 [Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])], 640 [xmldir="$withval"], 641 [xmldir=yes]) 642 643case "$templatedir" in 644no|yes) 645 templatedir='${datadir}'/fontconfig/conf.avail 646 ;; 647*) 648 ;; 649esac 650case "$baseconfigdir" in 651no|yes) 652 baseconfigdir='${sysconfdir}'/fonts 653 ;; 654*) 655 ;; 656esac 657case "$configdir" in 658no|yes) 659 configdir='${BASECONFIGDIR}'/conf.d 660 ;; 661*) 662 ;; 663esac 664case "$xmldir" in 665no|yes) 666 xmldir='${datadir}'/xml/fontconfig 667 ;; 668*) 669 ;; 670esac 671 672TEMPLATEDIR=${templatedir} 673BASECONFIGDIR=${baseconfigdir} 674CONFIGDIR=${configdir} 675XMLDIR=${xmldir} 676AC_SUBST(TEMPLATEDIR) 677AC_SUBST(BASECONFIGDIR) 678AC_SUBST(CONFIGDIR) 679AC_SUBST(XMLDIR) 680 681 682dnl =========================================================================== 683 684# 685# Thread-safety primitives 686# 687 688AC_CACHE_CHECK([stdatomic.h atomic primitives], fc_cv_have_stdatomic_atomic_primitives, [ 689 fc_cv_have_stdatomic_atomic_primitives=false 690 AC_TRY_LINK([ 691 #include <stdatomic.h> 692 693 void memory_barrier (void) { atomic_thread_fence (memory_order_acq_rel); } 694 int atomic_add (atomic_int *i) { return atomic_fetch_add_explicit (i, 1, memory_order_relaxed); } 695 int mutex_trylock (atomic_flag *m) { return atomic_flag_test_and_set_explicit (m, memory_order_acquire); } 696 void mutex_unlock (atomic_flag *m) { atomic_flag_clear_explicit (m, memory_order_release); } 697 ], [], fc_cv_have_stdatomic_atomic_primitives=true 698 ) 699]) 700if $fc_cv_have_stdatomic_atomic_primitives; then 701 AC_DEFINE(HAVE_STDATOMIC_PRIMITIVES, 1, [Have C99 stdatomic atomic primitives]) 702fi 703 704AC_CACHE_CHECK([for Intel atomic primitives], fc_cv_have_intel_atomic_primitives, [ 705 fc_cv_have_intel_atomic_primitives=false 706 AC_TRY_LINK([ 707 void memory_barrier (void) { __sync_synchronize (); } 708 int atomic_add (int *i) { return __sync_fetch_and_add (i, 1); } 709 int mutex_trylock (int *m) { return __sync_lock_test_and_set (m, 1); } 710 void mutex_unlock (int *m) { __sync_lock_release (m); } 711 ], [], fc_cv_have_intel_atomic_primitives=true 712 ) 713]) 714if $fc_cv_have_intel_atomic_primitives; then 715 AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives]) 716fi 717 718AC_CACHE_CHECK([for Solaris atomic operations], fc_cv_have_solaris_atomic_ops, [ 719 fc_cv_have_solaris_atomic_ops=false 720 AC_TRY_LINK([ 721 #include <atomic.h> 722 /* This requires Solaris Studio 12.2 or newer: */ 723 #include <mbarrier.h> 724 void memory_barrier (void) { __machine_rw_barrier (); } 725 int atomic_add (volatile unsigned *i) { return atomic_add_int_nv (i, 1); } 726 void *atomic_ptr_cmpxchg (volatile void **target, void *cmp, void *newval) { return atomic_cas_ptr (target, cmp, newval); } 727 ], [], fc_cv_have_solaris_atomic_ops=true 728 ) 729]) 730if $fc_cv_have_solaris_atomic_ops; then 731 AC_DEFINE(HAVE_SOLARIS_ATOMIC_OPS, 1, [Have Solaris __machine_*_barrier and atomic_* operations]) 732fi 733 734if test "$os_win32" = no && ! $have_pthread; then 735 AC_CHECK_HEADERS(sched.h) 736 AC_SEARCH_LIBS(sched_yield,rt,AC_DEFINE(HAVE_SCHED_YIELD, 1, [Have sched_yield])) 737fi 738 739have_pthread=false 740if test "$os_win32" = no; then 741 AX_PTHREAD([have_pthread=true]) 742fi 743if $have_pthread; then 744 LIBS="$PTHREAD_LIBS $LIBS" 745 CFLAGS="$CFLAGS $PTHREAD_CFLAGS" 746 CC="$PTHREAD_CC" 747 AC_DEFINE(HAVE_PTHREAD, 1, [Have POSIX threads]) 748fi 749AM_CONDITIONAL(HAVE_PTHREAD, $have_pthread) 750 751 752dnl =========================================================================== 753 754# 755# Let people not build/install docs if they don't have docbook 756# 757 758AC_ARG_ENABLE(docbook, 759 [AS_HELP_STRING([--disable-docbook], 760 [Disable building docs with docbook2html (default: no)])],,) 761 762if test x$enable_docbook != xno; then 763 AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no) 764fi 765 766AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes) 767 768default_docs="yes" 769# 770# Check if docs exist or can be created 771# 772if test x$HASDOCBOOK = xno; then 773 if test -f $srcdir/doc/fonts-conf.5; then 774 : 775 else 776 default_docs="no" 777 fi 778fi 779 780AC_ARG_ENABLE(docs, 781 [AC_HELP_STRING([--disable-docs], 782 [Don't build and install documentation])], 783 , 784 enable_docs=$default_docs) 785 786AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes) 787 788if test "x$enable_docs" = xyes; then 789 tmp=funcs.$$ 790 cat $srcdir/doc/*.fncs | awk ' 791 /^@TITLE@/ { if (!done) { printf ("%s\n", $2); done = 1; } } 792 /^@FUNC@/ { if (!done) { printf ("%s\n", $2); done = 1; } } 793 /^@@/ { done = 0; }' > $tmp 794 DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'` 795 echo DOCMAN3 $DOCMAN3 796 rm -f $tmp 797else 798 DOCMAN3="" 799fi 800AC_SUBST(DOCMAN3) 801 802dnl =========================================================================== 803default_cache_build="yes" 804if test $cross_compiling = "yes"; then 805 default_cache_build="no" 806fi 807AC_ARG_ENABLE(cache-build, 808 [AC_HELP_STRING([--disable-cache-build], 809 [Don't run fc-cache during the build])], 810 , 811 enable_cache_build=$default_cache_build) 812 813AM_CONDITIONAL(ENABLE_CACHE_BUILD, test "x$enable_cache_build" = xyes) 814 815 816dnl Figure out what cache format suffix to use for this architecture 817AC_C_BIGENDIAN 818AC_CHECK_SIZEOF([void *]) 819AC_CHECK_ALIGNOF([double]) 820AC_CHECK_ALIGNOF([void *]) 821 822dnl include the header file for workaround of miscalculating size on autoconf 823dnl particularly for fat binaries 824AH_BOTTOM([#include "config-fixups.h"]) 825 826dnl 827dnl 828AC_SUBST(PKGCONFIG_REQUIRES) 829AC_SUBST(PKGCONFIG_REQUIRES_PRIVATELY) 830 831dnl 832AC_CONFIG_FILES([ 833Makefile 834fontconfig/Makefile 835fc-lang/Makefile 836fc-case/Makefile 837src/Makefile 838conf.d/Makefile 839fc-cache/Makefile 840fc-cat/Makefile 841fc-conflist/Makefile 842fc-list/Makefile 843fc-match/Makefile 844fc-pattern/Makefile 845fc-query/Makefile 846fc-scan/Makefile 847fc-validate/Makefile 848doc/Makefile 849doc/version.sgml 850its/Makefile 851po/Makefile.in 852po-conf/Makefile.in 853test/Makefile 854fontconfig.pc 855fontconfig-zip 856]) 857AC_OUTPUT 858