Update build-m5 to the new scons build system

Fix https://github.com/cirosantilli/linux-kernel-module-cheat/issues/128
This commit is contained in:
Ciro Santilli 六四事件 法轮功
2020-09-15 02:00:01 +00:00
parent 91a65612a9
commit f292401eee
2 changed files with 10 additions and 13 deletions

View File

@@ -16,18 +16,12 @@ See: https://cirosantilli.com/linux-kernel-module-cheat#gem5-m5-executable
def _get_make_cmd(self): def _get_make_cmd(self):
allowed_toolchains = ['buildroot'] allowed_toolchains = ['buildroot']
if self.env['arch'] == 'x86_64':
arch = 'x86'
else:
arch = self.env['arch']
return [ return [
'make', LF, 'scons', LF,
'-C', self.env['gem5_m5_source_dir'], LF,
'-j', str(self.env['nproc']), 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, 'CROSS_COMPILE={}'.format(self.env['toolchain_prefix_dash']), LF,
'LD={}'.format(self.env['ld_path']), LF, self.env['gem5_m5_source_dir_build'], LF
'PWD={}'.format(self.env['gem5_m5_source_dir']), LF,
] ]
def build(self): def build(self):
@@ -37,18 +31,16 @@ See: https://cirosantilli.com/linux-kernel-module-cheat#gem5-m5-executable
self.clean() self.clean()
self.sh.run_cmd( self.sh.run_cmd(
self._get_make_cmd(), self._get_make_cmd(),
cwd=self.env['gem5_m5_source_dir'],
) )
os.makedirs(self.env['out_rootfs_overlay_bin_dir'], exist_ok=True) os.makedirs(self.env['out_rootfs_overlay_bin_dir'], exist_ok=True)
self.sh.cp( 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'] self.env['out_rootfs_overlay_bin_dir']
) )
def clean(self): def clean(self):
self.sh.run_cmd( self.sh.run_cmd(
self._get_make_cmd() + ['clean', LF], self._get_make_cmd() + ['--clean', LF],
cwd=self.env['gem5_m5_source_dir'],
) )
return None return None

View File

@@ -915,6 +915,11 @@ Incompatible archs are skipped.
else: else:
env['gem5_source_dir'] = env['gem5_default_source_dir'] env['gem5_source_dir'] = env['gem5_default_source_dir']
env['gem5_m5_source_dir'] = join(env['gem5_source_dir'], 'util', 'm5') 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_config_dir'] = join(env['gem5_source_dir'], 'configs')
env['gem5_se_file'] = join(env['gem5_config_dir'], 'example', 'se.py') env['gem5_se_file'] = join(env['gem5_config_dir'], 'example', 'se.py')
env['gem5_fs_file'] = join(env['gem5_config_dir'], 'example', 'fs.py') env['gem5_fs_file'] = join(env['gem5_config_dir'], 'example', 'fs.py')