Add uuid in configure file
[platform/upstream/fontconfig.git] / configure.ac
index bb98804..c5e7e69 100644 (file)
@@ -1,8 +1,8 @@
-dnl 
+dnl
 dnl  fontconfig/configure.in
-dnl 
+dnl
 dnl  Copyright © 2003 Keith Packard
-dnl 
+dnl
 dnl  Permission to use, copy, modify, distribute, and sell this software and its
 dnl  documentation for any purpose is hereby granted without fee, provided that
 dnl  the above copyright notice appear in all copies and that both that
@@ -12,7 +12,7 @@ dnl  advertising or publicity pertaining to distribution of the software without
 dnl  specific, written prior permission.  The authors make no
 dnl  representations about the suitability of this software for any purpose.  It
 dnl  is provided "as is" without express or implied warranty.
-dnl 
+dnl
 dnl  THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
 dnl  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
 dnl  EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
@@ -26,15 +26,15 @@ dnl Process this file with autoconf to create configure.
 AC_PREREQ(2.61)
 
 dnl ==========================================================================
-dnl                               Versioning              
+dnl                               Versioning
 dnl ==========================================================================
 
 dnl This is the package version number, not the shared library
 dnl version.  This same version number must appear in fontconfig/fontconfig.h
 dnl Yes, it is a pain to synchronize version numbers.  Unfortunately, it's
 dnl not possible to extract the version number here from fontconfig.h
-AC_INIT([fontconfig], [2.11.93], [https://bugs.freedesktop.org/enter_bug.cgi?product=fontconfig])
-AM_INIT_AUTOMAKE([1.11 parallel-tests dist-bzip2])
+AC_INIT([fontconfig], [2.14.2], [https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/new])
+AM_INIT_AUTOMAKE([1.11 parallel-tests dist-xz])
 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
 
 dnl ==========================================================================
@@ -53,7 +53,7 @@ m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], AC_SUBST([pkgconfigdir], ${libdir}/
 
 AM_MISSING_PROG([GIT], [git])
 AM_MISSING_PROG([GPERF], [gperf])
-AM_PATH_PYTHON
+AM_PATH_PYTHON([3])
 
 AC_MSG_CHECKING([for RM macro])
 _predefined_rm=`make -p -f /dev/null 2>/dev/null|grep '^RM ='|sed -e 's/^RM = //'`
@@ -73,11 +73,11 @@ dnl libtool versioning
 dnl bump revision when fixing bugs
 dnl bump current and age, reset revision to zero when adding APIs
 dnl bump current, leave age, reset revision to zero when changing/removing APIS
-LIBT_CURRENT=10
+LIBT_CURRENT=13
 LIBT_REVISION=0
 AC_SUBST(LIBT_CURRENT)
 AC_SUBST(LIBT_REVISION)
-LIBT_AGE=9
+LIBT_AGE=12
 
 LIBT_VERSION_INFO="$LIBT_CURRENT:$LIBT_REVISION:$LIBT_AGE"
 AC_SUBST(LIBT_VERSION_INFO)
@@ -89,15 +89,31 @@ PKGCONFIG_REQUIRES=
 PKGCONFIG_REQUIRES_PRIVATELY=
 
 dnl ==========================================================================
-
-case "$host" in
-  *-*-mingw*)
-    os_win32=yes
-    ;;
-  *)
-    os_win32=no
+AC_CANONICAL_HOST
+os_win32=no
+os_darwin=no
+case "${host_os}" in
+       cygwin*|mingw*)
+               os_win32=yes
+               ;;
+       darwin*)
+               os_darwin=yes
+               ;;
 esac
 AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
+AM_CONDITIONAL(OS_DARWIN, test "$os_darwin" = "yes")
+
+dnl ==========================================================================
+dnl gettext stuff
+dnl ==========================================================================
+GETTEXT_PACKAGE=$PACKAGE
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Gettext package])
+
+AM_GNU_GETTEXT_VERSION([0.19.7])
+AM_GNU_GETTEXT([external])
+
+dnl ==========================================================================
 
 if test "$os_win32" = "yes"; then
   AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
