Commit Graph

185 Commits

Author SHA1 Message Date
Mike Hommey
5d549769bf Backout changeset 99b28f8874bb (bug 1494216) to give time to toolchains to build without blocking other landings. 2018-10-02 11:10:28 +09:00
Mike Hommey
ffe3149e8c Bug 1494216 - Use the -Bsymbolic-functions linker flag to build clang. r=froydnj
With libLLVM being a shared library exporting many symbols, all internal
calls using those symbols default to go through the PLT, which is
unnecessary (and costly) overhead. Using -Bsymbolic-functions makes
internal calls go directly to the right place without going through the
PLT.

Differential Revision: https://phabricator.services.mozilla.com/D7029
2018-10-02 11:10:03 +09:00
Coroiu Cristina
96135c6780 Backed out changeset 7652cf6fa0e4 (bug 1492663) for static analysis bustage 2018-09-30 10:09:19 +03:00
Mike Hommey
970cee7912 Bug 1492663 - Upgrade most CI builds to clang 7 r=froydnj
The cctools-port linker links against libraries from clang (for LTO),
which have different SONAMEs depending on the clang version. Which means
the linker needs to be used along the same version of clang it was built
against. Thus we also make it depend on linux64-clang-7.

But changing the dependency is not enough, cf. bug 1471905, so also
touch its build script, which it turns out, we need to do anyways
because llvm-dsymutil was renamed to dsymutil.

Relatedly, all toolchains that are built using cctools-port need to use
linux64-clang-7 too.

Building compiler-rt 7 with the OSX 10.11 SDK fails because of some
newer APIs being used in compiler-rt for xray, but this is not a feature
we use, so disable that.

Differential Revision: https://phabricator.services.mozilla.com/D6766
2018-09-27 15:33:42 +00:00
Andi-Bogdan Postelnicu
2a511a8f3f Bug 1493641 - embed the libLLVM.dylib into clang-tidy artifact on macOS. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D6697
2018-09-24 20:44:27 +00:00
Mike Hommey
3697f366d7 Bug 1492037 - Build clang with LLVM as a shared library. r=froydnj
Doing so changes the size of the compressed toolchain archive from ~280M
to ~120M, and the decompressed size from ~1500M to ~675M. This will
reduce the overhead of decompression during builds.

As we ship llvm-symbolizer as part of ASan builds, we do need it to
still statically link against LLVM, which we do with a small patch.

With LLVM as a shared library, libLTO, which is used by cctools-port for
the linker, is dynamically linked to LLVM, and the cctools-port
configure script fails to link against libLTO. So we add a -rpath-link
to make it find the LLVM library. This happens to force a rebuild of
cctools-port, but for future cases where we might need a rebuild because
of some clang changes, we add a comment to ease the process, and avoid
a newer cctools-port taking the cache spot of an older one.

