packaging: Bump version to 15.0.7
[platform/upstream/llvm.git] / packaging / llvm.spec
1 %define keepstatic 1
2 %define llvm_release_build 1
3
4 %define llvm_version 15
5
6 Name:      llvm
7 Summary:   The LLVM Project is a collection of modular and reusable compiler and toolchain technologies
8 Version:   15.0.7
9 Release:   1
10 Group:     Development/Toolchain
11 License:   NCSA
12 Source0:   %{name}-%{version}.tar.gz
13 Source1001: llvm.manifest
14
15 BuildRequires: cmake
16 BuildRequires: python3
17 BuildRequires: python-devel
18 BuildRequires: patchelf
19 BuildRequires: binutils-devel
20
21 %if 0%{llvm_release_build}
22 BuildRequires: sed
23 %endif
24
25 Requires: libllvm = %{version}-%{release}
26
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"
33 %endif
34
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
38
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
43 %else
44 %define library_dir %{install_prefix}/lib
45 %define sdk_lib_dir %{sdk_install_prefix}/lib
46 %define system_lib_dir /usr/lib
47 %endif
48
49 %ifarch armv7l
50 %define ARCH armv7l
51 %define ABI eabi
52 %endif
53 %ifarch armv7hl
54 %define ARCH armv7hl
55 %define ABI eabihf
56 %endif
57 %ifarch %ix86
58 %define ARCH i586
59 %endif
60 %ifarch x86_64
61 %define ARCH x86_64
62 %endif
63 %ifarch aarch64
64 %define ARCH aarch64
65 %endif
66 %define host_arch %{ARCH}-tizen-linux-gnu%{?ABI}
67
68 %description
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
76 functionality.
77
78 %package devel
79 Summary: Libraries and Header Files for LLVM %{version}
80 Requires: %{name} = %{version}
81
82 %description devel
83 This package contains library and header files needed to develop
84 new native programs that use the LLVM infrastructure.
85
86 %package static-devel
87 Summary: Static libraries for LLVM
88 Requires: %{name} = %{version}
89
90 %description static-devel
91 This package contains static libraries needed to develop new
92 native programs that use the LLVM infrastructure.
93
94 %package -n libllvm
95 Summary: LLVM shared libraries
96
97 %description -n libllvm
98 Shared libraries for the LLVM compiler infrastructure.
99
100 %package -n clang
101 Summary: Clang %{version} (C Language family frontend for LLVM)
102 License: NCSA
103 Requires: llvm = %{version}-%{release}
104 Provides: libclang.so.%{version}
105
106 %description -n clang
107 A new front-end for the C family of languages is in development.
108
109 %package -n clang-gcc-replace
110 Summary: Clang %{version} symlinks as gcc/g++
111 License: NCSA
112 Requires: clang = %{version}-%{release}
113 Conflicts: gcc
114
115 %description -n clang-gcc-replace
116 Symlinks to replace gcc and g++ for compilation
117
118 %package -n clang-devel
119 Summary: Clang %{version} Development Library
120 Requires: clang = %{version}-%{release}
121
122 %description -n clang-devel
123 This package contains the clang (C language) frontend for LLVM.
124 (development files)
125
126 %package -n lldb
127 Summary: LLDB
128 License: NCSA
129
130 %description -n lldb
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
134 disassembler.
135
136 %package -n lldb-devel
137 Summary: Development header files for LLDB
138 Requires: lldb = %{version}-%{release}
139
140 %description -n lldb-devel
141 The package contains header files for the LLDB debugger.
142
143 %package -n compiler-rt
144 Summary: Compiler runtime libraries
145
146 %description -n compiler-rt
147 Compiler runtime libraries
148
149 %prep
150 %setup -q
151
152 %build
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}
161 %endif
162
163 cp %{SOURCE1001} .
164 %{?asan:%gcc_unforce_options}
165
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/.$//')
170 %endif
171
172 mkdir -p build
173 cd build
174 cmake \
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}" \
198 %endif
199 %ifarch armv7l armv7hl
200     -DCMAKE_ASM_FLAGS="-mfpu=neon" \
201 %endif
202 %ifarch x86_64 aarch64
203     -DLLVM_LIBDIR_SUFFIX=64 \
204 %endif
205 %ifarch %ix86
206     -DCMAKE_C_FLAGS="-m32" \
207     -DCMAKE_CXX_FLAGS="-m32" \
208 %endif
209     -DLLVM_BINUTILS_INCDIR=/usr/include \
210     ../llvm
211
212 %if 0%{llvm_release_build}
213 make %{?jobs:-j%jobs}
214 %else
215 %if 0%{?jobs}>4
216 make -j4
217 %else
218 make %{?jobs:-j%jobs}
219 %endif
220 %endif
221
222 %install
223 cd build
224 %make_install
225 ln -sf %{install_prefix}/bin/clang++ %{buildroot}%{install_prefix}/bin/clang++-%{llvm_version}
226
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++
230
231 mkdir -p %{buildroot}%{bindir}
232 # copy lldb for sdk
233 mkdir -p %{buildroot}%{sdk_bin_dir}
234 mkdir -p %{buildroot}%{sdk_lib_dir}
235
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}
239
240 ln -sf %{sdk_bin_dir}/lldb %{buildroot}%{install_prefix}/bin/
241
242 cp -P %{buildroot}%{library_dir}/liblldb.so* %{buildroot}%{sdk_lib_dir}/
243
244 rm -rf %{buildroot}/usr/lib/debug/*
245 rm -rf %{buildroot}/usr/lib/libear/*
246 rm -rf %{buildroot}/usr/lib/libscanbuild/*
247
248 %post -n clang -p /sbin/ldconfig
249 %postun -n clang -p /sbin/ldconfig
250
251 %post -n lldb
252 echo "plugin load /usr/share/dotnet.tizen/netcoreapp/SOS/libsosplugin.so" > /root/.lldbinit
253
254 %clean
255 echo Cleaning %{buildroot}
256
257 %files
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
352
353 %files devel
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*
363
364 %files static-devel
365 %manifest %{name}.manifest
366 %defattr(-,root,root,-)
367 %{library_dir}/lib*.a
368
369 %files -n libllvm
370 %manifest %{name}.manifest
371 %defattr(-,root,root,-)
372 %{library_dir}/libLLVM*.so*
373
374 %files -n clang
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
413
414 %files -n clang-gcc-replace
415 %manifest %{name}.manifest
416 %defattr(-,root,root,-)
417 %{_bindir}/gcc
418 %{_bindir}/g++
419
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/*
426
427 %files -n lldb
428 %manifest %{name}.manifest
429 %defattr(-,root,root,-)
430 %{sdk_bin_dir}/lldb
431 %{install_prefix}/bin/lldb
432 %{sdk_bin_dir}/lldb-argdumper
433 %{sdk_bin_dir}/lldb-server
434 %{sdk_lib_dir}/liblldb*.so*
435
436 %files -n lldb-devel
437 %manifest %{name}.manifest
438 %defattr(-,root,root,-)
439 %{install_prefix}/include/lldb/*
440 %{library_dir}/liblldb*.so*
441
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}/*