@@ -147,7 +163,7 @@ dnl ==========================================================================
 # Checks for header files.
 AC_HEADER_DIRENT
 AC_HEADER_STDC
-AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h sys/statvfs.h sys/vfs.h sys/statfs.h sys/param.h sys/mount.h])
+AC_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])
 AX_CREATE_STDINT_H([src/fcstdint.h])
 
 # Checks for typedefs, structures, and compiler characteristics.
@@ -159,7 +175,7 @@ AC_TYPE_PID_T
 # Checks for library functions.
 AC_FUNC_VPRINTF
 AC_FUNC_MMAP
-AC_CHECK_FUNCS([link mkstemp mkostemp _mktemp_s mkdtemp getopt getopt_long getprogname getexecname rand random lrand48 random_r rand_r readlink fstatvfs fstatfs lstat])
+AC_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])
 
 dnl AC_CHECK_FUNCS doesn't check for header files.
 dnl posix_fadvise() may be not available in older libc.
@@ -167,6 +183,9 @@ AC_CHECK_SYMBOL([posix_fadvise], [fcntl.h], [fc_func_posix_fadvise=1], [fc_func_
 AC_DEFINE_UNQUOTED([HAVE_POSIX_FADVISE], [$fc_func_posix_fadvise], [Define to 1 if you have the 'posix_fadvise' function.])
 
 #
+AC_CHECK_MEMBERS([struct stat.st_mtim],,, [#include <sys/stat.h>])
+
+#
 if test "x$ac_cv_func_fstatvfs" = "xyes"; then
        AC_CHECK_MEMBERS([struct statvfs.f_basetype, struct statvfs.f_fstypename],,,
                [#include <sys/statvfs.h>])
@@ -189,6 +208,26 @@ fi
 AC_CHECK_MEMBERS([struct dirent.d_type],,,
        [#include <dirent.h>])
 
+# Check the argument type of the gperf hash/lookup function
+AC_MSG_CHECKING([The type of len parameter of gperf hash/lookup function])
+fc_gperf_test="$(echo 'foo' | gperf -L ANSI-C)"
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+       #include <string.h>
+
+       const char *in_word_set(register const char *, register size_t);
+       $fc_gperf_test
+       ]])], [FC_GPERF_SIZE_T=size_t],
+       [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+               #include <string.h>
+
+               const char *in_word_set(register const char *, register unsigned int);
+               $fc_gperf_test
+       ]])], [FC_GPERF_SIZE_T="unsigned int"],
+       [AC_MSG_ERROR([Unable to determine the type of the len parameter of the gperf hash/lookup function])]
+)])
+AC_DEFINE_UNQUOTED(FC_GPERF_SIZE_T, $FC_GPERF_SIZE_T, [The type of len parameter of the gperf hash/lookup function])
+AC_MSG_RESULT($FC_GPERF_SIZE_T)
+
 #
 # Checks for iconv
 #
@@ -274,8 +313,9 @@ AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
 #
 # Checks for FreeType
 #
-PKG_CHECK_MODULES(FREETYPE, freetype2)
-PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES freetype2"
+dnl See http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/VERSIONS.TXT for versioning in freetype
+PKG_CHECK_MODULES(FREETYPE, freetype2 >= 21.0.15)
+PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES freetype2 >= 21.0.15"
 
 AC_SUBST(FREETYPE_LIBS)
 AC_SUBST(FREETYPE_CFLAGS)
@@ -284,20 +324,52 @@ fontconfig_save_libs="$LIBS"
 fontconfig_save_cflags="$CFLAGS"
 LIBS="$LIBS $FREETYPE_LIBS"
 CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
