source: general/prog/llvm.xml@ 51c08f3

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 7.10 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind 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 trunk upgradedb xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since 51c08f3 was 5d4a086a, checked in by Fernando de Oliveira <fernando@…>, 10 years ago

LLVM-3.5.0: remove not needed anymore fix for linking.

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

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