Skip to content

Commit 1c985ba

Browse files
authored
Merge pull request #75816 from jmschonfeld/build-script-foundation-macros
build-script: Invoke Foundation macros build separately
2 parents 5c00681 + 915f552 commit 1c985ba

File tree

1 file changed

+46
-10
lines changed

1 file changed

+46
-10
lines changed

utils/build-script-impl

Lines changed: 46 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1244,6 +1244,7 @@ STRESSTEST_PACKAGE_DIR="${WORKSPACE}/swift-stress-tester"
12441244
XCTEST_SOURCE_DIR="${WORKSPACE}/swift-corelibs-xctest"
12451245
FOUNDATION_SOURCE_DIR="${WORKSPACE}/swift-corelibs-foundation"
12461246
FOUNDATION_STATIC_SOURCE_DIR="${WORKSPACE}/swift-corelibs-foundation"
1247+
FOUNDATION_MACROS_SOURCE_DIR="${WORKSPACE}/swift-foundation/Sources/FoundationMacros"
12471248
FOUNDATION_SWIFTFOUNDATION_SOURCE_DIR="${WORKSPACE}/swift-foundation"
12481249
FOUNDATION_SWIFTFOUNDATIONICU_SOURCE_DIR="${WORKSPACE}/swift-foundation-icu"
12491250
LIBDISPATCH_SOURCE_DIR="${WORKSPACE}/swift-corelibs-libdispatch"
@@ -1261,6 +1262,7 @@ SWIFT_SYNTAX_SOURCE_DIR="${WORKSPACE}/swift-syntax"
12611262
[[ "${SKIP_BUILD_STATIC_LIBDISPATCH}" ]] || PRODUCTS+=(libdispatch_static)
12621263
# llbuild and XCTest depend on Foundation, so Foundation must
12631264
# be added to the list of build products first.
1265+
[[ "${SKIP_BUILD_FOUNDATION}" ]] || PRODUCTS+=(foundation_macros)
12641266
[[ "${SKIP_BUILD_FOUNDATION}" ]] || PRODUCTS+=(foundation)
12651267
[[ "${SKIP_BUILD_STATIC_FOUNDATION}" ]] || PRODUCTS+=(foundation_static)
12661268
[[ "${SKIP_BUILD_LLBUILD}" ]] || PRODUCTS+=(llbuild)
@@ -1336,7 +1338,7 @@ function build_directory_bin() {
13361338
xctest)
13371339
echo "${root}/${XCTEST_BUILD_TYPE}/bin"
13381340
;;
1339-
foundation|foundation_static)
1341+
foundation|foundation_static|foundation_macros)
13401342
echo "${root}/${FOUNDATION_BUILD_TYPE}/bin"
13411343
;;
13421344
libdispatch|libdispatch_static)
@@ -1474,7 +1476,7 @@ function cmake_config_opt() {
14741476
xctest)
14751477
echo "--config ${XCTEST_BUILD_TYPE}"
14761478
;;
1477-
foundation|foundation_static)
1479+
foundation|foundation_static|foundation_macros)
14781480
echo "--config ${FOUNDATION_BUILD_TYPE}"
14791481
;;
14801482
libdispatch|libdispatch_static)
@@ -1675,7 +1677,7 @@ for host in "${ALL_HOSTS[@]}"; do
16751677
fi
16761678

16771679
for product in "${PRODUCTS[@]}"; do
1678-
[[ $(should_execute_action "${host}-${product/_static}-build") ]] || continue
1680+
[[ $(should_execute_action "${host}-${product%%_*}-build") ]] || continue
16791681

16801682
source_dir_var="$(toupper ${product})_SOURCE_DIR"
16811683
source_dir=${!source_dir_var}
@@ -1688,7 +1690,7 @@ for host in "${ALL_HOSTS[@]}"; do
16881690
module_cache="${build_dir}/module-cache"
16891691

16901692
# Add any specific cmake options specified by build-script
1691-
product_cmake_options_name=$(to_varname "${product/_static}")_CMAKE_OPTIONS
1693+
product_cmake_options_name=$(to_varname "${product%%_*}")_CMAKE_OPTIONS
16921694
product_cmake_options=(${!product_cmake_options_name}) # convert to array
16931695
cmake_options+=("${product_cmake_options[@]}")
16941696

@@ -2401,6 +2403,40 @@ for host in "${ALL_HOSTS[@]}"; do
24012403
;;
24022404
esac
24032405

