package/libsvgtiny: fix build with latest gperf
authorFabrice Fontaine <fontaine.fabrice@gmail.com>
Mon, 14 Oct 2019 20:33:06 +0000 (22:33 +0200)
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>
Tue, 15 Oct 2019 07:18:08 +0000 (09:18 +0200)
Remove second patch and retrieve two upstream patches to fix build with
latest gperf

Fixes:
 - http://autobuild.buildroot.org/results/51be63089209d38c2cf29b0e0b08f73a0e15c467

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
package/libsvgtiny/0002-Remove-Werror.patch [new file with mode: 0644]
package/libsvgtiny/0002-create-builddir.patch [deleted file]
package/libsvgtiny/0003-Hopefully-silence-warnings-about-inlines-and-non-inlines-calling-one.patch [new file with mode: 0644]
package/libsvgtiny/0003-Remove-Werror.patch [deleted file]
package/libsvgtiny/0004-Build-Include-gperf-generated-code-directly.patch [new file with mode: 0644]

diff --git a/package/libsvgtiny/0002-Remove-Werror.patch b/package/libsvgtiny/0002-Remove-Werror.patch
new file mode 100644 (file)
index 0000000..c8b0c0b
--- /dev/null
@@ -0,0 +1,44 @@
+Remove -Werror from Makefile
+
+glibc-2.20 includes some changes to the include/features.h file
+introduced by this commit:
+
+  https://sourceware.org/git/?p=glibc.git;a=commit;h=ade40b10ff5fa59a318cf55b9d8414b758e8df78
+
+Those changes make libsvgtiny fail because some warnings are thrown and
+the build system is using the -Werror option. We disable this to be able
+to build it, or otherwise we will see errors like this one:
+
+GPERF: src/colors.gperf
+COMPILE: build-Linux-Linux-release-lib-static/src_colors.c
+In file included from
+/br/output/host/usr/mipsel-buildroot-linux-gnu/sysroot/usr/include/string.h:25:0,
+                from src/colors.gperf:16:
+/br/output/host/usr/mipsel-buildroot-linux-gnu/sysroot/usr/include/features.h:148:3:
+error: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use
+_DEFAULT_SOURCE" [-Werror=cpp]
+
+and this one:
+
+In file included from src/colors.gperf:18:0:
+/home/ldap/vriera/work/mips-buildroots/mips32/output/build/libsvgtiny-12121/src/svgtiny_internal.h:71:0:
+error: "strndup" redefined [-Werror]
+
+Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
+
+diff -rup a/Makefile b/Makefile
+--- a/Makefile 2010-01-03 23:37:39.000000000 +0000
++++ b/Makefile 2014-12-11 11:35:37.241903884 +0000
+@@ -13,12 +13,6 @@ TESTRUNNER := $(ECHO)
+ WARNFLAGS := -Wall -W -Wundef -Wpointer-arith -Wcast-align \
+       -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes \
+       -Wmissing-declarations -Wnested-externs -pedantic
+-# BeOS/Haiku/AmigaOS4 standard library headers create warnings
+-ifneq ($(TARGET),beos)
+-  ifneq ($(TARGET),AmigaOS)
+-    WARNFLAGS := $(WARNFLAGS) -Werror
+-  endif
+-endif
+ CFLAGS := -D_BSD_SOURCE -I$(CURDIR)/include/ \
+       -I$(CURDIR)/src $(WARNFLAGS) $(CFLAGS)
+ ifneq ($(GCCVER),2)
diff --git a/package/libsvgtiny/0002-create-builddir.patch b/package/libsvgtiny/0002-create-builddir.patch
deleted file mode 100644 (file)
index a404d86..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-svgtiny: create BUILDDIR before $(BUILDDIR)/src_colors.c
-
-Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
----
---- libsvgtiny-12121/src/Makefile.orig 2014-06-17 15:30:21.765311434 +0400
-+++ libsvgtiny-12121/src/Makefile      2014-06-17 15:29:56.569909931 +0400
-@@ -3,7 +3,7 @@
- SOURCES := $(SOURCES) $(BUILDDIR)/src_colors.c
--$(BUILDDIR)/src_colors.c: src/colors.gperf
-+$(BUILDDIR)/src_colors.c: src/colors.gperf $(BUILDDIR)/stamp
-       $(VQ)$(ECHO) "   GPERF: $<"
-       $(Q)gperf --output-file=$@.tmp $<
- # Hack for GCC 4.2 compatibility (gperf 3.0.4 solves this properly)
diff --git a/package/libsvgtiny/0003-Hopefully-silence-warnings-about-inlines-and-non-inlines-calling-one.patch b/package/libsvgtiny/0003-Hopefully-silence-warnings-about-inlines-and-non-inlines-calling-one.patch
new file mode 100644 (file)
index 0000000..9285477
--- /dev/null
@@ -0,0 +1,36 @@
+From 21b4836ac9d6c6725590a925daa5d17eda9843e9 Mon Sep 17 00:00:00 2001
+From: Daniel Silverstone <dsilvers@digital-scurf.org>
+Date: Sat, 26 Apr 2014 16:24:54 +0100
+Subject: Hopefully silence warnings about inlines and non inlines calling one
+ another.
+
+[Retrieved from:
+https://source.netsurf-browser.org/libsvgtiny.git/commit/src?id=21b4836ac9d6c6725590a925daa5d17eda9843e9]
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ src/colors.gperf | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/src/colors.gperf b/src/colors.gperf
+index 89152d2..96d5b9e 100644
+--- a/src/colors.gperf
++++ b/src/colors.gperf
+@@ -16,6 +16,15 @@
+ #include <string.h>
+ #include "svgtiny.h"
+ #include "svgtiny_internal.h"
++
++/* This unusual define shennanigan is to try and prevent the gperf
++ * generated function from being inlined.  This is pointless given
++ * it (a) is in a separate .c file and (b) has external linkage.
++ */
++#ifdef __inline
++#undef __inline
++#define __inline
++#endif
+ %}
+ struct svgtiny_named_color;
+-- 
+cgit v1.2.1
+
diff --git a/package/libsvgtiny/0003-Remove-Werror.patch b/package/libsvgtiny/0003-Remove-Werror.patch
deleted file mode 100644 (file)
index c8b0c0b..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-Remove -Werror from Makefile
-
-glibc-2.20 includes some changes to the include/features.h file
-introduced by this commit:
-
-  https://sourceware.org/git/?p=glibc.git;a=commit;h=ade40b10ff5fa59a318cf55b9d8414b758e8df78
-
-Those changes make libsvgtiny fail because some warnings are thrown and
-the build system is using the -Werror option. We disable this to be able
-to build it, or otherwise we will see errors like this one:
-
-GPERF: src/colors.gperf
-COMPILE: build-Linux-Linux-release-lib-static/src_colors.c
-In file included from
-/br/output/host/usr/mipsel-buildroot-linux-gnu/sysroot/usr/include/string.h:25:0,
-                from src/colors.gperf:16:
-/br/output/host/usr/mipsel-buildroot-linux-gnu/sysroot/usr/include/features.h:148:3:
-error: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use
-_DEFAULT_SOURCE" [-Werror=cpp]
-
-and this one:
-
-In file included from src/colors.gperf:18:0:
-/home/ldap/vriera/work/mips-buildroots/mips32/output/build/libsvgtiny-12121/src/svgtiny_internal.h:71:0:
-error: "strndup" redefined [-Werror]
-
-Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
-
-diff -rup a/Makefile b/Makefile
---- a/Makefile 2010-01-03 23:37:39.000000000 +0000
-+++ b/Makefile 2014-12-11 11:35:37.241903884 +0000
-@@ -13,12 +13,6 @@ TESTRUNNER := $(ECHO)
- WARNFLAGS := -Wall -W -Wundef -Wpointer-arith -Wcast-align \
-       -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes \
-       -Wmissing-declarations -Wnested-externs -pedantic
--# BeOS/Haiku/AmigaOS4 standard library headers create warnings
--ifneq ($(TARGET),beos)
--  ifneq ($(TARGET),AmigaOS)
--    WARNFLAGS := $(WARNFLAGS) -Werror
--  endif
--endif
- CFLAGS := -D_BSD_SOURCE -I$(CURDIR)/include/ \
-       -I$(CURDIR)/src $(WARNFLAGS) $(CFLAGS)
- ifneq ($(GCCVER),2)
diff --git a/package/libsvgtiny/0004-Build-Include-gperf-generated-code-directly.patch b/package/libsvgtiny/0004-Build-Include-gperf-generated-code-directly.patch
new file mode 100644 (file)
index 0000000..c17426f
--- /dev/null
@@ -0,0 +1,97 @@
+From 4390f1c84e8fee51fc22468821e6fc158e783053 Mon Sep 17 00:00:00 2001
+From: Michael Drake <michael.drake@codethink.co.uk>
+Date: Thu, 20 Apr 2017 10:51:07 +0100
+Subject: Build: Include gperf-generated code directly.
+
+Previously we built the generated code separatly and then linked to
+it.  However, this caused problems with certain compilers and gperf
+versions.  This change includes the generated code directly in
+svgtiny.c instead, which is the only place its used.
+
+[Retrieved from:
+https://source.netsurf-browser.org/libsvgtiny.git/commit/src?id=4390f1c84e8fee51fc22468821e6fc158e783053]
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ src/Makefile           | 13 +++++++------
+ src/colors.gperf       |  8 --------
+ src/svgtiny.c          |  3 +++
+ src/svgtiny_internal.h |  5 -----
+ 4 files changed, 10 insertions(+), 19 deletions(-)
+
+(limited to 'src')
+
+diff --git a/src/Makefile b/src/Makefile
+index a979720..fb8a72f 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,13 +1,14 @@
+ # Sources
+ DIR_SOURCES := svgtiny.c svgtiny_gradient.c svgtiny_list.c
+-SOURCES := $(SOURCES) $(BUILDDIR)/src_colors.c
++SOURCES := $(SOURCES)
+-$(BUILDDIR)/src_colors.c: src/colors.gperf
++$(DIR)autogenerated_colors.c: src/colors.gperf
+       $(VQ)$(ECHO) "   GPERF: $<"
+-      $(Q)gperf --output-file=$@.tmp $<
+-# Hack for GCC 4.2 compatibility (gperf 3.0.4 solves this properly)
+-      $(Q)$(SED) -e 's/#ifdef __GNUC_STDC_INLINE__/#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__/' $@.tmp >$@
+-      $(Q)$(RM) $@.tmp
++      $(Q)gperf --output-file=$@ $<
++
++PRE_TARGETS := $(DIR)autogenerated_colors.c
++
++CLEAN_ITEMS := $(DIR)autogenerated_colors.c
+ include $(NSBUILD)/Makefile.subdir
+diff --git a/src/colors.gperf b/src/colors.gperf
+index 96d5b9e..a836787 100644
+--- a/src/colors.gperf
++++ b/src/colors.gperf
+@@ -17,14 +17,6 @@
+ #include "svgtiny.h"
+ #include "svgtiny_internal.h"
+-/* This unusual define shennanigan is to try and prevent the gperf
+- * generated function from being inlined.  This is pointless given
+- * it (a) is in a separate .c file and (b) has external linkage.
+- */
+-#ifdef __inline
+-#undef __inline
+-#define __inline
+-#endif
+ %}
+ struct svgtiny_named_color;
+diff --git a/src/svgtiny.c b/src/svgtiny.c
+index 4661a58..bbefb88 100644
+--- a/src/svgtiny.c
++++ b/src/svgtiny.c
+@@ -20,6 +20,9 @@
+ #include "svgtiny.h"
+ #include "svgtiny_internal.h"
++/* Source file generated by `gperf`. */
++#include "autogenerated_colors.c"
++
+ #ifndef M_PI
+ #define M_PI          3.14159265358979323846
+ #endif
+diff --git a/src/svgtiny_internal.h b/src/svgtiny_internal.h
+index 158d230..6bf5d64 100644
+--- a/src/svgtiny_internal.h
++++ b/src/svgtiny_internal.h
+@@ -102,9 +102,4 @@ void *svgtiny_list_get(struct svgtiny_list *list,
+ void *svgtiny_list_push(struct svgtiny_list *list);
+ void svgtiny_list_free(struct svgtiny_list *list);
+-/* colors.gperf */
+-const struct svgtiny_named_color *
+-              svgtiny_color_lookup(register const char *str,
+-                              register unsigned int len);
+-
+ #endif
+-- 
+cgit v1.2.1
+