mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-23 10:15:57 +01:00
This way we group key value arguments: e.g.:
make \
-j 8 \
all
instead of:
make \
-j \
8 \
all
and reach CLI nirvana, while also subtly breaking several commands due to
lack of testing.
78 lines
2.4 KiB
Python
Executable File
78 lines
2.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import os
|
|
|
|
import common
|
|
|
|
class CrosstoolNgComponent(common.Component):
|
|
def do_build(self, args):
|
|
common.raise_no_x86(args.arch)
|
|
build_dir = self.get_build_dir(args)
|
|
defconfig_dest = os.path.join(common.crosstool_ng_util_dir, 'defconfig')
|
|
os.makedirs(common.crosstool_ng_util_dir, exist_ok=True)
|
|
os.makedirs(common.crosstool_ng_download_dir, exist_ok=True)
|
|
|
|
# Bootstrap out-ot-tree WONTFIX. I've tried.
|
|
# https://github.com/crosstool-ng/crosstool-ng/issues/1021
|
|
os.chdir(common.crosstool_ng_src_dir)
|
|
common.run_cmd(
|
|
[os.path.join(common.crosstool_ng_src_dir, 'bootstrap'), common.Newline],
|
|
)
|
|
os.chdir(common.crosstool_ng_util_dir)
|
|
common.run_cmd(
|
|
[
|
|
os.path.join(common.crosstool_ng_src_dir, 'configure'), common.Newline,
|
|
'--enable-local', common.Newline,
|
|
],
|
|
)
|
|
common.run_cmd(
|
|
[
|
|
'make', common.Newline,
|
|
'-j', str(args.nproc), common.Newline,
|
|
],
|
|
)
|
|
|
|
# Build the toolchain.
|
|
common.cp(
|
|
os.path.join(common.root_dir, 'crosstool_ng_config', args.arch),
|
|
defconfig_dest
|
|
)
|
|
common.write_configs(
|
|
common.crosstool_ng_defconfig,
|
|
[
|
|
'CT_PREFIX_DIR="{}"'.format(common.crosstool_ng_install_dir),
|
|
'CT_WORK_DIR="{}"'.format(build_dir),
|
|
'CT_LOCAL_TARBALLS_DIR="{}"'.format(common.crosstool_ng_download_dir),
|
|
]
|
|
)
|
|
common.run_cmd(
|
|
[
|
|
common.crosstool_ng_executable, common.Newline,
|
|
'defconfig', common.Newline,
|
|
],
|
|
)
|
|
os.unlink(defconfig_dest)
|
|
common.run_cmd(
|
|
[
|
|
common.crosstool_ng_executable, common.Newline,
|
|
'build', common.Newline,
|
|
'CT_JOBS={}'.format(str(args.nproc)), common.Newline,
|
|
],
|
|
out_file=os.path.join(build_dir, 'lkmc.log'),
|
|
delete_env=['LD_LIBRARY_PATH'],
|
|
extra_paths=[common.ccache_dir],
|
|
)
|
|
|
|
def get_argparse_args(self):
|
|
return {
|
|
'description': '''\
|
|
Build crosstool-NG with Newlib for bare metal compilation'
|
|
'''
|
|
}
|
|
|
|
def get_build_dir(self, args):
|
|
return common.crosstool_ng_build_dir
|
|
|
|
if __name__ == '__main__':
|
|
CrosstoolNgComponent().build()
|