2 %define llvm_release_build 1
4 %define llvm_version 15
7 Summary: The LLVM Project is a collection of modular and reusable compiler and toolchain technologies
10 Group: Development/Toolchain
12 Source0: %{name}-%{version}.tar.gz
13 Source1001: llvm.manifest
16 BuildRequires: python3
17 BuildRequires: python-devel
18 BuildRequires: patchelf
19 BuildRequires: binutils-devel
21 %if 0%{llvm_release_build}
25 Requires: libllvm = %{version}-%{release}
27 %if 0%{llvm_release_build}
28 # Disable debug packages building
29 %define debug_package %{nil}
30 %define __debug_install_post %{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} %{?_find_debuginfo_strip_opts} %{?_find_debuginfo_ko_strip_opts} "%{_builddir}/%{?buildsubdir}"\
31 rm -rf "%{buildroot}/usr/lib/debug"\
32 rm -rf "%{buildroot}/usr/src/debug"
35 %define install_prefix /usr
36 %define sdk_install_prefix /home/owner/share/tmp/sdk_tools/lldb
37 %define sdk_bin_dir %{sdk_install_prefix}/bin
39 %ifarch x86_64 aarch64
40 %define library_dir %{install_prefix}/lib64
41 %define sdk_lib_dir %{sdk_install_prefix}/lib64
42 %define system_lib_dir /usr/lib64
44 %define library_dir %{install_prefix}/lib
45 %define sdk_lib_dir %{sdk_install_prefix}/lib
46 %define system_lib_dir /usr/lib
66 %define host_arch %{ARCH}-tizen-linux-gnu%{?ABI}
69 LLVM is a compiler infrastructure designed for compile-time, link-time, runtime,
70 and idle-time optimization of programs from arbitrary programming languages.
71 LLVM is written in C++ and has been developed since 2000 at the University of
72 Illinois and Apple. It currently supports compilation of C and C++ programs,
73 using front-ends derived from GCC 4.0.1. A new front-end for the C family of
74 languages is in development. The compiler infrastructure
75 includes mirror sets of programming tools as well as libraries with equivalent
79 Summary: Libraries and Header Files for LLVM %{version}
80 Requires: %{name} = %{version}
83 This package contains library and header files needed to develop
84 new native programs that use the LLVM infrastructure.
87 Summary: Static libraries for LLVM
88 Requires: %{name} = %{version}
90 %description static-devel
91 This package contains static libraries needed to develop new
92 native programs that use the LLVM infrastructure.
95 Summary: LLVM shared libraries
97 %description -n libllvm
98 Shared libraries for the LLVM compiler infrastructure.
101 Summary: Clang %{version} (C Language family frontend for LLVM)
103 Requires: llvm = %{version}-%{release}
104 Provides: libclang.so.%{version}
106 %description -n clang
107 A new front-end for the C family of languages is in development.
109 %package -n clang-gcc-replace
110 Summary: Clang %{version} symlinks as gcc/g++
112 Requires: clang = %{version}-%{release}
115 %description -n clang-gcc-replace
116 Symlinks to replace gcc and g++ for compilation
118 %package -n clang-devel
119 Summary: Clang %{version} Development Library
120 Requires: clang = %{version}-%{release}
122 %description -n clang-devel
123 This package contains the clang (C language) frontend for LLVM.
131 LLDB is a next generation, high-performance debugger. It is built as a set
132 of reusable components which highly leverage existing libraries in the
133 larger LLVM Project, such as the Clang expression parser and LLVM
136 %package -n lldb-devel
137 Summary: Development header files for LLDB
138 Requires: lldb = %{version}-%{release}
140 %description -n lldb-devel
141 The package contains header files for the LLDB debugger.
143 %package -n compiler-rt
144 Summary: Compiler runtime libraries
146 %description -n compiler-rt
147 Compiler runtime libraries
153 %if 0%{llvm_release_build}
154 # Not to build debug info
155 RELCFLAGS=$(echo $CFLAGS | sed -e 's*\(^\|[[:space:]]\)-g\([[:digit:]]\+\|gdb\)\?* *g')
156 export CFLAGS=${RELCFLAGS}
157 RELCXXFLAGS=$(echo $CXXFLAGS | sed -e 's*\(^\|[[:space:]]\)-g\([[:digit:]]\+\|gdb\)\?* *g')
158 export CXXFLAGS=${RELCXXFLAGS}
159 RELFFLAGS=$(echo $FFLAGS | sed -e 's*\(^\|[[:space:]]\)-g\([[:digit:]]\+\|gdb\)\?* *g')
160 export FFLAGS=${RELFFLAGS}
164 %{?asan:%gcc_unforce_options}
166 %ifarch armv7l armv7hl aarch64
167 CPP_INCLUDE_PATHS=$(cpp -xc++ -v < /dev/null 2>&1 | \
168 awk '/search starts here:/{flag=1;next}/End of search list/{flag=0}flag' | \
169 sed -e "s/^ //" | tr '\n' ':' | sed -e 's/.$//')
175 -DCMAKE_C_COMPILER=%__cc \
176 -DCMAKE_CXX_COMPILER=%__cxx \
177 -DCMAKE_INSTALL_PREFIX=%{install_prefix} \
178 -DCMAKE_BUILD_TYPE=Release \
179 -DLLVM_ENABLE_ASSERTIONS=No \
180 -DLLVM_TARGETS_TO_BUILD='X86;ARM;AArch64;BPF' \
181 -DLLVM_BUILD_LLVM_DYLIB=1 \
182 -DLLDB_DISABLE_LIBEDIT=1 \
183 -DLLDB_DISABLE_PYTHON=1 \
184 -DLLVM_TARGET_ARCH=%{ARCH} \
185 -DLLVM_HOST_TRIPLE=%{host_arch} \
186 -DLLDB_DISABLE_CURSES=1 \
187 -DLLVM_ENABLE_PROJECTS="clang;lldb;clang-tools-extra;compiler-rt" \
188 -DLLVM_BUILD_EXAMPLES=OFF \
189 -DLLVM_INCLUDE_EXAMPLES=OFF \
190 -DLLVM_BUILD_TESTS=OFF \
191 -DLLVM_INCLUDE_TESTS=OFF \
192 -DLLVM_ENABLE_DOXYGEN=OFF \
193 -DLLVM_BUILD_DOCS=OFF \
194 -DLLVM_INCLUDE_DOCS=OFF \
195 -DLLVM_OPTIMIZED_TABLEGEN=ON \
196 %ifarch armv7l armv7hl aarch64
197 -DC_INCLUDE_DIRS="${CPP_INCLUDE_PATHS}" \
199 %ifarch armv7l armv7hl
200 -DCMAKE_ASM_FLAGS="-mfpu=neon" \
202 %ifarch x86_64 aarch64
203 -DLLVM_LIBDIR_SUFFIX=64 \
206 -DCMAKE_C_FLAGS="-m32" \
207 -DCMAKE_CXX_FLAGS="-m32" \
209 -DLLVM_BINUTILS_INCDIR=/usr/include \
212 %if 0%{llvm_release_build}
213 make %{?jobs:-j%jobs}
218 make %{?jobs:-j%jobs}
225 ln -sf %{install_prefix}/bin/clang++ %{buildroot}%{install_prefix}/bin/clang++-%{llvm_version}
227 # Compiler replacement hack
228 ln -sf %{install_prefix}/bin/clang-%{llvm_version} %{buildroot}%{_bindir}/gcc
229 ln -sf %{install_prefix}/bin/clang++-%{llvm_version} %{buildroot}%{_bindir}/g++
231 mkdir -p %{buildroot}%{bindir}
233 mkdir -p %{buildroot}%{sdk_bin_dir}
234 mkdir -p %{buildroot}%{sdk_lib_dir}
236 mv %{buildroot}%{install_prefix}/bin/lldb %{buildroot}%{sdk_bin_dir}
237 mv %{buildroot}%{install_prefix}/bin/lldb-argdumper %{buildroot}%{sdk_bin_dir}
238 mv %{buildroot}%{install_prefix}/bin/lldb-server %{buildroot}%{sdk_bin_dir}
240 ln -sf %{sdk_bin_dir}/lldb %{buildroot}%{install_prefix}/bin/
242 cp -P %{buildroot}%{library_dir}/liblldb.so* %{buildroot}%{sdk_lib_dir}/
244 rm -rf %{buildroot}/usr/lib/debug/*
245 rm -rf %{buildroot}/usr/lib/libear/*
246 rm -rf %{buildroot}/usr/lib/libscanbuild/*
248 %post -n clang -p /sbin/ldconfig
249 %postun -n clang -p /sbin/ldconfig
252 echo "plugin load /usr/share/dotnet.tizen/netcoreapp/SOS/libsosplugin.so" > /root/.lldbinit
255 echo Cleaning %{buildroot}
258 %manifest %{name}.manifest
259 %defattr(-,root,root,-)
260 %{install_prefix}/bin/analyze-build
261 %{install_prefix}/bin/bugpoint
262 %{install_prefix}/bin/clang-linker-wrapper
263 %{install_prefix}/bin/clang-nvlink-wrapper
264 %{install_prefix}/bin/clang-offload-packager
265 %{install_prefix}/bin/clang-pseudo
266 %{install_prefix}/bin/clang-repl
267 %{install_prefix}/bin/intercept-build
268 %{install_prefix}/bin/llc
269 %{install_prefix}/bin/lli
270 %{install_prefix}/bin/llvm-ar
271 %{install_prefix}/bin/llvm-as
272 %{install_prefix}/bin/llvm-bcanalyzer
273 %{install_prefix}/bin/llvm-bitcode-strip
274 %{install_prefix}/bin/llvm-c-test
275 %{install_prefix}/bin/llvm-cat
276 %{install_prefix}/bin/llvm-config
277 %{install_prefix}/bin/llvm-cov
278 %{install_prefix}/bin/llvm-cvtres
279 %{install_prefix}/bin/llvm-cxxdump
280 %{install_prefix}/bin/llvm-cxxfilt
281 %{install_prefix}/bin/llvm-debuginfod
282 %{install_prefix}/bin/llvm-debuginfod-find
283 %{install_prefix}/bin/llvm-diff
284 %{install_prefix}/bin/llvm-dis
285 %{install_prefix}/bin/llvm-dlltool
286 %{install_prefix}/bin/llvm-dwarfdump
287 %{install_prefix}/bin/llvm-dwarfutil
288 %{install_prefix}/bin/llvm-dwp
289 %{install_prefix}/bin/llvm-extract
290 %{install_prefix}/bin/llvm-gsymutil
291 %{install_prefix}/bin/llvm-lib
292 %{install_prefix}/bin/llvm-libtool-darwin
293 %{install_prefix}/bin/llvm-link
294 %{install_prefix}/bin/llvm-lto
295 %{install_prefix}/bin/llvm-lto2
296 %{install_prefix}/bin/llvm-mc
297 %{install_prefix}/bin/llvm-ml
298 %{install_prefix}/bin/llvm-modextract
299 %{install_prefix}/bin/llvm-mt
300 %{install_prefix}/bin/llvm-nm
301 %{install_prefix}/bin/llvm-objdump
302 %{install_prefix}/bin/llvm-opt-report
303 %{install_prefix}/bin/llvm-otool
304 %{install_prefix}/bin/llvm-pdbutil
305 %{install_prefix}/bin/llvm-profdata
306 %{install_prefix}/bin/llvm-profgen
307 %{install_prefix}/bin/llvm-ranlib
308 %{install_prefix}/bin/llvm-readelf
309 %{install_prefix}/bin/llvm-readobj
310 %{install_prefix}/bin/llvm-remark-size-diff
311 %{install_prefix}/bin/llvm-rtdyld
312 %{install_prefix}/bin/llvm-sim
313 %{install_prefix}/bin/llvm-size
314 %{install_prefix}/bin/llvm-split
315 %{install_prefix}/bin/llvm-stress
316 %{install_prefix}/bin/llvm-strings
317 %{install_prefix}/bin/llvm-symbolizer
318 %{install_prefix}/bin/llvm-tapi-diff
319 %{install_prefix}/bin/llvm-tblgen
320 %{install_prefix}/bin/llvm-tli-checker
321 %{install_prefix}/bin/llvm-windres
322 %{install_prefix}/bin/llvm-xray
323 %{install_prefix}/bin/opt
324 %{install_prefix}/bin/run-clang-tidy
325 %{install_prefix}/bin/sancov
326 %{install_prefix}/bin/sanstats
327 %{install_prefix}/bin/scan-build
328 %{install_prefix}/bin/scan-build-py
329 %{install_prefix}/bin/scan-view
330 %{install_prefix}/bin/split-file
331 %{install_prefix}/bin/verify-uselistorder
332 %{install_prefix}/bin/diagtool
333 %{install_prefix}/bin/dsymutil
334 %{install_prefix}/bin/hmaptool
335 %{install_prefix}/bin/lldb-instr
336 %{install_prefix}/bin/lldb-vscode
337 %{install_prefix}/bin/llvm-addr2line
338 %{install_prefix}/bin/llvm-cfi-verify
339 %{install_prefix}/bin/llvm-cxxmap
340 %{install_prefix}/bin/llvm-exegesis
341 %{install_prefix}/bin/llvm-ifs
342 %{install_prefix}/bin/llvm-install-name-tool
343 %{install_prefix}/bin/llvm-jitlink
344 %{install_prefix}/bin/llvm-lipo
345 %{install_prefix}/bin/llvm-mca
346 %{install_prefix}/bin/llvm-objcopy
347 %{install_prefix}/bin/llvm-rc
348 %{install_prefix}/bin/llvm-reduce
349 %{install_prefix}/bin/llvm-strip
350 %{install_prefix}/bin/llvm-undname
351 %{install_prefix}/bin/pp-trace
354 %manifest %{name}.manifest
355 %defattr(-,root,root,-)
356 %{install_prefix}/include/llvm/*
357 %{install_prefix}/include/llvm-c/*
358 %{install_prefix}/share/*
359 %{library_dir}/cmake/llvm/*
360 %{library_dir}/libLTO*.so*
361 %{library_dir}/LLVMgold.so
362 %{library_dir}/libRemarks.so*
365 %manifest %{name}.manifest
366 %defattr(-,root,root,-)
367 %{library_dir}/lib*.a
370 %manifest %{name}.manifest
371 %defattr(-,root,root,-)
372 %{library_dir}/libLLVM*.so*
375 %manifest %{name}.manifest
376 %defattr(-,root,root,-)
377 %{install_prefix}/bin/c-index-test
378 %{install_prefix}/bin/clang
379 %{install_prefix}/bin/clang++
380 %{install_prefix}/bin/clang-%{llvm_version}
381 %{install_prefix}/bin/clang++-%{llvm_version}
382 %{install_prefix}/bin/clang-apply-replacements
383 %{install_prefix}/bin/clang-change-namespace
384 %{install_prefix}/bin/clang-check
385 %{install_prefix}/bin/clang-cl
386 %{install_prefix}/bin/clang-cpp
387 %{install_prefix}/bin/clang-doc
388 %{install_prefix}/bin/clang-extdef-mapping
389 %{install_prefix}/bin/clang-move
390 %{install_prefix}/bin/clang-offload-wrapper
391 %{install_prefix}/bin/clang-refactor
392 %{install_prefix}/bin/clang-scan-deps
393 %{install_prefix}/bin/clang-format
394 %{install_prefix}/bin/clang-include-fixer
395 %{install_prefix}/bin/clang-offload-bundler
396 %{install_prefix}/bin/clang-query
397 %{install_prefix}/bin/clang-rename
398 %{install_prefix}/bin/clang-reorder-fields
399 %{install_prefix}/bin/clang-tidy
400 %{install_prefix}/bin/clangd
401 %{install_prefix}/bin/git-clang-format
402 %{install_prefix}/bin/find-all-symbols
403 %{install_prefix}/bin/modularize
404 %{library_dir}/clang/%{version}/include/*
405 %{library_dir}/libclang*.so*
406 %{library_dir}/cmake/clang/*
407 %{install_prefix}/libexec/analyze-c++
408 %{install_prefix}/libexec/analyze-cc
409 %{install_prefix}/libexec/c++-analyzer
410 %{install_prefix}/libexec/ccc-analyzer
411 %{install_prefix}/libexec/intercept-c++
412 %{install_prefix}/libexec/intercept-cc
414 %files -n clang-gcc-replace
415 %manifest %{name}.manifest
416 %defattr(-,root,root,-)
420 %files -n clang-devel
421 %manifest %{name}.manifest
422 %defattr(-,root,root,-)
423 %{install_prefix}/include/clang/*
424 %{install_prefix}/include/clang-c/*
425 %{install_prefix}/include/clang-tidy/*
428 %manifest %{name}.manifest
429 %defattr(-,root,root,-)
431 %{install_prefix}/bin/lldb
432 %{sdk_bin_dir}/lldb-argdumper
433 %{sdk_bin_dir}/lldb-server
434 %{sdk_lib_dir}/liblldb*.so*
437 %manifest %{name}.manifest
438 %defattr(-,root,root,-)
439 %{install_prefix}/include/lldb/*
440 %{library_dir}/liblldb*.so*
442 %files -n compiler-rt
443 %manifest %{name}.manifest
444 %defattr(-,root,root,-)
445 %{library_dir}/clang/%{version}/include/sanitizer/*
446 %{library_dir}/clang/%{version}/*