summaryrefslogtreecommitdiff
path: root/external
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2017-03-13 16:42:21 +0100
committerAshod Nakashian <ashod.nakashian@collabora.co.uk>2017-12-05 07:45:22 -0500
commit9e2ea2c9885f1609dcded570d59da3912ca32236 (patch)
treebafbc417afc62afe0ba9946138bb0d1745fd0fe5 /external
parent4ca2685e91c22e8681a160cf3946c34d13ffa2d2 (diff)
fix fontconfig build with new glibc and gperf
Change-Id: Ia89f068d93b810b0c32df5df62a582322f3e5588 Reviewed-on: https://gerrit.libreoffice.org/35142 Reviewed-by: David Tardon <dtardon@redhat.com> Tested-by: David Tardon <dtardon@redhat.com> (cherry picked from commit c0b4bd7409c86addc7971d7810176150c36fbf24) (cherry picked from commit 9f96fa5be84c620cc93f7ee676b9ba143dd6af02)
Diffstat (limited to 'external')
-rw-r--r--external/fontconfig/0001-Fix-the-build-issue-with-gperf-3.1.patch.1117
-rw-r--r--external/fontconfig/UnpackedTarball_fontconfig.mk2
-rw-r--r--external/fontconfig/fontconfig-glibc-limits.patch.147
3 files changed, 166 insertions, 0 deletions
diff --git a/external/fontconfig/0001-Fix-the-build-issue-with-gperf-3.1.patch.1 b/external/fontconfig/0001-Fix-the-build-issue-with-gperf-3.1.patch.1
new file mode 100644
index 000000000000..fe6f44505ffd
--- /dev/null
+++ b/external/fontconfig/0001-Fix-the-build-issue-with-gperf-3.1.patch.1
@@ -0,0 +1,117 @@
+From 31010a2cc6f2d0596dac640b190df3472e0089dd Mon Sep 17 00:00:00 2001
+From: Akira TAGOH <akira@tagoh.org>
+Date: Thu, 23 Feb 2017 21:39:10 +0900
+Subject: [PATCH] Fix the build issue with gperf 3.1
+
+To support the one of changes in gperf 3.1:
+* The 'len' parameter of the hash function and of the lookup function is now
+ of type 'size_t' instead of 'unsigned int'. This makes it safe to call these
+ functions with strings of length > 4 GB, on 64-bit machines.
+---
+ config.h.in | 3 +++
+ configure | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ configure.ac | 20 ++++++++++++++++++++
+ src/fcobjs.c | 4 ++--
+ 4 files changed, 81 insertions(+), 2 deletions(-)
+
+diff --git a/config.h.in b/config.h.in
+index ffff4cd..d5c14a1 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -21,6 +21,9 @@
+ /* System font directory */
+ #undef FC_DEFAULT_FONTS
+
++/* The type of len parameter of the gperf hash/lookup function */
++#undef FC_GPERF_SIZE_T
++
+ /* Define to nothing if C supports flexible array members, and to 1 if it does
+ not. That way, with a declaration like `struct s { int n; double
+ d[FLEXIBLE_ARRAY_MEMBER]; };', the struct hack can be used with pre-C99
+diff --git a/configure b/configure
+index eed481c..9eddc2b 100755
+--- a/configure
++++ b/configure
+@@ -14946,6 +14946,62 @@ _ACEOF
+ fi
+
+
++# Check the argument type of the gperf hash/lookup function
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking The type of len parameter of gperf hash/lookup function" >&5
++$as_echo_n "checking The type of len parameter of gperf hash/lookup function... " >&6; }
++fc_gperf_test="$(echo 'foo' | gperf -L ANSI-C)"
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++ #include <string.h>
++
++ const char *in_word_set(register const char *, register size_t);
++ $fc_gperf_test
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ FC_GPERF_SIZE_T=size_t
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++ #include <string.h>
++
++ const char *in_word_set(register const char *, register unsigned int);
++ $fc_gperf_test
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ FC_GPERF_SIZE_T="unsigned int"
++else
++ as_fn_error $? "Unable to determine the type of the len parameter of the gperf hash/lookup function" "$LINENO" 5
++
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
++cat >>confdefs.h <<_ACEOF
++#define FC_GPERF_SIZE_T $FC_GPERF_SIZE_T
++_ACEOF
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC_GPERF_SIZE_T" >&5
++$as_echo "$FC_GPERF_SIZE_T" >&6; }
++
+ #
+ # Checks for iconv
+ #
+diff --git a/src/fcobjs.c b/src/fcobjs.c
+index 16ff31c..33bba8d 100644
+--- a/src/fcobjs.c
++++ b/src/fcobjs.c
+@@ -25,10 +25,10 @@
+ #include "fcint.h"
+
+ static unsigned int
+-FcObjectTypeHash (register const char *str, register unsigned int len);
++FcObjectTypeHash (register const char *str, register FC_GPERF_SIZE_T len);
+
+ static const struct FcObjectTypeInfo *
+-FcObjectTypeLookup (register const char *str, register unsigned int len);
++FcObjectTypeLookup (register const char *str, register FC_GPERF_SIZE_T len);
+
+ #include "fcobjshash.h"
+
+--
+2.12.0
+
diff --git a/external/fontconfig/UnpackedTarball_fontconfig.mk b/external/fontconfig/UnpackedTarball_fontconfig.mk
index 6026a817c5ed..a2d596a327a3 100644
--- a/external/fontconfig/UnpackedTarball_fontconfig.mk
+++ b/external/fontconfig/UnpackedTarball_fontconfig.mk
@@ -13,6 +13,8 @@ $(eval $(call gb_UnpackedTarball_set_tarball,fontconfig,$(FONTCONFIG_TARBALL),,f
$(eval $(call gb_UnpackedTarball_add_patches,fontconfig,\
external/fontconfig/fontconfig-2.12.1.patch.1 \
+ external/fontconfig/fontconfig-glibc-limits.patch.1 \
+ external/fontconfig/0001-Fix-the-build-issue-with-gperf-3.1.patch.1 \
))
# vim: set noet sw=4 ts=4:
diff --git a/external/fontconfig/fontconfig-glibc-limits.patch.1 b/external/fontconfig/fontconfig-glibc-limits.patch.1
new file mode 100644
index 000000000000..8eff16098186
--- /dev/null
+++ b/external/fontconfig/fontconfig-glibc-limits.patch.1
@@ -0,0 +1,47 @@
+From 1ab5258f7c2abfafcd63a760ca08bf93591912da Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 14 Dec 2016 16:11:05 -0800
+Subject: [PATCH] Avoid conflicts with integer width macros from TS
+ 18661-1:2014
+
+glibc 2.25+ has now defined these macros in <limits.h>
+https://sourceware.org/git/?p=glibc.git;a=commit;h=5b17fd0da62bf923cb61d1bb7b08cf2e1f1f9c1a
+
+Create an alias for FC_CHAR_WIDTH for ABI compatibility
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ fontconfig/fontconfig.h | 3 ++-
+ src/fcobjs.h | 2 +-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h
+index 5c72b22..070a557 100644
+--- a/fontconfig/fontconfig.h
++++ b/fontconfig/fontconfig.h
+@@ -128,7 +128,8 @@ typedef int FcBool;
+ #define FC_USER_CACHE_FILE ".fonts.cache-" FC_CACHE_VERSION
+
+ /* Adjust outline rasterizer */
+-#define FC_CHAR_WIDTH "charwidth" /* Int */
++#define FC_CHARWIDTH "charwidth" /* Int */
++#define FC_CHAR_WIDTH FC_CHARWIDTH
+ #define FC_CHAR_HEIGHT "charheight"/* Int */
+ #define FC_MATRIX "matrix" /* FcMatrix */
+
+diff --git a/src/fcobjs.h b/src/fcobjs.h
+index 1fc4f65..d27864b 100644
+--- a/src/fcobjs.h
++++ b/src/fcobjs.h
+@@ -51,7 +51,7 @@ FC_OBJECT (DPI, FcTypeDouble, NULL)
+ FC_OBJECT (RGBA, FcTypeInteger, NULL)
+ FC_OBJECT (SCALE, FcTypeDouble, NULL)
+ FC_OBJECT (MINSPACE, FcTypeBool, NULL)
+-FC_OBJECT (CHAR_WIDTH, FcTypeInteger, NULL)
++FC_OBJECT (CHARWIDTH, FcTypeInteger, NULL)
+ FC_OBJECT (CHAR_HEIGHT, FcTypeInteger, NULL)
+ FC_OBJECT (MATRIX, FcTypeMatrix, NULL)
+ FC_OBJECT (CHARSET, FcTypeCharSet, FcCompareCharSet)
+--
+2.9.3
+