@@ -1244,6 +1244,7 @@ STRESSTEST_PACKAGE_DIR="${WORKSPACE}/swift-stress-tester"
12441244XCTEST_SOURCE_DIR=" ${WORKSPACE} /swift-corelibs-xctest"
12451245FOUNDATION_SOURCE_DIR=" ${WORKSPACE} /swift-corelibs-foundation"
12461246FOUNDATION_STATIC_SOURCE_DIR=" ${WORKSPACE} /swift-corelibs-foundation"
1247+ FOUNDATION_MACROS_SOURCE_DIR=" ${WORKSPACE} /swift-foundation/Sources/FoundationMacros"
12471248FOUNDATION_SWIFTFOUNDATION_SOURCE_DIR=" ${WORKSPACE} /swift-foundation"
12481249FOUNDATION_SWIFTFOUNDATIONICU_SOURCE_DIR=" ${WORKSPACE} /swift-foundation-icu"
12491250LIBDISPATCH_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