diff options
Diffstat (limited to 'scripts/build/p-llvm-linux-ubuntu-16.04.inc')
-rw-r--r-- | scripts/build/p-llvm-linux-ubuntu-16.04.inc | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/scripts/build/p-llvm-linux-ubuntu-16.04.inc b/scripts/build/p-llvm-linux-ubuntu-16.04.inc new file mode 100644 index 00000000..6bfc3105 --- /dev/null +++ b/scripts/build/p-llvm-linux-ubuntu-16.04.inc @@ -0,0 +1,98 @@ +# Build dependencies +install_build_dependencies_llvm() { + apt update -y + + dependencies=( + build-essential + autoconf + automake + groff + gcc + g++ + python-dev + make + subversion # To check out code + zlib1g-dev + cmake + ) + + if [[ "${SANITIZERS[*]}" == "memory" ]]; then + dependencies+=(ninja-build) + fi + + #Install essential dependencies + apt -y --no-install-recommends install "${dependencies[@]}" +} + +install_binary_artifact_llvm() { + local enable_optimized=$(to_bool "${ENABLE_OPTIMIZED}") + local enable_debug=$(to_bool "${ENABLE_DEBUG}") + local disable_assertions=$(to_bool "${DISABLE_ASSERTIONS}") + local requires_rtti=$(to_bool "${REQUIRES_RTTI}") + local LLVM_VERSION_MAJOR="${LLVM_VERSION/.*/}" + local LLVM_VERSION_MINOR="${LLVM_VERSION/*./}" + + + # No support for LLVM packages with debug information, incompatible if requested otherwise + [[ "${enable_debug}" -eq 1 ]] && return 1 + + # Packages are build with assertions disabled, incompatible if requested otherwise + [[ "${disable_assertions}" -eq 0 ]] && return 1 + + # Packages are build with RTTI enabled, incompatible if requested otherwise + [[ "${requires_rtti}" -eq 0 ]] && return 1 + + # Enable/Disable optimized does not matter + + # Check versions: no support for LLVM < 3.8 + if [[ "${LLVM_VERSION_MAJOR}" -eq 3 ]]; then + [[ "${LLVM_VERSION_MINOR}" -lt 8 ]] && return 1 + fi + + # Add certificate + apt update -y + dependencies=( + ca-certificates + wget + ) + apt -y --no-install-recommends install "${dependencies[@]}" + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key| apt-key add - + + local version="" + [[ "${LLVM_VERSION_MAJOR}" -le 6 ]] && version="-${LLVM_VERSION}" + [[ "${LLVM_VERSION_MAJOR}" -ge 7 ]] && version="-${LLVM_VERSION_MAJOR}" + + # Add repository + echo "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial${version} main" >> /etc/apt/sources.list + apt update -y + + dependencies=( + "llvm${version}" + "llvm${version}-dev" + "llvm${version}-runtime" + "clang${version}" + ) + + #Install essential dependencies + apt -y --no-install-recommends install "${dependencies[@]}" +} + +# Check if the binary artifact is installed +is_installed_llvm() { + local lc="" + # Check if llvm-config with the right version exists + lc=$(which "llvm-config-${LLVM_VERSION}") + + [[ -z "${lc}" ]] && return 1 + + local rtti + rtti="$(${lc} --has-rtti)" + local assertion + assertion="$(${lc} --assertion-mode)" + local build_mode + build_mode="$(${lc} --build-mode)" + + # Check requested mode with mode of the found item + [[ $(to_bool "${REQUIRES_RTTI}") -eq $(to_bool "${rtti}") ]] || return 1 + [[ $(to_bool "${DISABLE_ASSERTIONS}") -ne $(to_bool "${assertion}") ]] || return 1 +} \ No newline at end of file |