aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authorCurtis J Bezault <curtbezault@gmail.com>2019-06-12 14:18:43 -0700
committerGitHub <noreply@github.com>2019-06-12 14:18:43 -0700
commitb7d6160b80f417137bc480137b946c91f3272bf5 (patch)
tree66a90ee39e544be9e61afa1209d0264716ba763e /toolsrc/src
parent59a8a9c6248ed230b19028a44484ae5f06db697d (diff)
downloadvcpkg-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.cpp5
-rw-r--r--toolsrc/src/vcpkg/build.cpp18
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())