diff --git a/configure.py b/configure.py index a005425..7a177d1 100755 --- a/configure.py +++ b/configure.py @@ -102,6 +102,12 @@ parser.add_argument( type=Path, help="path to sjiswrap.exe (optional)", ) +parser.add_argument( + "--ninja", + metavar="BINARY", + type=Path, + help="path to ninja binary (optional)" +) parser.add_argument( "--verbose", action="store_true", @@ -141,6 +147,7 @@ config.compilers_path = args.compilers config.generate_map = args.map config.non_matching = args.non_matching config.sjiswrap_path = args.sjiswrap +config.ninja_path = args.ninja config.progress = args.progress if not is_windows(): config.wrapper = args.wrapper diff --git a/tools/project.py b/tools/project.py index fa0d68f..c6207c9 100644 --- a/tools/project.py +++ b/tools/project.py @@ -151,6 +151,7 @@ class ProjectConfig: self.wrapper: Optional[Path] = None # If None, download wibo on Linux self.sjiswrap_tag: Optional[str] = None # Git tag self.sjiswrap_path: Optional[Path] = None # If None, download + self.ninja_path: Optional[Path] = None # If None, use system PATH self.objdiff_tag: Optional[str] = None # Git tag self.objdiff_path: Optional[Path] = None # If None, download @@ -1452,9 +1453,14 @@ def generate_objdiff_config( existing_config = json.load(r) existing_units = {unit["name"]: unit for unit in existing_config["units"]} + if config.ninja_path: + ninja = str(config.ninja_path.absolute()) + else: + ninja = "ninja" + objdiff_config: Dict[str, Any] = { "min_version": "2.0.0-beta.5", - "custom_make": "ninja", + "custom_make": ninja, "build_target": False, "watch_patterns": [ "*.c",