blob: 1e6047d338121b740862fb48e7c973d64ad2700a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# Maintainer: Donald Carr <sirspudd at gmail dot com>
pkgname=('clang-prefixed-git')
pkgver=17.0.0_r463319.68f55d78e3cd
pkgrel=1
arch=('x86_64')
url="https://llvm.org/"
license=('custom:Apache 2.0 with LLVM Exception')
makedepends=('git' 'cmake' 'ninja' 'libffi' 'libedit' 'ncurses' 'libxml2'
'swig' 'lld' 'python' 'libc++'
'ocl-icd' 'opencl-headers' 'z3' 'jsoncpp' 'clang')
checkdepends=("python-psutil")
source=("git+https://github.com/llvm/llvm-project.git")
if [[ -n ${LOCAL_LLVM_REPO} ]]; then
source=("git+file://${LOCAL_LLVM_REPO}#branch=main")
fi
sha512sums=('SKIP')
static_build=false
prefix_path="/opt/clang"
install_path="${prefix_path}/${pkgver}"
shared_library_build_options=" \
-DCMAKE_EXE_LINKER_FLAGS=-Wl,-Bsymbolic-functions \
-DCMAKE_SHARED_LINKER_FLAGS=-Wl,-Bsymbolic-functions \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DCLANG_LINK_CLANG_DYLIB=ON \
"
additional_build_options=""
if ! $static_build; then
additional_build_options="${additional_build_options} ${shared_library_build_options}"
fi
_prepare_install_script() {
cp ${startdir}/.clang.install ${startdir}/clang.install
sed -i "s,CLANG_PREFIX,${prefix_path},g" ${startdir}/clang.install
sed -i "s,CLANG_VERSION,${pkgver},g" ${startdir}/clang.install
}
pkgver() {
cd llvm-project/llvm
# This will almost match the output of `llvm-config --version` when the
# LLVM_APPEND_VC_REV cmake flag is turned on. The only difference is
# dash being replaced with underscore because of Pacman requirements.
local _pkgver=$(awk -F 'MAJOR |MINOR |PATCH |)' \
'BEGIN { ORS="." ; i=0 } \
/set\(LLVM_VERSION_/ { print $2 ; i++ ; if (i==2) ORS="" } \
END { print "\n" }' \
CMakeLists.txt)_r$(git rev-list --count HEAD).$(git rev-parse --short HEAD)
echo "$_pkgver"
}
build() {
unset CFLAGS
unset CXXFLAGS
unset LDFLAGS
cd llvm-project/llvm
rm -rf _build
mkdir _build
env > _build/makepkg_env_dump
set > _build/makepkg_set_dump
# "clang;clang-tools-extra;libc;libclc;lld;lldb;openmp;polly;pstl;bolt;flang;libcxx;libcxxabi;libunwind"
# https://llvm.org/docs/CMake.html
cmake -B _build \
-GNinja \
-DCLANG_DEFAULT_PIE_ON_LINUX=ON \
-DLLVM_ENABLE_PIC=ON \
-DLLVM_ENABLE_LLD=ON \
-DLLVM_ENABLE_LIBCXX=ON \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_INSTALL_PREFIX:PATH=${install_path} \
-DLLVM_ENABLE_LTO=Thin \
-DLLVM_ENABLE_PROJECTS="bolt;clang;clang-tools-extra;libc;libclc;lld;lldb;openmp;polly;pstl;compiler-rt" \
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \
-DCMAKE_BUILD_TYPE=Release \
${additional_build_options} \
${srcdir}/llvm-project-${_pkgver_suffix}.src/llvm | tee ${pkgname}-configure.log
time ninja -C _build | tee ${pkgname}-build.log
}
package() {
_prepare_install_script
cd llvm-project/llvm
#rm -Rf ${pkgdir}
DESTDIR="$pkgdir" ninja -C _build install | tee ${pkgname}-install.log
}
|