aboutsummaryrefslogtreecommitdiff
path: root/ports
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 /ports
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 'ports')
-rw-r--r--ports/icu/fix_parallel_build_on_windows.patch13
-rw-r--r--ports/icu/portfile.cmake44
2 files changed, 42 insertions, 15 deletions
diff --git a/ports/icu/fix_parallel_build_on_windows.patch b/ports/icu/fix_parallel_build_on_windows.patch
new file mode 100644
index 000000000..b0ea7556c
--- /dev/null
+++ b/ports/icu/fix_parallel_build_on_windows.patch
@@ -0,0 +1,13 @@
+diff --git a/source/data/Makefile.in b/source/data/Makefile.in
+index 1140b69..936ef81 100644
+--- a/source/data/Makefile.in
++++ b/source/data/Makefile.in
+@@ -514,7 +514,7 @@ build-dir:
+ # The | is an order-only prerequisite. This helps when the -j option is used,
+ # and we don't want the files to be built before the directories are built.
+ ifneq ($(filter order-only,$(.FEATURES)),)
+-$(ALL_FILES) $(ALL_INDEX_SRC_FILES): | build-dir
++$(ALL_FILES) $(ALL_INDEX_SRC_FILES) $(SO_VERSION_DATA): | build-dir
+ endif
+
+ # Now, sections for building each kind of data.
diff --git a/ports/icu/portfile.cmake b/ports/icu/portfile.cmake
index 2061111e9..9225246f3 100644
--- a/ports/icu/portfile.cmake
+++ b/ports/icu/portfile.cmake
@@ -15,11 +15,13 @@ vcpkg_download_distfile(
FILENAME "icu4c-${VERSION2}-src.tgz"
SHA512 4c37691246db802e4bae0c8c5f6ac1dac64c5753b607e539c5c1c36e361fcd9dd81bd1d3b5416c2960153b83700ccdb356412847d0506ab7782ae626ac0ffb94
)
-vcpkg_extract_source_archive(${ARCHIVE} ${CURRENT_BUILDTREES_DIR}/src/icu-${VERSION})
-
-vcpkg_apply_patches(SOURCE_PATH ${SOURCE_PATH}
- PATCHES ${CMAKE_CURRENT_LIST_DIR}/disable-escapestr-tool.patch
- ${CMAKE_CURRENT_LIST_DIR}/remove-MD-from-configure.patch
+vcpkg_extract_source_archive_ex(
+ OUT_SOURCE_PATH SOURCE_PATH
+ ARCHIVE ${ARCHIVE}
+ PATCHES
+ ${CMAKE_CURRENT_LIST_DIR}/disable-escapestr-tool.patch
+ ${CMAKE_CURRENT_LIST_DIR}/remove-MD-from-configure.patch
+ ${CMAKE_CURRENT_LIST_DIR}/fix_parallel_build_on_windows.patch
)
set(CONFIGURE_OPTIONS "--disable-samples --disable-tests")
@@ -94,8 +96,8 @@ else()
message(STATUS "Configuring ${TARGET_TRIPLET}-rel")
file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
- set(ENV{CFLAGS} "${ICU_RUNTIME} -O2 -Oi -Zi ${VCPKG_C_FLAGS} ${VCPKG_C_FLAGS_RELEASE}")
- set(ENV{CXXFLAGS} "${ICU_RUNTIME} -O2 -Oi -Zi ${VCPKG_CXX_FLAGS} ${VCPKG_CXX_FLAGS_RELEASE}")
+ set(ENV{CFLAGS} "${ICU_RUNTIME} -O2 -Oi -Zi -FS ${VCPKG_C_FLAGS} ${VCPKG_C_FLAGS_RELEASE}")
+ set(ENV{CXXFLAGS} "${ICU_RUNTIME} -O2 -Oi -Zi -FS ${VCPKG_CXX_FLAGS} ${VCPKG_CXX_FLAGS_RELEASE}")
set(ENV{LDFLAGS} "-DEBUG -INCREMENTAL:NO -OPT:REF -OPT:ICF")
vcpkg_execute_required_process(
COMMAND ${BASH} --noprofile --norc -c
@@ -110,8 +112,8 @@ else()
message(STATUS "Configuring ${TARGET_TRIPLET}-dbg")
file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
- set(ENV{CFLAGS} "${ICU_RUNTIME}d -Od -Zi -RTC1 ${VCPKG_C_FLAGS} ${VCPKG_C_FLAGS_DEBUG}")
- set(ENV{CXXFLAGS} "${ICU_RUNTIME}d -Od -Zi -RTC1 ${VCPKG_CXX_FLAGS} ${VCPKG_CXX_FLAGS_DEBUG}")
+ set(ENV{CFLAGS} "${ICU_RUNTIME}d -Od -Zi -FS -RTC1 ${VCPKG_C_FLAGS} ${VCPKG_C_FLAGS_DEBUG}")
+ set(ENV{CXXFLAGS} "${ICU_RUNTIME}d -Od -Zi -FS -RTC1 ${VCPKG_CXX_FLAGS} ${VCPKG_CXX_FLAGS_DEBUG}")
set(ENV{LDFLAGS} "-DEBUG")
vcpkg_execute_required_process(
COMMAND ${BASH} --noprofile --norc -c
@@ -129,20 +131,32 @@ unset(ENV{LDFLAGS})
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
# Build release
message(STATUS "Package ${TARGET_TRIPLET}-rel")
- vcpkg_execute_required_process(
- COMMAND ${BASH} --noprofile --norc -c "make && make install"
+ vcpkg_execute_build_process(
+ COMMAND ${BASH} --noprofile --norc -c "make -j ${VCPKG_CONCURRENCY}"
+ NO_PARALLEL_COMMAND ${BASH} --noprofile --norc -c "make"
+ WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel"
+ LOGNAME "make-build-${TARGET_TRIPLET}-rel")
+
+ vcpkg_execute_build_process(
+ COMMAND ${BASH} --noprofile --norc -c "make install"
WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel"
- LOGNAME "build-${TARGET_TRIPLET}-rel")
+ LOGNAME "make-install-${TARGET_TRIPLET}-rel")
message(STATUS "Package ${TARGET_TRIPLET}-rel done")
endif()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
# Build debug
message(STATUS "Package ${TARGET_TRIPLET}-dbg")
- vcpkg_execute_required_process(
- COMMAND ${BASH} --noprofile --norc -c "make && make install"
+ vcpkg_execute_build_process(
+ COMMAND ${BASH} --noprofile --norc -c "make -j ${VCPKG_CONCURRENCY}"
+ NO_PARALLEL_COMMAND ${BASH} --noprofile --norc -c "make"
+ WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg"
+ LOGNAME "make-build-${TARGET_TRIPLET}-dbg")
+
+ vcpkg_execute_build_process(
+ COMMAND ${BASH} --noprofile --norc -c "make install"
WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg"
- LOGNAME "build-${TARGET_TRIPLET}-dbg")
+ LOGNAME "make-install-${TARGET_TRIPLET}-dbg")
message(STATUS "Package ${TARGET_TRIPLET}-dbg done")
endif()