2406+
;;
2407+
foundation_macros)
2408+
if [[ ${host} == "macosx"* ]]; then
2409+
echo "Skipping Foundation Macros on OS X -- Foundation is part of the OS on this platform"
2410+
continue
2411+
fi
2412+
2413+
if [[ "${SKIP_CLEAN_FOUNDATION}" == "0" ]]
2414+
then
2415+
# The Swift project might have been changed, but CMake might
2416+
# not be aware and will not rebuild.
2417+
echo "Cleaning the Foundation Macros build directory"
2418+
call rm -rf "${build_dir}"
2419+
fi
2420+
2421+
cmake_options=(
2422+
${cmake_options[@]}
2423+
-DCMAKE_BUILD_TYPE:STRING=${FOUNDATION_BUILD_TYPE}
2424+
-DCMAKE_C_COMPILER:PATH=${CLANG_BIN}/clang
2425+
-DCMAKE_CXX_COMPILER:PATH=${CLANG_BIN}/clang++
2426+
-DCMAKE_Swift_COMPILER:PATH=${SWIFTC_BIN}
2427+
-DCMAKE_Swift_FLAGS:STRING="$(common_swift_flags)"
2428+
-DCMAKE_INSTALL_PREFIX:PATH=$(get_host_install_prefix ${host})
2429+
2430+
-DSwiftSyntax_DIR=$(build_directory ${host} swift)/cmake/modules
2431+
2432+
-DBUILD_SHARED_LIBS=YES
2433+
-DCMAKE_C_FLAGS="$(swift_c_flags ${host}) $(maybe_lfts ${host})"
2434+
)
2435+
2436+
if [[ $(is_cross_tools_host ${host}) ]] ; then
2437+
cmake_options+=("${SWIFT_TARGET_CMAKE_OPTIONS[@]}")
2438+
fi
2439+
24042440
;;
24052441
foundation|foundation_static)
24062442
# The configuration script requires knowing about XCTest's
@@ -2409,7 +2445,7 @@ for host in "${ALL_HOSTS[@]}"; do
24092445
XCTEST_BUILD_DIR=$(build_directory ${host} xctest)
24102446

24112447
if [[ ${host} == "macosx"* ]]; then
2412-
echo "Skipping Foundation on OS X -- use the Xcode project instead"
2448+
echo "Skipping Foundation on OS X -- Foundation is part of the OS on this platform"
24132449
continue
24142450
fi
24152451

@@ -2496,7 +2532,7 @@ for host in "${ALL_HOSTS[@]}"; do
24962532
-DFOUNDATION_PATH_TO_LIBDISPATCH_BUILD=$(build_directory ${host} libdispatch)
24972533
-Ddispatch_DIR=$(build_directory ${host} libdispatch)/cmake/modules
24982534

2499-
-DSwiftSyntax_DIR=$(build_directory ${host} swift)/cmake/modules
2535+
-DSwiftFoundation_MACRO=$(build_directory ${LOCAL_HOST} foundation_macros)/lib
25002536

25012537
-D_SwiftFoundation_SourceDIR=${FOUNDATION_SWIFTFOUNDATION_SOURCE_DIR}
25022538
-D_SwiftFoundationICU_SourceDIR=${FOUNDATION_SWIFTFOUNDATIONICU_SOURCE_DIR}
@@ -2825,7 +2861,7 @@ for host in "${ALL_HOSTS[@]}"; do
28252861
;;
28262862
esac
28272863
;;
2828-
foundation|foundation_static)
2864+
foundation|foundation_static|foundation_macros)
28292865
continue
28302866
;;
28312867
libdispatch)
@@ -2943,7 +2979,7 @@ for host in "${ALL_HOSTS[@]}"; do
29432979
set_build_options_for_host $host
29442980

29452981
for product in "${PRODUCTS[@]}"; do
2946-
[[ $(should_execute_action "${host}-${product/_static}-install") ]] || continue
2982+
[[ $(should_execute_action "${host}-${product%%_*}-install") ]] || continue
29472983
if [[ -z "${INSTALL_DESTDIR}" ]] ; then
29482984
echo "--install-destdir is required to install products."
29492985
exit 1
@@ -2991,10 +3027,10 @@ for host in "${ALL_HOSTS[@]}"; do
29913027
esac
29923028

29933029
;;
2994-
foundation|foundation_static)
3030+
foundation|foundation_static|foundation_macros)
29953031
# FIXME: Foundation doesn't build from the script on OS X
29963032
if [[ ${host} == "macosx"* ]]; then
2997-
echo "Skipping Foundation on OS X -- use the Xcode project instead"
3033+
echo "Skipping Foundation on OS X -- Foundation does not build for this platform"
29983034
continue
29993035
fi
30003036

0 commit comments

Comments
 (0)