#!/usr/bin/env python3 import os import shutil import common import shlex from shell_helpers import LF class Main(common.BuildCliFunction): def __init__(self): super().__init__( description='''\ https://cirosantilli.com/linux-kernel-module-cheat#dhrystone ''' ) self._add_argument('--ccflags') self._add_argument('--force-rebuild') self._add_argument('--optimization-level') def setup(self, env): self.root_relpath = os.path.join('submodules', 'dhrystone') def build(self): build_dir = self.get_build_dir() extra_flags = [] if self.env['force_rebuild']: extra_flags.extend(['-B', LF]) ret = self.sh.run_cmd( [ 'make', LF, '-j', str(self.env['nproc']), LF, '-C', os.path.join(self.env['submodules_dir'], 'dhrystone'), LF, 'CC={}'.format(self.env['gcc_path']), LF, 'CFLAGS_EXTRA={}'.format(self.sh.cmd_to_string(self.env['ccflags'], force_oneline=True)), LF, 'LDFLAGS_EXTRA={}'.format(self.sh.cmd_to_string(self.env['ldflags'], force_oneline=True)), LF, 'EXTRA_OBJS={}'.format(' '.join(self.env['extra_objs'])), LF, 'OUT_DIR={}'.format(build_dir), LF, ] + extra_flags ) if ret == 0 and self.env['copy_overlay']: self.sh.copy_file_if_update( os.path.join(build_dir, 'dhrystone'), os.path.join(self.env['out_rootfs_overlay_lkmc_dir'], self.root_relpath, 'dhrystone'), ) return ret def get_build_dir(self): return os.path.join(self.env['build_dir'], self.root_relpath) if __name__ == '__main__': Main().cli()