@@ -1244,6 +1244,7 @@ STRESSTEST_PACKAGE_DIR="${WORKSPACE}/swift-stress-tester"
1244
1244
XCTEST_SOURCE_DIR=" ${WORKSPACE} /swift-corelibs-xctest"
1245
1245
FOUNDATION_SOURCE_DIR=" ${WORKSPACE} /swift-corelibs-foundation"
1246
1246
FOUNDATION_STATIC_SOURCE_DIR=" ${WORKSPACE} /swift-corelibs-foundation"
1247
+ FOUNDATION_MACROS_SOURCE_DIR=" ${WORKSPACE} /swift-foundation/Sources/FoundationMacros"
1247
1248
FOUNDATION_SWIFTFOUNDATION_SOURCE_DIR=" ${WORKSPACE} /swift-foundation"
1248
1249
FOUNDATION_SWIFTFOUNDATIONICU_SOURCE_DIR=" ${WORKSPACE} /swift-foundation-icu"
1249
1250
LIBDISPATCH_SOURCE_DIR=" ${WORKSPACE} /swift-corelibs-libdispatch"
@@ -1261,6 +1262,7 @@ SWIFT_SYNTAX_SOURCE_DIR="${WORKSPACE}/swift-syntax"
1261
1262
[[ " ${SKIP_BUILD_STATIC_LIBDISPATCH} " ]] || PRODUCTS+=(libdispatch_static)
1262
1263
# llbuild and XCTest depend on Foundation, so Foundation must
1263
1264
# be added to the list of build products first.
1265
+ [[ " ${SKIP_BUILD_FOUNDATION} " ]] || PRODUCTS+=(foundation_macros)
1264
1266
[[ " ${SKIP_BUILD_FOUNDATION} " ]] || PRODUCTS+=(foundation)
1265
1267
[[ " ${SKIP_BUILD_STATIC_FOUNDATION} " ]] || PRODUCTS+=(foundation_static)
1266
1268
[[ " ${SKIP_BUILD_LLBUILD} " ]] || PRODUCTS+=(llbuild)
@@ -1336,7 +1338,7 @@ function build_directory_bin() {
1336
1338
xctest)
1337
1339
echo " ${root} /${XCTEST_BUILD_TYPE} /bin"
1338
1340
;;
1339
- foundation|foundation_static)
1341
+ foundation|foundation_static|foundation_macros )
1340
1342
echo " ${root} /${FOUNDATION_BUILD_TYPE} /bin"
1341
1343
;;
1342
1344
libdispatch|libdispatch_static)
@@ -1474,7 +1476,7 @@ function cmake_config_opt() {
1474
1476
xctest)
1475
1477
echo " --config ${XCTEST_BUILD_TYPE} "
1476
1478
;;
1477
- foundation|foundation_static)
1479
+ foundation|foundation_static|foundation_macros )
1478
1480
echo " --config ${FOUNDATION_BUILD_TYPE} "
1479
1481
;;
1480
1482
libdispatch|libdispatch_static)
@@ -1675,7 +1677,7 @@ for host in "${ALL_HOSTS[@]}"; do
1675
1677
fi
1676
1678
1677
1679
for product in " ${PRODUCTS[@]} " ; do
1678
- [[ $( should_execute_action " ${host} -${product/ _static } -build" ) ]] || continue
1680
+ [[ $( should_execute_action " ${host} -${product%% _ * } -build" ) ]] || continue
1679
1681
1680
1682
source_dir_var=" $( toupper ${product} ) _SOURCE_DIR"
1681
1683
source_dir=${! source_dir_var}
@@ -1688,7 +1690,7 @@ for host in "${ALL_HOSTS[@]}"; do
1688
1690
module_cache=" ${build_dir} /module-cache"
1689
1691
1690
1692
# 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
1692
1694
product_cmake_options=(${! product_cmake_options_name} ) # convert to array
1693
1695
cmake_options+=(" ${product_cmake_options[@]} " )
1694
1696
@@ -2401,6 +2403,40 @@ for host in "${ALL_HOSTS[@]}"; do
2401
2403
;;
2402
2404
esac
2403
2405
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
+
2404
2440
;;
2405
2441
foundation|foundation_static)
2406
2442
# The configuration script requires knowing about XCTest's
@@ -2409,7 +2445,7 @@ for host in "${ALL_HOSTS[@]}"; do
2409
2445
XCTEST_BUILD_DIR=$( build_directory ${host} xctest)
2410
2446
2411
2447
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 "
2413
2449
continue
2414
2450
fi
2415
2451
@@ -2496,7 +2532,7 @@ for host in "${ALL_HOSTS[@]}"; do
2496
2532
-DFOUNDATION_PATH_TO_LIBDISPATCH_BUILD=$( build_directory ${host} libdispatch)
2497
2533
-Ddispatch_DIR=$( build_directory ${host} libdispatch) /cmake/modules
2498
2534
2499
- -DSwiftSyntax_DIR =$( build_directory ${host} swift ) /cmake/modules
2535
+ -DSwiftFoundation_MACRO =$( build_directory ${LOCAL_HOST} foundation_macros ) /lib
2500
2536
2501
2537
-D_SwiftFoundation_SourceDIR=${FOUNDATION_SWIFTFOUNDATION_SOURCE_DIR}
2502
2538
-D_SwiftFoundationICU_SourceDIR=${FOUNDATION_SWIFTFOUNDATIONICU_SOURCE_DIR}
@@ -2825,7 +2861,7 @@ for host in "${ALL_HOSTS[@]}"; do
2825
2861
;;
2826
2862
esac
2827
2863
;;
2828
- foundation|foundation_static)
2864
+ foundation|foundation_static|foundation_macros )
2829
2865
continue
2830
2866
;;
2831
2867
libdispatch)
@@ -2943,7 +2979,7 @@ for host in "${ALL_HOSTS[@]}"; do
2943
2979
set_build_options_for_host $host
2944
2980
2945
2981
for product in " ${PRODUCTS[@]} " ; do
2946
- [[ $( should_execute_action " ${host} -${product/ _static } -install" ) ]] || continue
2982
+ [[ $( should_execute_action " ${host} -${product%% _ * } -install" ) ]] || continue
2947
2983
if [[ -z " ${INSTALL_DESTDIR} " ]] ; then
2948
2984
echo " --install-destdir is required to install products."
2949
2985
exit 1
@@ -2991,10 +3027,10 @@ for host in "${ALL_HOSTS[@]}"; do
2991
3027
esac
2992
3028
2993
3029
;;
2994
- foundation|foundation_static)
3030
+ foundation|foundation_static|foundation_macros )
2995
3031
# FIXME: Foundation doesn't build from the script on OS X
2996
3032
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 "
2998
3034
continue
2999
3035
fi
3000
3036
0 commit comments