summaryrefslogtreecommitdiffstats
path: root/meta/conf/distro
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 /meta/conf/distro
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>
Diffstat (limited to 'meta/conf/distro')
-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
3 files changed, 0 insertions, 237 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