Skip to content

Commit 8b5a7d8

Browse files
committed
Invoke Foundation macros build separately
1 parent 9d69f2b commit 8b5a7d8

File tree

1 file changed

+47
-10
lines changed

1 file changed

+47
-10
lines changed

utils/build-script-impl

Lines changed: 47 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,41 @@ 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_COMPILER:PATH=${SWIFTC_BIN}
2428+
-DCMAKE_Swift_FLAGS:STRING="$(common_swift_flags)"
2429+
-DCMAKE_INSTALL_PREFIX:PATH=$(get_host_install_prefix ${host})
2430+
2431+
-DSwiftSyntax_DIR=$(build_directory ${host} swift)/cmake/modules
2432+
2433+
-DBUILD_SHARED_LIBS=YES
2434+
-DCMAKE_C_FLAGS="$(swift_c_flags ${host}) $(maybe_lfts ${host})"
2435+
)
2436+
2437+
if [[ $(is_cross_tools_host ${host}) ]] ; then
2438+
cmake_options+=("${SWIFT_TARGET_CMAKE_OPTIONS[@]}")
2439+
fi
2440+
24042441
;;
24052442
foundation|foundation_static)
24062443
# The configuration script requires knowing about XCTest's
@@ -2409,7 +2446,7 @@ for host in "${ALL_HOSTS[@]}"; do
24092446
XCTEST_BUILD_DIR=$(build_directory ${host} xctest)
24102447

24112448
if [[ ${host} == "macosx"* ]]; then
2412-
echo "Skipping Foundation on OS X -- use the Xcode project instead"
2449+
echo "Skipping Foundation on OS X -- Foundation is part of the OS on this platform"
24132450
continue
24142451
fi
24152452

@@ -2496,7 +2533,7 @@ for host in "${ALL_HOSTS[@]}"; do
24962533
-DFOUNDATION_PATH_TO_LIBDISPATCH_BUILD=$(build_directory ${host} libdispatch)
24972534
-Ddispatch_DIR=$(build_directory ${host} libdispatch)/cmake/modules
24982535

2499-
-DSwiftSyntax_DIR=$(build_directory ${host} swift)/cmake/modules
2536+
-DSwiftFoundation_MACROS=$(build_directory ${LOCAL_HOST} foundation_macros)/lib
25002537

25012538
-D_SwiftFoundation_SourceDIR=${FOUNDATION_SWIFTFOUNDATION_SOURCE_DIR}
25022539
-D_SwiftFoundationICU_SourceDIR=${FOUNDATION_SWIFTFOUNDATIONICU_SOURCE_DIR}
@@ -2825,7 +2862,7 @@ for host in "${ALL_HOSTS[@]}"; do
28252862
;;
28262863
esac
28272864
;;
2828-
foundation|foundation_static)
2865+
foundation|foundation_static|foundation_macros)
28292866
continue
28302867
;;
28312868
libdispatch)
@@ -2943,7 +2980,7 @@ for host in "${ALL_HOSTS[@]}"; do
29432980
set_build_options_for_host $host
29442981

29452982
for product in "${PRODUCTS[@]}"; do
2946-
[[ $(should_execute_action "${host}-${product/_static}-install") ]] || continue
2983+
[[ $(should_execute_action "${host}-${product%%_*}-install") ]] || continue
29472984
if [[ -z "${INSTALL_DESTDIR}" ]] ; then
29482985
echo "--install-destdir is required to install products."
29492986
exit 1
@@ -2991,10 +3028,10 @@ for host in "${ALL_HOSTS[@]}"; do
29913028
esac
29923029

29933030
;;
2994-
foundation|foundation_static)
3031+
foundation|foundation_static|foundation_macros)
29953032
# FIXME: Foundation doesn't build from the script on OS X
29963033
if [[ ${host} == "macosx"* ]]; then
2997-
echo "Skipping Foundation on OS X -- use the Xcode project instead"
3034+
echo "Skipping Foundation on OS X -- Foundation does not build for this platform"
29983035
continue
29993036
fi
30003037

0 commit comments

Comments
 (0)