From: Tobias Brunner Date: Tue, 26 Sep 2017 10:23:36 +0000 (+0200) Subject: configure: Fix gperf length parameter determination X-Git-Tag: 5.6.1rc1~43 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0ae19f0ced8d64bb6996a8ae01406cebacff04a1;p=thirdparty%2Fstrongswan.git configure: Fix gperf length parameter determination gperf is not actually a build dependency as the generated files are shipped in the tarball. So the type depends on the gperf version on the host that ran gperf and created the tarball, which might not be the same as that on the actual build host, and gperf might not even be installed there, leaving the type undetermined. Fixes: e0e43229736a ("configure: Detect type of length parameter for gperf generated function") --- diff --git a/configure.ac b/configure.ac index a03370ef72..9b4109f847 100644 --- a/configure.ac +++ b/configure.ac @@ -392,7 +392,7 @@ if test -x "$GPERF"; then [AC_MSG_ERROR([unable to determine gperf len type])] )] ) - AC_DEFINE_UNQUOTED([GPERF_LEN_TYPE], [$GPERF_LEN_TYPE], [gperf len type]) + AC_SUBST(GPERF_LEN_TYPE) AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) diff --git a/src/libstrongswan/.gitignore b/src/libstrongswan/.gitignore index 46b69ab15c..1f2695f77d 100644 --- a/src/libstrongswan/.gitignore +++ b/src/libstrongswan/.gitignore @@ -1,2 +1,2 @@ oid.[ch] -proposal_keywords_static.c +proposal_keywords_static.[ch] diff --git a/src/libstrongswan/Makefile.am b/src/libstrongswan/Makefile.am index b4d8452f1c..75b1d14acd 100644 --- a/src/libstrongswan/Makefile.am +++ b/src/libstrongswan/Makefile.am @@ -195,16 +195,19 @@ endif EXTRA_DIST = \ asn1/oid.txt asn1/oid.pl \ crypto/proposal/proposal_keywords_static.txt \ +crypto/proposal/proposal_keywords_static.h.in \ plugins/plugin_constructors.py \ Android.mk BUILT_SOURCES = \ $(srcdir)/asn1/oid.c $(srcdir)/asn1/oid.h \ +$(srcdir)/crypto/proposal/proposal_keywords_static.h \ $(srcdir)/crypto/proposal/proposal_keywords_static.c \ settings/settings_parser.h MAINTAINERCLEANFILES = \ $(srcdir)/asn1/oid.c $(srcdir)/asn1/oid.h \ +$(srcdir)/crypto/proposal/proposal_keywords_static.h \ $(srcdir)/crypto/proposal/proposal_keywords_static.c $(srcdir)/asn1/oid.c : $(srcdir)/asn1/oid.pl $(srcdir)/asn1/oid.txt @@ -215,6 +218,12 @@ $(srcdir)/asn1/oid.h : $(srcdir)/asn1/oid.pl $(srcdir)/asn1/oid.txt $(AM_V_GEN) \ (cd $(srcdir)/asn1/ && $(PERL) oid.pl) +$(srcdir)/crypto/proposal/proposal_keywords_static.h: $(srcdir)/crypto/proposal/proposal_keywords_static.h.in + $(AM_V_GEN) \ + sed \ + -e "s:\@GPERF_LEN_TYPE\@:$(GPERF_LEN_TYPE):" \ + $< > $@ + $(srcdir)/crypto/proposal/proposal_keywords_static.c: $(srcdir)/crypto/proposal/proposal_keywords_static.txt \ $(srcdir)/crypto/proposal/proposal_keywords_static.h $(AM_V_GEN) \ diff --git a/src/libstrongswan/crypto/proposal/proposal_keywords_static.h b/src/libstrongswan/crypto/proposal/proposal_keywords_static.h.in similarity index 94% rename from src/libstrongswan/crypto/proposal/proposal_keywords_static.h rename to src/libstrongswan/crypto/proposal/proposal_keywords_static.h.in index c046fab92e..ee9f7b9da4 100644 --- a/src/libstrongswan/crypto/proposal/proposal_keywords_static.h +++ b/src/libstrongswan/crypto/proposal/proposal_keywords_static.h.in @@ -19,7 +19,7 @@ #include "proposal_keywords.h" const proposal_token_t* proposal_get_token_static(register const char *str, - register GPERF_LEN_TYPE len); + register @GPERF_LEN_TYPE@ len); #endif /* PROPOSAL_KEYWORDS_STATIC_H_ */ diff --git a/src/starter/.gitignore b/src/starter/.gitignore index a370ee5547..23142d9e8e 100644 --- a/src/starter/.gitignore +++ b/src/starter/.gitignore @@ -1,4 +1,5 @@ starter +keywords.[ch] parser/lexer.c parser/parser.[ch] parser/parser.output \ No newline at end of file diff --git a/src/starter/Makefile.am b/src/starter/Makefile.am index a3c58126e3..c806e37e10 100644 --- a/src/starter/Makefile.am +++ b/src/starter/Makefile.am @@ -39,14 +39,20 @@ starter_LDADD = \ libstarter.la \ $(SOCKLIB) $(PTHREADLIB) $(ATOMICLIB) -EXTRA_DIST = keywords.txt ipsec.conf ipsec.secrets Android.mk -MAINTAINERCLEANFILES = keywords.c -BUILT_SOURCES = keywords.c parser/parser.h +EXTRA_DIST = keywords.h keywords.txt ipsec.conf ipsec.secrets Android.mk +MAINTAINERCLEANFILES = keywords.h keywords.c +BUILT_SOURCES = keywords.h keywords.c parser/parser.h if USE_LOAD_WARNING AM_CPPFLAGS += -DLOAD_WARNING endif +keywords.h: $(srcdir)/keywords.h.in + $(AM_V_GEN) \ + sed \ + -e "s:\@GPERF_LEN_TYPE\@:$(GPERF_LEN_TYPE):" \ + $< > $@ + keywords.c: $(srcdir)/keywords.txt $(srcdir)/keywords.h $(AM_V_GEN) \ $(GPERF) -m 10 -C -G -D -t < $(srcdir)/keywords.txt > $@ diff --git a/src/starter/confread.c b/src/starter/confread.c index e78f2a70b2..b3e942facc 100644 --- a/src/starter/confread.c +++ b/src/starter/confread.c @@ -45,11 +45,6 @@ static const char esp_defaults[] = "aes128-sha256"; static const char firewall_defaults[] = IPSEC_SCRIPT " _updown iptables"; -/** - * Provided by GPERF - */ -extern const kw_entry_t *in_word_set(register const char*, register GPERF_LEN_TYPE); - /** * Process deprecated keywords */ diff --git a/src/starter/keywords.h b/src/starter/keywords.h.in similarity index 96% rename from src/starter/keywords.h rename to src/starter/keywords.h.in index 0cb46a7401..d2b08f2cf7 100644 --- a/src/starter/keywords.h +++ b/src/starter/keywords.h.in @@ -196,4 +196,8 @@ struct kw_entry_t { kw_token_t token; }; +#ifndef IN_GPERF_GENERATED_FILE +const kw_entry_t *in_word_set(register const char*, register @GPERF_LEN_TYPE@); +#endif + #endif /* _KEYWORDS_H_ */ diff --git a/src/starter/keywords.txt b/src/starter/keywords.txt index 3f92dc83f5..dd673bc7a7 100644 --- a/src/starter/keywords.txt +++ b/src/starter/keywords.txt @@ -16,6 +16,7 @@ #include +#define IN_GPERF_GENERATED_FILE #include "keywords.h" %} diff --git a/src/stroke/.gitignore b/src/stroke/.gitignore index 26c37a4a83..b6bf920c3e 100644 --- a/src/stroke/.gitignore +++ b/src/stroke/.gitignore @@ -1 +1,2 @@ stroke +stroke_keywords.[ch] diff --git a/src/stroke/Makefile.am b/src/stroke/Makefile.am index ed170bd080..e55e2030fd 100644 --- a/src/stroke/Makefile.am +++ b/src/stroke/Makefile.am @@ -4,13 +4,19 @@ stroke_SOURCES = \ stroke.c stroke_msg.h stroke_keywords.c stroke_keywords.h stroke_LDADD = $(top_builddir)/src/libstrongswan/libstrongswan.la $(SOCKLIB) -EXTRA_DIST = stroke_keywords.txt Android.mk -BUILT_SOURCES = stroke_keywords.c -MAINTAINERCLEANFILES = stroke_keywords.c +EXTRA_DIST = stroke_keywords.h.in stroke_keywords.txt Android.mk +BUILT_SOURCES = stroke_keywords.h stroke_keywords.c +MAINTAINERCLEANFILES = stroke_keywords.h stroke_keywords.c AM_CPPFLAGS = \ -I$(top_srcdir)/src/libstrongswan \ -DIPSEC_PIDDIR=\"${piddir}\" +stroke_keywords.h: $(srcdir)/stroke_keywords.h.in + $(AM_V_GEN) \ + sed \ + -e "s:\@GPERF_LEN_TYPE\@:$(GPERF_LEN_TYPE):" \ + $< > $@ + stroke_keywords.c: $(srcdir)/stroke_keywords.txt $(srcdir)/stroke_keywords.h $(AM_V_GEN) \ $(GPERF) -m 10 -D -C -G -t < $(srcdir)/stroke_keywords.txt > $@ diff --git a/src/stroke/stroke_keywords.h b/src/stroke/stroke_keywords.h.in similarity index 97% rename from src/stroke/stroke_keywords.h rename to src/stroke/stroke_keywords.h.in index 51caba68b8..2b5780adc6 100644 --- a/src/stroke/stroke_keywords.h +++ b/src/stroke/stroke_keywords.h.in @@ -73,6 +73,7 @@ typedef enum { typedef struct stroke_token stroke_token_t; -extern const stroke_token_t* in_word_set(register const char *str, register GPERF_LEN_TYPE len); +extern const stroke_token_t* in_word_set(register const char *str, + register @GPERF_LEN_TYPE@ len); #endif /* _STROKE_KEYWORDS_H_ */