source: general/prog/llvm.xml@ d5169f16

krejzi/svn
Last change on this file since d5169f16 was d5169f16, checked in by Krejzi <krejzi@…>, 10 years ago

Improvements, updates, additions to Programming section.

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/branches/systemd-ng@14748 af4574ff-66df-0310-9fd7-8a98e5e911e0

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