Magellan Linux

Contents of /trunk/extras/clang/clang-15.0.7-r2.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 33571 - (show annotations) (download)
Mon Aug 7 09:44:44 2023 UTC (9 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 }