From 2e8d6aed747a988871b6836012301708950a74ef Mon Sep 17 00:00:00 2001 From: Martin Nowack Date: Thu, 23 Jan 2020 15:28:56 +0000 Subject: Use git repository to build LLVM LLVM changed from svn to github. Use the github mirror to have faster build times. Patches were updated to follow the new structure. Patches also support building underr Ubuntu 18.04 --- scripts/build/p-llvm.inc | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) (limited to 'scripts/build/p-llvm.inc') diff --git a/scripts/build/p-llvm.inc b/scripts/build/p-llvm.inc index d0c362c2..845f1b9d 100644 --- a/scripts/build/p-llvm.inc +++ b/scripts/build/p-llvm.inc @@ -93,21 +93,26 @@ download_llvm() { # Skip step if we already checked out code [[ -f "${LLVM_SRC_BASE}/.src_checked_out" ]] && return 0 - # Checkout LLVM code - svn co "http://llvm.org/svn/llvm-project/llvm/branches/release_${LLVM_VERSION_SHORT}" "${LLVM_SRC_BASE}" - cd "${LLVM_SRC_BASE}/tools" || (echo "Directory does not exist"; exit 1) - svn co "http://llvm.org/svn/llvm-project/cfe/branches/release_${LLVM_VERSION_SHORT}" clang - cd "${LLVM_SRC_BASE}/projects" || (echo "Directory does not exist"; exit 1) - svn co "http://llvm.org/svn/llvm-project/compiler-rt/branches/release_${LLVM_VERSION_SHORT}" compiler-rt - cd "${LLVM_SRC_BASE}/projects" || (echo "Directory does not exist"; exit 1) - svn co "http://llvm.org/svn/llvm-project/libcxx/branches/release_${LLVM_VERSION_SHORT}" libcxx - cd "${LLVM_SRC_BASE}/projects" || (echo "Directory does not exist"; exit 1) - svn co "http://llvm.org/svn/llvm-project/libcxxabi/branches/release_${LLVM_VERSION_SHORT}" libcxxabi + source "${DIR}/common-functions" + local LLVM_VERSION_MAJOR="${LLVM_VERSION/.*/}" + + branch_name="release/${LLVM_VERSION_MAJOR}.x" + if [[ "${LLVM_VERSION_MAJOR}" -le 3 ]]; then + branch_name="release/${LLVM_VERSION}.x" + fi + git_clone_or_update "https://github.com/llvm/llvm-project.git" "${LLVM_SRC_BASE}" "${branch_name}" || exit 1 + if [[ "${LLVM_VERSION_MAJOR}" -le 8 ]]; then + # Fix the linking for older versions + ln -s "${LLVM_SRC_BASE}/clang" "${LLVM_SRC_BASE}/llvm/tools/" + ln -s "${LLVM_SRC_BASE}/compiler-rt" "${LLVM_SRC_BASE}/llvm/projects/" + ln -s "${LLVM_SRC_BASE}/libcxx" "${LLVM_SRC_BASE}/llvm/projects/" + ln -s "${LLVM_SRC_BASE}/libcxxabi" "${LLVM_SRC_BASE}/llvm/projects/" + fi # Apply existing patches if needed if [ -f "${DIR}/patches/llvm${LLVM_VERSION_SHORT}.patch" ]; then cd "${LLVM_SRC_BASE}" || (echo "Directory does not exist"; exit 1) - patch -p0 -i "${DIR}/patches/llvm${LLVM_VERSION_SHORT}.patch" + patch -p1 --follow-symlinks -i "${DIR}/patches/llvm${LLVM_VERSION_SHORT}.patch" || return 1 fi touch "${LLVM_SRC_BASE}/.src_checked_out" @@ -124,7 +129,7 @@ build_llvm() { # Build uninstrumented compiler mkdir -p "${SANITIZER_LLVM_UNINSTRUMENTED}" cd "${SANITIZER_LLVM_UNINSTRUMENTED}" - cmake -GNinja -DCMAKE_BUILD_TYPE=Release "${LLVM_SRC_BASE}" + cmake -GNinja -DCMAKE_BUILD_TYPE=Release "${LLVM_SRC_BASE}/llvm" ninja # Build instrumented libc/libc++ @@ -134,7 +139,7 @@ build_llvm() { -DLLVM_USE_SANITIZER=MemoryWithOrigins \ "${SANITIZER_CMAKE_C_COMPILER[@]}" \ "${SANITIZER_CMAKE_CXX_COMPILER[@]}" \ - "${LLVM_SRC_BASE}" + "${LLVM_SRC_BASE}/llvm" ninja cxx cxxabi # Build instrumented clang @@ -154,7 +159,7 @@ build_llvm() { -DLLVM_ENABLE_LIBCXX=ON \ -DCMAKE_EXE_LINKER_FLAGS="${LD_F}" \ -DCMAKE_INSTALL_PREFIX="${LLVM_INSTALL}" \ - "${LLVM_SRC_BASE}" + "${LLVM_SRC_BASE}/llvm" # Build clang as a dependency and install all needed packages ninja clang return 0 @@ -226,9 +231,9 @@ build_llvm() { fi if [[ -n "${variables[*]}" ]]; then - "${variables[*]}" cmake "${CONFIG[@]}" "${LLVM_SRC_BASE}" + "${variables[*]}" cmake "${CONFIG[@]}" "${LLVM_SRC_BASE}/llvm" else - cmake "${CONFIG[@]}" "${LLVM_SRC_BASE}" + cmake "${CONFIG[@]}" "${LLVM_SRC_BASE}/llvm" fi # Linking LLVM can require a lot of memory. -- cgit 1.4.1