<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/lib/clang/libllvmobject/Makefile, branch main</title>
<subtitle>FreeBSD source tree</subtitle>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/'/>
<entry>
<title>Completely revamp the way llvm, clang and lldb are built.</title>
<updated>2016-08-26T22:44:22+00:00</updated>
<author>
<name>Dimitry Andric</name>
<email>dim@FreeBSD.org</email>
</author>
<published>2016-08-26T22:44:22+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=986e05bc2a18e58ffe5ad5c944e4c188d01a4462'/>
<id>986e05bc2a18e58ffe5ad5c944e4c188d01a4462</id>
<content type='text'>
* Bootstrap llvm-tblgen and clang-tblgen with a minimal llvm static
  library, that has no other dependencies.
* Roll up all separate llvm libraries into one big static libllvm.
* Similar for all separate clang and lldb static libraries.
* For all these libraries, generate their .inc files only once.
* Link all llvm tools (including extra) against the big libllvm.
* Link clang and clang-format against the big libllvm and libclang.
* Link lldb against the big libllvm, libclang and liblldb.

N.B.: This is work in progress, some details may still be missing.

It also heavily depends on bsd.*.mk's support for SRCS and DPSRCS with
relative pathnames, which apparently does not always work as expected.
For building llvm, clang and lldb though, it seems to work just fine.

The main idea behind this restructuring is maintainability and build
peformance.  The previous large number of very small libraries, each
with their own generated files and dependencies was slow to traverse
and hard to understand.

Possible future improvements:
* Only build certain targets, e.g. for most regular users having just
  one target will be fine.  This will shave off some build time.
* Building the big llvm, clang and lldb libraries as shared (private)
  libraries.
* Adding other components from the LLVM project, such as lld.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Bootstrap llvm-tblgen and clang-tblgen with a minimal llvm static
  library, that has no other dependencies.
* Roll up all separate llvm libraries into one big static libllvm.
* Similar for all separate clang and lldb static libraries.
* For all these libraries, generate their .inc files only once.
* Link all llvm tools (including extra) against the big libllvm.
* Link clang and clang-format against the big libllvm and libclang.
* Link lldb against the big libllvm, libclang and liblldb.

N.B.: This is work in progress, some details may still be missing.

It also heavily depends on bsd.*.mk's support for SRCS and DPSRCS with
relative pathnames, which apparently does not always work as expected.
For building llvm, clang and lldb though, it seems to work just fine.

The main idea behind this restructuring is maintainability and build
peformance.  The previous large number of very small libraries, each
with their own generated files and dependencies was slow to traverse
and hard to understand.

Possible future improvements:
* Only build certain targets, e.g. for most regular users having just
  one target will be fine.  This will shave off some build time.
* Building the big llvm, clang and lldb libraries as shared (private)
  libraries.
* Adding other components from the LLVM project, such as lld.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update build glue for clang and the llvm/clang extras.</title>
<updated>2016-08-19T17:55:34+00:00</updated>
<author>
<name>Dimitry Andric</name>
<email>dim@FreeBSD.org</email>
</author>
<published>2016-08-19T17:55:34+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=7fff4413af5f22ce98eac43f9a94cfe77d5fcef1'/>
<id>7fff4413af5f22ce98eac43f9a94cfe77d5fcef1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>First part of updating llvm/clang build glue: getting llvm-tblgen,</title>
<updated>2015-12-31T14:39:45+00:00</updated>
<author>
<name>Dimitry Andric</name>
<email>dim@FreeBSD.org</email>
</author>
<published>2015-12-31T14:39:45+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=34cdd77646db8a3e57441b3f7d028973dc880c54'/>
<id>34cdd77646db8a3e57441b3f7d028973dc880c54</id>
<content type='text'>
clang-tblgen and clang itself built.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
clang-tblgen and clang itself built.
</pre>
</div>
</content>
</entry>
<entry>
<title>Minimize the number of files compiled for clang only (e.g. when neither</title>
<updated>2015-09-06T22:02:13+00:00</updated>
<author>
<name>Dimitry Andric</name>
<email>dim@FreeBSD.org</email>
</author>
<published>2015-09-06T22:02:13+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=999971f7f71dcf7d1efcdcc30cf27f14c6da6354'/>
<id>999971f7f71dcf7d1efcdcc30cf27f14c6da6354</id>
<content type='text'>
WITH_CLANG_EXTRAS nor WITH_LLDB is in effect).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
WITH_CLANG_EXTRAS nor WITH_LLDB is in effect).
</pre>
</div>
</content>
</entry>
<entry>
<title>Update llvm/clang to r241361.</title>
<updated>2015-07-05T22:34:42+00:00</updated>
<author>
<name>Dimitry Andric</name>
<email>dim@FreeBSD.org</email>
</author>
<published>2015-07-05T22:34:42+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=3dac3a9bad618320bf4f0ce5f834530e9c0c37b2'/>
<id>3dac3a9bad618320bf4f0ce5f834530e9c0c37b2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Update Makefiles and other build glue for llvm/clang 3.7.0, as of trunk</title>
<updated>2015-06-10T19:12:52+00:00</updated>
<author>
<name>Dimitry Andric</name>
<email>dim@FreeBSD.org</email>
</author>
<published>2015-06-10T19:12:52+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=97bc6c731eabb6212f094302b94f3f0f9534ebdf'/>
<id>97bc6c731eabb6212f094302b94f3f0f9534ebdf</id>
<content type='text'>
r239412.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
r239412.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update llvm and clang library Makefiles.</title>
<updated>2014-11-24T19:46:35+00:00</updated>
<author>
<name>Dimitry Andric</name>
<email>dim@FreeBSD.org</email>
</author>
<published>2014-11-24T19:46:35+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=281cb6ece0bba5f13807cd7f8b951e2f6ad9bc31'/>
<id>281cb6ece0bba5f13807cd7f8b951e2f6ad9bc31</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Upgrade our copy of llvm/clang to 3.4 release.  This version supports</title>
<updated>2014-02-16T19:44:07+00:00</updated>
<author>
<name>Dimitry Andric</name>
<email>dim@FreeBSD.org</email>
</author>
<published>2014-02-16T19:44:07+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=f785676f2a4a7a9e485a9c482d4e6497babe4392'/>
<id>f785676f2a4a7a9e485a9c482d4e6497babe4392</id>
<content type='text'>
all of the features in the current working draft of the upcoming C++
standard, provisionally named C++1y.

