summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2013-12-12 16:07:05 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-12-12 23:10:51 +0000
commit07ce0296bbc4c09469ae13bf9f91d19496b60cc6 (patch)
tree83e5857ef30e957a486c8aee6c58f58d63b6eb42
parentb1b0c315153a717d3b951f0264e2e52f33dedef1 (diff)
downloadpoky-07ce0296bbc4c09469ae13bf9f91d19496b60cc6.tar.gz
external-sourcery-toolchain: remove
As per discussion on the mailing list [1], remove this largely unmaintained external toolchain support in favour of the maintained version in meta-sourcery [2]. Also correct the example and documentation.conf entries for TCMODE to match up with this change. [1] http://lists.openembedded.org/pipermail/openembedded-core/2013-December/087133.html [2] https://github.com/MentorEmbedded/meta-sourcery/ (From OE-Core rev: 7603b15415301679bccbcb89af688c211704a43a) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/conf/distro/include/csl-versions.inc107
-rw-r--r--meta/conf/distro/include/tcmode-external-csl.inc2
-rw-r--r--meta/conf/distro/include/tcmode-external-sourcery.inc128
-rw-r--r--meta/conf/documentation.conf2
-rw-r--r--meta/recipes-core/meta/external-sourcery-toolchain.bb149
-rw-r--r--meta/recipes-core/meta/external-sourcery-toolchain/SUPPORTED257
6 files changed, 1 insertions, 644 deletions
diff --git a/meta/conf/distro/include/csl-versions.inc b/meta/conf/distro/include/csl-versions.inc
deleted file mode 100644
index 3938bf7ed2..0000000000
--- a/meta/conf/distro/include/csl-versions.inc
+++ /dev/null
@@ -1,107 +0,0 @@
1def csl_run(d, cmd, *args):
2 import bb.process
3 import subprocess
4
5 topdir = d.getVar('TOPDIR', True)
6 toolchain_path = d.getVar('EXTERNAL_TOOLCHAIN', True)
7 if not toolchain_path:
8 return 'UNKNOWN', 'UNKNOWN'
9
10 target_prefix = d.getVar('TARGET_PREFIX', True)
11 path = os.path.join(toolchain_path, 'bin', target_prefix + cmd)
12 args = [path] + list(args)
13
14 return bb.process.run(args, cwd=topdir, stderr=subprocess.PIPE)
15
16def csl_get_version(d):
17 try:
18 stdout, stderr = csl_run(d, 'gcc', '-v')
19 except bb.process.CmdError as exc:
20 bb.error('Failed to obtain CodeSourcery toolchain version: %s' % exc)
21 bb.error('Make sure that MACHINE is set correctly in your local.conf and the toolchain supports %s.' % d.getVar("TARGET_ARCH", True))
22 return 'UNKNOWN'
23 else:
24 last_line = stderr.splitlines()[-1]
25 return last_line
26
27def csl_get_main_version(d):
28 version = csl_get_version(d)
29 if version != 'UNKNOWN':
30 return version.split()[-1].rstrip(')')
31 else:
32 return version
33
34def csl_get_gcc_version(d):
35 version = csl_get_version(d)
36 if version != 'UNKNOWN':
37 return version.split()[2]
38 else:
39 return version
40
41def csl_get_libc_version(d):
42 syspath = d.expand('${EXTERNAL_TOOLCHAIN}/${CSL_TARGET_SYS}')
43 if not syspath:
44 return 'UNKNOWN'
45
46 libpath = syspath + '/libc/lib/'
47 if not os.path.exists(libpath):
48 libpath = syspath + '/libc/sgxx-glibc/lib/'
49
50 if os.path.exists(libpath):
51 for file in os.listdir(libpath):
52 if file.find('libc-') == 0:
53 return file[5:-3]
54 return 'UNKNOWN'
55
56def csl_get_kernel_version(d):
57 syspath = d.expand('${EXTERNAL_TOOLCHAIN}/${CSL_TARGET_SYS}')
58 if not syspath:
59 return 'UNKNOWN'
60
61 vf = syspath + '/libc/usr/include/linux/version.h'
62 if not os.path.exists(vf):
63 vf = syspath + '/libc/sgxx-glibc/usr/include/linux/version.h'
64
65 try:
66 f = open(vf, 'r')
67 except (OSError, IOError):
68 return 'UNKNOWN'
69
70 l = f.readlines();
71 f.close();
72 for s in l:
73 if s.find('LINUX_VERSION_CODE') > 0:
74 ver = int(s.split()[2])
75 maj = ver / 65536
76 ver = ver % 65536
77 min = ver / 256
78 ver = ver % 256
79 return str(maj)+'.'+str(min)+'.'+str(ver)
80 return 'UNKNOWN'
81
82def csl_get_gdb_version(d):
83 try:
84 stdout, stderr = csl_run(d, 'gdb', '-v')
85 except bb.process.CmdError:
86 return 'UNKNOWN'
87 else:
88 first_line = stdout.splitlines()[0]
89 return first_line.split()[-1]
90
91python csl_version_handler () {
92 d = e.data
93 ld = d.createCopy()
94 ld.finalize()
95
96 d.setVar('CSL_VER_MAIN', csl_get_main_version(ld))
97 d.setVar('CSL_VER_GCC', csl_get_gcc_version(ld))
98 d.setVar('CSL_VER_LIBC', csl_get_libc_version(ld))
99 d.setVar('CSL_VER_KERNEL', csl_get_kernel_version(ld))
100 d.setVar('CSL_VER_GDB', csl_get_gdb_version(ld))
101}
102addhandler csl_version_handler
103csl_version_handler[eventmask] = "bb.event.ConfigParsed"
104
105# Ensure that any variable which includes the --sysroot (CC, CXX, etc) also
106# depends on the toolchain version
107TOOLCHAIN_OPTIONS[vardeps] += "CSL_VER_MAIN CSL_VER_GCC"
diff --git a/meta/conf/distro/include/tcmode-external-csl.inc b/meta/conf/distro/include/tcmode-external-csl.inc
deleted file mode 100644
index 9e530ab1e7..0000000000
--- a/meta/conf/distro/include/tcmode-external-csl.inc
+++ /dev/null
@@ -1,2 +0,0 @@
1TCMODE = "external-sourcery"
2require conf/distro/include/tcmode-${TCMODE}.inc
diff --git a/meta/conf/distro/include/tcmode-external-sourcery.inc b/meta/conf/distro/include/tcmode-external-sourcery.inc
deleted file mode 100644
index 5590f7a1e9..0000000000
--- a/meta/conf/distro/include/tcmode-external-sourcery.inc
+++ /dev/null
@@ -1,128 +0,0 @@
1#
2# Configuration to use external Sourcery G++ toolchain
3#
4
5EXTERNAL_TOOLCHAIN ?= "/usr/local/csl/${TARGET_ARCH}"
6
7TOOLCHAIN_PATH_ADD = "${EXTERNAL_TOOLCHAIN}/bin:"
8PATH =. "${TOOLCHAIN_PATH_ADD}"
9
10CSL_TARGET_SYS_powerpc ?= "powerpc-linux-gnu"
11CSL_TARGET_SYS_powerpc64 ?= "powerpc-linux-gnu"
12CSL_TARGET_SYS_arm ?= "arm-none-linux-gnueabi"
13CSL_TARGET_SYS_mips ?= "mips-linux-gnu"
14CSL_TARGET_SYS_mipsel ?= "mips-linux-gnu"
15CSL_TARGET_SYS_mips64 ?= "mips-linux-gnu"
16CSL_TARGET_SYS_i686 ?= "i686-pc-linux-gnu"
17CSL_TARGET_SYS_i586 ?= "i686-pc-linux-gnu"
18CSL_TARGET_SYS = "${TARGET_SYS}"
19
20TARGET_PREFIX = "${CSL_TARGET_SYS}-"
21
22PREFERRED_PROVIDER_linux-libc-headers = "external-sourcery-toolchain"
23PREFERRED_PROVIDER_linux-libc-headers-dev = "external-sourcery-toolchain"
24PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "external-sourcery-toolchain"
25PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = "external-sourcery-toolchain"
26PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-intermediate = "external-sourcery-toolchain"
27PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "external-sourcery-toolchain"
28PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = "external-sourcery-toolchain"
29PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "external-sourcery-toolchain"
30PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-initial = "external-sourcery-toolchain"
31PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}compilerlibs = "external-sourcery-toolchain"
32PREFERRED_PROVIDER_libgcc = "external-sourcery-toolchain"
33PREFERRED_PROVIDER_eglibc = "external-sourcery-toolchain"
34PREFERRED_PROVIDER_virtual/libc = "external-sourcery-toolchain"
35PREFERRED_PROVIDER_virtual/libintl = "external-sourcery-toolchain"
36PREFERRED_PROVIDER_virtual/libiconv = "external-sourcery-toolchain"
37PREFERRED_PROVIDER_glibc-thread-db = "external-sourcery-toolchain"
38PREFERRED_PROVIDER_virtual/linux-libc-headers = "external-sourcery-toolchain"
39PREFERRED_PROVIDER_virtual/linux-libc-headers-dev = "external-sourcery-toolchain"
40PREFERRED_PROVIDER_gdbserver ??= "external-sourcery-toolchain"
41
42# No need to re-compile the locale files
43GLIBC_INTERNAL_USE_BINARY_LOCALE = "precompiled"
44ENABLE_BINARY_LOCALE_GENERATION = ""
45
46TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_HOST}"
47
48# Point to the appropriate multilib sysroot from the external toolchain, whose
49# files will be extracted into the OE sysroot
50def exttc_run(d, cmd):
51 try:
52 return bb.process.run(cmd, shell=True, env={'PATH': d.getVar('PATH', True)})[0].rstrip()
53 except (OSError, bb.process.CmdError):
54 return ''
55
56EXTERNAL_TOOLCHAIN_SYSROOT_CMD = "${TARGET_PREFIX}gcc ${TARGET_CC_ARCH} -print-sysroot"
57EXTERNAL_TOOLCHAIN_SYSROOT ??= "${@exttc_run(d, EXTERNAL_TOOLCHAIN_SYSROOT_CMD)}"
58
59# These bits are here temporarily to sidestep the need to use a separate set
60# of tune files to pass the appropriate multilib selection arguments to the
61# sourcery toolchain, as is needed to extract the sysroot content.
62TUNE_CCARGS_append_x86 = " -msgxx-glibc"
63
64CSL_MULTILIB_ARGS[ppce500] ?= "-te500v1"
65CSL_MULTILIB_ARGS[ppce500mc] ?= "-te500mc"
66CSL_MULTILIB_ARGS[ppce500v2] ?= "-te500v2"
67CSL_MULTILIB_ARGS[ppce600] ?= "-te600"
68
69def csl_multilib_arg(d):
70 argument = d.getVarFlag('CSL_MULTILIB_ARGS', d.getVar('DEFAULTTUNE', True) or '')
71 if argument:
72 return argument
73 else:
74 return ''
75
76EXTERNAL_TOOLCHAIN_SYSROOT_CMD += "${@csl_multilib_arg(d)}"
77
78
79# Unfortunately, the CSL ia32 toolchain has non-prefixed binaries in its
80# bindir (e.g. gcc, ld). To avoid this messing up our build, we avoid adding
81# this bindir to our PATH, and instead add symlinks to the prefixed binaries
82# to our staging toolchain bindir.
83
84python toolchain_metadata_setup () {
85 d = e.data
86
87 l = d.createCopy()
88 l.finalize()
89 if os.path.exists(bb.data.expand('${EXTERNAL_TOOLCHAIN}/bin/gcc', l)):
90 d.setVar('TOOLCHAIN_PATH_ADD', '')
91}
92addhandler toolchain_metadata_setup
93toolchain_metadata_setup[eventmask] = "bb.event.ConfigParsed"
94
95python toolchain_setup () {
96 d = e.data
97
98 if not d.getVar('TOOLCHAIN_PATH_ADD', True):
99 populate_toolchain_links(d)
100}
101addhandler toolchain_setup
102toolchain_setup[eventmask] = "bb.event.BuildStarted"
103
104def populate_toolchain_links(d):
105 import errno
106 from glob import glob
107
108 d = d.createCopy()
109 d.finalize()
110
111 pattern = d.expand('${EXTERNAL_TOOLCHAIN}/bin/${TARGET_PREFIX}*')
112 files = glob(pattern)
113 if not files:
114 bb.fatal("Unable to populate toolchain binary symlinks in %s" % pattern)
115
116 bindir = d.getVar('STAGING_BINDIR_TOOLCHAIN', True)
117 bb.utils.mkdirhier(bindir)
118 for f in files:
119 base = os.path.basename(f)
120 newpath = os.path.join(bindir, base)
121 try:
122 os.symlink(f, newpath)
123 except OSError as exc:
124 if exc.errno == errno.EEXIST:
125 break
126 bb.fatal("Unable to populate toolchain binary symlink for %s: %s" % (newpath, exc))
127
128require conf/distro/include/csl-versions.inc
diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf
index a40b0b87da..c96ddd31bf 100644
--- a/meta/conf/documentation.conf
+++ b/meta/conf/documentation.conf
@@ -260,7 +260,7 @@ TARGET_OS[doc] = "Specifies the target's operating system."
260TARGET_PREFIX[doc] = "The prefix for the cross compile toolchain. E.g arm-linux- ." 260TARGET_PREFIX[doc] = "The prefix for the cross compile toolchain. E.g arm-linux- ."
261TARGET_SYS[doc] = "The target system is composed out of TARGET_ARCH,TARGET_VENDOR and TARGET_OS." 261TARGET_SYS[doc] = "The target system is composed out of TARGET_ARCH,TARGET_VENDOR and TARGET_OS."
262TCLIBC[doc] = "Specifies which variant of the GNU standard C library (libc) to use during the build process. You can select eglibc or uclibc." 262TCLIBC[doc] = "Specifies which variant of the GNU standard C library (libc) to use during the build process. You can select eglibc or uclibc."
263TCMODE[doc] = "The toolchain selector. It selects the external toolchain built using the OpenEmbedded build system or a few supported combinations of the upstream GCC or CodeSourcery Labs toolchain." 263TCMODE[doc] = "Enables an external toolchain (where provided by an additional layer) if set to a value other than 'default'."
264TEST_IMAGE[doc] = "Enable test booting of virtual machine images under the qemu emulator after any root filesystems are created and run tests against those images." 264TEST_IMAGE[doc] = "Enable test booting of virtual machine images under the qemu emulator after any root filesystems are created and run tests against those images."
265TIME[doc] = "The time the build was started HMS" 265TIME[doc] = "The time the build was started HMS"
266TMPDIR[doc] = "This variable is the temporary directory the OpenEmbedded build system uses when it does its work building images. By default, the TMPDIR variable is named tmp within the Build Directory." 266TMPDIR[doc] = "This variable is the temporary directory the OpenEmbedded build system uses when it does its work building images. By default, the TMPDIR variable is named tmp within the Build Directory."
diff --git a/meta/recipes-core/meta/external-sourcery-toolchain.bb b/meta/recipes-core/meta/external-sourcery-toolchain.bb
deleted file mode 100644
index 41d86d628d..0000000000
--- a/meta/recipes-core/meta/external-sourcery-toolchain.bb
+++ /dev/null
@@ -1,149 +0,0 @@
1require recipes-core/eglibc/eglibc-package.inc
2
3INHIBIT_DEFAULT_DEPS = "1"
4
5# License applies to this recipe code, not the toolchain itself
6SUMMARY = "External Sourcery G++ toolchain"
7LICENSE = "MIT"
8LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
9 file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
10
11PROVIDES += "\
12 linux-libc-headers \
13 virtual/${TARGET_PREFIX}gcc \
14 virtual/${TARGET_PREFIX}g++ \
15 virtual/${TARGET_PREFIX}gcc-initial \
16 virtual/${TARGET_PREFIX}gcc-intermediate \
17 virtual/${TARGET_PREFIX}binutils \
18 virtual/${TARGET_PREFIX}libc-for-gcc \
19 virtual/${TARGET_PREFIX}libc-initial \
20 virtual/${TARGET_PREFIX}compilerlibs \
21 virtual/libc \
22 virtual/libintl \
23 virtual/libiconv \
24 glibc-thread-db \
25 libgcc \
26 eglibc \
27 virtual/linux-libc-headers \
28"
29PV = "${CSL_VER_MAIN}"
30PR = "r7"
31
32#SRC_URI = "http://www.codesourcery.com/public/gnu_toolchain/${CSL_TARGET_SYS}/arm-${PV}-${TARGET_PREFIX}i686-pc-linux-gnu.tar.bz2"
33
34SRC_URI = "file://SUPPORTED"
35
36do_install() {
37 # Use optimized files if available
38 sysroot="${EXTERNAL_TOOLCHAIN_SYSROOT}"
39
40 cp -a $sysroot${base_libdir}/. ${D}${base_libdir}
41 cp -a $sysroot/etc/. ${D}${sysconfdir}
42 cp -a $sysroot/sbin/. ${D}${base_sbindir}
43
44 install -d ${D}/usr
45 for usr_element in bin libexec sbin share ${base_libdir}; do
46 usr_path=$sysroot/usr/$usr_element
47 cp -a $usr_path ${D}/usr/
48 done
49 for datadir_element in man info; do
50 datadir_path=$sysroot/usr/$datadir_element
51 if [ -e $datadir_path ]; then
52 cp -a $datadir_path ${D}${datadir}/
53 fi
54 done
55
56 # Some toolchains have headers under the core specific area
57 if [ -e $sysroot/usr/include ]; then
58 cp -a $sysroot/usr/include/. ${D}${includedir}
59 else
60 cp -a $sysroot/../usr/include/. ${D}${includedir}
61 fi
62
63 rm ${D}${sysconfdir}/rpc
64 rm -r ${D}${datadir}/zoneinfo
65
66 mv ${D}${libdir}/bin/* ${D}${bindir}/
67 if [ -e ${D}${libdir}/bin/.debug ]; then
68 mv ${D}${libdir}/bin/.debug/* ${D}${bindir}/.debug/
69 fi
70 ln -s ../../bin/gdbserver ${D}${libdir}/bin/sysroot-gdbserver
71
72 sed -i -e 's/__packed/__attribute__ ((packed))/' ${D}${includedir}/mtd/ubi-user.h
73 sed -i -e "s# ${base_libdir}# ../..${base_libdir}#g" -e "s# ${libdir}# .#g" ${D}${libdir}/libc.so
74 sed -i -e "s# ${base_libdir}# ../..${base_libdir}#g" -e "s# ${libdir}# .#g" ${D}${libdir}/libpthread.so
75}
76
77SYSROOT_PREPROCESS_FUNCS += "external_toolchain_sysroot_adjust"
78external_toolchain_sysroot_adjust() {
79 dest_sysroot="$(${CC} -print-sysroot | sed -e's,^${STAGING_DIR_HOST},,; s,/$,,')"
80 if [ -n "$dest_sysroot" ]; then
81 rm -f ${SYSROOT_DESTDIR}/$dest_sysroot
82 ln -s . ${SYSROOT_DESTDIR}/$dest_sysroot
83 fi
84
85 # If the usr/lib directory doesn't exist, the toolchain fails to even
86 # try to find crti.o in a completely different directory (usr/lib64)
87 install -d ${SYSROOT_DESTDIR}/usr/lib
88}
89
90PACKAGES =+ "libgcc libgcc-dev libstdc++ libstdc++-dev libstdc++-staticdev linux-libc-headers linux-libc-headers-dev gdbserver gdbserver-dbg"
91
92# This test should be fixed to ignore .a files in .debug dirs
93INSANE_SKIP_${PN}-dbg = "staticdev"
94
95# We don't care about GNU_HASH in prebuilt binaries
96INSANE_SKIP_${PN}-utils += "ldflags"
97INSANE_SKIP_libstdc++ += "ldflags"
98INSANE_SKIP_libgcc += "ldflags"
99INSANE_SKIP_gdbserver += "ldflags"
100
101PKG_${PN} = "eglibc"
102PKG_${PN}-dev = "eglibc-dev"
103PKG_${PN}-staticdev = "eglibc-staticdev"
104PKG_${PN}-doc = "eglibc-doc"
105PKG_${PN}-dbg = "eglibc-dbg"
106PKG_${PN}-pic = "eglibc-pic"
107PKG_${PN}-utils = "eglibc-utils"
108PKG_${PN}-gconv = "eglibc-gconv"
109PKG_${PN}-extra-nss = "eglibc-extra-nss"
110PKG_${PN}-thread-db = "eglibc-thread-db"
111PKG_${PN}-pcprofile = "eglibc-pcprofile"
112
113PKGV = "${CSL_VER_LIBC}"
114PKGV_libgcc = "${CSL_VER_GCC}"
115PKGV_libgcc-dev = "${CSL_VER_GCC}"
116PKGV_libstdc++ = "${CSL_VER_GCC}"
117PKGV_libstdc++-dev = "${CSL_VER_GCC}"
118PKGV_libstdc++-staticdev = "${CSL_VER_GCC}"
119PKGV_linux-libc-headers = "${CSL_VER_KERNEL}"
120PKGV_linux-libc-headers-dev = "${CSL_VER_KERNEL}"
121PKGV_gdbserver = "${CSL_VER_GDB}"
122PKGV_gdbserver-dbg = "${CSL_VER_GDB}"
123
124FILES_libgcc = "${base_libdir}/libgcc_s.so.1"
125FILES_libgcc-dev = "${base_libdir}/libgcc_s.so"
126FILES_libstdc++ = "${libdir}/libstdc++.so.*"
127FILES_libstdc++-dev = "${includedir}/c++/${PV} \
128 ${libdir}/libstdc++.so \
129 ${libdir}/libstdc++.la \
130 ${libdir}/libsupc++.la"
131FILES_libstdc++-staticdev = "${libdir}/libstdc++.a ${libdir}/libsupc++.a"
132FILES_linux-libc-headers = "${includedir}/asm* \
133 ${includedir}/linux \
134 ${includedir}/mtd \
135 ${includedir}/rdma \
136 ${includedir}/scsi \
137 ${includedir}/sound \
138 ${includedir}/video \
139"
140FILES_gdbserver = "${bindir}/gdbserver ${libdir}/bin/sysroot-gdbserver"
141FILES_gdbserver-dbg = "${bindir}/.debug/gdbserver"
142
143CSL_VER_MAIN ??= ""
144
145python () {
146 if not d.getVar("CSL_VER_MAIN"):
147 raise bb.parse.SkipPackage("External CSL toolchain not configured (CSL_VER_MAIN not set).")
148}
149
diff --git a/meta/recipes-core/meta/external-sourcery-toolchain/SUPPORTED b/meta/recipes-core/meta/external-sourcery-toolchain/SUPPORTED
deleted file mode 100644
index 3f746888b4..0000000000
--- a/meta/recipes-core/meta/external-sourcery-toolchain/SUPPORTED
+++ /dev/null
@@ -1,257 +0,0 @@
1aa_DJ ISO-8859-1
2aa_ER UTF-8
3aa_ER@saaho UTF-8
4aa_ET UTF-8
5af_ZA ISO-8859-1
6am_ET UTF-8
7an_ES ISO-8859-15
8ar_AE ISO-8859-6
9ar_BH ISO-8859-6
10ar_DZ ISO-8859-6
11ar_EG ISO-8859-6
12ar_IN UTF-8
13ar_IQ ISO-8859-6
14ar_JO ISO-8859-6
15ar_KW ISO-8859-6
16ar_LB ISO-8859-6
17ar_LY ISO-8859-6
18ar_MA ISO-8859-6
19ar_OM ISO-8859-6
20ar_QA ISO-8859-6
21ar_SA ISO-8859-6
22ar_SD ISO-8859-6
23ar_SY ISO-8859-6
24ar_TN ISO-8859-6
25ar_YE ISO-8859-6
26ast_ES ISO-8859-15
27be_BY CP1251
28be_BY@latin UTF-8
29ber_DZ UTF-8
30ber_MA UTF-8
31bg_BG CP1251
32bn_BD UTF-8
33bn_IN UTF-8
34bo_CN UTF-8
35bo_IN UTF-8
36br_FR ISO-8859-1
37br_FR@euro ISO-8859-15
38bs_BA ISO-8859-2
39byn_ER UTF-8
40ca_AD ISO-8859-15
41ca_ES ISO-8859-1
42ca_ES@euro ISO-8859-15
43ca_FR ISO-8859-15
44ca_IT ISO-8859-15
45crh_UA UTF-8
46cs_CZ ISO-8859-2
47csb_PL UTF-8
48cy_GB ISO-8859-14
49da_DK ISO-8859-1
50de_AT ISO-8859-1
51de_AT@euro ISO-8859-15
52de_BE ISO-8859-1
53de_BE@euro ISO-8859-15
54de_CH ISO-8859-1
55de_DE ISO-8859-1
56de_DE@euro ISO-8859-15
57de_LU ISO-8859-1
58de_LU@euro ISO-8859-15
59dv_MV UTF-8
60dz_BT UTF-8
61el_GR ISO-8859-7
62el_CY ISO-8859-7
63en_AG UTF-8
64en_AU ISO-8859-1
65en_BW ISO-8859-1
66en_CA ISO-8859-1
67en_DK ISO-8859-1
68en_GB ISO-8859-1
69en_HK ISO-8859-1
70en_IE ISO-8859-1
71en_IE@euro ISO-8859-15
72en_IN UTF-8
73en_NG UTF-8
74en_NZ ISO-8859-1
75en_PH ISO-8859-1
76en_SG ISO-8859-1
77en_US ISO-8859-1
78en_ZA ISO-8859-1
79en_ZW ISO-8859-1
80es_AR ISO-8859-1
81es_BO ISO-8859-1
82es_CL ISO-8859-1
83es_CO ISO-8859-1
84es_DO ISO-8859-1
85es_EC ISO-8859-1
86es_ES ISO-8859-1
87es_ES@euro ISO-8859-15
88es_GT ISO-8859-1
89es_HN ISO-8859-1
90es_MX ISO-8859-1
91es_NI ISO-8859-1
92es_PA ISO-8859-1
93es_PE ISO-8859-1
94es_PR ISO-8859-1
95es_PY ISO-8859-1
96es_SV ISO-8859-1
97es_US ISO-8859-1
98es_UY ISO-8859-1
99es_VE ISO-8859-1
100et_EE ISO-8859-1
101eu_ES ISO-8859-1
102eu_ES@euro ISO-8859-15
103fa_IR UTF-8
104fi_FI ISO-8859-1
105fi_FI@euro ISO-8859-15
106fil_PH UTF-8
107fo_FO ISO-8859-1
108fr_BE ISO-8859-1
109fr_BE@euro ISO-8859-15
110fr_CA ISO-8859-1
111fr_CH ISO-8859-1
112fr_FR ISO-8859-1
113fr_FR@euro ISO-8859-15
114fr_LU ISO-8859-1
115fr_LU@euro ISO-8859-15
116fur_IT UTF-8
117fy_NL UTF-8
118fy_DE UTF-8
119ga_IE ISO-8859-1
120ga_IE@euro ISO-8859-15
121gd_GB ISO-8859-15
122gez_ER UTF-8
123gez_ER@abegede UTF-8
124gez_ET UTF-8
125gez_ET@abegede UTF-8
126gl_ES ISO-8859-1
127gl_ES@euro ISO-8859-15
128gu_IN UTF-8
129gv_GB ISO-8859-1
130ha_NG UTF-8
131he_IL ISO-8859-8
132hi_IN UTF-8
133hne_IN UTF-8
134hr_HR ISO-8859-2
135hsb_DE ISO-8859-2
136ht_HT UTF-8
137hu_HU ISO-8859-2
138hy_AM UTF-8
139id_ID ISO-8859-1
140ig_NG UTF-8
141ik_CA UTF-8
142is_IS ISO-8859-1
143it_CH ISO-8859-1
144it_IT ISO-8859-1
145it_IT@euro ISO-8859-15
146iu_CA UTF-8
147iw_IL ISO-8859-8
148ka_GE GEORGIAN-PS
149kk_KZ PT154
150kk_KZ RK1048
151kl_GL ISO-8859-1
152km_KH UTF-8
153kn_IN UTF-8
154ks_IN UTF-8
155ks_IN@devanagari UTF-8
156ku_TR ISO-8859-9
157kw_GB ISO-8859-1
158ky_KG UTF-8
159lg_UG ISO-8859-10
160li_BE UTF-8
161li_NL UTF-8
162lo_LA UTF-8
163lt_LT ISO-8859-13
164lv_LV ISO-8859-13
165mai_IN UTF-8
166mg_MG ISO-8859-15
167mi_NZ ISO-8859-13
168mk_MK ISO-8859-5
169ml_IN UTF-8
170mn_MN UTF-8
171mr_IN UTF-8
172ms_MY ISO-8859-1
173mt_MT ISO-8859-3
174my_MM UTF-8
175nan_TW@latin UTF-8
176nb_NO ISO-8859-1
177nds_DE UTF-8
178nds_NL UTF-8
179ne_NP UTF-8
180nl_AW UTF-8
181nl_BE ISO-8859-1
182nl_BE@euro ISO-8859-15
183nl_NL ISO-8859-1
184nl_NL@euro ISO-8859-15
185nn_NO ISO-8859-1
186nr_ZA UTF-8
187nso_ZA UTF-8
188oc_FR ISO-8859-1
189om_ET UTF-8
190om_KE ISO-8859-1
191or_IN UTF-8
192pa_IN UTF-8
193pa_PK UTF-8
194pap_AN UTF-8
195pl_PL ISO-8859-2
196ps_AF UTF-8
197pt_BR ISO-8859-1
198pt_PT ISO-8859-1
199pt_PT@euro ISO-8859-15
200ro_RO ISO-8859-2
201ru_RU ISO-8859-5
202ru_UA KOI8-U
203rw_RW UTF-8
204sa_IN UTF-8
205sc_IT UTF-8
206sd_IN UTF-8
207sd_IN@devanagari UTF-8
208se_NO UTF-8
209shs_CA UTF-8
210si_LK UTF-8
211sid_ET UTF-8
212sk_SK ISO-8859-2
213sl_SI ISO-8859-2
214so_DJ ISO-8859-1
215so_ET UTF-8
216so_KE ISO-8859-1
217so_SO ISO-8859-1
218sq_AL ISO-8859-1
219sr_ME UTF-8
220sr_RS UTF-8
221sr_RS@latin UTF-8
222ss_ZA UTF-8
223st_ZA ISO-8859-1
224sv_FI ISO-8859-1
225sv_FI@euro ISO-8859-15
226sv_SE ISO-8859-1
227ta_IN UTF-8
228te_IN UTF-8
229tg_TJ KOI8-T
230th_TH TIS-620
231ti_ER UTF-8
232ti_ET UTF-8
233tig_ER UTF-8
234tk_TM UTF-8
235tl_PH ISO-8859-1
236tn_ZA UTF-8
237tr_CY ISO-8859-9
238tr_TR ISO-8859-9
239ts_ZA UTF-8
240ug_CN UTF-8
241uk_UA KOI8-U
242ur_PK UTF-8
243uz_UZ ISO-8859-1
244uz_UZ@cyrillic UTF-8
245ve_ZA UTF-8
246vi_VN UTF-8
247wa_BE ISO-8859-1
248wa_BE@euro ISO-8859-15
249wo_SN UTF-8
250xh_ZA ISO-8859-1
251yi_US CP1255
252yo_NG UTF-8
253zh_CN GB2312
254zh_HK BIG5-HKSCS
255zh_SG GB2312
256zh_TW BIG5
257zu_ZA ISO-8859-1