1#!/bin/bash 2# Copyright (c) 2023-2025 Huawei Device Co., Ltd. 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15set -euo pipefail 16 17# Required variables 18BUILD_DIR=${BUILD_DIR:-""} 19LLVM_SOURCES=${LLVM_SOURCES:-""} 20# Optional variables 21INSTALL_DIR=${INSTALL_DIR:-""} # empty -- do not install 22VERSION=${VERSION:-"main"} # Specifies build and install directory names: 23PACKAGE_VERSION=${PACKAGE_VERSION:-${VERSION}} 24BUILD_SUFFIX=${BUILD_SUFFIX:-""} # llvm-<VERSION>-{debug,release}-{aarch64,x86}<BUILD_SUFFIX> 25OPTIMIZE_DEBUG=${OPTIMIZE_DEBUG:-true} # Compile debug versions with -O2 26DO_STRIPPING=${DO_STRIPPING:-true} # checked only if install 27DO_TARS=${DO_TARS:-true} # checked only if install 28# Select a target to build 29BUILD_X86_DEBUG=${BUILD_X86_DEBUG:-false} 30BUILD_X86_RELEASE=${BUILD_X86_RELEASE:-false} 31BUILD_AARCH64_DEBUG=${BUILD_AARCH64_DEBUG:-false} 32BUILD_AARCH64_RELEASE=${BUILD_AARCH64_RELEASE:-false} 33BUILD_OHOS_RELEASE=${BUILD_OHOS_RELEASE:-false} 34BUILD_OHOS_RELEASE_GN=${BUILD_OHOS_RELEASE_GN:-false} 35LLVM_COMPONENTS="cmake-exports;llvm-headers;LLVM" 36LLVM_COMPONENTS_PLUS_LINK="${LLVM_COMPONENTS};llvm-link" 37 38# Release version with asserts and debug methods included 39FASTVERIFY_RELEASE=${FASTVERIFY_RELEASE:-false} 40ENABLE_LLVM_DUMP_FOR_RELEASE=OFF 41ENABLE_LLVM_ASSERTIONS_FOR_RELEASE=OFF 42RELEASE_POSTFIX="" 43 44if [[ "x${FASTVERIFY_RELEASE}" == "xtrue" ]]; then 45 if [[ "x${BUILD_OHOS_RELEASE}" == "xtrue" || "x${BUILD_AARCH64_RELEASE}" == "xtrue" ]]; then 46 ENABLE_LLVM_DUMP_FOR_RELEASE=ON 47 ENABLE_LLVM_ASSERTIONS_FOR_RELEASE=ON 48 RELEASE_POSTFIX="-fastverify" 49 else 50 echo "ERROR: FASTVERIFY_RELEASE should be used only with" \ 51 "BUILD_OHOS_RELEASE or BUILD_AARCH64_RELEASE" 52 exit 1 53 fi 54fi 55 56# OHOS SDK and compiler 57OHOS_SDK=${OHOS_SDK:-""} 58OHOS_PREBUILTS=${OHOS_PREBUILTS:-""} 59 60# Build tools 61CC=${CC:-"/usr/bin/clang-14"} 62CXX=${CXX:-"/usr/bin/clang++-14"} 63STRIP=${STRIP:-"/usr/bin/llvm-strip-14"} 64LLVM_TABLEGEN=${LLVM_TABLEGEN:-""} 65# Etc. 66NPROC=$(nproc) 67 68if [[ -z "${BUILD_DIR}" ]]; then 69 echo "Please, specify build directory with BUILD_DIR variable" 70 exit 1 71fi 72 73if [[ -z "${LLVM_SOURCES}" ]]; then 74 echo "Please, specify llvm sources directory with LLVM_SOURCES variable" 75 exit 1 76fi 77 78if [[ "x${BUILD_AARCH64_DEBUG}" == "xtrue" || "x${BUILD_AARCH64_RELEASE}" == "xtrue" || "x${BUILD_OHOS_RELEASE_GN}" == "xtrue" || "x${BUILD_OHOS_RELEASE}" == "xtrue" ]]; then 79 if [[ -n "${LLVM_TABLEGEN}" && ! -f "${LLVM_TABLEGEN}" ]]; then 80 echo "Provided LLVM_TABLEGEN '${LLVM_TABLEGEN}' does not exist" 81 exit 1 82 fi 83 84 if [[ -z "${LLVM_TABLEGEN}" ]]; then 85 qemu=$(which update-binfmts &> /dev/null && \ 86 (update-binfmts --display || true) | grep -q "qemu-aarch64" && \ 87 echo "true" || echo "false") 88 89 if [[ "x${qemu}" == "xfalse" && "x${BUILD_X86_DEBUG}" == "xfalse" && \ 90 "x${BUILD_X86_RELEASE}" == "xfalse" ]]; then 91 echo "Cannot launch AArch64 builds without host llvm-tblgen." 92 echo "Please do something from listed below:" 93 echo "1) set LLVM_TABLEGEN variable to installed llvm-tblgen" 94 echo "2) install qemu-binfmt to transparently run AArch64 binaries" 95 echo "3) request one of X86 build using BUILD_X86_DEBUG or BUILD_X86_RELEASE." 96 echo " llvm-tblgen will be used from build directory automatically." 97 exit 1 98 fi 99 fi 100fi 101 102if [[ -z "${OHOS_SDK}" && "x${BUILD_OHOS_RELEASE}" == "xtrue" ]]; then 103 echo "OHOS_SDK variable must be provided for OHOS build" 104 exit 1 105fi 106 107if [[ -z "${OHOS_SDK}" && "x${BUILD_OHOS_RELEASE_GN}" == "xtrue" ]]; then 108 echo "OHOS_SDK variable must be provided for OHOS GN build" 109 exit 1 110fi 111 112if [[ -z "${OHOS_PREBUILTS}" && "x${BUILD_OHOS_RELEASE_GN}" == "xtrue" ]]; then 113 echo "OHOS_PREBUILTS variable must be provided for OHOS GN build" 114 exit 1 115fi 116 117DEBUG_OPT_FLAG="" 118if [[ "x${OPTIMIZE_DEBUG}" == "xtrue" ]]; then 119 DEBUG_OPT_FLAG="-O2" 120fi 121 122function install() { 123 local install_dir="$1" 124 local strip="$2" 125 local archive="$3" 126 if [[ "x${strip}" == "xtrue" ]]; then 127 ninja install-distribution-stripped 128 else 129 ninja install-distribution 130 fi 131 if [[ "x${archive}" == "xtrue" ]]; then 132 tar cJf "${install_dir}.tar.xz" -C "${install_dir}" . 133 du -h "${install_dir}.tar.xz" 134 fi 135} 136 137AUTO_LLVM_TABLEGEN="" 138if [[ "x${BUILD_X86_DEBUG}" == "xtrue" ]]; then 139 TARGET="x86_64${BUILD_SUFFIX}" 140 INSTALL_DIR_NAME="llvm-${VERSION}-debug-${TARGET}" 141 INSTALL_PREFIX="${INSTALL_DIR}/${INSTALL_DIR_NAME}" 142 BUILD_PREFIX="${BUILD_DIR}/${INSTALL_DIR_NAME}" 143 mkdir -p "${BUILD_PREFIX}" 144 cd "${BUILD_PREFIX}" 145 cmake -G Ninja \ 146 -DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \ 147 -DPACKAGE_VERSION="${PACKAGE_VERSION}" \ 148 -DCMAKE_BUILD_TYPE=Debug \ 149 \ 150 -DCMAKE_C_FLAGS="${DEBUG_OPT_FLAG}" -DCMAKE_CXX_FLAGS="${DEBUG_OPT_FLAG}" \ 151 \ 152 -DCMAKE_C_COMPILER="${CC}" \ 153 -DCMAKE_CXX_COMPILER="${CXX}" \ 154 -DCMAKE_STRIP="${STRIP}" \ 155 \ 156 -DLLVM_ENABLE_FFI=OFF \ 157 -DLLVM_ENABLE_TERMINFO=OFF \ 158 \ 159 -DLLVM_INCLUDE_BENCHMARKS=OFF \ 160 -DLLVM_INCLUDE_EXAMPLES=OFF \ 161 -DLLVM_INCLUDE_TESTS=OFF \ 162 \ 163 -DLLVM_BUILD_TOOLS=ON \ 164 -DLLVM_DISTRIBUTION_COMPONENTS="${LLVM_COMPONENTS_PLUS_LINK}" \ 165 -DLLVM_BUILD_LLVM_DYLIB=ON \ 166 -DLLVM_ENABLE_ZLIB=OFF \ 167 -DLLVM_TARGETS_TO_BUILD="X86;AArch64" \ 168 -DLLVM_PARALLEL_COMPILE_JOBS="${NPROC}" \ 169 -DLLVM_PARALLEL_LINK_JOBS=1 \ 170 "${LLVM_SOURCES}" 171 172 ninja distribution 173 if [[ -n "${INSTALL_DIR}" ]]; then 174 install "${INSTALL_PREFIX}" "${DO_STRIPPING}" "${DO_TARS}" 175 fi 176 177 AUTO_LLVM_TABLEGEN="${BUILD_PREFIX}/bin/llvm-tblgen" 178 if [[ ! -f "${AUTO_LLVM_TABLEGEN}" ]]; then 179 echo "${AUTO_LLVM_TABLEGEN} must be present. Something went wrong..." 180 fi 181fi 182 183if [[ "x${BUILD_X86_RELEASE}" == "xtrue" ]]; then 184 TARGET="x86_64${BUILD_SUFFIX}" 185 INSTALL_DIR_NAME="llvm-${VERSION}-release-${TARGET}" 186 INSTALL_PREFIX="${INSTALL_DIR}/${INSTALL_DIR_NAME}" 187 BUILD_PREFIX="${BUILD_DIR}/${INSTALL_DIR_NAME}" 188 mkdir -p "${BUILD_PREFIX}" 189 cd "${BUILD_PREFIX}" 190 cmake -G Ninja \ 191 -DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \ 192 -DPACKAGE_VERSION="${PACKAGE_VERSION}" \ 193 -DCMAKE_BUILD_TYPE=Release \ 194 \ 195 -DCMAKE_C_COMPILER="${CC}" \ 196 -DCMAKE_CXX_COMPILER="${CXX}" \ 197 -DCMAKE_STRIP="${STRIP}" \ 198 \ 199 -DLLVM_ENABLE_FFI=OFF \ 200 -DLLVM_ENABLE_TERMINFO=OFF \ 201 \ 202 -DLLVM_INCLUDE_BENCHMARKS=OFF \ 203 -DLLVM_INCLUDE_EXAMPLES=OFF \ 204 -DLLVM_INCLUDE_TESTS=OFF \ 205 \ 206 -DLLVM_BUILD_TOOLS=ON \ 207 -DLLVM_DISTRIBUTION_COMPONENTS="${LLVM_COMPONENTS_PLUS_LINK}" \ 208 -DLLVM_BUILD_LLVM_DYLIB=ON \ 209 -DLLVM_ENABLE_ZLIB=OFF \ 210 -DLLVM_TARGETS_TO_BUILD="X86;AArch64" \ 211 -DLLVM_PARALLEL_COMPILE_JOBS="${NPROC}" \ 212 -DLLVM_PARALLEL_LINK_JOBS=1 \ 213 "${LLVM_SOURCES}" 214 215 ninja distribution 216 if [[ -n "${INSTALL_DIR}" ]]; then 217 install "${INSTALL_PREFIX}" "${DO_STRIPPING}" "${DO_TARS}" 218 fi 219 220 AUTO_LLVM_TABLEGEN="${BUILD_PREFIX}/bin/llvm-tblgen" 221 if [[ ! -f "${AUTO_LLVM_TABLEGEN}" ]]; then 222 echo "${AUTO_LLVM_TABLEGEN} must be present. Something went wrong..." 223 fi 224fi 225 226LLVM_TABLEGEN=${LLVM_TABLEGEN:-${AUTO_LLVM_TABLEGEN}} 227LLVM_TABLEGEN=${LLVM_TABLEGEN:+-DLLVM_TABLEGEN=${LLVM_TABLEGEN}} 228 229if [[ "x${BUILD_AARCH64_DEBUG}" == "xtrue" ]]; then 230 TARGET="aarch64${BUILD_SUFFIX}" 231 INSTALL_DIR_NAME="llvm-${VERSION}-debug-${TARGET}" 232 INSTALL_PREFIX="${INSTALL_DIR}/${INSTALL_DIR_NAME}" 233 BUILD_PREFIX="${BUILD_DIR}/${INSTALL_DIR_NAME}" 234 mkdir -p "${BUILD_PREFIX}" 235 cd "${BUILD_PREFIX}" 236 cmake -G Ninja \ 237 -DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \ 238 -DPACKAGE_VERSION="${PACKAGE_VERSION}" \ 239 -DCMAKE_BUILD_TYPE=Debug \ 240 \ 241 -DCMAKE_CROSSCOMPILING=ON \ 242 -DLLVM_TARGET_ARCH=AArch64 \ 243 -DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-linux-gnu \ 244 -DCMAKE_C_FLAGS="--target=aarch64-linux-gnu -I/usr/aarch64-linux-gnu/include/ ${DEBUG_OPT_FLAG}" \ 245 -DCMAKE_CXX_FLAGS="--target=aarch64-linux-gnu -I/usr/aarch64-linux-gnu/include/c++/8/aarch64-linux-gnu -I/usr/aarch64-linux-gnu/include/ ${DEBUG_OPT_FLAG}" \ 246 \ 247 -DCMAKE_C_COMPILER="${CC}" \ 248 -DCMAKE_CXX_COMPILER="${CXX}" \ 249 -DCMAKE_STRIP="${STRIP}" \ 250 \ 251 -DLLVM_ENABLE_FFI=OFF \ 252 -DLLVM_ENABLE_TERMINFO=OFF \ 253 \ 254 -DLLVM_INCLUDE_BENCHMARKS=OFF \ 255 -DLLVM_INCLUDE_EXAMPLES=OFF \ 256 -DLLVM_INCLUDE_TESTS=OFF \ 257 \ 258 -DLLVM_BUILD_TOOLS=ON \ 259 -DLLVM_DISTRIBUTION_COMPONENTS="${LLVM_COMPONENTS_PLUS_LINK}" \ 260 -DLLVM_BUILD_LLVM_DYLIB=ON \ 261 -DLLVM_ENABLE_ZLIB=OFF \ 262 -DLLVM_TARGETS_TO_BUILD=AArch64 \ 263 -DLLVM_PARALLEL_COMPILE_JOBS="${NPROC}" \ 264 -DLLVM_PARALLEL_LINK_JOBS=1 \ 265 "${LLVM_TABLEGEN}" \ 266 "${LLVM_SOURCES}" 267 268 ninja distribution 269 if [[ -n "${INSTALL_DIR}" ]]; then 270 install "${INSTALL_PREFIX}" "${DO_STRIPPING}" "${DO_TARS}" 271 fi 272fi 273 274if [[ "x${BUILD_AARCH64_RELEASE}" == "xtrue" ]]; then 275 TARGET="aarch64${BUILD_SUFFIX}" 276 INSTALL_DIR_NAME="llvm-${VERSION}-release-${TARGET}${RELEASE_POSTFIX}" 277 INSTALL_PREFIX="${INSTALL_DIR}/${INSTALL_DIR_NAME}" 278 BUILD_PREFIX="${BUILD_DIR}/${INSTALL_DIR_NAME}" 279 mkdir -p "${BUILD_PREFIX}" 280 cd "${BUILD_PREFIX}" 281 cmake -G Ninja \ 282 -DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \ 283 -DPACKAGE_VERSION="${PACKAGE_VERSION}" \ 284 -DCMAKE_BUILD_TYPE=Release \ 285 \ 286 -DCMAKE_CROSSCOMPILING=ON \ 287 -DLLVM_TARGET_ARCH=AArch64 \ 288 -DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-linux-gnu \ 289 -DCMAKE_C_FLAGS="--target=aarch64-linux-gnu -I/usr/aarch64-linux-gnu/include/" \ 290 -DCMAKE_CXX_FLAGS="--target=aarch64-linux-gnu -I/usr/aarch64-linux-gnu/include/c++/8/aarch64-linux-gnu -I/usr/aarch64-linux-gnu/include/" \ 291 \ 292 -DCMAKE_C_COMPILER="${CC}" \ 293 -DCMAKE_CXX_COMPILER="${CXX}" \ 294 -DCMAKE_STRIP="${STRIP}" \ 295 \ 296 -DLLVM_ENABLE_DUMP=${ENABLE_LLVM_DUMP_FOR_RELEASE} \ 297 -DLLVM_ENABLE_ASSERTIONS=${ENABLE_LLVM_ASSERTIONS_FOR_RELEASE} \ 298 -DLLVM_ENABLE_FFI=OFF \ 299 -DLLVM_ENABLE_TERMINFO=OFF \ 300 \ 301 -DLLVM_INCLUDE_BENCHMARKS=OFF \ 302 -DLLVM_INCLUDE_EXAMPLES=OFF \ 303 -DLLVM_INCLUDE_TESTS=OFF \ 304 \ 305 -DLLVM_BUILD_TOOLS=ON \ 306 -DLLVM_DISTRIBUTION_COMPONENTS="${LLVM_COMPONENTS_PLUS_LINK}" \ 307 -DLLVM_BUILD_LLVM_DYLIB=ON \ 308 -DLLVM_ENABLE_ZLIB=OFF \ 309 -DLLVM_TARGETS_TO_BUILD=AArch64 \ 310 -DLLVM_PARALLEL_COMPILE_JOBS="${NPROC}" \ 311 -DLLVM_PARALLEL_LINK_JOBS=1 \ 312 "${LLVM_TABLEGEN}" \ 313 "${LLVM_SOURCES}" 314 315 ninja distribution 316 if [[ -n "${INSTALL_DIR}" ]]; then 317 install "${INSTALL_PREFIX}" "${DO_STRIPPING}" "${DO_TARS}" 318 fi 319fi 320 321if [[ "x${BUILD_OHOS_RELEASE}" == "xtrue" ]]; then 322 TARGET="ohos${BUILD_SUFFIX}" 323 INSTALL_DIR_NAME="llvm-${VERSION}-release-${TARGET}${RELEASE_POSTFIX}" 324 INSTALL_PREFIX="${INSTALL_DIR}/${INSTALL_DIR_NAME}" 325 BUILD_PREFIX="${BUILD_DIR}/${INSTALL_DIR_NAME}" 326 mkdir -p "${BUILD_PREFIX}" 327 cd "${BUILD_PREFIX}" 328 "${OHOS_SDK}/build-tools/cmake/bin/cmake" -G Ninja \ 329 -DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \ 330 -DPACKAGE_VERSION="${PACKAGE_VERSION}" \ 331 -DCMAKE_BUILD_TYPE=Release \ 332 -DCMAKE_TOOLCHAIN_FILE="${OHOS_SDK}/build/cmake/ohos.toolchain.cmake" \ 333 \ 334 -DOHOS_ALLOW_UNDEFINED_SYMBOLS=ON \ 335 \ 336 -DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-linux-ohos \ 337 -DLLVM_TARGETS_TO_BUILD=AArch64 \ 338 -DLLVM_ENABLE_DUMP=${ENABLE_LLVM_DUMP_FOR_RELEASE} \ 339 -DLLVM_ENABLE_ASSERTIONS=${ENABLE_LLVM_ASSERTIONS_FOR_RELEASE} \ 340 \ 341 -DLLVM_ENABLE_FFI=OFF \ 342 -DLLVM_ENABLE_TERMINFO=OFF \ 343 \ 344 -DLLVM_INCLUDE_BENCHMARKS=OFF \ 345 -DLLVM_INCLUDE_EXAMPLES=OFF \ 346 -DLLVM_INCLUDE_TESTS=OFF \ 347 \ 348 -DLLVM_BUILD_TOOLS=ON \ 349 -DLLVM_DISTRIBUTION_COMPONENTS="${LLVM_COMPONENTS}" \ 350 -DLLVM_BUILD_LLVM_DYLIB=ON \ 351 -DLLVM_ENABLE_ZLIB=OFF \ 352 -DLLVM_PARALLEL_COMPILE_JOBS="${NPROC}" \ 353 -DLLVM_PARALLEL_LINK_JOBS=1 \ 354 "${LLVM_SOURCES}" 355 356 ninja distribution 357 if [[ -n "${INSTALL_DIR}" ]]; then 358 install "${INSTALL_PREFIX}" "${DO_STRIPPING}" "${DO_TARS}" 359 fi 360fi 361 362if [[ "x${BUILD_OHOS_RELEASE_GN}" == "xtrue" ]]; then 363 TARGET="ohos-gn${BUILD_SUFFIX}" 364 INSTALL_DIR_NAME="llvm-${VERSION}-release-${TARGET}" 365 INSTALL_PREFIX="${INSTALL_DIR}/${INSTALL_DIR_NAME}" 366 BUILD_PREFIX="${BUILD_DIR}/${INSTALL_DIR_NAME}" 367 mkdir -p "${BUILD_PREFIX}" 368 cd "${BUILD_PREFIX}" 369 "${OHOS_SDK}/build-tools/cmake/bin/cmake" -G Ninja \ 370 -DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" \ 371 -DPACKAGE_VERSION="${PACKAGE_VERSION}" \ 372 -DCMAKE_BUILD_TYPE=Release \ 373 \ 374 -DCMAKE_CROSSCOMPILING=ON \ 375 -DLLVM_TARGET_ARCH=AArch64 \ 376 -DCMAKE_SYSROOT="${OHOS_SDK}/sysroot" \ 377 -DLLVM_HOST_TRIPLE=aarch64-linux-ohos \ 378 -DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-linux-ohos \ 379 -DCMAKE_C_FLAGS="-fstack-protector-strong --target=aarch64-linux-ohos -ffunction-sections -fdata-sections -v -funwind-tables -no-canonical-prefixes -D__MUSL__" \ 380 -DCMAKE_CXX_FLAGS="-fstack-protector-strong --target=aarch64-linux-ohos -ffunction-sections -fdata-sections -v -funwind-tables -no-canonical-prefixes -D__MUSL__ -stdlib=libc++" \ 381 -DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld -Wl,--gc-sections -Wl,--build-id=sha1 --rtlib=compiler-rt -stdlib=libc++ -Wl,-z,relro,-z,now -pie -lunwind -Wl,-rpath,'\$ORIGIN/../lib' -static-libstdc++" \ 382 \ 383 -DCMAKE_C_COMPILER="${OHOS_PREBUILTS}/clang/ohos/linux-x86_64/llvm/bin/clang" \ 384 -DCMAKE_CXX_COMPILER="${OHOS_PREBUILTS}/clang/ohos/linux-x86_64/llvm/bin/clang++" \ 385 -DCMAKE_STRIP="${STRIP}" \ 386 \ 387 -DLLVM_ENABLE_FFI=OFF \ 388 -DLLVM_ENABLE_TERMINFO=OFF \ 389 \ 390 -DLLVM_INCLUDE_BENCHMARKS=OFF \ 391 -DLLVM_INCLUDE_EXAMPLES=OFF \ 392 -DLLVM_INCLUDE_TESTS=OFF \ 393 \ 394 -DLLVM_BUILD_TOOLS=ON \ 395 -DLLVM_DISTRIBUTION_COMPONENTS="${LLVM_COMPONENTS}" \ 396 -DLLVM_BUILD_LLVM_DYLIB=ON \ 397 -DLLVM_ENABLE_ZLIB=OFF \ 398 -DLLVM_TARGETS_TO_BUILD=AArch64 \ 399 -DLLVM_PARALLEL_COMPILE_JOBS="${NPROC}" \ 400 -DLLVM_PARALLEL_LINK_JOBS=1 \ 401 "${LLVM_TABLEGEN}" \ 402 "${LLVM_SOURCES}" 403 404 ninja distribution 405 if [[ -n "${INSTALL_DIR}" ]]; then 406 install "${INSTALL_PREFIX}" "${DO_STRIPPING}" "${DO_TARS}" 407 fi 408fi 409