diff options
| author | bozo.kopic <bozo@kopic.xyz> | 2021-12-28 20:42:10 +0100 |
|---|---|---|
| committer | bozo.kopic <bozo@kopic.xyz> | 2021-12-28 20:42:10 +0100 |
| commit | 15640b16cd5f1fb31d1ed70158b67ad5778f63ad (patch) | |
| tree | 060b8e9d28d65e8bbe718bb096cfdb490016cf16 /src_doit | |
| parent | b0aedec7bb1eacf5967a8f086fc7740048873a58 (diff) | |
WIP c implementation
Diffstat (limited to 'src_doit')
| -rw-r--r-- | src_doit/__init__.py | 11 | ||||
| -rw-r--r-- | src_doit/c.py | 46 |
2 files changed, 37 insertions, 20 deletions
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() |