-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)
-AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem,
-               HAVE_FT_BITMAP_SIZE_Y_PPEM=1,
-               HAVE_FT_BITMAP_SIZE_Y_PPEM=0,
-[#include <ft2build.h>
-#include FT_FREETYPE_H])
-AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,$HAVE_FT_BITMAP_SIZE_Y_PPEM,
-                  [FT_Bitmap_Size structure includes y_ppem field])
-AC_CHECK_MEMBERS([TT_OS2.usLowerOpticalPointSize, TT_OS2.usUpperOpticalPointSize], [], [], [[
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_TRUETYPE_TABLES_H]])
-CFLAGS="$fontconfig_save_cflags"
+AC_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)
+
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+       #include <ft2build.h>
+       #include FT_CONFIG_OPTIONS_H
+       #ifndef PCF_CONFIG_OPTION_LONG_FAMILY_NAMES
+       #  error "No pcf long family names support"
+       #endif
+       ]])], [have_pcf_long_family_names=yes], [have_pcf_long_family_names=no])
+AM_CONDITIONAL(FREETYPE_PCF_LONG_FAMILY_NAMES, test "x$have_pcf_long_family_names" = xyes)
+
 LIBS="$fontconfig_save_libs"
+CFLAGS="$fontconfig_save_cflags"
+
+#
+# Check for uuid
+#
+if test "$os_win32" != "yes"; then
+       use_pkgconfig_for_uuid=yes
+       if test -n "${UUID_LIBS}"; then
+               save_UUID_LIBS=$UUID_LIBS
+       fi
+       PKG_CHECK_MODULES([UUID], [uuid],
+                         [use_pkgconfig_for_uuid=yes],
+                         [use_pkgconfig_for_uuid=no])
+       if test "x$use_pkgconfig_for_uuid" = "xno"; then
+               AC_MSG_CHECKING([where uuid functions comes from])
+               AC_TRY_LINK([#include <uuid/uuid.h>],
+                       [uuid_t a; uuid_generate(a);],
+                       [AC_MSG_RESULT([builtin])
+                        UUID_CFLAGS=""
+                        UUID_LIBS=""
+                       ],[AC_MSG_ERROR([
+*** uuid is required. install util-linux.
+                       ])])
+       else
+               if test -z "${save_UUID_LIBS+x}" && test "x${UUID_LIBS}" != "x"; then
+                       PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY uuid"
+               fi
+       fi
+else
+       UUID_CFLAGS=""
+       UUID_LIBS=""
+fi
+AC_SUBST(UUID_CFLAGS)
+AC_SUBST(UUID_LIBS)
 
 #
 # Check expat configuration
@@ -339,8 +411,12 @@ if test "$enable_libxml2" != "yes"; then
                else
                        EXPAT_LIBS="-lexpat"
                fi
+               PKG_EXPAT_CFLAGS=$EXPAT_CFLAGS
+               PKG_EXPAT_LIBS=$EXPAT_LIBS
        else
                PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY expat"
+               PKG_EXPAT_CFLAGS=
+               PKG_EXPAT_LIBS=
        fi
 
        expatsaved_CPPFLAGS="$CPPFLAGS"
@@ -371,6 +447,8 @@ if test "$enable_libxml2" != "yes"; then
 
        AC_SUBST(EXPAT_CFLAGS)
        AC_SUBST(EXPAT_LIBS)
+       AC_SUBST(PKG_EXPAT_CFLAGS)
+       AC_SUBST(PKG_EXPAT_LIBS)
 fi
 
 #
@@ -382,7 +460,7 @@ AC_ARG_ENABLE(libxml2,
 
 if test "$enable_libxml2" = "yes"; then
     PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6])
-    PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY libxml-2.0"
+    PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY libxml-2.0 >= 2.6"
     AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat])
 
     AC_SUBST(LIBXML2_CFLAGS)
