From f292401eee38902c050de54d38d9d2f36d6e0038 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciro=20Santilli=20=E5=85=AD=E5=9B=9B=E4=BA=8B=E4=BB=B6=20?= =?UTF-8?q?=E6=B3=95=E8=BD=AE=E5=8A=9F?= Date: Tue, 15 Sep 2020 02:00:01 +0000 Subject: [PATCH] Update build-m5 to the new scons build system Fix https://github.com/cirosantilli/linux-kernel-module-cheat/issues/128 --- build-m5 | 18 +++++------------- common.py | 5 +++++ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/build-m5 b/build-m5 index 5f197eb..569dfbb 100755 --- a/build-m5 +++ b/build-m5 @@ -16,18 +16,12 @@ See: https://cirosantilli.com/linux-kernel-module-cheat#gem5-m5-executable def _get_make_cmd(self): allowed_toolchains = ['buildroot'] - if self.env['arch'] == 'x86_64': - arch = 'x86' - else: - arch = self.env['arch'] return [ - 'make', LF, + 'scons', LF, + '-C', self.env['gem5_m5_source_dir'], 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, + self.env['gem5_m5_source_dir_build'], LF ] def build(self): @@ -37,18 +31,16 @@ See: https://cirosantilli.com/linux-kernel-module-cheat#gem5-m5-executable 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['gem5_m5_source_dir_build'], 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'], + self._get_make_cmd() + ['--clean', LF], ) return None diff --git a/common.py b/common.py index f35e95f..30f2746 100644 --- a/common.py +++ b/common.py @@ -915,6 +915,11 @@ Incompatible archs are skipped. else: env['gem5_source_dir'] = env['gem5_default_source_dir'] env['gem5_m5_source_dir'] = join(env['gem5_source_dir'], 'util', 'm5') + if self.env['arch'] == 'x86_64': + env['gem5_m5_source_dir_build_arch'] = 'x86' + else: + env['gem5_m5_source_dir_build_arch'] = env['arch'] + env['gem5_m5_source_dir_build'] = join(env['gem5_m5_source_dir'], 'build', env['gem5_m5_source_dir_build_arch'], 'out', 'm5') env['gem5_config_dir'] = join(env['gem5_source_dir'], 'configs') env['gem5_se_file'] = join(env['gem5_config_dir'], 'example', 'se.py') env['gem5_fs_file'] = join(env['gem5_config_dir'], 'example', 'fs.py')