]>
Commit | Line | Data |
---|---|---|
48d0341c | 1 | #!/bin/sh |
5e087c71 | 2 | # Generate test locale files. |
dff8da6b | 3 | # Copyright (C) 2000-2024 Free Software Foundation, Inc. |
a5707dad | 4 | # This file is part of the GNU C Library. |
41bdb6e2 | 5 | |
a5707dad | 6 | # The GNU C Library is free software; you can redistribute it and/or |
41bdb6e2 AJ |
7 | # modify it under the terms of the GNU Lesser General Public |
8 | # License as published by the Free Software Foundation; either | |
9 | # version 2.1 of the License, or (at your option) any later version. | |
10 | ||
a5707dad UD |
11 | # The GNU C Library is distributed in the hope that it will be useful, |
12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
41bdb6e2 AJ |
14 | # Lesser General Public License for more details. |
15 | ||
16 | # You should have received a copy of the GNU Lesser General Public | |
59ba27a6 | 17 | # License along with the GNU C Library; if not, see |
5a82c748 | 18 | # <https://www.gnu.org/licenses/>. |
a5707dad | 19 | |
57c69bef DL |
20 | set -e |
21 | ||
5e087c71 | 22 | common_objpfx="$1"; shift |
8540f6d2 JM |
23 | localedef_before_env="$1"; shift |
24 | run_program_env="$1"; shift | |
25 | localedef_after_env="$1"; shift | |
5e087c71 | 26 | locfile="$1"; shift |
a5707dad UD |
27 | |
28 | generate_locale () | |
29 | { | |
fcdc67f9 RM |
30 | charmap=$1 |
31 | input=$2 | |
32 | out=$3 | |
02eec681 | 33 | flags=$4 |
f16491eb CD |
34 | ret=0 |
35 | ${localedef_before_env} ${run_program_env} I18NPATH=../localedata \ | |
02eec681 | 36 | ${localedef_after_env} $flags -f $charmap -i $input \ |
f16491eb | 37 | ${common_objpfx}localedata/$out || ret=$? |
02eec681 | 38 | if [ $ret -eq 0 ]; then |
fcdc67f9 RM |
39 | # The makefile checks the timestamp of the LC_CTYPE file, |
40 | # but localedef won't have touched it if it was able to | |
41 | # hard-link it to an existing file. | |
42 | touch ${common_objpfx}localedata/$out/LC_CTYPE | |
43 | else | |
44 | echo "Charmap: \"${charmap}\" Inputfile: \"${input}\"" \ | |
45 | "Outputdir: \"${out}\" failed" | |
46 | exit 1 | |
47 | fi | |
a5707dad UD |
48 | } |
49 | ||
9f835f5f | 50 | locfile=`echo $locfile|sed 's|.*/\([^/]*/LC_CTYPE\)|\1|'` |
684fbab7 CD |
51 | locale=`echo $locfile|sed 's|\([^.]*\).*/LC_CTYPE|\1|'` |
52 | charmap=`echo $locfile|sed -e 's|[^.]*\([^@ ]*\)\(@[^ ]*\)\?/LC_CTYPE|\1|' -e 's|^\.||g'` | |
53 | modifier=`echo $locfile|sed 's|[^.]*\([^@ ]*\)\(@[^ ]*\)\?/LC_CTYPE|\2|'` | |
5e087c71 UD |
54 | |
55 | echo "Generating locale $locale.$charmap: this might take a while..." | |
f16491eb | 56 | |
1c7a3456 CD |
57 | # Do not force output with '-c', all locales should compile without |
58 | # warning or errors. There is likewise no need to run quietly with | |
59 | # '--quiet' since all locales should compile without additional | |
60 | # diagnostics. If there are messages printed then we want to see | |
61 | # them, fix them, and the associated error or warning. During | |
62 | # development it may be beneficialy to put '--quiet -c' here to allow | |
63 | # you to develop in-progress locales. | |
64 | flags="" | |
02eec681 | 65 | |
684fbab7 CD |
66 | charmap_real="$charmap" |
67 | ||
68 | # If no character map is specified then we fall back to UTF-8. | |
69 | if [ -z "$charmap" ]; then | |
70 | charmap_real="UTF-8" | |
71 | fi | |
72 | ||
f16491eb CD |
73 | # For SJIS the charmap is SHIFT_JIS. We just want the locale to have |
74 | # a slightly nicer name instead of using "*.SHIFT_SJIS", but that | |
75 | # means we need a mapping here. | |
f16491eb CD |
76 | if [ "$charmap" = "SJIS" ]; then |
77 | charmap_real="SHIFT_JIS" | |
78 | fi | |
79 | ||
02eec681 CD |
80 | # In addition to this the SHIFT_JIS character maps are not ASCII |
81 | # compatible so we must use `--no-warnings=ascii' to disable the | |
82 | # warning. See localedata/Makefile $(INSTALL-SUPPORTED-LOCALES) | |
83 | # for the same logic. | |
84 | if [ "$charmap_real" = 'SHIFT_JIS' ] \ | |
0a9d1d62 | 85 | || [ "$charmap_real" = 'SHIFT_JISX0213' ]; then |
02eec681 CD |
86 | flags="$flags --no-warnings=ascii" |
87 | fi | |
88 | ||
684fbab7 CD |
89 | # If the character map is not specified then we output a locale |
90 | # with the just the name of the locale e.g. eo, en_US. This is | |
91 | # used for test locales that act as fallbacks. | |
92 | output_file="$locale.$charmap$modifier" | |
93 | if [ -z "$charmap" ]; then | |
94 | output_file="$locale" | |
95 | fi | |
96 | ||
97 | generate_locale $charmap_real $locale$modifier $output_file "$flags" |