Skip to content

Commit 8bde819

Browse files
jmschonfeldcompnerd
authored andcommitted
Invoke Foundation macros build separately
1 parent dcdb9b1 commit 8bde819

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
@@ -1255,6 +1255,7 @@ STRESSTEST_PACKAGE_DIR="${WORKSPACE}/swift-stress-tester"
12551255
XCTEST_SOURCE_DIR="${WORKSPACE}/swift-corelibs-xctest"
12561256
FOUNDATION_SOURCE_DIR="${WORKSPACE}/swift-corelibs-foundation"
12571257
FOUNDATION_STATIC_SOURCE_DIR="${WORKSPACE}/swift-corelibs-foundation"
1258+
FOUNDATION_MACROS_SOURCE_DIR="${WORKSPACE}/swift-foundation/Sources/FoundationMacros"
12581259
FOUNDATION_SWIFTFOUNDATION_SOURCE_DIR="${WORKSPACE}/swift-foundation"
12591260
FOUNDATION_SWIFTFOUNDATIONICU_SOURCE_DIR="${WORKSPACE}/swift-foundation-icu"
12601261
LIBDISPATCH_SOURCE_DIR="${WORKSPACE}/swift-corelibs-libdispatch"
@@ -1274,6 +1275,7 @@ SWIFT_SYNTAX_SOURCE_DIR="${WORKSPACE}/swift-syntax"
12741275
[[ "${SKIP_BUILD_STATIC_LIBDISPATCH}" ]] || PRODUCTS+=(libdispatch_static)
12751276
# llbuild and XCTest depend on Foundation, so Foundation must
12761277
# be added to the list of build products first.
1278+
[[ "${SKIP_BUILD_FOUNDATION}" ]] || PRODUCTS+=(foundation_macros)
12771279
[[ "${SKIP_BUILD_FOUNDATION}" ]] || PRODUCTS+=(foundation)
12781280
[[ "${SKIP_BUILD_STATIC_FOUNDATION}" ]] || PRODUCTS+=(foundation_static)
12791281
[[ "${SKIP_BUILD_LLBUILD}" ]] || PRODUCTS+=(llbuild)
@@ -1349,7 +1351,7 @@ function build_directory_bin() {
13491351
xctest)
13501352
echo "${root}/${XCTEST_BUILD_TYPE}/bin"
13511353
;;
1352-
foundation|foundation_static)
1354+
foundation|foundation_static|foundation_macros)
13531355
echo "${root}/${FOUNDATION_BUILD_TYPE}/bin"
13541356
;;
13551357
libdispatch|libdispatch_static)
@@ -1489,7 +1491,7 @@ function cmake_config_opt() {
14891491
xctest)
14901492
echo "--config ${XCTEST_BUILD_TYPE}"
14911493
;;
1492-
foundation|foundation_static)
1494+
foundation|foundation_static|foundation_macros)
14931495
echo "--config ${FOUNDATION_BUILD_TYPE}"
14941496
;;
14951497
libdispatch|libdispatch_static)
@@ -1680,7 +1682,7 @@ for host in "${ALL_HOSTS[@]}"; do
16801682
fi
16811683

16821684
for product in "${PRODUCTS[@]}"; do
1683-
[[ $(should_execute_action "${host}-${product/_static}-build") ]] || continue
1685+
[[ $(should_execute_action "${host}-${product%%_*}-build") ]] || continue
16841686

16851687
source_dir_var="$(toupper ${product})_SOURCE_DIR"
16861688
source_dir=${!source_dir_var}
@@ -1693,7 +1695,7 @@ for host in "${ALL_HOSTS[@]}"; do
16931695
module_cache="${build_dir}/module-cache"
16941696

16951697
# 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
16971699
product_cmake_options=(${!product_cmake_options_name}) # convert to array
16981700
cmake_options+=("${product_cmake_options[@]}")
16991701

@@ -2408,6 +2410,41 @@ for host in "${ALL_HOSTS[@]}"; do
24082410
;;
24092411
esac
24102412

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+
24112448
;;
24122449
foundation|foundation_static)
24132450
# The configuration script requires knowing about XCTest's
@@ -2416,7 +2453,7 @@ for host in "${ALL_HOSTS[@]}"; do
24162453
XCTEST_BUILD_DIR=$(build_directory ${host} xctest)
24172454

24182455
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"
24202457
continue
24212458
fi
24222459

@@ -2534,7 +2571,7 @@ for host in "${ALL_HOSTS[@]}"; do
25342571
-DFOUNDATION_PATH_TO_LIBDISPATCH_BUILD=$(build_directory ${host} libdispatch)
25352572
-Ddispatch_DIR=$(build_directory ${host} libdispatch)/cmake/modules
25362573

2537-
-DSwiftSyntax_DIR=$(build_directory ${host} swift)/cmake/modules
2574+
-DSwiftFoundation_MACROS=$(build_directory ${LOCAL_HOST} foundation_macros)/lib
25382575

25392576
-D_SwiftFoundation_SourceDIR=${FOUNDATION_SWIFTFOUNDATION_SOURCE_DIR}
25402577
-D_SwiftFoundationICU_SourceDIR=${FOUNDATION_SWIFTFOUNDATIONICU_SOURCE_DIR}
@@ -2914,7 +2951,7 @@ for host in "${ALL_HOSTS[@]}"; do
29142951
;;
29152952
esac
29162953
;;
2917-
foundation|foundation_static)
2954+
foundation|foundation_static|foundation_macros)
29182955
continue
29192956
;;
29202957
libdispatch)
@@ -3026,7 +3063,7 @@ for host in "${ALL_HOSTS[@]}"; do
30263063
set_build_options_for_host $host
30273064

30283065
for product in "${PRODUCTS[@]}"; do
3029-
[[ $(should_execute_action "${host}-${product/_static}-install") ]] || continue
3066+
[[ $(should_execute_action "${host}-${product%%_*}-install") ]] || continue
30303067
if [[ -z "${INSTALL_DESTDIR}" ]] ; then
30313068
echo "--install-destdir is required to install products."
30323069
exit 1
@@ -3074,10 +3111,10 @@ for host in "${ALL_HOSTS[@]}"; do
30743111
esac
30753112

30763113
;;
3077-
foundation|foundation_static)
3114+
foundation|foundation_static|foundation_macros)
30783115
# FIXME: Foundation doesn't build from the script on OS X
30793116
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"
30813118
continue
30823119
fi
30833120

0 commit comments

Comments
 (0)