diff options
author | Felix Fietkau <nbd@openwrt.org> | 2014-11-30 22:22:24 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2014-11-30 22:22:24 +0000 |
commit | 309cdd61014c7018a48ffae85487caa6ae02edef (patch) | |
tree | 305cb43fe25edd0b408fbf1c4d102f31034321e2 | |
parent | 3f130f7a457dfd728786329d8dc49961a38b3913 (diff) | |
download | upstream-309cdd61014c7018a48ffae85487caa6ae02edef.tar.gz upstream-309cdd61014c7018a48ffae85487caa6ae02edef.tar.bz2 upstream-309cdd61014c7018a48ffae85487caa6ae02edef.zip |
toolchain: uClibc: fix compile with full language support enabled (fixes #13095)
When building with CONFIG_BUILD_NLS=y, uClibc fails to compile with following
message (or similar, according to https://dev.openwrt.org/ticket/13095):
-snip-
...
Warning: adding UNDEFINED entry for ar_AE
Warning: adding UNDEFINED entry for am_ET
Warning: adding UNDEFINED entry for af_ZA
grep "^#define" extra/locale/locale_tables.h > extra/locale/lt_defines.h
grep "^#define __lc" extra/locale/locale_collate.h >> extra/locale/lt_defines.h
gcc extra/locale/gen_wctype.c -o extra/locale/gen_wctype -Os -Wall -D__UCLIBC_GEN_LOCALE -I./
extra/locale/gen_wctype.c: In function 'main':
extra/locale/gen_wctype.c:684:2: warning: #warning fix the upper bound on the upper/lower tables... save 200 bytes or so [-Wcpp]
for locale in en_US en_GB; do \
extra/locale/gen_wctype $locale > extra/locale/wctables.h || \
extra/locale/gen_wctype $locale.UTF-8 > extra/locale/wctables.h || \
extra/locale/gen_wctype $locale.iso8859-1 > extra/locale/wctables.h && break; \
done
make[4]: *** [extra/locale/wctables.h] Error 1
-snap-
This seems to also depend on the host system used, e.g. running a fresh
checkout on a Debian 7.6 system triggered this error, while running the
very same stuff on an Ubuntu 12.10 Quantal Quetzal does not trigger it.
This is the configuration I used:
-snip-
buildbot@buildbot:~/openwrt-nls.git$ scripts/diffconfig.sh
CONFIG_TARGET_ar71xx=y
CONFIG_TARGET_ar71xx_generic=y
CONFIG_TARGET_ar71xx_generic_Default=y
CONFIG_DEVEL=y
CONFIG_BUILD_NLS=y
CONFIG_DOWNLOAD_FOLDER="/srv/downloads/downloads"
-snap-
In the ticket mentioned above, a patch is referenced which solves this issue.
Note, that this issue is also present on 14.07.
Signed-off-by: Michael Heimpold <mhei@heimpold.de>
SVN-Revision: 43446
-rw-r--r-- | toolchain/uClibc/patches-0.9.33.2/991-gen_wctype.patch | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/toolchain/uClibc/patches-0.9.33.2/991-gen_wctype.patch b/toolchain/uClibc/patches-0.9.33.2/991-gen_wctype.patch new file mode 100644 index 0000000000..b3db8cf5da --- /dev/null +++ b/toolchain/uClibc/patches-0.9.33.2/991-gen_wctype.patch @@ -0,0 +1,183 @@ +--- a/extra/locale/gen_wctype.c ++++ b/extra/locale/gen_wctype.c +@@ -227,11 +227,12 @@ + ++verbose; + continue; + } +- if (!setlocale(LC_CTYPE, *argv)) { ++ /* setlocale might be just a stub */ ++ /* if (!setlocale(LC_CTYPE, *argv)) { + verbose_msg("setlocale(LC_CTYPE,%s) failed! Skipping this locale...\n", *argv); + continue; + } +- ++ */ + if (!(totitle = wctrans("totitle"))) { + verbose_msg("no totitle transformation.\n"); + } +@@ -306,43 +307,43 @@ + #endif + #if 0 + if (c < 256) { +- unsigned int glibc; ++ unsigned int curr_stdclib; + +- glibc = 0; +- if (isalnum(c)) ++glibc; glibc <<= 1; +- if (isalpha(c)) ++glibc; glibc <<= 1; +- if (isblank(c)) ++glibc; glibc <<= 1; +- if (iscntrl(c)) ++glibc; glibc <<= 1; +- if (isdigit(c)) ++glibc; glibc <<= 1; +- if (isgraph(c)) ++glibc; glibc <<= 1; +- if (islower(c)) ++glibc; glibc <<= 1; +- if (isprint(c)) ++glibc; glibc <<= 1; +- if (ispunct(c)) ++glibc; glibc <<= 1; +- if (isspace(c)) ++glibc; glibc <<= 1; +- if (isupper(c)) ++glibc; glibc <<= 1; +- if (isxdigit(c)) ++glibc; +- verbose_msg("%#8x : ctype %#4x\n", c, glibc); ++ curr_stdclib = 0; ++ if (isalnum(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (isalpha(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (isblank(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iscntrl(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (isdigit(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (isgraph(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (islower(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (isprint(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (ispunct(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (isspace(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (isupper(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (isxdigit(c)) ++curr_stdclib; ++ verbose_msg("%#8x : ctype %#4x\n", c, curr_stdclib); + } + #endif + #if 1 + /* Paranoid checking... */ + { +- unsigned int glibc; ++ unsigned int curr_stdclib; + unsigned int mine; + +- glibc = 0; +- if (iswalnum(c)) ++glibc; glibc <<= 1; +- if (iswalpha(c)) ++glibc; glibc <<= 1; +- if (iswblank(c)) ++glibc; glibc <<= 1; +- if (iswcntrl(c)) ++glibc; glibc <<= 1; +- if (iswdigit(c)) ++glibc; glibc <<= 1; +- if (iswgraph(c)) ++glibc; glibc <<= 1; +- if (iswlower(c)) ++glibc; glibc <<= 1; +- if (iswprint(c)) ++glibc; glibc <<= 1; +- if (iswpunct(c)) ++glibc; glibc <<= 1; +- if (iswspace(c)) ++glibc; glibc <<= 1; +- if (iswupper(c)) ++glibc; glibc <<= 1; +- if (iswxdigit(c)) ++glibc; ++ curr_stdclib = 0; ++ if (iswalnum(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswalpha(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswblank(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswcntrl(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswdigit(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswgraph(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswlower(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswprint(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswpunct(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswspace(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswupper(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswxdigit(c)) ++curr_stdclib; + + mine = 0; + if (mywalnum(d,c)) ++mine; mine <<= 1; +@@ -358,15 +359,15 @@ + if (mywupper(d,c)) ++mine; mine <<= 1; + if (mywxdigit(d,c)) ++mine; + +- if (glibc != mine) { +- verbose_msg("%#8x : glibc %#4x != %#4x mine %u\n", c, glibc, mine, d); ++ if (curr_stdclib != mine) { ++ verbose_msg("%#8x : curr_stdclib %#4x != %#4x mine %u\n", c, curr_stdclib, mine, d); + return EXIT_FAILURE; + } + #if 0 + if (iswctype(c,is_comb) || iswctype(c,is_comb3)) { + /* if (!iswpunct(c)) { */ + verbose_msg("%#8x : %d %d %#4x\n", +- c, iswctype(c,is_comb),iswctype(c,is_comb3), glibc); ++ c, iswctype(c,is_comb),iswctype(c,is_comb3), curr_stdclib); + /* } */ + } + #endif +@@ -553,7 +554,7 @@ + for (c = 0; c <= 0x10ffffUL; c++) + #endif + { +- unsigned int glibc; ++ unsigned int curr_stdclib; + unsigned int mine; + unsigned int upper, lower; + +@@ -568,19 +569,19 @@ + } + #endif + #endif +- glibc = 0; +- if (iswalnum(c)) ++glibc; glibc <<= 1; +- if (iswalpha(c)) ++glibc; glibc <<= 1; +- if (iswblank(c)) ++glibc; glibc <<= 1; +- if (iswcntrl(c)) ++glibc; glibc <<= 1; +- if (iswdigit(c)) ++glibc; glibc <<= 1; +- if (iswgraph(c)) ++glibc; glibc <<= 1; +- if (iswlower(c)) ++glibc; glibc <<= 1; +- if (iswprint(c)) ++glibc; glibc <<= 1; +- if (iswpunct(c)) ++glibc; glibc <<= 1; +- if (iswspace(c)) ++glibc; glibc <<= 1; +- if (iswupper(c)) ++glibc; glibc <<= 1; +- if (iswxdigit(c)) ++glibc; ++ curr_stdclib = 0; ++ if (iswalnum(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswalpha(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswblank(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswcntrl(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswdigit(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswgraph(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswlower(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswprint(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswpunct(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswspace(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswupper(c)) ++curr_stdclib; curr_stdclib <<= 1; ++ if (iswxdigit(c)) ++curr_stdclib; + + { + unsigned int u; +@@ -630,8 +631,8 @@ + if (mywupper(d,c)) ++mine; mine <<= 1; + if (mywxdigit(d,c)) ++mine; + +- if (glibc != mine) { +- verbose_msg("%#8x : glibc %#4x != %#4x mine %d\n", c, glibc, mine, d); ++ if (curr_stdclib != mine) { ++ verbose_msg("%#8x : curr_stdclib %#4x != %#4x mine %d\n", c, curr_stdclib, mine, d); + if (c < 0x30000UL) { + verbose_msg("sc=%#x u=%#x n=%#x i0=%#x i1=%#x\n", sc, u, n, i0, i1); + } +@@ -655,17 +656,17 @@ + } + + if (towupper(c) != upper) { +- verbose_msg("%#8x : towupper glibc %#4x != %#4x mine\n", ++ verbose_msg("%#8x : towupper curr_stdclib %#4x != %#4x mine\n", + c, towupper(c), upper); + } + + if (towlower(c) != lower) { +- verbose_msg("%#8x : towlower glibc %#4x != %#4x mine i0 = %d\n", ++ verbose_msg("%#8x : towlower curr_stdclib %#4x != %#4x mine i0 = %d\n", + c, towlower(c), lower, i0); + } + + if (totitle && ((tt = towctrans(c, totitle)) != upper)) { +- verbose_msg("%#8x : totitle glibc %#4lx != %#4x mine i0 = %d\n", ++ verbose_msg("%#8x : totitle curr_stdclib %#4lx != %#4x mine i0 = %d\n", + c, tt, upper, i0); + } + } |