From 15640b16cd5f1fb31d1ed70158b67ad5778f63ad Mon Sep 17 00:00:00 2001 From: "bozo.kopic" Date: Tue, 28 Dec 2021 20:42:10 +0100 Subject: WIP c implementation --- src_doit/__init__.py | 11 +++++++---- src_doit/c.py | 46 ++++++++++++++++++++++++++++++---------------- 2 files changed, 37 insertions(+), 20 deletions(-) (limited to 'src_doit') diff --git a/src_doit/__init__.py b/src_doit/__init__.py index 524fa53..8c2498d 100644 --- a/src_doit/__init__.py +++ b/src_doit/__init__.py @@ -44,9 +44,11 @@ json_schema_repo_path = src_py_dir / 'opcut/json_schema_repo.json' def task_clean_all(): """Clean all""" - return {'actions': [(common.rm_rf, [build_dir, - ui_dir, - json_schema_repo_path])]} + return {'actions': [(common.rm_rf, [ + build_dir, + ui_dir, + json_schema_repo_path, + *(src_py_dir / 'opcut').glob('*-opcut-calculate*')])]} def task_wheel(): @@ -65,7 +67,8 @@ def task_wheel(): return {'actions': [build], 'task_dep': ['ui', - 'json_schema_repo']} + 'json_schema_repo', + 'c']} def task_check(): diff --git a/src_doit/c.py b/src_doit/c.py index 8318d10..49c794f 100644 --- a/src_doit/c.py +++ b/src_doit/c.py @@ -1,6 +1,8 @@ from pathlib import Path -from hat.doit.c import (exe_suffix, +from hat.doit.c import (local_platform, + get_exe_suffix, + Platform, CBuild) @@ -10,33 +12,45 @@ __all__ = ['task_c', build_dir = Path('build') -src_c_dir = Path('src_c') deps_dir = Path('deps') +src_c_dir = Path('src_c') +src_py_dir = Path('src_py') build_c_dir = build_dir / 'c' -exe_path = build_c_dir / f'opcut-calculate{exe_suffix}' + +platforms = [local_platform] +if local_platform == Platform.LINUX: + platforms.append(Platform.WINDOWS) + +builds = [CBuild(src_paths=[*src_c_dir.rglob('*.c'), + *(deps_dir / 'argparse').rglob('*.c')], + build_dir=build_c_dir / platform.name.lower(), + platform=platform, + cc_flags=['-fPIC', '-O2', + f'-I{deps_dir / "jsmn"}', + f'-I{deps_dir / "argparse"}'], + task_dep=['deps']) + for platform in platforms] + +exe_paths = [src_py_dir / (f'opcut/{platform.name.lower()}-' + f'opcut-calculate' + f'{get_exe_suffix(platform)}') + for platform in platforms] def task_c(): """Build native app""" - return _build.get_task_exe(exe_path) + for build, exe_path in zip(builds, exe_paths): + yield from build.get_task_exe(exe_path) def task_c_obj(): """Build .o files""" - yield from _build.get_task_objs() + for build in builds: + yield from build.get_task_objs() def task_c_dep(): """Build .d files""" - yield from _build.get_task_deps() - - -_build = CBuild( - src_paths=[*src_c_dir.rglob('*.c'), - *(deps_dir / 'argparse').rglob('*.c')], - build_dir=build_c_dir, - cc_flags=['-fPIC', '-O2', - f'-I{deps_dir / "jsmn"}', - f'-I{deps_dir / "argparse"}'], - task_dep=['deps']) + for build in builds: + yield from build.get_task_deps() -- cgit v1.2.3-70-g09d2