@@ -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,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