Skip to content

Commit 519595d

Browse files
committed
build: switch to CMake for XCTest
Now that XCTest has a CMake build system, use that for the non-Darwin builds. This sets the stage for building Foundation with CMake.
1 parent 83823f5 commit 519595d

File tree

1 file changed

+52
-54
lines changed

1 file changed

+52
-54
lines changed

utils/build-script-impl

Lines changed: 52 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -2406,29 +2406,56 @@ for host in "${ALL_HOSTS[@]}"; do
24062406
FOUNDATION_BUILD_DIR=$(build_directory ${host} foundation)
24072407
SWIFT_BUILD_DIR=$(build_directory ${host} swift)
24082408

2409-
# Staging: require opt-in for building with dispatch
2410-
if [[ ! "${SKIP_BUILD_LIBDISPATCH}" ]] ; then
2411-
LIBDISPATCH_BUILD_DIR="$(build_directory ${host} libdispatch)"
2412-
LIBDISPATCH_BUILD_ARGS="--libdispatch-src-dir=${LIBDISPATCH_SOURCE_DIR} --libdispatch-build-dir=${LIBDISPATCH_BUILD_DIR}"
2413-
fi
2409+
case "${host}" in
2410+
macosx-*)
2411+
# Staging: require opt-in for building with dispatch
2412+
if [[ ! "${SKIP_BUILD_LIBDISPATCH}" ]] ; then
2413+
LIBDISPATCH_BUILD_DIR="$(build_directory ${host} libdispatch)"
2414+
LIBDISPATCH_BUILD_ARGS="--libdispatch-src-dir=${LIBDISPATCH_SOURCE_DIR} --libdispatch-build-dir=${LIBDISPATCH_BUILD_DIR}"
2415+
fi
24142416

2415-
# Use XCTEST_BUILD_TYPE to build either --debug or --release.
2416-
if [[ "${XCTEST_BUILD_TYPE}" == "Debug" ]] ; then
2417-
XCTEST_BUILD_ARGS="--debug"
2418-
else
2419-
XCTEST_BUILD_ARGS="--release"
2420-
fi
2417+
# Use XCTEST_BUILD_TYPE to build either --debug or --release.
2418+
if [[ "${XCTEST_BUILD_TYPE}" == "Debug" ]] ; then
2419+
XCTEST_BUILD_ARGS="--debug"
2420+
else
2421+
XCTEST_BUILD_ARGS="--release"
2422+
fi
24212423

2422-
call "${XCTEST_SOURCE_DIR}"/build_script.py \
2423-
--swiftc="${SWIFTC_BIN}" \
2424-
--build-dir="${XCTEST_BUILD_DIR}" \
2425-
--foundation-build-dir="${FOUNDATION_BUILD_DIR}/Foundation" \
2426-
--swift-build-dir="${SWIFT_BUILD_DIR}" \
2427-
$LIBDISPATCH_BUILD_ARGS \
2428-
$XCTEST_BUILD_ARGS
2424+
call "${XCTEST_SOURCE_DIR}"/build_script.py \
2425+
--swiftc="${SWIFTC_BIN}" \
2426+
--build-dir="${XCTEST_BUILD_DIR}" \
2427+
--foundation-build-dir="${FOUNDATION_BUILD_DIR}/Foundation" \
2428+
--swift-build-dir="${SWIFT_BUILD_DIR}" \
2429+
$LIBDISPATCH_BUILD_ARGS \
2430+
$XCTEST_BUILD_ARGS
2431+
2432+
# XCTest builds itself and doesn't rely on cmake
2433+
continue
2434+
;;
2435+
*)
2436+
cmake_options=(
2437+
${cmake_options[@]}
2438+
-DCMAKE_BUILD_TYPE:STRING="${LIBDISPATCH_BUILD_TYPE}"
2439+
-DCMAKE_C_COMPILER:PATH="${LLVM_BIN}/clang"
2440+
-DCMAKE_CXX_COMPILER:PATH="${LLVM_BIN}/clang++"
2441+
-DCMAKE_SWIFT_COMPILER:PATH="${SWIFTC_BIN}"
2442+
-DCMAKE_INSTALL_PREFIX:PATH="$(get_host_install_prefix ${host})"
2443+
-DCMAKE_INSTALL_LIBDIR:PATH="lib"
2444+
2445+
-DXCTEST_PATH_TO_LIBDISPATCH_SOURCE:PATH=${LIBDISPATCH_SOURCE_DIR}
2446+
-DXCTEST_PATH_TO_LIBDISPATCH_BUILD:PATH=${LIBDISPATCH_BUILD_DIR}
2447+
2448+
-DXCTEST_PATH_TO_FOUNDATION_BUILD:PATH=${FOUNDATION_BUILD_DIR}
2449+
2450+
-DXCTEST_PATH_TO_COREFOUNDATION_BUILD:PATH=${FOUNDATION_BUILD_DIR}/Foundation/CoreFoundation
2451+
2452+
-DCMAKE_PREFIX_PATH:PATH=$(build_directory ${host} llvm)
2453+
2454+
-DENABLE_TESTING=YES
2455+
)
2456+
;;
2457+
esac
24292458

2430-
# XCTest builds itself and doesn't rely on cmake
2431-
continue
24322459
;;
24332460
foundation)
24342461
# The configuration script requires knowing about XCTest's
@@ -3226,42 +3253,13 @@ for host in "${ALL_HOSTS[@]}"; do
32263253
fi
32273254

32283255
case ${host} in
3229-
linux-*)
3230-
LIB_TARGET="linux"
3231-
;;
3232-
freebsd-*)
3233-
LIB_TARGET="freebsd"
3234-
;;
3235-
cygwin-*)
3236-
LIB_TARGET="windows"
3237-
;;
3238-
haiku-*)
3239-
LIB_TARGET="haiku"
3240-
;;
3241-
*)
3242-
echo "error: --install-xctest is not supported on this platform"
3243-
exit 1
3244-
;;
3256+
linux-*|freebsd-*|cygwin-*|haiku-*) ;;
3257+
*)
3258+
echo "error: --install-xctest is not supported on this platform"
3259+
exit 1
3260+
;;
32453261
esac
32463262

3247-
echo "--- Installing ${product} ---"
3248-
XCTEST_BUILD_DIR=$(build_directory ${host} xctest)
3249-
XCTEST_INSTALL_PREFIX="${host_install_destdir}${host_install_prefix}/lib/swift/${LIB_TARGET}"
3250-
if [ $(true_false "${BUILD_SWIFT_STATIC_STDLIB}") == "TRUE" ]; then
3251-
XCTEST_STATIC_INSTALL_PREFIX="${host_install_destdir}${host_install_prefix}/lib/swift_static/${LIB_TARGET}"
3252-
xctest_static_install="--static-library-install-path=${XCTEST_STATIC_INSTALL_PREFIX}"
3253-
else
3254-
xctest_static_install=""
3255-
fi
3256-
# Note that installing directly to /usr/lib/swift usually
3257-
# requires root permissions.
3258-
call "${XCTEST_SOURCE_DIR}"/build_script.py install \
3259-
--library-install-path="${XCTEST_INSTALL_PREFIX}" ${xctest_static_install} \
3260-
--module-install-path="${XCTEST_INSTALL_PREFIX}"/"${SWIFT_HOST_VARIANT_ARCH}" \
3261-
"${XCTEST_BUILD_DIR}"
3262-
3263-
# As XCTest installation is self-contained, we break early here.
3264-
continue
32653263
;;
32663264
foundation)
32673265
# FIXME: Foundation doesn't build from the script on OS X

0 commit comments

Comments
 (0)