@@ -2550,6 +2550,20 @@ for host in "${ALL_HOSTS[@]}"; do
25502550 continue
25512551 fi
25522552
2553+ if [[ ! " ${SKIP_BUILD_LIBICU} " ]] ; then
2554+ ICU_ROOT=$( build_directory ${host} libicu) /tmp_install
2555+ LIBICU_BUILD_ARGS=(
2556+ -DICU_ROOT:PATH=${ICU_ROOT}
2557+ -DICU_INCLUDE_DIR:PATH=${ICU_ROOT} /include
2558+ -DICU_UC_LIBRARIES:FILEPATH=${ICU_LIBDIR} /libicuucswift.so
2559+ -DICU_UC_LIBRARY:FILEPATH=${ICU_LIBDIR} /libicuucswift.so
2560+ -DICU_I18N_LIBRARIES:FILEPATH=${ICU_LIBDIR} /libicui18nswift.so
2561+ -DICU_I18N_LIBRARY:FILEPATH=${ICU_LIBDIR} /libicui18nswift.so
2562+ )
2563+ else
2564+ LIBICU_BUILD_ARGS=()
2565+ fi
2566+
25532567 # Staging: require opt-in for building with dispatch
25542568 if [[ ! " ${SKIP_BUILD_LIBDISPATCH} " ]] ; then
25552569 LIBDISPATCH_BUILD_DIR=" $( build_directory ${host} libdispatch) "
@@ -2574,6 +2588,7 @@ for host in "${ALL_HOSTS[@]}"; do
25742588 -DCMAKE_SWIFT_COMPILER:PATH=${SWIFTC_BIN}
25752589 -DCMAKE_INSTALL_PREFIX:PATH=$( get_host_install_prefix ${host} )
25762590
2591+ ${LIBICU_BUILD_ARGS[@]}
25772592 ${LIBDISPATCH_BUILD_ARGS[@]}
25782593
25792594 # NOTE(compnerd) we disable tests because XCTest is not ready
@@ -2658,47 +2673,62 @@ for host in "${ALL_HOSTS[@]}"; do
26582673 ICU_TMPLIBDIR=" ${SWIFT_BUILD_PATH} /lib/swift/${SWIFT_HOST_VARIANT} /${SWIFT_HOST_VARIANT_ARCH} "
26592674 if [[ " ${RECONFIGURE} " || ! -f " ${LIBICU_BUILD_DIR} " /config.status ]]; then
26602675 echo " Reconfiguring libicu"
2661- if [[ " $LIBICU_BUILD_TYPE " == " Release" ]] ; then
2662- icu_build_variant_arg=" --enable-release"
2663- elif [[ " $LIBICU_BUILD_TYPE " == " RelWithDebInfo" ]]; then
2664- icu_build_variant_arg=" --enable-release"
2676+ if [[ " $LIBICU_BUILD_TYPE " != " Release" ]] ; then
2677+ libicu_enable_debug=" --enable-debug"
26652678 else
2666- icu_build_variant_arg= " --enable-debug "
2679+ libicu_enable_debug= " "
26672680 fi
26682681 call mkdir -p " ${LIBICU_BUILD_DIR} "
2682+
2683+ if [ $( true_false " ${BUILD_SWIFT_STATIC_STDLIB} " ) == " TRUE" ]; then
2684+ libicu_enable_static=" --enable-static"
2685+ else
2686+ libicu_enable_static=" "
2687+ fi
2688+
26692689 with_pushd " ${LIBICU_BUILD_DIR} " \
2670- call " ${LIBICU_SOURCE_DIR} " /source/configure \
2690+ call env CXXFLAGS=-fPIC " ${LIBICU_SOURCE_DIR} " /icu4c/ source/runConfigureICU Linux \
26712691 ${icu_build_variant_arg} --prefix=${ICU_TMPINSTALL} \
2692+ ${libicu_enable_debug} \
2693+ --enable-renaming --with-library-suffix=swift \
26722694 --libdir=${ICU_TMPLIBDIR} \
26732695 --enable-shared --enable-static \
26742696 --enable-strict --disable-icuio \
26752697 --disable-plugins --disable-dyload --disable-extras \
2676- --disable-samples --with-data-packaging=auto
2698+ --disable-samples --disable-layoutex -- with-data-packaging=auto
26772699 else
26782700 echo " Skipping reconfiguration of libicu"
26792701 fi
26802702 with_pushd " ${LIBICU_BUILD_DIR} " \
2681- call make install
2703+ call make -j ${BUILD_JOBS} install
26822704 ICU_LIBDIR=" $( build_directory ${host} swift) /lib/swift/${SWIFT_HOST_VARIANT} /${SWIFT_HOST_VARIANT_ARCH} "
26832705 ICU_LIBDIR_STATIC=" $( build_directory ${host} swift) /lib/swift_static/${SWIFT_HOST_VARIANT} "
26842706 ICU_LIBDIR_STATIC_ARCH=" $( build_directory ${host} swift) /lib/swift_static/${SWIFT_HOST_VARIANT} /${SWIFT_HOST_VARIANT_ARCH} "
2685- mkdir -p " ${ICU_LIBDIR_STATIC_ARCH} "
2686- # Copy the static libs into the swift_static directory
2687- for l in uc i18n data
2688- do
2689- lib=" ${ICU_LIBDIR} /libicu${l} .a"
2690- cp " ${lib} " " ${ICU_LIBDIR_STATIC} "
2691- cp " ${lib} " " ${ICU_LIBDIR_STATIC_ARCH} "
2692- done
2707+ # Add in the ICU renaming config into uconfig.h
2708+ sed -e " /^#define __UCONFIG_H__/ r ${LIBICU_BUILD_DIR} /uconfig.h.prepend" -i ${ICU_TMPINSTALL} /include/unicode/uconfig.h
2709+
2710+ if [ $( true_false " ${BUILD_SWIFT_STATIC_STDLIB} " ) == " TRUE" ]; then
2711+ # Copy the static libs into the swift_static directory
2712+ mkdir -p " ${ICU_LIBDIR_STATIC_ARCH} "
2713+ for l in uc i18n data
2714+ do
2715+ lib=" ${ICU_LIBDIR} /libicu${l} swift.a"
2716+ cp " ${lib} " " ${ICU_LIBDIR_STATIC} "
2717+ cp " ${lib} " " ${ICU_LIBDIR_STATIC_ARCH} "
2718+ done
2719+ fi
26932720
26942721 # Set the PKG_CONFIG_PATH so that core-foundation can find the libraries and
26952722 # header files
2696- export PKG_CONFIG_PATH=" ${ICU_TMPLIBDIR} /pkgconfig:${PKG_CONFIG_PATH} "
2723+ export PKG_CONFIG_PATH=" ${LIBICU_BUILD_DIR} /config:${PKG_CONFIG_PATH} "
2724+ export LD_LIBRARY_PATH=" ${LD_LIBRARY_PATH} " :" ${LIBICU_BUILD_DIR} /lib"
26972725 swift_cmake_options=(
26982726 " ${swift_cmake_options[@]} "
26992727 -DSWIFT_${SWIFT_HOST_VARIANT_SDK} _${SWIFT_HOST_VARIANT_ARCH} _ICU_UC_INCLUDE:STRING=" ${ICU_TMPINSTALL} /include"
27002728 -DSWIFT_${SWIFT_HOST_VARIANT_SDK} _${SWIFT_HOST_VARIANT_ARCH} _ICU_I18N_INCLUDE:STRING=" ${ICU_TMPINSTALL} /include"
27012729 -DSWIFT_${SWIFT_HOST_VARIANT_SDK} _${SWIFT_HOST_VARIANT_ARCH} _ICU_STATICLIB:BOOL=TRUE
2730+ -DICU_UC_LIBDIR:PATH=" ${LIBICU_BUILD_DIR} /lib"
2731+ -DICU_I18N_LIBDIR:PATH=" ${LIBICU_BUILD_DIR} /lib"
27022732 )
27032733 # libicu builds itself and doesn't use cmake
27042734 continue
@@ -3110,6 +3140,20 @@ for host in "${ALL_HOSTS[@]}"; do
31103140 continue
31113141 fi
31123142
3143+ if [[ ! " ${SKIP_BUILD_LIBICU} " ]] ; then
3144+ ICU_ROOT=$( build_directory ${host} libicu) /tmp_install
3145+ LIBICU_BUILD_ARGS=(
3146+ -DICU_ROOT:PATH=${ICU_ROOT}
3147+ -DICU_INCLUDE_DIR:PATH=${ICU_ROOT} /include
3148+ -DICU_UC_LIBRARIES:FILEPATH=${ICU_LIBDIR} /libicuucswift.so
3149+ -DICU_UC_LIBRARY:FILEPATH=${ICU_LIBDIR} /libicuucswift.so
3150+ -DICU_I18N_LIBRARIES:FILEPATH=${ICU_LIBDIR} /libicui18nswift.so
3151+ -DICU_I18N_LIBRARY:FILEPATH=${ICU_LIBDIR} /libicui18nswift.so
3152+ )
3153+ else
3154+ LIBICU_BUILD_ARGS=()
3155+ fi
3156+
31133157 if [[ ! " ${SKIP_BUILD_LIBDISPATCH} " ]] ; then
31143158 LIBDISPATCH_BUILD_DIR=" $( build_directory ${host} libdispatch) "
31153159 LIBDISPATCH_BUILD_ARGS=(
@@ -3128,6 +3172,7 @@ for host in "${ALL_HOSTS[@]}"; do
31283172 -DCMAKE_SWIFT_COMPILER:PATH=${SWIFTC_BIN}
31293173 -DCMAKE_INSTALL_PREFIX:PATH=$( get_host_install_prefix ${host} )
31303174
3175+ ${LIBICU_BUILD_ARGS[@]}
31313176 ${LIBDISPATCH_BUILD_ARGS[@]}
31323177
31333178 # NOTE(compnerd) the time has come to enable tests now
@@ -3169,7 +3214,7 @@ for host in "${ALL_HOSTS[@]}"; do
31693214 LIBICU_BUILD_DIR=$( build_directory ${host} ${product} )
31703215 echo " --- Running tests for ${product} ---"
31713216 with_pushd " ${LIBICU_BUILD_DIR} /test" \
3172- call make
3217+ call make -j ${BUILD_JOBS}
31733218 echo " --- Finished tests for ${product} ---"
31743219 continue
31753220 ;;
@@ -3411,21 +3456,35 @@ for host in "${ALL_HOSTS[@]}"; do
34113456 exit 1
34123457 fi
34133458 echo " --- Installing ${product} ---"
3414- LIBICU_BUILD_DIR=$( build_directory ${host} ${product} )
3459+ ICU_BUILD_DIR=$( build_directory ${host} ${product} )
3460+ ICU_INSTALL_DIR=" $( get_host_install_destdir ${host} ) $( get_host_install_prefix ${host} ) "
34153461 ICU_LIBDIR=" $( build_directory ${host} swift) /lib/swift/${SWIFT_HOST_VARIANT} /${SWIFT_HOST_VARIANT_ARCH} "
3416- LIBICU_DEST_DIR=" $( get_host_install_destdir ${host} ) $( get_host_install_prefix ${host} ) lib/swift/${SWIFT_HOST_VARIANT} "
3417- LIBICU_DEST_DIR_STATIC=" $( get_host_install_destdir ${host} ) $( get_host_install_prefix ${host} ) lib/swift_static/${SWIFT_HOST_VARIANT} "
3462+ LIBICU_DEST_DIR=" ${ICU_INSTALL_DIR} lib/swift/${SWIFT_HOST_VARIANT} "
34183463 mkdir -p ${LIBICU_DEST_DIR}
3419- mkdir -p ${LIBICU_DEST_DIR_STATIC}
3464+
34203465 for l in uc i18n data
34213466 do
3422- lib=${ICU_LIBDIR} /libicu${l}
3467+ lib=${ICU_LIBDIR} /libicu${l} swift
34233468 echo " ${lib} => ${LIBICU_DEST_DIR} "
34243469 cp -d ${lib} .so ${lib} .so.* ${LIBICU_DEST_DIR}
3425- cp -d ${lib} .so ${lib} .so.* ${LIBICU_DEST_DIR}
3426- cp -d ${lib} .a ${LIBICU_DEST_DIR_STATIC}
3427- cp -d ${lib} .a ${LIBICU_DEST_DIR_STATIC}
34283470 done
3471+
3472+ if [ $( true_false " ${BUILD_SWIFT_STATIC_STDLIB} " ) == " TRUE" ]; then
3473+ LIBICU_DEST_DIR_STATIC=" ${ICU_INSTALL_DIR} lib/swift_static/${SWIFT_HOST_VARIANT} "
3474+ mkdir -p ${LIBICU_DEST_DIR_STATIC}
3475+ for l in uc i18n data
3476+ do
3477+ lib=${ICU_LIBDIR} /libicu${l} swift
3478+ echo " ${lib} => ${LIBICU_DEST_DIR_STATIC} "
3479+ cp -d ${lib} .a ${LIBICU_DEST_DIR_STATIC}
3480+ done
3481+ fi
3482+
3483+ ICU_TMP_INSTALL_DIR=" ${ICU_BUILD_DIR} /tmp_install"
3484+ mkdir -p " ${ICU_INSTALL_DIR} include"
3485+ cp -a " ${ICU_TMP_INSTALL_DIR} /include/unicode" " ${ICU_INSTALL_DIR} include"
3486+ mkdir -p " ${ICU_INSTALL_DIR} share/icuswift"
3487+ cp -a " ${ICU_TMP_INSTALL_DIR} /share/icuswift" " ${ICU_INSTALL_DIR} share"
34293488 continue
34303489 ;;
34313490 playgroundsupport)
0 commit comments