diff options
| author | Curtis J Bezault <curtbezault@gmail.com> | 2019-06-12 14:18:43 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-06-12 14:18:43 -0700 |
| commit | b7d6160b80f417137bc480137b946c91f3272bf5 (patch) | |
| tree | 66a90ee39e544be9e61afa1209d0264716ba763e /toolsrc/src | |
| parent | 59a8a9c6248ed230b19028a44484ae5f06db697d (diff) | |
| download | vcpkg-b7d6160b80f417137bc480137b946c91f3272bf5.tar.gz vcpkg-b7d6160b80f417137bc480137b946c91f3272bf5.zip | |
[icu] Enable parallel builds (#6695)
* Add VCPKG_NUM_LOGICAL_CORES
* break out logic that retries running a command several times into its own function
* Parallelize icu
Diffstat (limited to 'toolsrc/src')
| -rw-r--r-- | toolsrc/src/vcpkg/base/system.cpp | 5 | ||||
| -rw-r--r-- | toolsrc/src/vcpkg/build.cpp | 18 |
2 files changed, 23 insertions, 0 deletions
diff --git a/toolsrc/src/vcpkg/base/system.cpp b/toolsrc/src/vcpkg/base/system.cpp index 48a701bfa..a11853524 100644 --- a/toolsrc/src/vcpkg/base/system.cpp +++ b/toolsrc/src/vcpkg/base/system.cpp @@ -596,6 +596,11 @@ namespace vcpkg #else void System::register_console_ctrl_handler() {} #endif + + int System::get_num_logical_cores() + { + return std::thread::hardware_concurrency(); + } } namespace vcpkg::Debug diff --git a/toolsrc/src/vcpkg/build.cpp b/toolsrc/src/vcpkg/build.cpp index 7bd6f467b..0a7c854b5 100644 --- a/toolsrc/src/vcpkg/build.cpp +++ b/toolsrc/src/vcpkg/build.cpp @@ -334,6 +334,23 @@ namespace vcpkg::Build return ret;
}
+ static int get_concurrency()
+ {
+ static int concurrency = []{
+ auto user_defined_concurrency = System::get_environment_variable("VCPKG_MAX_CONCURRENCY");
+ if (user_defined_concurrency)
+ {
+ return std::stoi(user_defined_concurrency.value_or_exit(VCPKG_LINE_INFO));
+ }
+ else
+ {
+ return System::get_num_logical_cores() + 1;
+ }
+ }();
+
+ return concurrency;
+ }
+
static ExtendedBuildResult do_build_package(const VcpkgPaths& paths,
const PreBuildInfo& pre_build_info,
const PackageSpec& spec,
@@ -372,6 +389,7 @@ namespace vcpkg::Build {"_VCPKG_DOWNLOAD_TOOL", to_string(config.build_package_options.download_tool)},
{"FEATURES", Strings::join(";", config.feature_list)},
{"ALL_FEATURES", all_features},
+ {"VCPKG_CONCURRENCY", std::to_string(get_concurrency())},
};
if (!System::get_environment_variable("VCPKG_FORCE_SYSTEM_BINARIES").has_value())
|
