source: general/prog/llvm.xml@ 70251fc

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 70251fc was 70251fc, checked in by Krejzi <krejzi@…>, 11 years ago

LLVM 3.3

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

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