Commit Graph

1606 Commits

Author SHA1 Message Date
Kaloian Manassiev
b397d8da37 Revert "SERVER-50376 Ninja should rebuild on compiler and tool changes"
This reverts commit 58fd67fc22.
2020-09-09 07:04:16 +00:00
Ryan Egesdahl
58fd67fc22 SERVER-50376 Ninja should rebuild on compiler and tool changes
Allow Ninja to rebuild build.ninja any time a SCons tool or the compiler
is changed between iterative rebuilds. This change allows us to ensure
that we don't have any stale object files lying around that may have
been produced by an incompatible toolchain.
2020-09-09 02:44:01 +00:00
Ryan Egesdahl
6ac9d725e9 Revert "SERVER-50376 Ninja should rebuild on compiler and tool changes"
This reverts commit 4d43e298fe.
2020-09-04 04:57:07 +00:00
Ryan Egesdahl
4d43e298fe SERVER-50376 Ninja should rebuild on compiler and tool changes
Allow Ninja to rebuild build.ninja any time a SCons tool or the compiler
is changed between iterative rebuilds. This change allows us to ensure
that we don't have any stale object files lying around that may have
been produced by an incompatible toolchain.
2020-09-03 22:33:38 +00:00
Ryan Egesdahl
37276b21f4 SERVER-50125 Add sanitizer blacklist files to CCACHE_EXTRAFILES
Some versions of ccache do not know how to handle clang's
-fsanitizer-blacklist flags. Some versions don't handle it at all, while
others only handle one instance, even though it can appear multiple
times on the command line. Because the argument can change the resulting
compiled object, not taking the flags into account properly can cause
ccache to pull an incorrect object file from its cache. The exact
behavior depends on the ccache version and how the arguments are changed
on the command line. We implement a workaround suggested by the ccache
developers until a newer version of ccache with all the required fixes
is in common use.

    * Workaround ref: https://github.com/ccache/ccache/issues/174
2020-09-03 19:55:42 +00:00
Ryan Egesdahl
ecc06d2978 SERVER-47943 Make bad icecream and ccache paths fail hard
If CCACHE or ICECC are specified on the SCons command line but the paths
given don't exist, the associated tool would simply be skipped. This
caused confusion when users were expecting the tool to run and the
compile would proceed without it. Now specifying an incorrect path to
the tool will cause a configure failure.
2020-09-03 19:38:16 +00:00
Andrew Morrow
c4aa65bbd5 SERVER-50689 Support ABI driven linking on macOS with tapi 2020-09-03 17:11:08 +00:00
Andrew Morrow
b478d31b7d SERVER-27507 Add basic visibility support and a test 2020-09-02 03:02:47 +00:00
Daniel Moody
a81e107047 SERVER-49168 made SYSLIBDEPS_PRIVATE type and switched lzma to use it 2020-08-27 21:35:32 +00:00
Daniel Moody
31361990d9 SERVER-49119 Added way for libdeps to generically handle prefix/postfix flags, moved --whole-archive out to SConstruct and add --as-needed for dynamic 2020-08-27 01:08:39 +00:00
Daniel Moody
fff9061086 SERVER-50010 Added mechanism for custom deps for REGENERATE rule 2020-08-26 16:16:36 +00:00
Ryan Egesdahl
20ed5d51cb SERVER-49857 Explicit llvm-symbolizer path handling with {A,T,UB}SAN
The toolchain llvm-symbolizer was never actually in PATH despite the
toolchain being appended to it in evergreen.yml, causing confusion while
attempting to diagnose an apparent symbolization failure. This change
explicitly sets the path to llvm-symbolizer for all sanitizer build
variants and removes the last vestiges of the non-working discovery
method.
2020-08-22 00:08:36 +00:00
Andrew Morrow
3e0366d2b1 SERVER-43760 Re-enable the ODR detector on a single appropriate --opt=off builder 2020-08-19 16:26:53 +00:00
Andrew Morrow
0662433ac0 SERVER-47598 Refactor ICECC_VERSION handling 2020-08-18 17:21:36 +00:00
Andrew Morrow
99e85a18ec SERVER-48490 Suppress thread_leak errors under TSAN 2020-08-17 23:45:47 +00:00
Andrew Morrow
5b3086d02c SERVER-50016 Fail on missing variables files 2020-08-17 22:41:36 +00:00
Andrew Morrow
c40e96ea0b SERVER-49466 Introduce a flag to opt in to newer mongodb SCons tools as a group 2020-08-17 22:09:57 +00:00
Daniel Moody
e7653706fd SERVER-49875 Added check to only allow supported gcov configuration 2020-08-14 18:02:29 +00:00
Ryan Egesdahl
8f5afca23c SERVER-50184 Separate ASAN and LSAN options again
It seems the two option sets don't completely overlap as previously
thought. This change just separates them again.
2020-08-07 20:32:16 +00:00
Andrew Morrow
506a0af7f8 SERVER-50043 Remove Framework build vestiges from embedded 2020-08-03 17:18:57 +00:00
Daniel Moody
3202a05352 SERVER-49493 Add use of depfile to ninja tool 2020-07-29 20:20:31 +00:00
Ryan Egesdahl
b46ee4980c SERVER-49120 Synchronize sanitizer flags with evergreen.yml
The sanitizer flags in evergreen.yml were not being reflected in
SConstruct. This change simply synchronizes the two locations so
developers can build with sanitizers locally and get the same
results as with Evergreen builds. We also remove the separation between
LSAN and ASAN, since no evergreen builds use them separately anyway.
2020-07-24 20:44:12 +00:00
Daniel Moody
c71ff67d2c SERVER-41970 update RPATH to use PREFIX values 2020-07-24 18:00:25 +00:00
Ryan Egesdahl
cdab099b95 SERVER-48041 Package santizer blacklist files in icecream environments
Before this point, remote builds did not work because Icecream did not
copy sanitizer blacklist files to the remote hosts. We had a check in
place that silently turned Icecream builds with sanitizers into local
builds. Now we build the sanitizer blacklist files into the environment
tarball that Icecream uses for remote builds.
2020-07-24 17:35:55 +00:00
Daniel Moody
d986854f5e SERVER-48638 Added LibdepsLinter to enforce LIBDEPS rules 2020-07-23 21:52:22 +00:00
Daniel Moody
ab1a892520 SERVER-49395 more portable way for ninja to build unittests.txt 2020-07-20 12:05:28 +00:00
Ryan Egesdahl
f69c932697 SERVER-48443 Fix builds with Icecream 1.2+ and gcc 4.4+
A bug spotted in Icecream 1.2+ can cause build failures when building
with gcc. This is, in turn, due to a bug in GCC where the preprocessor
executed via `gcc -E` has different behavior than the one used
internally during compilation. We are working with Icecream, and GCC
to address these problems. For now, we work around the bugs.

    * GCC bug report: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88475
    * Icecream bug report: icecc/icecream#550
