@@ -1756,8 +1756,7 @@ function set_swiftpm_bootstrap_command() {
1756
1756
)
1757
1757
1758
1758
if [[ ! " ${SKIP_BUILD_FOUNDATION} " ]] ; then
1759
- swiftpm_bootstrap_command+=(
1760
- --foundation=" ${FOUNDATION_BUILD_DIR} /Foundation" )
1759
+ swiftpm_bootstrap_command+=( --foundation=" ${FOUNDATION_BUILD_DIR} " )
1761
1760
if [[ ! " ${SKIP_BUILD_LIBDISPATCH} " ]] ; then
1762
1761
swiftpm_bootstrap_command+=(
1763
1762
$LIBDISPATCH_BUILD_ARGS )
@@ -2496,7 +2495,7 @@ for host in "${ALL_HOSTS[@]}"; do
2496
2495
call " ${XCTEST_SOURCE_DIR} " /build_script.py \
2497
2496
--swiftc=" ${SWIFTC_BIN} " \
2498
2497
--build-dir=" ${XCTEST_BUILD_DIR} " \
2499
- --foundation-build-dir=" ${FOUNDATION_BUILD_DIR} /Foundation " \
2498
+ --foundation-build-dir=" ${FOUNDATION_BUILD_DIR} " \
2500
2499
--swift-build-dir=" ${SWIFT_BUILD_DIR} " \
2501
2500
$LIBDISPATCH_BUILD_ARGS \
2502
2501
$XCTEST_BUILD_ARGS
@@ -2520,11 +2519,11 @@ for host in "${ALL_HOSTS[@]}"; do
2520
2519
-DCMAKE_INSTALL_LIBDIR:PATH=" lib"
2521
2520
2522
2521
-DXCTEST_PATH_TO_LIBDISPATCH_SOURCE:PATH=${LIBDISPATCH_SOURCE_DIR}
2523
- -DXCTEST_PATH_TO_LIBDISPATCH_BUILD:PATH=${LIBDISPATCH_BUILD_DIR}
2522
+ -DXCTEST_PATH_TO_LIBDISPATCH_BUILD:PATH=$( build_directory ${host} libdispatch )
2524
2523
2525
2524
-DXCTEST_PATH_TO_FOUNDATION_BUILD:PATH=${FOUNDATION_BUILD_DIR}
2526
2525
2527
- -DXCTEST_PATH_TO_COREFOUNDATION_BUILD:PATH=${FOUNDATION_BUILD_DIR} /Foundation/ CoreFoundation
2526
+ -DXCTEST_PATH_TO_COREFOUNDATION_BUILD:PATH=${FOUNDATION_BUILD_DIR} /CoreFoundation-prefix
2528
2527
2529
2528
-DCMAKE_PREFIX_PATH:PATH=$( build_directory ${host} llvm)
2530
2529
@@ -2539,48 +2538,46 @@ for host in "${ALL_HOSTS[@]}"; do
2539
2538
# location for building and running the tests. Note that XCTest
2540
2539
# is not yet built at this point.
2541
2540
XCTEST_BUILD_DIR=$( build_directory ${host} xctest)
2541
+
2542
2542
SWIFTC_BIN=" $( build_directory_bin ${LOCAL_HOST} swift) /swiftc"
2543
- SWIFT_BIN=" $( build_directory_bin ${LOCAL_HOST} swift) /swift"
2544
- SWIFT_BUILD_PATH=" $( build_directory ${host} swift) "
2545
2543
LLVM_BIN=" $( build_directory_bin ${LOCAL_HOST} llvm) "
2546
2544
2545
+ if [[ ${host} == " macosx" * ]]; then
2546
+ echo " Skipping Foundation on OS X -- use the Xcode project instead"
2547
+ continue
2548
+ fi
2549
+
2547
2550
# Staging: require opt-in for building with dispatch
2548
2551
if [[ ! " ${SKIP_BUILD_LIBDISPATCH} " ]] ; then
2549
2552
LIBDISPATCH_BUILD_DIR=" $( build_directory ${host} libdispatch) "
2550
- LIBDISPATCH_BUILD_ARGS=" -DLIBDISPATCH_SOURCE_DIR=${LIBDISPATCH_SOURCE_DIR} -DLIBDISPATCH_BUILD_DIR=${LIBDISPATCH_BUILD_DIR} "
2551
- fi
2552
-
2553
- # FIXME CROSSCOMPILING:
2554
- # Foundation is a target library (like the Swift standard library),
2555
- # so technically we should build it for all stdlib_targets, not just for the host.
2556
- # However, we only have the triple and sysroot for the host.
2557
- # Also, we will need to tell it which linker to use.
2558
- FOUNDATION_BUILD_ARGS=()
2559
- if [[ $( is_cross_tools_host ${host} ) ]]; then
2560
- FOUNDATION_BUILD_ARGS+=(
2561
- " --target=${SWIFT_HOST_TRIPLE} "
2553
+ LIBDISPATCH_BUILD_ARGS=(
2554
+ -DFOUNDATION_PATH_TO_LIBDISPATCH_SOURCE=${LIBDISPATCH_SOURCE_DIR}
2555
+ -DFOUNDATION_PATH_TO_LIBDISPATCH_BUILD=${LIBDISPATCH_BUILD_DIR}
2562
2556
)
2563
- fi
2564
-
2565
- # FIXME: Foundation doesn't build from the script on OS X
2566
- if [[ ${host} == " macosx" * ]]; then
2567
- echo " Skipping Foundation on OS X -- use the Xcode project instead"
2568
- continue
2557
+ else
2558
+ LIBDISPATCH_BUILD_ARGS=( -DFOUNDATION_ENABLE_LIBDISPATCH=NO )
2569
2559
fi
2570
2560
2571
2561
# FIXME: Always re-build foundation on non-darwin platforms.
2572
2562
# Remove this when products build in the CMake system.
2573
2563
echo " Cleaning the Foundation build directory"
2574
2564
call rm -rf " ${build_dir} "
2575
2565
2576
- with_pushd " ${FOUNDATION_SOURCE_DIR} " \
2577
- call env SWIFTC=" ${SWIFTC_BIN} " CLANG=" ${LLVM_BIN} " /clang SWIFT=" ${SWIFT_BIN} " \
2578
- SDKROOT=" ${SWIFT_BUILD_PATH} " BUILD_DIR=" ${build_dir} " DSTROOT=" $( get_host_install_destdir ${host} ) " PREFIX=" $( get_host_install_prefix ${host} ) " ./configure " ${FOUNDATION_BUILD_TYPE} " ${FOUNDATION_BUILD_ARGS[@]} -DXCTEST_BUILD_DIR=${XCTEST_BUILD_DIR} $LIBDISPATCH_BUILD_ARGS
2579
- with_pushd " ${FOUNDATION_SOURCE_DIR} " \
2580
- call ${NINJA_BIN}
2566
+ cmake_options=(
2567
+ ${cmake_options[@]}
2568
+ -DCMAKE_BUILD_TYPE:STRING=${FOUNDATION_BUILD_TYPE}
2569
+ -DCMAKE_C_COMPILER:PATH=${LLVM_BIN} /clang
2570
+ -DCMAKE_CXX_COMPILER:PATH=${LLVM_BIN} /clang++
2571
+ -DCMAKE_SWIFT_COMPILER:PATH=${SWIFTC_BIN}
2572
+ -DCMAKE_INSTALL_PREFIX:PATH=$( get_host_install_prefix ${host} )
2573
+
2574
+ ${LIBDISPATCH_BUILD_ARGS[@]}
2575
+
2576
+ # NOTE(compnerd) we disable tests because XCTest is not ready
2577
+ # yet, but we will reconfigure when the time comes.
2578
+ -DENABLE_TESTING:BOOL=NO
2579
+ )
2581
2580
2582
- # Foundation builds itself and doesn't use cmake
2583
- continue
2584
2581
;;
2585
2582
libdispatch)
2586
2583
LIBDISPATCH_BUILD_DIR=$( build_directory ${host} ${product} )
@@ -2960,14 +2957,15 @@ for host in "${ALL_HOSTS[@]}"; do
2960
2957
else
2961
2958
# This assumes that there are no spaces in any on these paths.
2962
2959
FOUNDATION_BUILD_DIR=$( build_directory ${host} foundation)
2963
- DOTEST_EXTRA=" -I${FOUNDATION_BUILD_DIR} /Foundation"
2964
- DOTEST_EXTRA=" ${DOTEST_EXTRA} -I${FOUNDATION_BUILD_DIR} /Foundation/usr/lib/swift"
2960
+ DOTEST_EXTRA=" -I${FOUNDATION_BUILD_DIR} "
2961
+ DOTEST_EXTRA=" -F${FOUNDATION_BUILD_DIR} /CoreFoundation-prefix/System/Library/Frameworks"
2962
+ DOTEST_EXTRA=" ${DOTEST_EXTRA} -I${FOUNDATION_BUILD_DIR} /swift"
2965
2963
DOTEST_EXTRA=" ${DOTEST_EXTRA} -I${LIBDISPATCH_SOURCE_DIR} "
2966
- DOTEST_EXTRA=" ${DOTEST_EXTRA} -L${FOUNDATION_BUILD_DIR} /Foundation "
2964
+ DOTEST_EXTRA=" ${DOTEST_EXTRA} -L${FOUNDATION_BUILD_DIR} "
2967
2965
DOTEST_EXTRA=" ${DOTEST_EXTRA} -L${LIBDISPATCH_BUILD_DIR} "
2968
2966
DOTEST_EXTRA=" ${DOTEST_EXTRA} -L${LIBDISPATCH_BUILD_DIR} /src"
2969
2967
DOTEST_EXTRA=" ${DOTEST_EXTRA} -Xlinker -rpath -Xlinker ${LIBDISPATCH_BUILD_DIR} /src"
2970
- DOTEST_EXTRA=" ${DOTEST_EXTRA} -Xlinker -rpath -Xlinker ${FOUNDATION_BUILD_DIR} /Foundation "
2968
+ DOTEST_EXTRA=" ${DOTEST_EXTRA} -Xlinker -rpath -Xlinker ${FOUNDATION_BUILD_DIR} "
2971
2969
fi
2972
2970
call mkdir -p " ${results_dir} "
2973
2971
@@ -3058,56 +3056,88 @@ for host in "${ALL_HOSTS[@]}"; do
3058
3056
if [[ " ${SKIP_TEST_XCTEST} " ]]; then
3059
3057
continue
3060
3058
fi
3061
- # If libdispatch is being built then XCTest will need access to it
3062
- if [[ ! " ${SKIP_BUILD_LIBDISPATCH} " ]] ; then
3063
- LIBDISPATCH_BUILD_DIR=" $( build_directory ${host} libdispatch) "
3064
- LIBDISPATCH_BUILD_ARGS=" --libdispatch-src-dir=${LIBDISPATCH_SOURCE_DIR} --libdispatch-build-dir=${LIBDISPATCH_BUILD_DIR} "
3065
- fi
3066
3059
3067
- # Use XCTEST_BUILD_TYPE to build either --debug or --release.
3068
- if [[ " ${XCTEST_BUILD_TYPE} " == " Debug" ]] ; then
3069
- XCTEST_BUILD_ARGS=" --debug"
3070
- else
3071
- XCTEST_BUILD_ARGS=" --release"
3072
- fi
3060
+ case ${host} in
3061
+ macosx-* )
3062
+ # If libdispatch is being built then XCTest will need access to it
3063
+ if [[ ! " ${SKIP_BUILD_LIBDISPATCH} " ]] ; then
3064
+ LIBDISPATCH_BUILD_DIR=" $( build_directory ${host} libdispatch) "
3065
+ LIBDISPATCH_BUILD_ARGS=" --libdispatch-src-dir=${LIBDISPATCH_SOURCE_DIR} --libdispatch-build-dir=${LIBDISPATCH_BUILD_DIR} "
3066
+ fi
3073
3067
3074
- echo " --- Running tests for ${product} ---"
3075
- SWIFTC_BIN=" $( build_directory_bin ${LOCAL_HOST} swift) /swiftc"
3076
- FOUNDATION_BUILD_DIR=$( build_directory ${host} foundation)
3077
- XCTEST_BUILD_DIR=$( build_directory ${host} xctest)
3078
- call " ${XCTEST_SOURCE_DIR} " /build_script.py test \
3079
- --swiftc=" ${SWIFTC_BIN} " \
3080
- --lit=" ${LLVM_SOURCE_DIR} /utils/lit/lit.py" \
3081
- --foundation-build-dir=" ${FOUNDATION_BUILD_DIR} /Foundation" \
3082
- ${LIBDISPATCH_BUILD_ARGS} \
3083
- $XCTEST_BUILD_ARGS \
3084
- " ${XCTEST_BUILD_DIR} "
3085
- echo " --- Finished tests for ${product} ---"
3086
- continue
3068
+ # Use XCTEST_BUILD_TYPE to build either --debug or --release.
3069
+ if [[ " ${XCTEST_BUILD_TYPE} " == " Debug" ]] ; then
3070
+ XCTEST_BUILD_ARGS=" --debug"
3071
+ else
3072
+ XCTEST_BUILD_ARGS=" --release"
3073
+ fi
3074
+
3075
+ echo " --- Running tests for ${product} ---"
3076
+ SWIFTC_BIN=" $( build_directory_bin ${LOCAL_HOST} swift) /swiftc"
3077
+ FOUNDATION_BUILD_DIR=$( build_directory ${host} foundation)
3078
+ XCTEST_BUILD_DIR=$( build_directory ${host} xctest)
3079
+ call " ${XCTEST_SOURCE_DIR} " /build_script.py test \
3080
+ --swiftc=" ${SWIFTC_BIN} " \
3081
+ --lit=" ${LLVM_SOURCE_DIR} /utils/lit/lit.py" \
3082
+ --foundation-build-dir=" ${FOUNDATION_BUILD_DIR} " \
3083
+ ${LIBDISPATCH_BUILD_ARGS} \
3084
+ $XCTEST_BUILD_ARGS \
3085
+ " ${XCTEST_BUILD_DIR} "
3086
+ echo " --- Finished tests for ${product} ---"
3087
+ continue
3088
+ ;;
3089
+ * )
3090
+ results_targets=( " check-xctest" )
3091
+ executable_target=" "
3092
+ ;;
3093
+ esac
3087
3094
;;
3088
3095
foundation)
3089
3096
# FIXME: Foundation doesn't build from the script on OS X
3090
3097
if [[ ${host} == " macosx" * ]]; then
3091
3098
echo " Skipping Foundation on OS X -- use the Xcode project instead"
3092
3099
continue
3093
3100
fi
3101
+
3094
3102
if [[ " ${SKIP_TEST_FOUNDATION} " ]]; then
3095
3103
continue
3096
3104
fi
3097
- # If libdispatch is being built, TestFoundation will need access to it
3105
+
3106
+ if [[ " ${SKIP_BUILD_XCTEST} " ]]; then
3107
+ continue
3108
+ fi
3109
+
3098
3110
if [[ ! " ${SKIP_BUILD_LIBDISPATCH} " ]] ; then
3099
- LIBDISPATCH_LIB_DIR=" :$( build_directory ${host} libdispatch) :$( build_directory ${host} libdispatch) /src"
3111
+ LIBDISPATCH_BUILD_DIR=" $( build_directory ${host} libdispatch) "
3112
+ LIBDISPATCH_BUILD_ARGS=(
3113
+ -DFOUNDATION_PATH_TO_LIBDISPATCH_SOURCE=${LIBDISPATCH_SOURCE_DIR}
3114
+ -DFOUNDATION_PATH_TO_LIBDISPATCH_BUILD=${LIBDISPATCH_BUILD_DIR}
3115
+ )
3100
3116
else
3101
- LIBDISPATCH_LIB_DIR= " "
3117
+ LIBDISPATCH_BUILD_ARGS=( -DFOUNDATION_ENABLE_LIBDISPATCH=NO )
3102
3118
fi
3103
- echo " --- Running tests for ${product} ---"
3104
- build_dir=$( build_directory ${host} ${product} )
3105
- XCTEST_BUILD_DIR=$( build_directory ${host} xctest)
3106
- with_pushd " ${FOUNDATION_SOURCE_DIR} " \
3107
- call ${NINJA_BIN} TestFoundation
3108
- call env LD_LIBRARY_PATH=" $( get_host_install_destdir ${host} ) $( get_host_install_prefix ${host} ) " /lib/swift/:" ${build_dir} /Foundation" :" ${XCTEST_BUILD_DIR} " " ${LIBDISPATCH_LIB_DIR} " :${LD_LIBRARY_PATH} " ${build_dir} " /TestFoundation/TestFoundation
3109
- echo " --- Finished tests for ${product} ---"
3110
- continue
3119
+
3120
+ cmake_options=(
3121
+ ${cmake_options[@]}
3122
+ -DCMAKE_BUILD_TYPE:STRING=${FOUNDATION_BUILD_TYPE}
3123
+ -DCMAKE_C_COMPILER:PATH=${LLVM_BIN} /clang
3124
+ -DCMAKE_CXX_COMPILER:PATH=${LLVM_BIN} /clang++
3125
+ -DCMAKE_SWIFT_COMPILER:PATH=${SWIFTC_BIN}
3126
+ -DCMAKE_INSTALL_PREFIX:PATH=$( get_host_install_prefix ${host} )
3127
+
3128
+ ${LIBDISPATCH_BUILD_ARGS[@]}
3129
+
3130
+ # NOTE(compnerd) the time has come to enable tests now
3131
+ -DENABLE_TESTING:BOOL=YES
3132
+ -DFOUNDATION_PATH_TO_XCTEST_BUILD:PATH=$( build_directory ${host} xctest)
3133
+ )
3134
+
3135
+ [[ -z " ${DISTCC} " ]] || EXTRA_DISTCC_OPTIONS=(" DISTCC_HOSTS=localhost,lzo,cpp" )
3136
+ with_pushd " $( build_directory ${host} foundation) " \
3137
+ call env " ${EXTRA_DISTCC_OPTIONS[@]} " " ${CMAKE} " " ${cmake_options[@]} " " ${EXTRA_CMAKE_OPTIONS[@]} " " ${FOUNDATION_SOURCE_DIR} "
3138
+
3139
+ results_targets=( " test" )
3140
+ executable_target=(" TestFoundation" )
3111
3141
;;
3112
3142
libdispatch)
3113
3143
if [[ " ${SKIP_TEST_LIBDISPATCH} " ]]; then
@@ -3330,20 +3360,16 @@ for host in "${ALL_HOSTS[@]}"; do
3330
3360
echo " Skipping Foundation on OS X -- use the Xcode project instead"
3331
3361
continue
3332
3362
fi
3363
+
3333
3364
if [[ -z " ${INSTALL_FOUNDATION} " ]] ; then
3334
3365
continue
3335
3366
fi
3367
+
3336
3368
if [[ -z " ${INSTALL_DESTDIR} " ]] ; then
3337
3369
echo " --install-destdir is required to install products."
3338
3370
exit 1
3339
3371
fi
3340
- echo " --- Installing ${product} ---"
3341
- build_dir=$( build_directory ${host} ${product} )
3342
- with_pushd " ${FOUNDATION_SOURCE_DIR} " \
3343
- call ${NINJA_BIN} install
3344
3372
3345
- # As foundation installation is self-contained, we break early here.
3346
- continue
3347
3373
;;
3348
3374
libdispatch)
3349
3375
if [[ -z " ${INSTALL_LIBDISPATCH} " ]] ; then
0 commit comments