summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2014-12-02 00:34:05 (GMT)
committerSimon Glass <sjg@chromium.org>2015-01-15 05:16:54 (GMT)
commit9b83bfdcb0baac4c2f986c600a2a7c2e946ad17c (patch)
tree2662f4af2f633ee98b95a4ddb11868c97a73a344
parentcc935295f24580a4cb7c869f489ea99273fb4f92 (diff)
downloadu-boot-9b83bfdcb0baac4c2f986c600a2a7c2e946ad17c.tar.xz
buildman: Allow architecture to alias to multiple toolchains
Some archs have need than one alias, so support a list of alises in the ..buildman file. Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r--tools/buildman/README5
-rw-r--r--tools/buildman/test.py15
-rw-r--r--tools/buildman/toolchain.py8
3 files changed, 23 insertions, 5 deletions
diff --git a/tools/buildman/README b/tools/buildman/README
index 865390a..849e6ca 100644
--- a/tools/buildman/README
+++ b/tools/buildman/README
@@ -701,8 +701,9 @@ a set of (tag, value) pairs.
This converts toolchain architecture names to U-Boot names. For example,
if an x86 toolchains is called i386-linux-gcc it will not normally be
- used for architecture 'x86'. Adding 'x86: i386' to this section will
- tell buildman that the i386 toolchain can be used for x86.
+ used for architecture 'x86'. Adding 'x86: i386 x86_64' to this section
+ will tell buildman that the i386 and x86_64 toolchains can be used for
+ the x86 architecture.
'[make-flags]' section
diff --git a/tools/buildman/test.py b/tools/buildman/test.py
index d19f6ea..25be43f 100644
--- a/tools/buildman/test.py
+++ b/tools/buildman/test.py
@@ -394,5 +394,20 @@ class TestBuild(unittest.TestCase):
build.commit_count = 0
self.CheckDirs(build, '')
+ def testToolchainAliases(self):
+ self.assertTrue(self.toolchains.Select('arm') != None)
+ with self.assertRaises(ValueError):
+ self.toolchains.Select('no-arch')
+ with self.assertRaises(ValueError):
+ self.toolchains.Select('x86')
+
+ self.toolchains = toolchain.Toolchains()
+ self.toolchains.Add('x86_64-linux-gcc', test=False)
+ self.assertTrue(self.toolchains.Select('x86') != None)
+
+ self.toolchains = toolchain.Toolchains()
+ self.toolchains.Add('i386-linux-gcc', test=False)
+ self.assertTrue(self.toolchains.Select('x86') != None)
+
if __name__ == "__main__":
unittest.main()
diff --git a/tools/buildman/toolchain.py b/tools/buildman/toolchain.py
index cb693f4..ad4df8c 100644
--- a/tools/buildman/toolchain.py
+++ b/tools/buildman/toolchain.py
@@ -185,9 +185,11 @@ class Toolchains:
returns:
toolchain object, or None if none found
"""
- for name, value in bsettings.GetItems('toolchain-alias'):
- if arch == name:
- arch = value
+ for tag, value in bsettings.GetItems('toolchain-alias'):
+ if arch == tag:
+ for alias in value.split():
+ if alias in self.toolchains:
+ return self.toolchains[alias]
if not arch in self.toolchains:
raise ValueError, ("No tool chain found for arch '%s'" % arch)