@@ -1255,6 +1255,7 @@ STRESSTEST_PACKAGE_DIR="${WORKSPACE}/swift-stress-tester"
1255
1255
XCTEST_SOURCE_DIR=" ${WORKSPACE} /swift-corelibs-xctest"
1256
1256
FOUNDATION_SOURCE_DIR=" ${WORKSPACE} /swift-corelibs-foundation"
1257
1257
FOUNDATION_STATIC_SOURCE_DIR=" ${WORKSPACE} /swift-corelibs-foundation"
1258
+ FOUNDATION_MACROS_SOURCE_DIR=" ${WORKSPACE} /swift-foundation/Sources/FoundationMacros"
1258
1259
FOUNDATION_SWIFTFOUNDATION_SOURCE_DIR=" ${WORKSPACE} /swift-foundation"
1259
1260
FOUNDATION_SWIFTFOUNDATIONICU_SOURCE_DIR=" ${WORKSPACE} /swift-foundation-icu"
1260
1261
LIBDISPATCH_SOURCE_DIR=" ${WORKSPACE} /swift-corelibs-libdispatch"
@@ -1274,6 +1275,7 @@ SWIFT_SYNTAX_SOURCE_DIR="${WORKSPACE}/swift-syntax"
1274
1275
[[ " ${SKIP_BUILD_STATIC_LIBDISPATCH} " ]] || PRODUCTS+=(libdispatch_static)
1275
1276
# llbuild and XCTest depend on Foundation, so Foundation must
1276
1277
# be added to the list of build products first.
1278
+ [[ " ${SKIP_BUILD_FOUNDATION} " ]] || PRODUCTS+=(foundation_macros)
1277
1279
[[ " ${SKIP_BUILD_FOUNDATION} " ]] || PRODUCTS+=(foundation)
1278
1280
[[ " ${SKIP_BUILD_STATIC_FOUNDATION} " ]] || PRODUCTS+=(foundation_static)
1279
1281
[[ " ${SKIP_BUILD_LLBUILD} " ]] || PRODUCTS+=(llbuild)
@@ -1349,7 +1351,7 @@ function build_directory_bin() {
1349
1351
xctest)
1350
1352
echo " ${root} /${XCTEST_BUILD_TYPE} /bin"
1351
1353
;;
1352
- foundation|foundation_static)
1354
+ foundation|foundation_static|foundation_macros )
1353
1355
echo " ${root} /${FOUNDATION_BUILD_TYPE} /bin"
1354
1356
;;
1355
1357
libdispatch|libdispatch_static)
@@ -1489,7 +1491,7 @@ function cmake_config_opt() {
1489
1491
xctest)
1490
1492
echo " --config ${XCTEST_BUILD_TYPE} "
1491
1493
;;
1492
- foundation|foundation_static)
1494
+ foundation|foundation_static|foundation_macros )
1493
1495
echo " --config ${FOUNDATION_BUILD_TYPE} "
1494
1496
;;
1495
1497
libdispatch|libdispatch_static)
@@ -1680,7 +1682,7 @@ for host in "${ALL_HOSTS[@]}"; do
1680
1682
fi
1681
1683
1682
1684
for product in " ${PRODUCTS[@]} " ; do
1683
- [[ $( should_execute_action " ${host} -${product/ _static } -build" ) ]] || continue
1685
+ [[ $( should_execute_action " ${host} -${product%% _ * } -build" ) ]] || continue
1684
1686
1685
1687
source_dir_var=" $( toupper ${product} ) _SOURCE_DIR"
1686
1688
source_dir=${! source_dir_var}
@@ -1693,7 +1695,7 @@ for host in "${ALL_HOSTS[@]}"; do
1693
1695
module_cache=" ${build_dir} /module-cache"
1694
1696
1695
1697
# Add any specific cmake options specified by build-script
1696
- product_cmake_options_name=$( to_varname " ${product/ _static } " ) _CMAKE_OPTIONS
1698
+ product_cmake_options_name=$( to_varname " ${product%% _ * } " ) _CMAKE_OPTIONS
1697
1699
product_cmake_options=(${! product_cmake_options_name} ) # convert to array
1698
1700
cmake_options+=(" ${product_cmake_options[@]} " )
1699
1701
@@ -2408,6 +2410,41 @@ for host in "${ALL_HOSTS[@]}"; do
2408
2410
;;
2409
2411
esac
2410
2412
2413
+ ;;
2414
+ foundation_macros)
2415
+ if [[ ${host} == " macosx" * ]]; then
2416
+ echo " Skipping Foundation Macros on OS X -- Foundation is part of the OS on this platform"
2417
+ continue
2418
+ fi
2419
+
2420
+ if [[ " ${SKIP_CLEAN_FOUNDATION} " == " 0" ]]
2421
+ then
2422
+ # The Swift project might have been changed, but CMake might
2423
+ # not be aware and will not rebuild.
2424
+ echo " Cleaning the Foundation Macros build directory"
2425
+ call rm -rf " ${build_dir} "
2426
+ fi
2427
+
2428
+ cmake_options=(
2429
+ ${cmake_options[@]}
2430
+ -DCMAKE_BUILD_TYPE:STRING=${FOUNDATION_BUILD_TYPE}
2431
+ -DCMAKE_C_COMPILER:PATH=${CLANG_BIN} /clang
2432
+ -DCMAKE_CXX_COMPILER:PATH=${CLANG_BIN} /clang++
2433
+ -DCMAKE_SWIFT_COMPILER:PATH=${SWIFTC_BIN}
2434
+ -DCMAKE_Swift_COMPILER:PATH=${SWIFTC_BIN}
2435
+ -DCMAKE_Swift_FLAGS:STRING=" $( common_swift_flags) "
2436
+ -DCMAKE_INSTALL_PREFIX:PATH=$( get_host_install_prefix ${host} )
2437
+
2438
+ -DSwiftSyntax_DIR=$( build_directory ${host} swift) /cmake/modules
2439
+
2440
+ -DBUILD_SHARED_LIBS=YES
2441
+ -DCMAKE_C_FLAGS=" $( swift_c_flags ${host} ) $( maybe_lfts ${host} ) "
2442
+ )
2443
+
2444
+ if [[ $( is_cross_tools_host ${host} ) ]] ; then
2445
+ cmake_options+=(" ${SWIFT_TARGET_CMAKE_OPTIONS[@]} " )
2446
+ fi
2447
+
2411
2448
;;
2412
2449
foundation|foundation_static)
2413
2450
# The configuration script requires knowing about XCTest's
@@ -2416,7 +2453,7 @@ for host in "${ALL_HOSTS[@]}"; do
2416
2453
XCTEST_BUILD_DIR=$( build_directory ${host} xctest)
2417
2454
2418
2455
if [[ ${host} == " macosx" * ]]; then
2419
- echo " Skipping Foundation on OS X -- use the Xcode project instead "
2456
+ echo " Skipping Foundation on OS X -- Foundation is part of the OS on this platform "
2420
2457
continue
2421
2458
fi
2422
2459
@@ -2534,7 +2571,7 @@ for host in "${ALL_HOSTS[@]}"; do
2534
2571
-DFOUNDATION_PATH_TO_LIBDISPATCH_BUILD=$( build_directory ${host} libdispatch)
2535
2572
-Ddispatch_DIR=$( build_directory ${host} libdispatch) /cmake/modules
2536
2573
2537
- -DSwiftSyntax_DIR =$( build_directory ${host} swift ) /cmake/modules
2574
+ -DSwiftFoundation_MACROS =$( build_directory ${LOCAL_HOST} foundation_macros ) /lib
2538
2575
2539
2576
-D_SwiftFoundation_SourceDIR=${FOUNDATION_SWIFTFOUNDATION_SOURCE_DIR}
2540
2577
-D_SwiftFoundationICU_SourceDIR=${FOUNDATION_SWIFTFOUNDATIONICU_SOURCE_DIR}
@@ -2914,7 +2951,7 @@ for host in "${ALL_HOSTS[@]}"; do
2914
2951
;;
2915
2952
esac
2916
2953
;;
2917
- foundation|foundation_static)
2954
+ foundation|foundation_static|foundation_macros )
2918
2955
continue
2919
2956
;;
2920
2957
libdispatch)
@@ -3026,7 +3063,7 @@ for host in "${ALL_HOSTS[@]}"; do
3026
3063
set_build_options_for_host $host
3027
3064
3028
3065
for product in " ${PRODUCTS[@]} " ; do
3029
- [[ $( should_execute_action " ${host} -${product/ _static } -install" ) ]] || continue
3066
+ [[ $( should_execute_action " ${host} -${product%% _ * } -install" ) ]] || continue
3030
3067
if [[ -z " ${INSTALL_DESTDIR} " ]] ; then
3031
3068
echo " --install-destdir is required to install products."
3032
3069
exit 1
@@ -3074,10 +3111,10 @@ for host in "${ALL_HOSTS[@]}"; do
3074
3111
esac
3075
3112
3076
3113
;;
3077
- foundation|foundation_static)
3114
+ foundation|foundation_static|foundation_macros )
3078
3115
# FIXME: Foundation doesn't build from the script on OS X
3079
3116
if [[ ${host} == " macosx" * ]]; then
3080
- echo " Skipping Foundation on OS X -- use the Xcode project instead "
3117
+ echo " Skipping Foundation on OS X -- Foundation does not build for this platform "
3081
3118
continue
3082
3119
fi
3083
3120
0 commit comments