From c969814a114e99e9caba35fe3db53d3f3d0982cb Mon Sep 17 00:00:00 2001 From: Butta Date: Tue, 14 Jul 2020 01:45:29 +0530 Subject: [PATCH] [build] Fix --skip-build-llvm so that its minimal targets, like tblgen, are still built --- utils/build-script | 7 +++++-- utils/build-script-impl | 8 ++++++-- validation-test/BuildSystem/skip_cmark_swift_llvm.test | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/utils/build-script b/utils/build-script index b5f140ed1921f..0ca9e647e1c69 100755 --- a/utils/build-script +++ b/utils/build-script @@ -848,8 +848,11 @@ class BuildScriptInvocation(object): impl_product_classes = [] if self.args.build_cmark: impl_product_classes.append(products.CMark) - if self.args.build_llvm: - impl_product_classes.append(products.LLVM) + + # If --skip-build-llvm is passed in, LLVM cannot be completely disabled, as + # Swift still needs a few LLVM targets like tblgen to be built for it to be + # configured. Instead, handle this in build-script-impl for now. + impl_product_classes.append(products.LLVM) if self.args.build_libcxx: impl_product_classes.append(products.LibCXX) if self.args.build_libicu: diff --git a/utils/build-script-impl b/utils/build-script-impl index 410ee907b37eb..d88b970b310cd 100755 --- a/utils/build-script-impl +++ b/utils/build-script-impl @@ -1157,10 +1157,14 @@ LIBDISPATCH_STATIC_SOURCE_DIR="${WORKSPACE}/swift-corelibs-libdispatch" LIBICU_SOURCE_DIR="${WORKSPACE}/icu" LIBCXX_SOURCE_DIR="${WORKSPACE}/llvm-project/libcxx" +# We cannot currently apply the normal rules of skipping here for LLVM. Even if +# we are skipping building LLVM, we still need to at least build a few tools +# like tblgen that Swift relies on for building and testing. See the LLVM +# configure rules. +PRODUCTS=(llvm) [[ "${SKIP_BUILD_CMARK}" ]] || PRODUCTS+=(cmark) [[ "${SKIP_BUILD_LIBCXX}" ]] || PRODUCTS+=(libcxx) [[ "${SKIP_BUILD_LIBICU}" ]] || PRODUCTS+=(libicu) -[[ "${SKIP_BUILD_LLVM}" ]] || PRODUCTS+=(llvm) [[ "${SKIP_BUILD_SWIFT}" ]] || PRODUCTS+=(swift) [[ "${SKIP_BUILD_LLDB}" ]] || PRODUCTS+=(lldb) [[ "${SKIP_BUILD_LIBDISPATCH}" ]] || PRODUCTS+=(libdispatch) @@ -1550,7 +1554,7 @@ for host in "${ALL_HOSTS[@]}"; do if [ "${BUILD_LLVM}" == "0" ] ; then build_targets=(clean) fi - if [ "${SKIP_BUILD}" ] ; then + if [[ "${SKIP_BUILD}" || "${SKIP_BUILD_LLVM}" ]] ; then # We can't skip the build completely because the standalone # build of Swift depend on these for building and testing. build_targets=(llvm-tblgen clang-resource-headers intrinsics_gen clang-tablegen-targets) diff --git a/validation-test/BuildSystem/skip_cmark_swift_llvm.test b/validation-test/BuildSystem/skip_cmark_swift_llvm.test index 223410c03ab0a..441b7b4fe58d9 100644 --- a/validation-test/BuildSystem/skip_cmark_swift_llvm.test +++ b/validation-test/BuildSystem/skip_cmark_swift_llvm.test @@ -20,7 +20,7 @@ # SKIP-CMARK-CHECK: --- Installing swift --- # SKIP-LLVM-CHECK: cmake --build {{.*}}cmark- -# SKIP-LLVM-CHECK-NOT: cmake --build {{.*}}llvm- +# SKIP-LLVM-CHECK: cmake --build {{.*}}llvm-tblgen # SKIP-LLVM-CHECK: cmake --build {{.*}}swift- # SKIP-LLVM-CHECK: --- Installing cmark --- # SKIP-LLVM-CHECK-NOT: --- Installing llvm ---