blob: 51fcde85b29357b3ffc0cd22a0463cc8b37ace8f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
TOPDIR = ../../
EXTRA_LOCALE_DIR:=${shell cd $(TOPDIR)/extra/locale && pwd}
include $(TOPDIR)Rules.mak
CFLAGS_wc8bit=-DCTYPE_PACKED=1
CFLAGS_mmap=
ifeq ($(strip $(UCLIBC_HAS_WCHAR)),y)
CFLAGS_wc8bit += -DDO_WIDE_CHAR=1
CFLAGS_mmap += -D__WCHAR_ENABLED=1
endif
all: links-target
codesets.txt:
@if [ ! -f codesets.txt ] ; then \
set -e; \
echo " "; \
echo "You do not have a codesets.txt file. Please create this "; \
echo "file in the extra/locale directory by running something like: "; \
echo -e " find $(EXTRA_LOCALE_DIR)/charmaps -name \"*.pairs\" > \\"; \
echo -e " $(EXTRA_LOCALE_DIR)/codesets.txt"; \
echo "and then edit that file to disable/enable the codesets you wish to support. "; \
echo " "; \
false; \
fi;
gen_wc8bit: gen_wc8bit.c
$(HOSTCC) $(HOSTCFLAGS) $(NATIVE_LDFLAGS) $(CFLAGS_wc8bit) $^ -o $@
c8tables.h: gen_wc8bit codesets.txt
./gen_wc8bit `cat codesets.txt`
gen_wctype: gen_wctype.c
$(HOSTCC) $(HOSTCFLAGS) $(NATIVE_LDFLAGS) $^ -o $@
# Warning! Beware tr_TR toupper/tolower exceptions!
wctables.h: gen_wctype
./gen_wctype en_US
gen_locale: gen_locale.c c8tables.h
$(HOSTCC) $(HOSTCFLAGS) $(NATIVE_LDFLAGS) gen_locale.c -o $@
# TODO: if no wide char support, we should auto-disable all UTF-8 locales
locale_tables.h: gen_locale locales.txt
./gen_locale locales.txt
lt_defines.h: locale_tables.h locale_collate.h
grep "^#define" locale_tables.h > lt_defines.h
grep "^#define __lc" locale_collate.h >> lt_defines.h
gen_collate: gen_collate.c
$(HOSTCC) $(HOSTCFLAGS) $(NATIVE_LDFLAGS) gen_collate.c -o $@
locale_collate.h: gen_collate locale_tables.h
grep COL_IDX_ locale_tables.h | sed -e "s/^.*COL_IDX_\([^, ]*\).*$$/\1/" | sort | uniq | xargs ./gen_collate
locales.txt:
@if [ ! -f locales.txt ] ; then \
set -e; \
echo " "; \
echo "You do not have a locales.txt file in the extra/locale "; \
echo "directory, Please copy the LOCALES file to locales.txt by "; \
echo "running something like: "; \
echo " cp $(EXTRA_LOCALE_DIR)/LOCALES \\ "; \
echo " $(EXTRA_LOCALE_DIR)/locales.txt "; \
echo "then edit locales.txt to disable/enable the locales you wish "; \
echo "to support. "; \
echo " "; \
false; \
fi;
# ifneq ($(TARGET_ARCH),$(HOST_ARCH))
# locale.mmap: gen_mmap
# echo Your locale.mmap file is either missing or out of date.
# echo The developmental code can only generate one for the
# echo target arch == native arch case. Sorry.
# else
# gen_mmap: gen_mmap.c c8tables.h wctables.h locale_tables.h
# gcc $(CFLAGS_mmap) -Os -Wall -static gen_mmap.c -o gen_mmap
# locale.mmap: gen_mmap
# ./gen_mmap
# endif
# lmmtolso: lmmtolso.c
# gcc -Os -Wall lmmtolso.c -o lmmtolso
# locale_data.c: lmmtolso locale.mmap
# ./lmmtolso
gen_ldc: gen_ldc.c c8tables.h wctables.h locale_tables.h locale_collate.h
$(HOSTCC) $(HOSTCFLAGS) $(NATIVE_LDFLAGS) $(CFLAGS_mmap) gen_ldc.c -o $@
#gen_ldc.c -o gen_ldc
locale_data.c: gen_ldc
./gen_ldc
locale_data.o: locale_data.c lt_defines.h
$(CC) $(CFLAGS_mmap) -c locale_data.c
$(STRIPTOOL) -x -R .note -R .comment locale_data.o
uClibc_locale_data.h: c8tables.h wctables.h lt_defines.h locale_mmap.h
grep -v "define __LC" lt_defines.h > uClibc_locale_data.h
cat c8tables.h wctables.h locale_mmap.h >> uClibc_locale_data.h
links-target: locale_data.o uClibc_locale_data.h
ln -sf ../../../extra/locale/locale_data.o ../../libc/misc/locale
cat uClibc_locale_data.h | awk 'BEGIN{i=1}{ if ( /WANT_/ ) i = /endif/ ; else if (i) print $0 }' > ../../include/bits/uClibc_locale_data.h
# cp uClibc_locale_data.h ../../libc/sysdeps/linux/common/bits/
pregen:
$(CC) $(CFLAGS_mmap) -c locale_data.c
$(STRIPTOOL) -x -R .note -R .comment locale_data.o
ln -sf ../../../extra/locale/locale_data.o ../../libc/misc/locale
cat uClibc_locale_data.h | awk 'BEGIN{i=1}{ if ( /WANT_/ ) i = /endif/ ; else if (i) print $0 }' > ../../include/bits/uClibc_locale_data.h
# cp uClibc_locale_data.h ../../libc/sysdeps/linux/common/bits/
clean:
rm -f *.[oa] *~ core
rm -f gen_wc8bit gen_wctype gen_locale gen_ldc gen_collate
rm -f c8tables.h wctables.h locale_tables.h lt_defines.h locale_collate.h
rm -f gen_mmap locale.mmap lmmtolso
rm -f locale_data.c locale_data.o uClibc_locale_data.h
.PHONY: pregen
|