On 2017-02-13 I wrote: > If you have some more time to play with it, how about mechanically copying > the declaration from the generated file into lib/unicase/special-casing.h ? > I mean, to modify the module description with a command such as > > grep '^gl_unicase_special_lookup' $(srcdir)/unicase/special-casing-table.h > | sed -e 's/register //' -e 's/^/ /' -e 's/$/;/'
Since the gperf 3.0.x incompatiblity issue is coming up again, let me fix it: 2017-05-18 Bruno Haible <br...@clisp.org> unicase/special-casing: Fix incompatibility with gperf-3.0.4 (regression from 2017-02-13). * lib/unicase/special-casing.in.h: Renamed from lib/unicase/special-casing.h. * modules/unicase/special-casing (Files): Add lib/unicase/special-casing.in.h. Remove lib/unicase/special-casing.h. (Makefile.am): Add rule for generating unicase/special-casing.h. Update BUILT_SOURCES and MOSTLYCLEANFILES accordingly. * lib/unicase/special-casing.c: Include "unicase/special-casing.h", not "special-casing.h". * lib/unicase/u*.c: Likewise. diff --git a/modules/unicase/special-casing b/modules/unicase/special-casing index 0f863a3..a4a7fcf 100644 --- a/modules/unicase/special-casing +++ b/modules/unicase/special-casing @@ -2,7 +2,7 @@ Description: Special casing table. Files: -lib/unicase/special-casing.h +lib/unicase/special-casing.in.h lib/unicase/special-casing.c lib/unicase/special-casing-table.gperf @@ -22,6 +22,17 @@ MOSTLYCLEANFILES += unicase/special-casing-table.h-t MAINTAINERCLEANFILES += unicase/special-casing-table.h EXTRA_DIST += unicase/special-casing-table.h +# Generate special-casing.h with a declaration that depends on the gperf version. +unicase/special-casing.h: unicase/special-casing.in.h unicase/special-casing-table.h + $(AM_V_GEN)rm -f $@-t $@ && \ + declaration=`grep '^gl_unicase_special_lookup' $(srcdir)/unicase/special-casing-table.h | sed -e 's/register //g'` && \ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e "/gl_unicase_special_lookup/s/gl_unicase_special_lookup.*/$${declaration};/" $(srcdir)/unicase/special-casing.in.h; \ + } > $@-t && \ + mv -f $@-t $@ +BUILT_SOURCES += unicase/special-casing.h +MOSTLYCLEANFILES += unicase/special-casing.h unicase/special-casing.h-t + Include: "unicase/special-casing.h" diff --git a/lib/unicase/special-casing.c b/lib/unicase/special-casing.c index 029c578..384bb71 100644 --- a/lib/unicase/special-casing.c +++ b/lib/unicase/special-casing.c @@ -18,7 +18,7 @@ #include <config.h> /* Specification. */ -#include "special-casing.h" +#include "unicase/special-casing.h" #include <string.h> diff --git a/lib/unicase/u16-casemap.c b/lib/unicase/u16-casemap.c index aec4dd6..3ab5388 100644 --- a/lib/unicase/u16-casemap.c +++ b/lib/unicase/u16-casemap.c @@ -29,7 +29,7 @@ #include "uninorm.h" #include "caseprop.h" #include "context.h" -#include "special-casing.h" +#include "unicase/special-casing.h" #define FUNC u16_casemap #define UNIT uint16_t diff --git a/lib/unicase/u16-ct-casefold.c b/lib/unicase/u16-ct-casefold.c index 1e01d75..71cbf55 100644 --- a/lib/unicase/u16-ct-casefold.c +++ b/lib/unicase/u16-ct-casefold.c @@ -25,7 +25,7 @@ #include <stdlib.h> #include "unicasemap.h" -#include "special-casing.h" +#include "unicase/special-casing.h" #include "casefold.h" #define FUNC u16_ct_casefold diff --git a/lib/unicase/u16-ct-tolower.c b/lib/unicase/u16-ct-tolower.c index 76f4be2..9eea5e7 100644 --- a/lib/unicase/u16-ct-tolower.c +++ b/lib/unicase/u16-ct-tolower.c @@ -23,7 +23,7 @@ #include <stddef.h> #include "unicasemap.h" -#include "special-casing.h" +#include "unicase/special-casing.h" uint16_t * u16_ct_tolower (const uint16_t *s, size_t n, diff --git a/lib/unicase/u16-ct-totitle.c b/lib/unicase/u16-ct-totitle.c index e369462..158295f 100644 --- a/lib/unicase/u16-ct-totitle.c +++ b/lib/unicase/u16-ct-totitle.c @@ -31,7 +31,7 @@ #include "uninorm.h" #include "caseprop.h" #include "context.h" -#include "special-casing.h" +#include "unicase/special-casing.h" #define FUNC u16_ct_totitle #define UNIT uint16_t diff --git a/lib/unicase/u16-ct-toupper.c b/lib/unicase/u16-ct-toupper.c index b7f188d..40441a1 100644 --- a/lib/unicase/u16-ct-toupper.c +++ b/lib/unicase/u16-ct-toupper.c @@ -23,7 +23,7 @@ #include <stddef.h> #include "unicasemap.h" -#include "special-casing.h" +#include "unicase/special-casing.h" uint16_t * u16_ct_toupper (const uint16_t *s, size_t n, diff --git a/lib/unicase/u16-tolower.c b/lib/unicase/u16-tolower.c index a59c3ed..1477c18 100644 --- a/lib/unicase/u16-tolower.c +++ b/lib/unicase/u16-tolower.c @@ -23,7 +23,7 @@ #include <stddef.h> #include "unicasemap.h" -#include "special-casing.h" +#include "unicase/special-casing.h" uint16_t * u16_tolower (const uint16_t *s, size_t n, const char *iso639_language, diff --git a/lib/unicase/u16-toupper.c b/lib/unicase/u16-toupper.c index ccc9df7..87ad89d 100644 --- a/lib/unicase/u16-toupper.c +++ b/lib/unicase/u16-toupper.c @@ -23,7 +23,7 @@ #include <stddef.h> #include "unicasemap.h" -#include "special-casing.h" +#include "unicase/special-casing.h" uint16_t * u16_toupper (const uint16_t *s, size_t n, const char *iso639_language, diff --git a/lib/unicase/u32-casemap.c b/lib/unicase/u32-casemap.c index 2a03ac3..b2411eb 100644 --- a/lib/unicase/u32-casemap.c +++ b/lib/unicase/u32-casemap.c @@ -29,7 +29,7 @@ #include "uninorm.h" #include "caseprop.h" #include "context.h" -#include "special-casing.h" +#include "unicase/special-casing.h" #define FUNC u32_casemap #define UNIT uint32_t diff --git a/lib/unicase/u32-ct-casefold.c b/lib/unicase/u32-ct-casefold.c index 75fab2e..7d58aa5 100644 --- a/lib/unicase/u32-ct-casefold.c +++ b/lib/unicase/u32-ct-casefold.c @@ -25,7 +25,7 @@ #include <stdlib.h> #include "unicasemap.h" -#include "special-casing.h" +#include "unicase/special-casing.h" #include "casefold.h" #define FUNC u32_ct_casefold diff --git a/lib/unicase/u32-ct-tolower.c b/lib/unicase/u32-ct-tolower.c index a89a9e6..8daf165 100644 --- a/lib/unicase/u32-ct-tolower.c +++ b/lib/unicase/u32-ct-tolower.c @@ -23,7 +23,7 @@ #include <stddef.h> #include "unicasemap.h" -#include "special-casing.h" +#include "unicase/special-casing.h" uint32_t * u32_ct_tolower (const uint32_t *s, size_t n, diff --git a/lib/unicase/u32-ct-totitle.c b/lib/unicase/u32-ct-totitle.c index 1b5fc42..a9ea73f 100644 --- a/lib/unicase/u32-ct-totitle.c +++ b/lib/unicase/u32-ct-totitle.c @@ -31,7 +31,7 @@ #include "uninorm.h" #include "caseprop.h" #include "context.h" -#include "special-casing.h" +#include "unicase/special-casing.h" #define FUNC u32_ct_totitle #define UNIT uint32_t diff --git a/lib/unicase/u32-ct-toupper.c b/lib/unicase/u32-ct-toupper.c index ce26da9..4411dba 100644 --- a/lib/unicase/u32-ct-toupper.c +++ b/lib/unicase/u32-ct-toupper.c @@ -23,7 +23,7 @@ #include <stddef.h> #include "unicasemap.h" -#include "special-casing.h" +#include "unicase/special-casing.h" uint32_t * u32_ct_toupper (const uint32_t *s, size_t n, diff --git a/lib/unicase/u32-tolower.c b/lib/unicase/u32-tolower.c index 3a105e3..7d2aced 100644 --- a/lib/unicase/u32-tolower.c +++ b/lib/unicase/u32-tolower.c @@ -23,7 +23,7 @@ #include <stddef.h> #include "unicasemap.h" -#include "special-casing.h" +#include "unicase/special-casing.h" uint32_t * u32_tolower (const uint32_t *s, size_t n, const char *iso639_language, diff --git a/lib/unicase/u32-toupper.c b/lib/unicase/u32-toupper.c index f5832db..d93291d 100644 --- a/lib/unicase/u32-toupper.c +++ b/lib/unicase/u32-toupper.c @@ -23,7 +23,7 @@ #include <stddef.h> #include "unicasemap.h" -#include "special-casing.h" +#include "unicase/special-casing.h" uint32_t * u32_toupper (const uint32_t *s, size_t n, const char *iso639_language, diff --git a/lib/unicase/u8-casemap.c b/lib/unicase/u8-casemap.c index 7f11333..ca1b18a 100644 --- a/lib/unicase/u8-casemap.c +++ b/lib/unicase/u8-casemap.c @@ -29,7 +29,7 @@ #include "uninorm.h" #include "caseprop.h" #include "context.h" -#include "special-casing.h" +#include "unicase/special-casing.h" #define FUNC u8_casemap #define UNIT uint8_t diff --git a/lib/unicase/u8-ct-casefold.c b/lib/unicase/u8-ct-casefold.c index b22f245..5b64cf0 100644 --- a/lib/unicase/u8-ct-casefold.c +++ b/lib/unicase/u8-ct-casefold.c @@ -25,7 +25,7 @@ #include <stdlib.h> #include "unicasemap.h" -#include "special-casing.h" +#include "unicase/special-casing.h" #include "casefold.h" #define FUNC u8_ct_casefold diff --git a/lib/unicase/u8-ct-tolower.c b/lib/unicase/u8-ct-tolower.c index 169dc91..aff70dd 100644 --- a/lib/unicase/u8-ct-tolower.c +++ b/lib/unicase/u8-ct-tolower.c @@ -23,7 +23,7 @@ #include <stddef.h> #include "unicasemap.h" -#include "special-casing.h" +#include "unicase/special-casing.h" uint8_t * u8_ct_tolower (const uint8_t *s, size_t n, diff --git a/lib/unicase/u8-ct-totitle.c b/lib/unicase/u8-ct-totitle.c index cdee074..b74cc27 100644 --- a/lib/unicase/u8-ct-totitle.c +++ b/lib/unicase/u8-ct-totitle.c @@ -31,7 +31,7 @@ #include "uninorm.h" #include "caseprop.h" #include "context.h" -#include "special-casing.h" +#include "unicase/special-casing.h" #define FUNC u8_ct_totitle #define UNIT uint8_t diff --git a/lib/unicase/u8-ct-toupper.c b/lib/unicase/u8-ct-toupper.c index f6d9d76..7ddb046 100644 --- a/lib/unicase/u8-ct-toupper.c +++ b/lib/unicase/u8-ct-toupper.c @@ -23,7 +23,7 @@ #include <stddef.h> #include "unicasemap.h" -#include "special-casing.h" +#include "unicase/special-casing.h" uint8_t * u8_ct_toupper (const uint8_t *s, size_t n, diff --git a/lib/unicase/u8-tolower.c b/lib/unicase/u8-tolower.c index 0e38379..9681bd5 100644 --- a/lib/unicase/u8-tolower.c +++ b/lib/unicase/u8-tolower.c @@ -23,7 +23,7 @@ #include <stddef.h> #include "unicasemap.h" -#include "special-casing.h" +#include "unicase/special-casing.h" uint8_t * u8_tolower (const uint8_t *s, size_t n, const char *iso639_language, diff --git a/lib/unicase/u8-toupper.c b/lib/unicase/u8-toupper.c index 18b899d..6ddad44 100644 --- a/lib/unicase/u8-toupper.c +++ b/lib/unicase/u8-toupper.c @@ -23,7 +23,7 @@ #include <stddef.h> #include "unicasemap.h" -#include "special-casing.h" +#include "unicase/special-casing.h" uint8_t * u8_toupper (const uint8_t *s, size_t n, const char *iso639_language,