source: general/prog/llvm.xml@ 5889b252

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 7.10 7.4 7.5 7.6 7.6-blfs 7.6-systemd 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind gnome kde5-13430 kde5-14269 kde5-14686 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts krejzi/svn lazarus lxqt nosym perl-modules plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition systemd-11177 systemd-13485 trunk upgradedb xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since 5889b252 was 5889b252, checked in by Krejzi <krejzi@…>, 11 years ago

Add R600 backend patches to LLVM 3.2 in order to enable radeonsi in Mesa again.

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@11083 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 18.8 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY tstellar-llvm "http://people.freedesktop.org/~tstellar/llvm/3.2">
8
9 <!ENTITY llvm-download-http "http://llvm.org/releases/&llvm-version;/llvm-&llvm-version;.src.tar.gz">
10 <!ENTITY llvm-download-ftp " ">
11 <!ENTITY llvm-md5sum "71610289bbc819e3e15fdd562809a2d7">
12 <!ENTITY llvm-size "12 MB">
13 <!ENTITY llvm-buildsize "800 MB">
14 <!ENTITY llvm-time "13.0 SBU (Additional 7.0 SBU for Clang)">
15
16 <!ENTITY clang-download-http "http://llvm.org/releases/&llvm-version;/clang-&llvm-version;.src.tar.gz">
17 <!ENTITY clang-md5sum "3896ef4334df08563b05d0848ba80582">
18 <!ENTITY clang-size "8.4 MB">
19
20 <!ENTITY compiler-rt-download-http "http://llvm.org/releases/&llvm-version;/compiler-rt-&llvm-version;.src.tar.gz">
21 <!ENTITY compiler-rt-md5sum "a9a30ccd7bbee6f68a3ca3020af0d852">
22 <!ENTITY compiler-rt-size "1.4 MB">
23]>
24
25<sect1 id="llvm" xreflabel="LLVM-&llvm-version;">
26 <?dbhtml filename="llvm.html" ?>
27
28 <sect1info>
29 <othername>$LastChangedBy$</othername>
30 <date>$Date$</date>
31 </sect1info>
32
33 <title>LLVM-&llvm-version;</title>
34
35 <indexterm zone="llvm">
36 <primary sortas="a-LLVM">LLVM</primary>
37 </indexterm>
38
39 <sect2 role="package">
40 <title>Introduction to LLVM</title>
41
42 <para>
43 The <application>LLVM</application> package contains a collection of modular and
44 reusable compiler and toolchain technologies. The Low Level Virtual Machine
45 (LLVM) Core libraries provide a modern source and target-independent optimizer,
46 along with code generation support for many popular CPUs (as well as some less
47 common ones!). These libraries are built around a well specified code
48 representation known as the LLVM intermediate representation ("LLVM IR").
49 </para>
50
51 <para>
52 The optional <application>Clang</application> and <application>Compiler RT</application>
53 packages provide a new C, C++, Objective C and Objective C++ front-ends and runtime
54 libraries for the <application>LLVM</application>.
55 </para>
56
57 &lfs73_checked;
58
59 <bridgehead renderas="sect3">Package Information</bridgehead>
60 <itemizedlist spacing="compact">
61 <listitem>
62 <para>
63 Download (HTTP): <ulink url="&llvm-download-http;"/>
64 </para>
65 </listitem>
66 <listitem>
67 <para>
68 Download (FTP): <ulink url="&llvm-download-ftp;"/>
69 </para>
70 </listitem>
71 <listitem>
72 <para>
73 Download MD5 sum: &llvm-md5sum;
74 </para>
75 </listitem>
76 <listitem>
77 <para>
78 Download size: &llvm-size;
79 </para>
80 </listitem>
81 <listitem>
82 <para>
83 Estimated disk space required: &llvm-buildsize;
84 </para>
85 </listitem>
86 <listitem>
87 <para>
88 Estimated build time: &llvm-time;
89 </para>
90 </listitem>
91 </itemizedlist>
92
93 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
94 <itemizedlist spacing="compact">
95 <listitem>
96 <para>
97 Required patch:
98 <ulink url="&patch-root;/llvm-&llvm-version;-blfs_paths-1.patch"/>
99 </para>
100 </listitem>
101 </itemizedlist>
102
103 <bridgehead renderas="sect3">Recommended Patches</bridgehead>
104 <itemizedlist spacing="compact">
105 <listitem>
106 <para>
107 LLVM R600 Backend:
108 <ulink url="&tstellar-llvm;/R600-Mesa-9.1.patch"/>
109 </para>
110 </listitem>
111 <listitem>
112 <para>
113 LLVM R600 Backend MD5 sum: a6f9ec35fa847c4298213ab28fb868ce
114 </para>
115 </listitem>
116 <listitem>
117 <para>
118 LLVM R600 Backend Fixes:
119 <ulink url="&patch-root;/llvm-&llvm-version;-r600_fixes-1.patch"/>
120 </para>
121 </listitem>
122 </itemizedlist>
123
124 <bridgehead renderas="sect3">Optional Downloads</bridgehead>
125 <itemizedlist spacing="compact">
126 <listitem>
127 <para>
128 Clang: <ulink url="&clang-download-http;"/>
129 </para>
130 </listitem>
131 <listitem>
132 <para>
133 Clang MD5 sum: &clang-md5sum;
134 </para>
135 </listitem>
136 <listitem>
137 <para>
138 Clang size: &clang-size;
139 </para>
140 </listitem>
141 <listitem>
142 <para>
143 Compiler RT: <ulink url="&compiler-rt-download-http;"/>
144 </para>
145 </listitem>
146 <listitem>
147 <para>
148 Compiler RT MD5 sum: &compiler-rt-md5sum;
149 </para>
150 </listitem>
151 <listitem>
152 <para>
153 Compiler RT size: &compiler-rt-size;
154 </para>
155 </listitem>
156 </itemizedlist>
157
158 <bridgehead renderas="sect3">LLVM Dependencies</bridgehead>
159
160 <bridgehead renderas="sect4">Recommended</bridgehead>
161 <para role="recommended">
162 <xref linkend="libffi"/>
163 </para>
164
165 <bridgehead renderas="sect4">Optional</bridgehead>
166 <para role="optional">
167 <xref linkend="doxygen"/>,
168 <xref linkend="graphviz"/>,
169 <xref linkend="libxml2"/>,
170 <xref linkend="zip"/>,
171 <ulink url="http://www.ocaml.org/">OCaml</ulink>,
172 <ulink url="http://pypi.python.org/pypi/Sphinx">Sphinx</ulink> and
173 <ulink url="http://www.valgrind.org/">Valgrind</ulink>
174 </para>
175
176 <para condition="html" role="usernotes">User Notes:
177 <ulink url="&blfs-wiki;/llvm"/>
178 </para>
179 </sect2>
180
181 <sect2 role="installation">
182 <title>Installation of LLVM</title>
183
184 <para>
185 If you have downloaded the optional packages, install them into
186 the source tree by running the following commands:
187 </para>
188
189<screen><userinput>tar -xf ../clang-&llvm-version;.src.tar.gz -C tools &amp;&amp;
190tar -xf ../compiler-rt-&llvm-version;.src.tar.gz -C projects &amp;&amp;
191
192mv tools/clang-&llvm-version;.src tools/clang &amp;&amp;
193mv projects/compiler-rt-&llvm-version;.src projects/compiler-rt &amp;&amp;
194
195sed -e "s@../lib/libprofile_rt.a@../lib/llvm/libprofile_rt.a@g" \
196 -i tools/clang/lib/Driver/Tools.cpp</userinput></screen>
197
198 <para>
199 If you have downloaded the recommended patches, apply them by
200 running the following commands:
201 </para>
202
203<screen><userinput>patch -Np1 -i ../R600-Mesa-9.1.patch &amp;&amp;
204patch -Np1 -i ../llvm-&llvm-version;-r600_fixes-1.patch</userinput></screen>
205
206 <para>
207 Install <application>LLVM</application> by running the following
208 commands:
209 </para>
210
211<screen><userinput>patch -Np1 -i ../llvm-&llvm-version;-blfs_paths-1.patch &amp;&amp;
212CC=gcc CXX=g++ \
213./configure --prefix=/usr \
214 --sysconfdir=/etc \
215 --libdir=/usr/lib/llvm \
216 --enable-libffi \
217 --enable-optimized \
218 --enable-shared \
219 --enable-targets=all \
220 --disable-assertions \
221 --disable-debug-runtime \
222 --disable-expensive-checks \
223 --enable-experimental-targets=R600 &amp;&amp;
224make</userinput></screen>
225
226 <para>
227 If you have installed <application>Sphinx</application> and wish
228 to generate manual pages, issue the following command:
229 </para>
230
231<screen><userinput>make -C docs -f Makefile.sphinx man</userinput></screen>
232
233 <para>
234 To test the results, issue: <command>make check</command>.
235 </para>
236
237 <para>
238 Now, as the <systemitem class="username">root</systemitem> user:
239 </para>
240
241<screen role="root"><userinput>make install &amp;&amp;
242chmod -v 644 /usr/lib/llvm/*.a &amp;&amp;
243echo /usr/lib/llvm &gt;&gt; /etc/ld.so.conf &amp;&amp;
244ldconfig</userinput></screen>
245
246 <para>
247 If you have built manual pages, install them by running the
248 following command as the
249 <systemitem class="username">root</systemitem> user:
250 </para>
251
252<screen role="root"><userinput>install -m644 docs/_build/man/* /usr/share/man/man1</userinput></screen>
253
254 </sect2>
255
256 <sect2 role="commands">
257 <title>Command Explanations</title>
258
259 <para>
260 <parameter>--enable-libffi</parameter>: This switch enables
261 <application>LLVM</application> to use
262 <application>libffi</application>. Remove if you did not
263 install <application>libffi</application>.
264 </para>
265
266 <para>
267 <parameter>--enable-optimized</parameter>: This switch enables
268 compiler optimizations in order to speed up the code and reduce
269 its size.
270 </para>
271
272 <para>
273 <parameter>--enable-shared</parameter>: This switch enables
274 building of the <application>LLVM</application> shared
275 library which contains all of static libraries linked into
276 single library.
277 </para>
278
279 <para>
280 <parameter>--enable-targets=all</parameter>: This switch ensures
281 that all <application>LLVM</application> targets are built.
282 </para>
283
284 <para>
285 <parameter>--disable-*</parameter>: These switches disable
286 features which are used for debugging and are not necesary
287 on a production system.
288 </para>
289
290 <para>
291 <parameter>--enable-experimental-targets=R600</parameter>:
292 This switch enables R600 target which is required by
293 <application>Mesa</application> to build the radeonsi
294 3D driver. It can be used for r600
295 <application>LLVM</application> backend and OpenCL
296 state tracker in <application>Mesa</application>. Remove
297 it if you did not apply the recommended patches.
298 </para>
299
300 </sect2>
301
302 <sect2 role="content">
303 <title>Contents</title>
304
305 <segmentedlist>
306 <segtitle>Installed Programs</segtitle>
307 <segtitle>Installed Libraries</segtitle>
308 <segtitle>Installed Directories</segtitle>
309
310 <seglistitem>
311 <seg>
312 bugpoint, c-index-test, clang, clang++, clang-check, clang-tblgen, llc, lli,
313 llvm-ar, llvm-as, llvm-bcanalyzer, llvm-config, llvm-cov, llvm-diff, llvm-dis,
314 llvm-dwarfdump, llvm-extract, llvm-link, llvm-mc, llvm-mcmarkup, llvm-nm,
315 llvm-objdump, llvm-prof, llvm-ranlib, llvm-readobj, llvm-rtdyld, llvm-size,
316 llvm-stress, llvm-tblgen, macho-dump and opt
317 </seg>
318 <seg>
319 libclang.so, libLLVM-&llvm-version;.so, libprofile_rt.so
320 and numerous libraries in /usr/lib/llvm
321 </seg>
322 <seg>
323 /usr/include/clang,
324 /usr/include/clang-c,
325 /usr/include/llvm,
326 /usr/include/llvm-c,
327 /usr/lib/clang,
328 /usr/lib/llvm and
329 /usr/share/doc/llvm
330 </seg>
331 </seglistitem>
332 </segmentedlist>
333
334 <variablelist>
335 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
336 <?dbfo list-presentation="list"?>
337 <?dbhtml list-presentation="table"?>
338
339 <varlistentry id="bugpoint">
340 <term><command>bugpoint</command></term>
341 <listitem>
342 <para>
343 is the automatic test case reduction tool.
344 </para>
345 <indexterm zone="llvm bugpoint">
346 <primary sortas="b-bugpoint">bugpoint</primary>
347 </indexterm>
348 </listitem>
349 </varlistentry>
350
351 <varlistentry id="clang">
352 <term><command>clang</command></term>
353 <listitem>
354 <para>
355 is the <application>Clang</application> C, C++,
356 and Objective-C compiler.
357 </para>
358 <indexterm zone="llvm clang">
359 <primary sortas="b-clang">clang</primary>
360 </indexterm>
361 </listitem>
362 </varlistentry>
363
364 <varlistentry id="llc">
365 <term><command>llc</command></term>
366 <listitem>
367 <para>
368 is the <application>LLVM</application> static compiler.
369 </para>
370 <indexterm zone="llvm llc">
371 <primary sortas="b-llc">llc</primary>
372 </indexterm>
373 </listitem>
374 </varlistentry>
375
376 <varlistentry id="lli">
377 <term><command>lli</command></term>
378 <listitem>
379 <para>
380 is used to directly execute programs from
381 <application>LLVM</application> bitcode.
382 </para>
383 <indexterm zone="llvm lli">
384 <primary sortas="b-lli">lli</primary>
385 </indexterm>
386 </listitem>
387 </varlistentry>
388
389 <varlistentry id="llvm-ar">
390 <term><command>llvm-ar</command></term>
391 <listitem>
392 <para>
393 is the <application>LLVM</application> archiver.
394 </para>
395 <indexterm zone="llvm llvm-ar">
396 <primary sortas="b-llvm-ar">llvm-ar</primary>
397 </indexterm>
398 </listitem>
399 </varlistentry>
400
401 <varlistentry id="llvm-as">
402 <term><command>llvm-as</command></term>
403 <listitem>
404 <para>
405 is the <application>LLVM</application> assembler.
406 </para>
407 <indexterm zone="llvm llvm-as">
408 <primary sortas="b-llvm-as">llvm-as</primary>
409 </indexterm>
410 </listitem>
411 </varlistentry>
412
413 <varlistentry id="llvm-bcanalyzer">
414 <term><command>llvm-bcanalyzer</command></term>
415 <listitem>
416 <para>
417 is the <application>LLVM</application> bitcode analyzer.
418 </para>
419 <indexterm zone="llvm llvm-bcanalyzer">
420 <primary sortas="b-llvm-bcanalyzer">llvm-bcanalyzer</primary>
421 </indexterm>
422 </listitem>
423 </varlistentry>
424
425 <varlistentry id="llvm-config">
426 <term><command>llvm-config</command></term>
427 <listitem>
428 <para>
429 Prints <application>LLVM</application> compilation options.
430 </para>
431 <indexterm zone="llvm llvm-config">
432 <primary sortas="b-llvm-config">llvm-config</primary>
433 </indexterm>
434 </listitem>
435 </varlistentry>
436
437 <varlistentry id="llvm-cov">
438 <term><command>llvm-cov</command></term>
439 <listitem>
440 <para>
441 is used to emit coverage information.
442 </para>
443 <indexterm zone="llvm llvm-cov">
444 <primary sortas="b-llvm-cov">llvm-cov</primary>
445 </indexterm>
446 </listitem>
447 </varlistentry>
448
449 <varlistentry id="llvm-diff">
450 <term><command>llvm-diff</command></term>
451 <listitem>
452 <para>
453 is the <application>LLVM</application> structural
454 '<command>diff</command>'.
455 </para>
456 <indexterm zone="llvm llvm-diff">
457 <primary sortas="b-llvm-diff">llvm-diff</primary>
458 </indexterm>
459 </listitem>
460 </varlistentry>
461
462 <varlistentry id="llvm-dis">
463 <term><command>llvm-dis</command></term>
464 <listitem>
465 <para>
466 is the <application>LLVM</application> disassembler.
467 </para>
468 <indexterm zone="llvm llvm-dis">
469 <primary sortas="b-llvm-dis">llvm-dis</primary>
470 </indexterm>
471 </listitem>
472 </varlistentry>
473
474 <varlistentry id="llvm-extract">
475 <term><command>llvm-extract</command></term>
476 <listitem>
477 <para>
478 is used to extract a function from an
479 <application>LLVM</application> module.
480 </para>
481 <indexterm zone="llvm llvm-extract">
482 <primary sortas="b-llvm-extract">llvm-extract</primary>
483 </indexterm>
484 </listitem>
485 </varlistentry>
486
487 <varlistentry id="llvm-link">
488 <term><command>llvm-link</command></term>
489 <listitem>
490 <para>
491 is the <application>LLVM</application> linker.
492 </para>
493 <indexterm zone="llvm llvm-link">
494 <primary sortas="b-llvm-link">llvm-link</primary>
495 </indexterm>
496 </listitem>
497 </varlistentry>
498
499 <varlistentry id="llvm-nm">
500 <term><command>llvm-nm</command></term>
501 <listitem>
502 <para>
503 is used to list <application>LLVM</application> bitcode
504 and object file's symbol table.
505 </para>
506 <indexterm zone="llvm llvm-nm">
507 <primary sortas="b-llvm-nm">llvm-nm</primary>
508 </indexterm>
509 </listitem>
510 </varlistentry>
511
512 <varlistentry id="llvm-prof">
513 <term><command>llvm-prof</command></term>
514 <listitem>
515 <para>
516 is used to print execution profile of
517 <application>LLVM</application> program.
518 </para>
519 <indexterm zone="llvm llvm-prof">
520 <primary sortas="b-llvm-prof">llvm-prof</primary>
521 </indexterm>
522 </listitem>
523 </varlistentry>
524
525 <varlistentry id="llvm-ranlib">
526 <term><command>llvm-ranlib</command></term>
527 <listitem>
528 <para>
529 is used to generate index for <application>LLVM</application>
530 archive.
531 </para>
532 <indexterm zone="llvm llvm-ranlib">
533 <primary sortas="b-llvm-ranlib">llvm-ranlib</primary>
534 </indexterm>
535 </listitem>
536 </varlistentry>
537
538 <varlistentry id="llvm-stress">
539 <term><command>llvm-stress</command></term>
540 <listitem>
541 <para>
542 is used to generate random
543 <filename class="extension">.ll</filename> files.
544 </para>
545 <indexterm zone="llvm llvm-stress">
546 <primary sortas="b-llvm-stress">llvm-stress</primary>
547 </indexterm>
548 </listitem>
549 </varlistentry>
550
551 <varlistentry id="llvm-tblgen">
552 <term><command>llvm-tblgen</command></term>
553 <listitem>
554 <para>
555 is the <application>LLVM</application> Target Description
556 To C++ Code Generator.
557 </para>
558 <indexterm zone="llvm llvm-tblgen">
559 <primary sortas="b-llvm-tblgen">llvm-tblgen</primary>
560 </indexterm>
561 </listitem>
562 </varlistentry>
563
564 <varlistentry id="opt">
565 <term><command>opt</command></term>
566 <listitem>
567 <para>
568 is the <application>LLVM</application> optimizer.
569 </para>
570 <indexterm zone="llvm opt">
571 <primary sortas="b-opt">opt</primary>
572 </indexterm>
573 </listitem>
574 </varlistentry>
575
576 <varlistentry id="libllvm">
577 <term><filename class="libraryfile">libLLVM-&llvm-version;.so</filename></term>
578 <listitem>
579 <para>
580 contains the <application>LLVM</application> API functions.
581 </para>
582 <indexterm zone="llvm libllvm">
583 <primary sortas="c-libllvm">libLLVM-&llvm-version;.so</primary>
584 </indexterm>
585 </listitem>
586 </varlistentry>
587
588 <varlistentry id="libprofile_rt">
589 <term><filename class="libraryfile">libprofile_rt.so</filename></term>
590 <listitem>
591 <para>
592 is the C, C++ and Objective-C runtime library for
593 <application>Clang</application>.
594 </para>
595 <indexterm zone="llvm libprofile_rt">
596 <primary sortas="c-libprofile_rt">libprofile_rt.so</primary>
597 </indexterm>
598 </listitem>
599 </varlistentry>
600
601 </variablelist>
602
603 </sect2>
604
605</sect1>
606
Note: See TracBrowser for help on using the repository browser.