diff options
Diffstat (limited to 'scripts/build/llvm.sh')
-rwxr-xr-x | scripts/build/llvm.sh | 193 |
1 files changed, 0 insertions, 193 deletions
diff --git a/scripts/build/llvm.sh b/scripts/build/llvm.sh deleted file mode 100755 index 92370159..00000000 --- a/scripts/build/llvm.sh +++ /dev/null @@ -1,193 +0,0 @@ -#!/bin/bash -x -set -ev -STAGE="$1" - -DIR="$(cd "$(dirname "$0")" && pwd)" -source "${DIR}/common-defaults.sh" - -if [[ "${LLVM_VERSION_SHORT}" == "" ]]; then - echo "LLVM_VERSION_SHORT not set" - exit 1 -fi - -if [[ "${BASE}" == "" ]]; then - echo "BASE not set" - exit 1 -fi - -# Install packages if possible -if [[ "${PACKAGED}x" == "1x" ]]; then - apt update - apt install -y llvm-${LLVM_VERSION} llvm-${LLVM_VERSION}-dev - apt install -y clang-${LLVM_VERSION} - exit 0 -fi - -if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then - LLVM_BASE="${BASE}/llvm-${LLVM_VERSION_SHORT}" - # Checkout LLVM code - svn co http://llvm.org/svn/llvm-project/llvm/branches/release_${LLVM_VERSION_SHORT} "${LLVM_BASE}" - cd "${LLVM_BASE}/tools" - svn co http://llvm.org/svn/llvm-project/cfe/branches/release_${LLVM_VERSION_SHORT} clang - cd "${LLVM_BASE}/projects" - svn co http://llvm.org/svn/llvm-project/compiler-rt/branches/release_${LLVM_VERSION_SHORT} compiler-rt - - if [[ ${LLVM_VERSION_SHORT} -gt 37 ]]; then - cd "${LLVM_BASE}/projects" - svn co http://llvm.org/svn/llvm-project/libcxx/branches/release_${LLVM_VERSION_SHORT} libcxx - cd "${LLVM_BASE}/projects" - svn co http://llvm.org/svn/llvm-project/libcxxabi/branches/release_${LLVM_VERSION_SHORT} libcxxabi - fi - - # Apply existing patches if needed - if [ -f "${DIR}/patches/llvm${LLVM_VERSION_SHORT}.patch" ]; then - cd "${LLVM_BASE}" - patch -p0 -i "${DIR}/patches/llvm${LLVM_VERSION_SHORT}.patch" - fi -fi - - -# For memory sanitizer, we have a multi-stage build process -if [[ "${SANITIZER_BUILD}" == "memory" ]]; then - if [[ ${LLVM_VERSION_SHORT} -le 37 ]]; then - echo "Memory sanitizer builds for <= LLVM 3.7 are not supported" - exit 1 - fi - # Build uninstrumented compiler - mkdir "${SANITIZER_LLVM_UNINSTRUMENTED}" - cd "${SANITIZER_LLVM_UNINSTRUMENTED}" - cmake -GNinja -DCMAKE_BUILD_TYPE=Release "${LLVM_BASE}" - ninja - - # Build instrumented libc/libc++ - mkdir "${SANITIZER_LLVM_LIBCXX}" - cd "${SANITIZER_LLVM_LIBCXX}" - cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo \ - -DLLVM_USE_SANITIZER=MemoryWithOrigins \ - ${SANITIZER_CMAKE_C_COMPILER} \ - ${SANITIZER_CMAKE_CXX_COMPILER} \ - "${LLVM_BASE}" - ninja cxx cxxabi - - # Build instrumented clang - mkdir "${LLVM_BUILD}" - cd "${LLVM_BUILD}" - cmake -GNinja \ - ${SANITIZER_CMAKE_C_COMPILER} \ - ${SANITIZER_CMAKE_CXX_COMPILER} \ - -DCMAKE_C_FLAGS="$SANITIZER_C_FLAGS" \ - -DCMAKE_CXX_FLAGS="$SANITIZER_CXX_FLAGS" \ - -DCMAKE_BUILD_TYPE=Release \ - -DLLVM_USE_SANITIZER=MemoryWithOrigins \ - -DLLVM_ENABLE_LIBCXX=ON \ - -DCMAKE_EXE_LINKER_FLAGS="$SANITIZER_LD_FLAGS" \ - -DCMAKE_INSTALL_PREFIX="${LLVM_INSTALL}" \ - "${LLVM_BASE}" - # Build clang as a dependency and install all needed packages - ninja clang - ninja install-clang install-llvm-config install-llvm-objdump \ - install-llvm-link install-llvm-ar install-llvm-nm install-llvm-dis \ - install-clang-headers install-llvm-as installhdrs install-LLVMX86Disassembler \ - install-LLVMX86AsmParser install-LLVMX86CodeGen install-LLVMSelectionDAG \ - install-LLVMAsmPrinter install-LLVMX86Desc install-LLVMMCDisassembler \ - install-LLVMX86Info install-LLVMX86AsmPrinter install-LLVMX86Utils \ - install-LLVMMCJIT install-LLVMExecutionEngine install-LLVMRuntimeDyld \ - install-LLVMipo install-LLVMVectorize install-LLVMLinker install-LLVMIRReader \ - install-LLVMAsmParser install-LLVMCodeGen install-LLVMTarget install-LLVMScalarOpts \ - install-LLVMInstCombine install-LLVMInstrumentation install-LLVMProfileData \ - install-LLVMObject install-LLVMMCParser install-LLVMTransformUtils install-LLVMMC \ - install-LLVMAnalysis install-LLVMBitWriter install-LLVMBitReader install-LLVMCore \ - install-llvm-symbolizer install-LLVMSupport install-lli not FileCheck - cp "${LLVM_BUILD}/bin/FileCheck" "${LLVM_INSTALL}/bin/" - cp "${LLVM_BUILD}/bin/not" "${LLVM_INSTALL}/bin/" - exit 0 -fi - -if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then - # Configure; build; and install - mkdir -p "${LLVM_BUILD}" - cd "${LLVM_BUILD}" - - # Skip building if already finished - if [[ -e "${LLVM_BUILD}/.build_finished" ]]; then - exit 0 - fi - - - # Configure LLVM - if [[ ${LLVM_VERSION_SHORT} -le 37 ]]; then - CONFIG=(--enable-jit --prefix="${LLVM_INSTALL}") - if [[ "${ENABLE_OPTIMIZED}" == "1" ]]; then - CONFIG+=(--enable-optimized) - else - CONFIG+=(--disable-optimized) - fi - - if [[ "${DISABLE_ASSERTIONS}" == "1" ]]; then - CONFIG+=(--disable-assertions) - else - CONFIG+=(--enable-assertions) - fi - - if [[ "${ENABLE_DEBUG}" == "1" ]]; then - CONFIG+=(--enable-debug-runtime --enable-debug-symbols) - else - CONFIG+=(--disable-debug-symbols) - fi - CC=${CC} CXX=${CXX} CFLAGS="${LLVM_CFLAGS}" CXXFLAGS="${LLVM_CXXFLAGS}" LDFLAGS="${LLVM_LDFLAGS}" "${LLVM_BASE}/configure" "${CONFIG[@]}" - else - CONFIG=(-DCMAKE_INSTALL_PREFIX="${LLVM_INSTALL}") - # cmake build - if [[ "${ENABLE_OPTIMIZED}" == "1" && "${ENABLE_DEBUG}" != "1" ]]; then - CONFIG+=(-DCMAKE_BUILD_TYPE=Release) - fi - if [[ "${ENABLE_OPTIMIZED}" == "1" && "${ENABLE_DEBUG}" == "1" ]]; then - CONFIG+=(-DCMAKE_BUILD_TYPE=RelWithDebInfo) - fi - if [[ "${ENABLE_OPTIMIZED}" != "1" && "${ENABLE_DEBUG}" == "1" ]]; then - CONFIG+=(-DCMAKE_BUILD_TYPE=Debug) - fi - - if [[ "${DISABLE_ASSERTIONS}" == "1" ]]; then - CONFIG+=(-DLLVM_ENABLE_ASSERTIONS=Off) - else - CONFIG+=(-DLLVM_ENABLE_ASSERTIONS=On) - fi - - if [[ ! -z "${LLVM_CFLAGS}" ]] ; then - CONFIG+=(-DCMAKE_C_FLAGS="$LLVM_CFLAGS") - fi - - if [[ ! -z "${LLVM_CXXFLAGS}" ]] ; then - CONFIG+=(-DCMAKE_CXX_FLAGS="$LLVM_CXXFLAGS") - fi - - if [[ ! -z "${LLVM_LDFLAGS}" ]]; then - LDFLAGS="${LLVM_LDFLAGS}" - fi - - cmake "${CONFIG[@]}" "${LLVM_BASE}" - fi - - make -j$(nproc) - make install - - touch "${LLVM_BUILD}/.build_finished" - - cp "${LLVM_BUILD_BIN}/FileCheck" "${LLVM_INSTALL}/bin/" - cp "${LLVM_BUILD_BIN}/not" "${LLVM_INSTALL}/bin/" - - if [[ "${KEEP_BUILD}x" != "1x" ]]; then - rm -rf "${LLVM_BUILD}" - fi - - if [[ "${KEEP_SRC}x" != "1x" ]]; then - rm -rf "${LLVM_BASE}" - fi -elif [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then - # Use the brew provided package - brew install "llvm\@${LLVM_VERSION_MAJOR}" -else - echo "Unhandled TRAVIS_OS_NAME \"${TRAVIS_OS_NAME}\"" - exit 1 -fi |