1 |
1325 |
phoenix |
Warning!!! Warning!!! Warning!!! Warning!!! Warning!!! Warning!!!
|
2 |
|
|
Warning!!! Warning!!! Warning!!! Warning!!! Warning!!! Warning!!!
|
3 |
|
|
|
4 |
|
|
The programs in this directory are strictly cut-and-paste hack jobs to
|
5 |
|
|
extract the data I needed from glibc's locale database. I'm ashamed to
|
6 |
|
|
even let them into the light of day, and I consider them complete garbage.
|
7 |
|
|
|
8 |
|
|
However, they are currently necessary to build the data needed for the
|
9 |
|
|
locale support I've implemented, so I'm forced to include them here.
|
10 |
|
|
|
11 |
|
|
NOTE: While its possible to use this stuff for native != target arch,
|
12 |
|
|
you'll have to either write a converter to account for endianess and
|
13 |
|
|
struct padding issues, or run the mmap file generator on your target
|
14 |
|
|
arch. But all these programs will be rewritten at some point.
|
15 |
|
|
|
16 |
|
|
All that being said, LC_CTYPE support has been added and supports the
|
17 |
|
|
ctype.h and wctype.h function. Also, LC_TIME, LC_MONETARY, LC_NUMERIC,
|
18 |
|
|
and LC_MESSAGES are supported wrt SUSv3. localeconv() works in both
|
19 |
|
|
real and stub locale modes. nl_langinfo() currently only works with
|
20 |
|
|
real locales enabled. That will be fixed though. wc->mb unsupported
|
21 |
|
|
char replacement and basic translit support is on the way as well.
|
22 |
|
|
Finally, some basic 8-bit codeset LC_COLLATE support should be in place
|
23 |
|
|
in the next week or two (similar to what was in the previous locale
|
24 |
|
|
implementation).
|
25 |
|
|
|
26 |
|
|
Also, as one can probably guess, I'm working towards having the locale
|
27 |
|
|
data accessed via a shared mmap. That will allow non-mmu platforms
|
28 |
|
|
to use this without the current bloat.
|
29 |
|
|
|
30 |
|
|
Currently, the output of size for my locale_data.o file is
|
31 |
|
|
text data bss dec hex filename
|
32 |
|
|
59072 4 0 59076 e6c4 extra/locale/locale_data.o
|
33 |
|
|
which is for the C locale (automatic of course) + all codesets in
|
34 |
|
|
charmaps/ and all 268 locales in LOCALES. I estimate that the
|
35 |
|
|
translit support for those 8-bit codesets will add another 7-10k.
|
36 |
|
|
|
37 |
|
|
One difference of note is that the special case upper/lower mappings
|
38 |
|
|
in the turkish locale are currently not implemented. That will be
|
39 |
|
|
fixed.
|
40 |
|
|
|
41 |
|
|
Manuel
|
42 |
|
|
|
43 |
|
|
Warning!!! Warning!!! Warning!!! Warning!!! Warning!!! Warning!!!
|
44 |
|
|
Warning!!! Warning!!! Warning!!! Warning!!! Warning!!! Warning!!!
|
45 |
|
|
|
46 |
|
|
|
47 |
|
|
1) In the toplevel dir, 'make headers'.
|
48 |
|
|
|
49 |
|
|
2) Create a codesets.txt file in this dir listing the codesets you want
|
50 |
|
|
to support. The easiest way to do this is to edit the output of
|
51 |
|
|
'find ./charmaps -name "*.pairs" > codesets.txt'.
|
52 |
|
|
NOTE: UTF-8 support is always included if you build with wide chars enabled.
|
53 |
|
|
NOTE: The files in charmaps/ were created from glibc's charmap files
|
54 |
|
|
with the awk script at the end of this file. You can add others
|
55 |
|
|
but only single byte codesets are supported.
|
56 |
|
|
|
57 |
|
|
3) Create a locales.txt file to select the locales you want to support.
|
58 |
|
|
You can copy and edit the LOCALES file for example. Other locales could
|
59 |
|
|
added provided you've included the appropriate codesets in step 2.
|
60 |
|
|
NOTE: You have to have the approprite locales available for glibc!
|
61 |
|
|
|
62 |
|
|
4) Run make here.
|
63 |
|
|
|
64 |
|
|
5) Continue building uClibc from the toplevel dir.
|
65 |
|
|
|
66 |
|
|
|
67 |
|
|
|
68 |
|
|
|
69 |
|
|
Script used to generate the charmaps/*.pairs files:
|
70 |
|
|
|
71 |
|
|
cat $1 | awk 'BEGIN { i = 0 } ; { if ($1 == "CHARMAP") i=1 ; else if ($1 == "END") i=0 ; else if (i==1) { sub("/","0",$2) ; sub("","",$1) ; print "{", $2, ",", $1, "}," } }'
|