Skip to content
Snippets Groups Projects
Commit d5fe013c authored by York Sun's avatar York Sun Committed by sjg
Browse files

tools: buildman: Add compiler wrapper


Now we can use compiler wrapper such as ccache or distcc for buildman.

Signed-off-by: default avatarYork Sun <york.sun@nxp.com>
CC: Simon Glass <sjg@chromium.org>
Acked-by: default avatarSimon Glass <sjg@chromium.org>
parent f40fa9b3
No related branches found
No related tags found
No related merge requests found
......@@ -211,6 +211,15 @@ arm: arm-none-eabi-
and buildman will find arm-none-eabi-gcc in /usr/bin if you have it installed.
[toolchain-wrapper]
wrapper: ccache
This tells buildman to use a compiler wrapper in front of CROSS_COMPILE. In
this example, ccache. It doesn't affect the toolchain scan. The wrapper is
added when CROSS_COMPILE environtal variable is set. The name in this
section is ignored. If more than one line is provided, only the last one
is taken.
3. Make sure you have the require Python pre-requisites
Buildman uses multiprocessing, Queue, shutil, StringIO, ConfigParser and
......
......@@ -127,6 +127,18 @@ class Toolchain:
return PRIORITY_CALC + prio
return PRIORITY_CALC + prio
def GetWrapper(self, show_warning=True):
"""Get toolchain wrapper from the setting file.
"""
value = ''
for name, value in bsettings.GetItems('toolchain-wrapper'):
if not value:
print "Warning: Wrapper not found"
if value:
value = value + ' '
return value
def MakeEnvironment(self, full_path):
"""Returns an environment for using the toolchain.
......@@ -138,10 +150,12 @@ class Toolchain:
PATH
"""
env = dict(os.environ)
wrapper = self.GetWrapper()
if full_path:
env['CROSS_COMPILE'] = os.path.join(self.path, self.cross)
env['CROSS_COMPILE'] = wrapper + os.path.join(self.path, self.cross)
else:
env['CROSS_COMPILE'] = self.cross
env['CROSS_COMPILE'] = wrapper + self.cross
env['PATH'] = self.path + ':' + env['PATH']
return env
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment