12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #!/usr/bin/env python3
- import os
- import common
- from shell_helpers import LF
- class Main(common.BuildCliFunction):
- def _get_make_cmd(self):
- allowed_toolchains = ['buildroot']
- if self.env['arch'] == 'x86_64':
- arch = 'x86'
- else:
- arch = self.env['arch']
- return [
- 'make', LF,
- '-j', str(self.env['nproc']), LF,
- '-f', 'Makefile.{}'.format(arch), LF,
- 'CC={}'.format(self.env['gcc_path']), LF,
- 'CROSS_COMPILE={}'.format(self.env['toolchain_prefix_dash']), LF,
- 'LD={}'.format(self.env['ld_path']), LF,
- 'PWD={}'.format(self.env['gem5_m5_source_dir']), LF,
- ]
- def build(self):
- os.makedirs(self.env['gem5_m5_build_dir'], exist_ok=True)
- # We must clean first or else the build outputs of one arch can conflict with the other.
- # I should stop being lazy and go actually patch gem5 to support out of tree m5 build...
- self.clean()
- self.sh.run_cmd(
- self._get_make_cmd(),
- cwd=self.env['gem5_m5_source_dir'],
- )
- os.makedirs(self.env['out_rootfs_overlay_bin_dir'], exist_ok=True)
- self.sh.cp(
- os.path.join(self.env['gem5_m5_source_dir'], 'm5'),
- self.env['out_rootfs_overlay_bin_dir']
- )
- def clean(self):
- self.sh.run_cmd(
- self._get_make_cmd() + ['clean', LF],
- cwd=self.env['gem5_m5_source_dir'],
- )
- return None
- if __name__ == '__main__':
- Main().cli()
|