@@ -402,33 +480,89 @@ if test "$enable_libxml2" = "yes"; then
 fi
 
 #
+# Check json-c
+#
+PKG_CHECK_MODULES([JSONC], [json-c], [use_jsonc=yes], [use_jsonc=no])
+
+AM_CONDITIONAL(ENABLE_JSONC, test "x$use_jsonc" = "xyes")
+AC_SUBST(JSONC_CFLAGS)
+AC_SUBST(JSONC_LIBS)
+
+#
+# Set default sub-pixel rendering
+#
+
+AC_ARG_WITH(default-sub-pixel-rendering,
+    [AC_HELP_STRING([--with-default-sub-pixel-rendering=NAME],
+            [Enable your preferred sub-pixel rendering configuration (none/bgr/rgb/vbgr/vrgb) [default=none]])],
+    preferred_sub_pixel_rendering="$withval", preferred_sub_pixel_rendering=none)
+
+case "$preferred_sub_pixel_rendering" in
+none|bgr|rgb|vbgr|vrgb)
+    PREFERRED_SUB_PIXEL_RENDERING="$preferred_sub_pixel_rendering"
+    AC_SUBST(PREFERRED_SUB_PIXEL_RENDERING)
+    ;;
+*)
+    AC_MSG_ERROR([Invalid sub-pixel rendering. please choose one of none, bgr, rgb, vbgr, or vrgb])
+    ;;
+esac
+
+#
+# Set default hinting
+#
+
+AC_ARG_WITH(default-hinting,
+       [AC_HELP_STRING([--with-default-hinting=NAME],
+                       [Enable your preferred hinting configuration (none/slight/medium/full) [default=slight]])],
+       preferred_hinting="$withval", preferred_hinting=slight)
+
+case "$preferred_hinting" in
+none|slight|medium|full)
+       PREFERRED_HINTING="$preferred_hinting"
+       AC_SUBST(PREFERRED_HINTING)
+       ;;
+*)
+       AC_MSG_ERROR([Invalid hinting. please choose one of none, slight, medium, or full])
+       ;;
+esac
+
+#
 # Set default font directory
 #
 
 AC_ARG_WITH(default-fonts,
-       [AC_HELP_STRING([--with-default-fonts=DIR],
-                       [Use fonts from DIR when config is busted])],
+       [AC_HELP_STRING([--with-default-fonts=DIR1,DIR2,...],
+                       [Use fonts from DIR1,DIR2,... when config is busted])],
        default_fonts="$withval", default_fonts=yes)
 
 case "$default_fonts" in
 yes)
        if test "$os_win32" = "yes"; then
-               FC_DEFAULT_FONTS="WINDOWSFONTDIR"
-               AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "WINDOWSFONTDIR", 
-                                  [Windows font directory])
+               default_fonts="WINDOWSFONTDIR,WINDOWSUSERFONTDIR"
+       elif test "$os_darwin" = "yes"; then
+               default_fonts="/System/Library/Fonts,/Library/Fonts,~/Library/Fonts,/System/Library/Assets/com_apple_MobileAsset_Font3,/System/Library/Assets/com_apple_MobileAsset_Font4"
        else
-               FC_DEFAULT_FONTS="/usr/share/fonts"
-               AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "/usr/share/fonts", 
-                                  [System font directory])
+               default_fonts="/usr/share/fonts"
        fi
        ;;
-*)
-       FC_DEFAULT_FONTS="$default_fonts"
-       AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$default_fonts",
-                          [System font directory])
-       ;;
 esac
 
+FC_DEFAULT_FONTS=""
+if test x${default_fonts+set} = xset; then
+       fc_IFS=$IFS
+       IFS=","
+       for p in $default_fonts; do
+               if test x"$FC_DEFAULT_FONTS" != x; then
+                       FC_DEFAULT_FONTS="$FC_DEFAULT_FONTS "
+               fi
+               FC_DEFAULT_FONTS="$FC_DEFAULT_FONTS<dir>$p</dir>"
+       done
+       IFS=$fc_IFS
+fi
+
+AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$FC_DEFAULT_FONTS",
+                          [System font directory])
+
 AC_SUBST(FC_DEFAULT_FONTS)
 
 #
@@ -480,7 +614,7 @@ case "$FC_ADD_FONTS" in
 "")
        ;;
 *)
-       FC_FONTPATH=`echo $FC_ADD_FONTS | 
+       FC_FONTPATH=`echo $FC_ADD_FONTS |
                        sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'`
        ;;
 esac
@@ -584,6 +718,22 @@ dnl ===========================================================================
 # Thread-safety primitives
 #
 
+AC_CACHE_CHECK([stdatomic.h atomic primitives], fc_cv_have_stdatomic_atomic_primitives, [
+       fc_cv_have_stdatomic_atomic_primitives=false
+       AC_TRY_LINK([
+               #include <stdatomic.h>
+
+               void memory_barrier (void) { atomic_thread_fence (memory_order_acq_rel); }
+               int atomic_add (atomic_int *i) { return atomic_fetch_add_explicit (i, 1, memory_order_relaxed); }
+               int mutex_trylock (atomic_flag *m) { return atomic_flag_test_and_set_explicit (m, memory_order_acquire); }
+               void mutex_unlock (atomic_flag *m) { atomic_flag_clear_explicit (m, memory_order_release); }
+               ], [], fc_cv_have_stdatomic_atomic_primitives=true
+       )
+])
+if $fc_cv_have_stdatomic_atomic_primitives; then
+       AC_DEFINE(HAVE_STDATOMIC_PRIMITIVES, 1, [Have C99 stdatomic atomic primitives])
+fi
+
 AC_CACHE_CHECK([for Intel atomic primitives], fc_cv_have_intel_atomic_primitives, [
        fc_cv_have_intel_atomic_primitives=false
        AC_TRY_LINK([
@@ -638,7 +788,13 @@ dnl ===========================================================================
 # Let people not build/install docs if they don't have docbook
 #
 
-AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
+AC_ARG_ENABLE(docbook,
+       [AS_HELP_STRING([--disable-docbook],
+               [Disable building docs with docbook2html (default: no)])],,)
+
+if test x$enable_docbook != xno; then
+       AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
+fi
 
 AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes)
 
@@ -676,6 +832,19 @@ else
 fi
 AC_SUBST(DOCMAN3)
 
+dnl ===========================================================================
+default_cache_build="yes"
+if test $cross_compiling = "yes"; then
+       default_cache_build="no"
+fi
+AC_ARG_ENABLE(cache-build,
+       [AC_HELP_STRING([--disable-cache-build],
+                       [Don't run fc-cache during the build])],
+       ,
+       enable_cache_build=$default_cache_build)
+
+AM_CONDITIONAL(ENABLE_CACHE_BUILD, test "x$enable_cache_build" = xyes)
+
 
 dnl Figure out what cache format suffix to use for this architecture
 AC_C_BIGENDIAN
@@ -697,13 +866,12 @@ AC_CONFIG_FILES([
 Makefile
 fontconfig/Makefile
 fc-lang/Makefile
-fc-glyphname/Makefile
-fc-blanks/Makefile
 fc-case/Makefile
 src/Makefile
 conf.d/Makefile
 fc-cache/Makefile
 fc-cat/Makefile
+fc-conflist/Makefile
 fc-list/Makefile
 fc-match/Makefile
 fc-pattern/Makefile
@@ -712,8 +880,10 @@ fc-scan/Makefile
 fc-validate/Makefile
 doc/Makefile
 doc/version.sgml
+its/Makefile
+po/Makefile.in
+po-conf/Makefile.in
 test/Makefile
-fontconfig.spec
 fontconfig.pc
 fontconfig-zip
 ])