Ideally, mac cctools-port would need something similar, but it needs a
mac libLTO.dylib, which is not there anyways (and the mac cctools-port
thus already didn't support LTO).

Also, with LLVM built as a shared library, all its symbols are exported
with a LLVM_x.y version. Combined with -static-libstdc++ that is used
during the clang build, this causes problems (see
https://bugzilla.mozilla.org/show_bug.cgi?id=1492037#c7). But it turns
out things have evolved since -static-libstdc++ has been added to the
clang build script, and things work without now, so remove it (as well
as -static-libgcc).

Differential Revision: https://phabricator.services.mozilla.com/D6117
2018-09-21 10:41:36 +09:00
Mike Hommey
fe3cf1d2d1 Backout changeset dba2140cb366 (bug 1492037) to give time to toolchains to build without blocking other landings. 2018-09-21 08:18:49 +09:00
Mike Hommey
eb7813b33f Bug 1492037 - Build clang with LLVM as a shared library. r=froydnj
Doing so changes the size of the compressed toolchain archive from ~280M
to ~120M, and the decompressed size from ~1500M to ~675M. This will
reduce the overhead of decompression during builds.

As we ship llvm-symbolizer as part of ASan builds, we do need it to
still statically link against LLVM, which we do with a small patch.

With LLVM as a shared library, libLTO, which is used by cctools-port for
the linker, is dynamically linked to LLVM, and the cctools-port
configure script fails to link against libLTO. So we add a -rpath-link
to make it find the LLVM library. This happens to force a rebuild of
cctools-port, but for future cases where we might need a rebuild because
of some clang changes, we add a comment to ease the process, and avoid
a newer cctools-port taking the cache spot of an older one.

Ideally, mac cctools-port would need something similar, but it needs a
mac libLTO.dylib, which is not there anyways (and the mac cctools-port
thus already didn't support LTO).

Also, with LLVM built as a shared library, all its symbols are exported
with a LLVM_x.y version. Combined with -static-libstdc++ that is used
during the clang build, this causes problems (see
https://bugzilla.mozilla.org/show_bug.cgi?id=1492037#c7). But it turns
out things have evolved since -static-libstdc++ has been added to the
clang build script, and things work without now, so remove it (as well
as -static-libgcc).

Differential Revision: https://phabricator.services.mozilla.com/D6117
2018-09-21 08:18:47 +09:00
Mike Hommey
f5eb1e4f5b Backout changeset b0abf5269c25 (bug 1492037) to give time to toolchains to build without blocking other landings. 2018-09-19 07:01:33 +09:00
Mike Hommey
d501855240 Bug 1492037 - Build clang with LLVM as a shared library. r=froydnj
Doing so changes the size of the compressed toolchain archive from ~280M
to ~120M, and the decompressed size from ~1500M to ~675M. This will
reduce the overhead of decompression during builds.

As we ship llvm-symbolizer as part of ASan builds, we do need it to
still statically link against LLVM, which we do with a small patch.

CCTools-port needs to be rebuilt in some cases of clang changes, which
this one of, so touch the script so that it happens.

Differential Revision: https://phabricator.services.mozilla.com/D6117
2018-09-19 07:00:38 +09:00
Mike Hommey
b577f7e4fc Bug 1488307 - Build the LLVM gold plugin. r=mshal
As much as it's tempting to use LLD for LTO, it still causes some
subtle problems with the build, and it's still better to keep using
BFD ld for the time being. Doing so requires the gold plugin, which
only requires to pass cmake the directory where the binutils headers
are, and they are part of the gcc toolchain headers.

Differential Revision: https://phabricator.services.mozilla.com/D4896
2018-09-05 09:36:42 +09:00
Mike Hommey
4b3aecfed0 Backout changeset c2b5cf7bde83 (bug 1488307) to give time to toolchains to build without blocking other landings. 2018-09-05 06:50:14 +09:00
Mike Hommey
ff60630d1a Bug 1488307 - Build the LLVM gold plugin. r=mshal
As much as it's tempting to use LLD for LTO, it still causes some
subtle problems with the build, and it's still better to keep using
BFD ld for the time being. Doing so requires the gold plugin, which
only requires to pass cmake the directory where the binutils headers
are, and they are part of the gcc toolchain headers.

Differential Revision: https://phabricator.services.mozilla.com/D4896
2018-09-05 06:50:13 +09:00
Andi-Bogdan Postelnicu
f138da3f76 Bug 1466427 - Migrate clang-tidy package from 5.0.1 to 7.0.0-rc2. r=glandium,janx
Differential Revision: https://phabricator.services.mozilla.com/D3980
2018-08-24 12:39:58 +00:00
Mike Hommey
f712fd11d1 Bug 1479800 - Build 32-bits compiler-rt for 64-bits clang-cl. r=dmajor 2018-08-16 10:31:03 +09:00
arthur.iakab
f143071293 Backed out 2 changesets (bug 1479800, bug 1483779)for frequent cgx and arm64 failures
Backed out changeset 5fcbe08fb321 (bug 1483779)
Backed out changeset dccd5299c5ad (bug 1479800)
2018-08-17 09:50:30 +03:00
Mike Hommey
91acd5d792 Bug 1479800 - Build 32-bits compiler-rt for 64-bits clang-cl. r=dmajor 2018-08-17 10:19:51 +09:00
Mike Hommey
6c27c2fbba Backout changeset 1e71e61d1623 (bug 1479800) to give time to toolchains to build without blocking other landings. 2018-08-17 07:11:45 +09:00
Mike Hommey
eef6e92114 Bug 1479800 - Build 32-bits compiler-rt for 64-bits clang-cl. r=dmajor 2018-08-17 07:10:07 +09:00
Tom Ritter
3c85735610 Bug 1479878 Add a --skip-revert option to build-clang.py r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D2580
2018-08-15 06:13:14 +00:00
Mike Hommey
75c5611cb1 Bug 1481989 - Copy 32-bits libraries from gcc to clang. r=froydnj
We already copy the 64-bits libraries, but don't copy the 32-bits
libraries, which prevents building for linux32 by default.

Incidentally, this also makes the clang build system build the 32-bits
compiler-rt libraries, allowing e.g. 32-bits PGO.
2018-08-10 05:54:07 +09:00
Daniel Varga
ea0989b193 Backed out 3 changesets (bug 1480631) for failure at /home/cltbld/workspace/build/tests/talos/talos/run_tests.py
Backed out changeset ed7dba433629 (bug 1480631)
Backed out changeset dd64a5e6d4df (bug 1480631)
Backed out changeset 910a805c960d (bug 1480631)
2018-08-09 01:46:40 +03:00
Mike Hommey
20db58ec38 Fix up clang-tidy after bug 1480631. r=bustage 2018-08-09 06:37:11 +09:00
Mike Hommey
dfeaa4752e Bug 1480631 - Copy 32-bits libraries from gcc to clang. r=froydnj
We already copy the 64-bits libraries, but don't copy the 32-bits
libraries, which prevents building for linux32 by default.

Incidentally, this also makes the clang build system build the 32-bits
compiler-rt libraries, allowing e.g. 32-bits PGO.
2018-08-09 06:08:12 +09:00
Christian Holler
924b3c7658 Bug 1426176 - Add symbols file for Clang ASan runtime on Windows. r=ted
MozReview-Commit-ID: 4P3mwZNP8cY
2018-07-26 11:16:50 +02:00
Cosmin Sabou
5e57ad14db Backed out changeset df39b3369446 (bug 1426176) for causing toolchains clang bustages. CLOSED TREE 2018-07-31 00:48:47 +03:00
Christian Holler
0010c130f3 Bug 1426176 - Add symbols file for Clang ASan runtime on Windows. r=ted
MozReview-Commit-ID: 4P3mwZNP8cY
2018-07-26 11:16:50 +02:00
Tom Ritter
3a08e75d1e Bug 1467897 Allow local runs of build-clang by providing a --base-dir option r=glandium
MozReview-Commit-ID: Gd9W1DV5g1x
2018-06-05 14:01:59 -05:00
Nathan Froyd
5a9b972ebc Bug 1470449 - silence some warnings during clang bootstrap; r=chmanchester
This change makes interactive usage slightly nicer and logs somewhat shorter.
2018-06-26 12:02:36 -04:00
Sylvestre Ledru
b2210f87b1 bug 1463425 - Fix flake8/pep8 issue by hand in build/ r=gps
MozReview-Commit-ID: AZdcEWyVV6e
2018-05-21 23:58:19 +02:00
Tom Ritter
b1612a4df5 Bug 1458897 Fix svn revert in build-clang so one can re-run it successfully r=glandium
svn revert requires a path, and does not take a revision.  This isn't an
issue on build machines because we do a fresh checkout every time.

But if you're trying to run build-clang locally, with existing checkouts,
it will:
1) successfully svn update
2) run svn revert, saying "Skipped <rev>"
      (except you don't see it because of -q)
3) svn revert returns a successfull eror code
4) patch fails because the file was never reverted and it attempts
   to re-apply the patch

Also I think the revert command needs to come first.

MozReview-Commit-ID: 4OfrJNZwJNU
2018-05-03 09:14:12 -05:00
Ryan VanderMeulen
39911debab Bug 1424281 - Use Visual Studio 2017 15.6.0 for Windows builds. r=froydnj 2018-03-12 19:24:44 -04:00
Jesse Schwartzentruber
855f59b761 Bug 1425406 - Add a linux64 clang 6 (pre) toolchain with the macosx64 native sanitizer dylibs. r=froydnj
MozReview-Commit-ID: Ig9xpBDcjNu
2018-02-08 16:58:12 -05:00
Nathan Froyd
246d18bd6f Bug 1435502 - add AArch64 support to clang builds; r=chmanchester 2018-02-05 14:25:43 -05:00
Andi-Bogdan Postelnicu
4dc16add91 Bug 1429015 - Add clang-format-diff to the clang-tidy build generated by toolchains. r=sylvestre
MozReview-Commit-ID: FjJqef78wa3
2018-01-09 13:27:39 +02:00
David Major
56e77b52b9 Bug 1421404: Add lld to the build-clang task. r=glandium 2017-12-01 11:12:07 -05:00
Marco Castelluccio
4776d5d851 Bug 1415568 - Support applying patches to Windows clang. r=froydnj 2017-11-08 17:23:12 +01:00
Gregory Szorc
40d0844f17 Bug 1414558 - Build Clang toolchain on a Docker volume; r=froydnj
Before, the build root was not in a Docker cache or volume. With
current Docker works, that meant AUFS. We know AUFS is slow under
I/O load and can cause random failures due to missing data after
writes.

This commit changes the build root to a known Docker volume, which
will be backed by EXT4 and won't have the problems of AUFS.

MozReview-Commit-ID: 6WOH0yednAv
2017-11-06 11:45:17 -08:00
David Major
57a32db44f Bug 1412952 - Build clang-cl itself with VS2017. r=froydnj 2017-11-03 12:29:58 -04:00
Sylvestre Ledru
69d68b3c4f Bug 1406650 - Make build/*.py and a few other files flake8 compatible and add them to the list of files to check r=chmanchester
MozReview-Commit-ID: icmFJtbWdN
2017-10-07 16:45:22 +02:00
Sylvestre Ledru
70ed5b7f7c Bug 1406310 - Also ship clang-format in the clang-tidy build job r=glandium
MozReview-Commit-ID: 4C992sYlMo2
2017-10-06 09:50:48 +02:00
Boris Zbarsky
6dab2eb63c Bug 1406140 followup. Fix the formatting so the CLOSED TREE is less red.
MozReview-Commit-ID: LAskse3XmLN
2017-10-06 09:54:31 -04:00
Sylvestre Ledru
bfef6b987a Bug 1406140 - build-clang.py: flake8 consitency r=andi
MozReview-Commit-ID: 6w1QesvVyyc
2017-10-05 21:03:19 +02:00
Sylvestre Ledru
711d48de35 Bug 1406140 - Simplify a bit the code to have a single call to build_tar_package r=andi
MozReview-Commit-ID: 9yGw8bJhQwR
2017-10-05 21:00:25 +02:00
Andi-Bogdan Postelnicu
3506ac4a96 Bug 1405602 - Add clang-apply-replacements to the clang-tidy build generated by toolchains. r=ehsan
MozReview-Commit-ID: 1BT2ukzLoC3
2017-10-04 18:27:02 +03:00
Ting-Yu Chou
b26dd7ab45 Bug 1385743 - Use copy_tree() to copy directory recursively instead. r=Ehsan
shutil.copy2() will fail if the destination directory doesn't exist.
Switch to copy_tree() instead so we don't need to worry about the
error cases of copy2() and copytree().

MozReview-Commit-ID: 3kHfgL57KfX
2017-08-17 10:36:15 +08:00
Mike Hommey
f55cec3f74 Bug 1386588 - Always print out the commands run by the clang build job. r=gps,a=KWierso
Not doing so makes debugging harder, for no added value.
2017-08-03 08:14:02 +09:00
Ehsan Akhgari
a4864c05d9 Bug 1336149 - Clean up the patches section in build-clang.py config files; r=froydnj
These config files don't need to declare patches for other platforms.
Therefore, this patch makes "patches" a simple array of patches to be
applied.
2017-02-03 10:21:25 -05:00
Ehsan Akhgari
777a5c5252 Bug 1331957 - Part 11: Specify the path to the cross-compiler toolchain libtool for OS X static analysis builds; r=froydnj 2017-02-03 10:19:44 -05:00
Ehsan Akhgari
6e00601f68 Bug 1331957 - Part 9: Upgrade cctools used for building clang on OS X for ld 264.3.102; r=froydnj 2017-02-03 10:19:33 -05:00