Contents of /trunk/extras/clang/clang-15.0.7-r2.smage2
Parent Directory | Revision Log
Revision 33571 -
(show annotations)
(download)
Mon Aug 7 09:44:44 2023 UTC (10 months, 1 week ago) by niro
File size: 5728 byte(s)
Mon Aug 7 09:44:44 2023 UTC (10 months, 1 week ago) by niro
File size: 5728 byte(s)
-use MAGE_PYTHON_EXEC instead of MAGE_PYTHON3_EXEC
1 | # $Id$ |
2 | |
3 | PNAME="clang" |
4 | PVER="15.0.7" |
5 | PBUILD="r2" |
6 | |
7 | # gcc version which llvm was compiled with |
8 | GCC_VER="13.1.0" |
9 | |
10 | PCAT="sys-dev" |
11 | |
12 | DESCRIPTION="C language family frontend for LLVM." |
13 | HOMEPAGE="http://llvm.org/" |
14 | |
15 | DEPEND=">= dev-libs/libxml2-2.11 |
16 | == sys-dev/gcc-${GCC_VER} |
17 | == sys-libs/compiler-rt-${PVER} |
18 | == sys-libs/llvm-libs-${PVER}" |
19 | |
20 | SDEPEND="== sys-dev/llvm-${PVER} |
21 | >= virtual/pkgconfig |
22 | >= dev-lang/python3-3.11 |
23 | >= virtual/sed" |
24 | |
25 | SRCFILE="clang-${PVER}.src.tar.xz" |
26 | SRCDIR="${BUILDDIR}/clang-${PVER}.src" |
27 | |
28 | LLVM_SRCFILE="llvm-${PVER}.src.tar.xz" |
29 | LLVM_SRCDIR="${BUILDDIR}/llvm-${PVER}.src" |
30 | |
31 | CLANG_EXTRA_SRCFILE="clang-tools-extra-${PVER}.src.tar.xz" |
32 | CLANG_EXTRA_SRCDIR="${BUILDDIR}/clang-tools-extra-${PVER}.src" |
33 | |
34 | CMAKE_SRCFILE="cmake-${PVER}.src.tar.xz" |
35 | CMAKE_SRCDIR="${BUILDDIR}/cmake-${PVER}.src" |
36 | |
37 | MANPAGES_SRCFILE="llvm-${PVER}-manpages.tar.bz2" |
38 | MANPAGES_SRCDIR="${BUILDDIR}/llvm-${PVER}-manpages" |
39 | |
40 | sminclude multilib python3 mtools meson cmake |
41 | msetfeature "!check static" |
42 | |
43 | SRC_URI=( |
44 | https://github.com/llvm/llvm-project/releases/download/llvmorg-${PVER}/${SRCFILE} |
45 | https://github.com/llvm/llvm-project/releases/download/llvmorg-${PVER}/${LLVM_SRCFILE} |
46 | https://github.com/llvm/llvm-project/releases/download/llvmorg-${PVER}/${CLANG_EXTRA_SRCFILE} |
47 | https://github.com/llvm/llvm-project/releases/download/llvmorg-${PVER}/${CMAKE_SRCFILE} |
48 | mirror://llvm/${SRCFILE} |
49 | mirror://llvm/${LLVM_SRCFILE} |
50 | mirror://llvm/${CLANG_EXTRA_SRCFILE} |
51 | mirror://llvm/${CMAKE_SRCFILE} |
52 | mirror://llvm/${MANPAGES_SRCFILE} |
53 | mirror://llvm/clang-${PVER}-enable_default_ssp-1.patch |
54 | mirror://llvm/clang-${PVER}-linker-wrapper-tool.patch |
55 | mirror://llvm/clang-${PVER}-structured-bindings-r1-v2.patch |
56 | mirror://llvm/clang-${PVER}-bitfield-value-capture.patch |
57 | ) |
58 | |
59 | UP2DATE="updatecmd https://github.com/${PNAME}/llvm-project/releases | grep llvmorg- | highesttarball gz" |
60 | |
61 | # pkgs which require a rebuild: mesa |
62 | |
63 | src_prepare() |
64 | { |
65 | munpack ${SRCFILE} || die |
66 | SRCDIR="${CLANG_EXTRA_SRCDIR}" munpack ${CLANG_EXTRA_SRCFILE} || die |
67 | |
68 | # move all sources into the llvm src tree |
69 | all-abis mv ${CLANG_EXTRA_SRCDIR}-$(mabi) ${SRCDIR}-$(mabi)/tools/extra || die |
70 | |
71 | # apply patches |
72 | # enable ssp by default |
73 | mpatch -Np2 clang-${PVER}-enable_default_ssp-1.patch || die |
74 | # upstream: |
75 | # https://reviews.llvm.org/D145862 |
76 | mpatch -lNp2 clang-${PVER}-linker-wrapper-tool.patch || die |
77 | # https://reviews.llvm.org/D122768 (needed for Chromium 113) |
78 | mpatch -Np2 clang-${PVER}-structured-bindings-r1-v2.patch || die |
79 | # https://reviews.llvm.org/D131202 (regression caused by the above) |
80 | mpatch clang-${PVER}-bitfield-value-capture.patch |
81 | |
82 | # cmake addons and thirdparty modules are expected outside the llvm srcdir without any versions |
83 | oldmunpack ${CMAKE_SRCFILE} || die |
84 | mv -v ${CMAKE_SRCDIR} ${BUILDDIR}/cmake || die |
85 | |
86 | # some header references are required from llvm to build clang |
87 | oldmunpack ${LLVM_SRCFILE} || die |
88 | |
89 | # pre-generated man-pages |
90 | oldmunpack ${MANPAGES_SRCFILE} || die |
91 | |
92 | # attempt to convert script to python 3 |
93 | all-abis 2to3 -wn --no-diffs tools/extra/clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py || die |
94 | } |
95 | |
96 | # Utilizing LLVM_DISTRIBUTION_COMPONENTS to avoid |
97 | # installing static libraries; inspired by Gentoo |
98 | _get_distribution_components() { |
99 | local target |
100 | ninja -t targets | grep -Po 'install-\K.*(?=-stripped:)' | while read -r target |
101 | do |
102 | case ${target} in |
103 | clang-libraries|distribution) |
104 | continue |
105 | ;; |
106 | clang-tidy-headers) |
107 | continue |
108 | ;; |
109 | clang|clangd|clang-*) |
110 | ;; |
111 | clang*|findAllSymbols) |
112 | continue |
113 | ;; |
114 | esac |
115 | echo ${target} |
116 | done |
117 | } |
118 | |
119 | src_compile() |
120 | { |
121 | # honor outside tree builds |
122 | cmake_setup_builddir || die |
123 | |
124 | local myopts |
125 | myopts+="-G Ninja |
126 | -DCMAKE_SKIP_RPATH=ON |
127 | -DLLVM_LINK_LLVM_DYLIB=ON |
128 | -DCLANG_LINK_CLANG_DYLIB=ON |
129 | -DLLVM_ENABLE_RTTI=ON |
130 | -DLLVM_BUILD_TESTS=ON |
131 | -DLLVM_BUILD_DOCS=OFF |
132 | -DLLVM_ENABLE_SPHINX=OFF |
133 | -DLLVM_ENABLE_DOXYGEN=OFF |
134 | -DSPHINX_WARNINGS_AS_ERRORS=OFF |
135 | -DCLANG_DEFAULT_PIE_ON_LINUX=ON |
136 | -DENABLE_LINKER_BUILD_ID=ON |
137 | -DLLVM_EXTERNAL_LIT=/usr/bin/lit" |
138 | |
139 | # pregenerate cmakefiles |
140 | cmake_configure \ |
141 | ${myopts} \ |
142 | -DLLVM_MAIN_SRC_DIR="${LLVM_SRCDIR}" \ |
143 | '$([[ $(mlibdir) != lib ]] && echo "-DLLVM_LIBDIR_SUFFIX=32")' \ |
144 | -DLLVM_HOST_TRIPLE=${CHOST} \ |
145 | || die |
146 | |
147 | # get distribution components from cmakefiles |
148 | cmake_configure \ |
149 | ${myopts} \ |
150 | -DLLVM_MAIN_SRC_DIR="${LLVM_SRCDIR}" \ |
151 | '$([[ $(mlibdir) != lib ]] && echo "-DLLVM_LIBDIR_SUFFIX=32")' \ |
152 | -DLLVM_HOST_TRIPLE=${CHOST} \ |
153 | -DLLVM_DISTRIBUTION_COMPONENTS='$(_get_distribution_components | paste -sd\;)' \ |
154 | || die |
155 | |
156 | all-abis SRCDIR=${BUILDDIR}/build mninja || die |
157 | } |
158 | |
159 | src_check() |
160 | { |
161 | all-abis SRCDIR=${BUILDDIR}/build mninja check-clang || die |
162 | all-abis SRCDIR=${BUILDDIR}/build mninja check-clang-tools || die |
163 | } |
164 | |
165 | src_install() |
166 | { |
167 | SRCDIR=${BUILDDIR}/build DESTDIR=${BINDIR} mninja install-distribution || die |
168 | |
169 | # install pre-generated man-pages |
170 | minstallman ${MANPAGES_SRCDIR}/clang/*.1 || die |
171 | |
172 | # install python bindings (non multilib) |
173 | minstalldir $(mget-python-libdir) || die |
174 | all-abis mcopy -r bindings/python/clang $(mget-python-libdir)/ || die |
175 | mv -v ${BINDIR}/usr/$(mlibdir)/libear ${BINDIR}/$(mget-python-libdir)/ || die |
176 | mv -v ${BINDIR}/usr/$(mlibdir)/libscanbuild ${BINDIR}/$(mget-python-libdir)/ || die |
177 | # compile all python scripts |
178 | ${MAGE_PYTHON_EXEC} -m compileall ${BINDIR} || die |
179 | ${MAGE_PYTHON_EXEC} -O -m compileall ${BINDIR} || die |
180 | ${MAGE_PYTHON_EXEC} -OO -m compileall ${BINDIR} || die |
181 | |
182 | # fix libexec |
183 | mv -v ${BINDIR}/usr/libexec/* ${BINDIR}/usr/$(mlibdir)/clang/ || die |
184 | rmdir -v ${BINDIR}/usr/libexec || die |
185 | sed -i "s:libexec:$(mlibdir)/clang:g" \ |
186 | ${BINDIR}/usr/bin/scan-build \ |
187 | ${BINDIR}/$(mget-python-libdir)/libscanbuild/analyze.py \ |
188 | || die |
189 | |
190 | minstalldocs tools/clang/LICENSE.TXT || die |
191 | } |