aboutsummaryrefslogtreecommitdiff
path: root/src_doit
diff options
context:
space:
mode:
Diffstat (limited to 'src_doit')
-rw-r--r--src_doit/__init__.py11
-rw-r--r--src_doit/c.py46
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()