From 7a48deafe7615392b458681bd23e6136ed20deb6 Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Tue, 23 Mar 2021 23:57:05 +0300 Subject: project.cmake: set CMAKE_BUILD_PARALLEL_LEVEL --- project/cmake/build.py | 9 ++++++++- project/cmake/toolchain.py | 2 +- project/utils.py | 4 ++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/project/cmake/build.py b/project/cmake/build.py index 9f9bc00..20c823f 100644 --- a/project/cmake/build.py +++ b/project/cmake/build.py @@ -39,8 +39,15 @@ DEFAULT_CONFIGURATION = Configuration.DEBUG DEFAULT_TOOLSET = ToolchainType.AUTO +# This way of basically passing `-j` to make is more universal compared to +# _guessing_ that the build system is make and passing -j explicitly. Plus it +# works with older CMake versions, which don't support the --parallel flag. +cmake_env = os.environ.copy() +cmake_env['CMAKE_BUILD_PARALLEL_LEVEL'] = str(os.cpu_count()) + + def run_cmake(cmake_args): - return run(['cmake'] + cmake_args) + return run(['cmake'] + cmake_args, env=cmake_env) class GenerationPhase: diff --git a/project/cmake/toolchain.py b/project/cmake/toolchain.py index 3311d04..af3da21 100644 --- a/project/cmake/toolchain.py +++ b/project/cmake/toolchain.py @@ -72,7 +72,7 @@ class MSVC(Auto): return ['-A', self.platform.msvc_arch()] def build_system_args(self): - return ['/m'] + return [] class Makefile(Toolchain): diff --git a/project/utils.py b/project/utils.py index 868592a..f40767a 100644 --- a/project/utils.py +++ b/project/utils.py @@ -47,9 +47,9 @@ def cd(path): os.chdir(cwd) -def run(cmd_line): +def run(cmd_line, **kwargs): logging.info('Running executable: %s', cmd_line) - return subprocess.run(cmd_line, check=True) + return subprocess.run(cmd_line, check=True, **kwargs) @contextmanager -- cgit v1.2.3