2020-07-17 21:33:57 +00:00
Ryan Egesdahl
4635320ea1 Revert "SERVER-48443 Fix builds with Icecream 1.2+ and gcc 4.4+"
This reverts commit 01dd381f33.
2020-07-17 21:20:27 +00:00
Andrew Morrow
f07b26628c SERVER-49078 Disable libunwind for TSAN 2020-07-15 00:12:06 +00:00
Ryan Egesdahl
01dd381f33 SERVER-48443 Fix builds with Icecream 1.2+ and gcc 4.4+
A bug spotted in Icecream 1.2+ can cause build failures when building
with gcc. This is, in turn, due to a bug in GCC where the preprocessor
executed via `gcc -E` has different behavior than the one used
internally during compilation. We are working with Icecream, and GCC
to address these problems. For now, we work around the bugs.

    * GCC bug report: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88475
    * Icecream bug report: https://github.com/icecc/icecream/issues/550
2020-07-14 23:45:39 +00:00
Andrew Morrow
133fad4c0c SERVER-49375 Disable lld for --link-model=dynamic builds 2020-07-14 16:08:37 +00:00
Andrew Morrow
e072f83477 SERVER-47277 Remove non-hygienic build support 2020-07-08 11:42:42 +00:00
Daniel Moody
5fe923a0aa SERVER-49036 expand response files for generating the compdb from ninja 2020-07-02 21:19:39 +00:00
Ryan Egesdahl
0bba5e4470 SERVER-48933 Fix fork-after-new-thread death test failures with TSAN
The death tests fork() a new thread in a multithreaded test harness so
we can test thread death behavior. Unfortunately TSAN does not support
fork() after spawning a thread and will kill the thread by default,
causing a test failure. This sets an unsupported TSAN flag that disables
the behavior, allowing the tests to proceed. There is currently no means
to limit the change to only the death tests, but the change only applies
to the death tests for now.
2020-06-26 03:07:53 +00:00
Andrew Morrow
642a530878 SERVER-41674 Make hygienic builds the default 2020-06-04 18:31:55 +00:00
Andrew Morrow
463d6ccc4d SERVER-47776 Promote ninja_next.py to ninja.py 2020-05-28 22:19:41 +00:00
Andrew Morrow
17d9094752 SERVER-48272 Reduce startup time for dynamically linked binaries
Minimizing the list of NEEDED entries directly attached to the core
programs reduces startup time for dynamically linked binaries by
approximately 40 percent.
2020-05-27 16:10:48 +00:00
Andrew Morrow
7ebf6ac444 SERVER-48139 Dagger should depend on install-all-meta in hygienic mode 2020-05-15 17:02:49 +00:00
Andrew Morrow
4423364192 SERVER-47902 Ensure ninja generators local_pool has real concurrency 2020-05-12 13:49:26 +00:00
David Bradford
74ea6aa4df SERVER-47796: Ensure linters run against enterprise modules 2020-05-06 13:12:44 +00:00
Andrew Morrow
2f4044b526 SERVER-47901 Require ccache when using icecream 1.1 and ninja 2020-05-04 20:42:40 +00:00
Andrew Morrow
11a967280b SERVER-47906 Default target should always be install-default in hygienic mode 2020-05-04 15:49:39 +00:00
Andrew Morrow
e3e70da6c4 SERVER-47865 Fix invalid subst where a variable was passed where a node is required 2020-05-01 17:32:47 +00:00
Andrew Morrow
404e44ce81 SERVER-45785 Simplify implementation of DESTDIR
Also:

- Correctly honor default targets in hygienic mode.
- Fix a latent variable reuse bug in auto_install_pseudobuilder
2020-04-27 22:19:56 +00:00
Andrew Morrow
de6e9c18e3 SERVER-47721 Make generated ninja file deterministic 2020-04-27 21:02:45 +00:00
Andrew Morrow
4ccd6ac3af SERVER-47110 Don't emit the PDB file twice when separate debug is enabled 2020-04-27 17:19:39 +00:00
Andrew Morrow
85e982db8d SERVER-44067 Increase macosx target to 10.13 2020-04-20 15:53:38 +00:00
Andrew Morrow
463cc81552 SERVER-47399 Use File Nodes to manage dSYM substructure 2020-04-17 21:22:51 +00:00
Andrew Morrow
cfa89fbaf0 SERVER-46744 Install unit test debug info without increasing disk utilization 2020-04-17 17:46:01 +00:00
Mark Benvenuto
d51e93a173 SERVER-42955 Call explicit_bzero where available 2020-04-10 16:30:56 +00:00