The code generator's performance is greatly increased, and the loop
auto-vectorizer is now enabled at -Os and -O2 in addition to -O3.  The
PowerPC backend has made several major improvements to code generation
quality and compile time, and the X86, SPARC, ARM32, Aarch64 and SystemZ
backends have all seen major feature work.

Release notes for llvm and clang can be found here:
&lt;http://llvm.org/releases/3.4/docs/ReleaseNotes.html&gt;
&lt;http://llvm.org/releases/3.4/tools/clang/docs/ReleaseNotes.html&gt;

MFC after:	1 month
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
all of the features in the current working draft of the upcoming C++
standard, provisionally named C++1y.

The code generator's performance is greatly increased, and the loop
auto-vectorizer is now enabled at -Os and -O2 in addition to -O3.  The
PowerPC backend has made several major improvements to code generation
quality and compile time, and the X86, SPARC, ARM32, Aarch64 and SystemZ
backends have all seen major feature work.

Release notes for llvm and clang can be found here:
&lt;http://llvm.org/releases/3.4/docs/ReleaseNotes.html&gt;
&lt;http://llvm.org/releases/3.4/tools/clang/docs/ReleaseNotes.html&gt;

MFC after:	1 month
</pre>
</div>
</content>
</entry>
<entry>
<title>Upgrade our copy of llvm/clang to 3.3 release.</title>
<updated>2013-06-12T18:48:53+00:00</updated>
<author>
<name>Dimitry Andric</name>
<email>dim@FreeBSD.org</email>
</author>
<published>2013-06-12T18:48:53+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=284c197886619e7a51d68f10971d3d975526044a'/>
<id>284c197886619e7a51d68f10971d3d975526044a</id>
<content type='text'>
Release notes are still in the works, these will follow soon.

MFC after:	1 month
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Release notes are still in the works, these will follow soon.

MFC after:	1 month
</pre>
</div>
</content>
</entry>
<entry>
<title>Pull in r170135 from upstream clang trunk:</title>
<updated>2013-02-02T22:28:29+00:00</updated>
<author>
<name>Dimitry Andric</name>
<email>dim@FreeBSD.org</email>
</author>
<published>2013-02-02T22:28:29+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=df5d2454a3de65e6d384933806fff133d660758f'/>
<id>df5d2454a3de65e6d384933806fff133d660758f</id>
<content type='text'>
  Dont use/link ARCMT, StaticAnalyzer and Rewriter to clang when the user
  specifies not to. Dont build ASTMatchers with Rewriter disabled and
  StaticAnalyzer when it's disabled.

  Without all those three, the clang binary shrinks (x86_64) from ~36MB
  to ~32MB (unstripped).

To disable these clang components, and get a smaller clang binary built
and installed, set WITHOUT_CLANG_FULL in src.conf(5).  During the
initial stages of buildworld, those extra components are already
disabled automatically, to save some build time.

MFC after:	1 week
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  Dont use/link ARCMT, StaticAnalyzer and Rewriter to clang when the user
  specifies not to. Dont build ASTMatchers with Rewriter disabled and
  StaticAnalyzer when it's disabled.

  Without all those three, the clang binary shrinks (x86_64) from ~36MB
  to ~32MB (unstripped).

To disable these clang components, and get a smaller clang binary built
and installed, set WITHOUT_CLANG_FULL in src.conf(5).  During the
initial stages of buildworld, those extra components are already
disabled automatically, to save some build time.

MFC after:	1 week
</pre>
</div>
</content>
</entry>
</feed>
