]> gitweb.michael.orlitzky.com - libsvgtiny.git/commitdiff
Build: Include gperf-generated code directly.
authorMichael Drake <michael.drake@codethink.co.uk>
Thu, 20 Apr 2017 09:51:07 +0000 (10:51 +0100)
committerMichael Drake <michael.drake@codethink.co.uk>
Thu, 20 Apr 2017 09:51:07 +0000 (10:51 +0100)
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.

src/Makefile
src/colors.gperf
src/svgtiny.c
src/svgtiny_internal.h

index a97972023257ad80ffe5f1639b616294dac7bcf5..fb8a72f9c2ffe5a281b79b2306167a220c4bdd7c 100644 (file)
@@ -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
index 96d5b9e5debf7b21d53f9bbf4031228c038e3f4f..a836787bf306f082ae19d2862d492e76247c8d26 100644 (file)
 #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;
index 4661a58a2dffb17db793d22f9cff275575cec120..bbefb888a2630c00e5bbd9bf7189e7523e68c3d9 100644 (file)
@@ -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
index 158d23059c60c5ea69b01e71ad2fe58832cacbfb..6bf5d64d99277f836fb9d59cad878977d8ed7571 100644 (file)
@@ -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