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 /ports | |
| 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 'ports')
| -rw-r--r-- | ports/icu/fix_parallel_build_on_windows.patch | 13 | ||||
| -rw-r--r-- | ports/icu/portfile.cmake | 44 |
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()
|
