summaryrefslogtreecommitdiff
path: root/SConstruct
Commit message (Collapse)AuthorAgeFilesLines
* SERVER-39786 Set defaults for debug info compressionAndrew Morrow2021-01-281-0/+80
| | | | | | We default to assembler off and linker off. Also a drive-by to fix an errant distro setting for the RHEL 8 builder
* SERVER-43968 Remove conf check for thread_local due to obsolescence.Daniel Moody2021-01-141-19/+0
|
* SERVER-43967 remove C++14 references and enable_if configure check.Daniel Moody2021-01-141-43/+3
|
* SERVER-53054: fixed issue for WINLINK where inputs where not correctly given ↵Daniel Moody2021-01-081-4/+4
| | | | to ninja.
* SERVER-51364 Ubuntu 18.04 Server with OCSP and TLS fails to workShreyas Kalyan2021-01-061-0/+15
|
* SERVER-30815 Added linter to check for unnecessary PUBLIC libdeps, and added ↵Daniel Moody2020-12-161-0/+1
| | | | schema versioning.
* SERVER-48291 Ensure runtime is dynamically linked in dynamic buildsRyan Egesdahl2020-12-091-9/+156
| | | | | | | | | | | | | | | | | | Prior to this point, a dynamic build might have resulted in some runtime libraries being statically linked into shared objects and executables in cases where "shared" runtime libraries were actually linker scripts that linked static versions. This was the case with the MongoDB toolchain and some distro toolchains, including those installed as updated compiler versions in RHEL. The effect of having runtime libraries statically linked was that symbols from those libraries would end up scattered over the compiled objects, increasing object sizes and slowing down server startup. Now, whenever a dynamic build is selected, the user can choose whether to create "shim" runtime libraries that wrap the static ones. The default behavior remains as it was before, and dynamic runtime must be enabled in order to use it.
* Revert "SERVER-48291 Ensure runtime is dynamically linked in dynamic builds"Kaloian Manassiev2020-11-261-139/+7
| | | | This reverts commit 2a0e76082be0f2aca82830bcaf91f6d737b842ac.
* SERVER-48291 Ensure runtime is dynamically linked in dynamic buildsRyan Egesdahl2020-11-261-7/+139
| | | | | | | | | | | | | | | | | | | | | Prior to this point, a dynamic build might have resulted in some runtime libraries being statically linked into shared objects and executables in cases where "shared" runtime libraries were actually linker scripts that linked static versions. This was the case with the MongoDB toolchain and some distro toolchains, including those installed as updated compiler versions in RHEL. The effect of having runtime libraries statically linked was that symbols from those libraries would end up scattered over the compiled objects, increasing object sizes and slowing down server startup. Now, whenever a dynamic build is selected, the user can choose whether to create "shim" runtime libraries that wrap the static ones. The default behavior on Linux is that dynamic builds will detect whether runtime libraries are linker scripts and create shim libraries if any are found. On Windows, the default is to always use a dynamic runtime library with dynamic builds. For other platforms, the prior behavior remains unchanged.
* SERVER-48291 Add global dependency pushdown to libdepsRyan Egesdahl2020-11-261-0/+9
| | | | | | | | | | | | | | | | | We sometimes have situations where a dependency applies at a large scope, such as in the case of tcmalloc, which can apply everywhere. What we have done previously is to hack these dependencies into the LIBDEPS environment variable by adding a builder to all nodes that can produce a compiler result. This is, as stated previously, hackish and hard to control, and it results in adding a Public dependency to all those nodes. What we now do instead is to define LIBDEPS_GLOBAL on the *build environment* (not the Builder node) listing the targets we would like to push down to all other nodes below that point. This has the effect of adding those targets as Private dependencies on all Builder nodes from that point downward, which means some common Public dependencies can be converted to a Private dependency that is stated only once.
* SERVER-52567 added basic functions for graph analyzer CLI tool and improved ↵Daniel Moody2020-11-251-6/+1
| | | | graph generation.
* SERVER-48691 added workaround for ninja response files line to longDaniel Moody2020-11-201-0/+74
|
* SERVER-52566 added generate-libdeps-graph target for building graph of ↵Daniel Moody2020-11-161-0/+6
| | | | library dependencies.
* SERVER-25822 added callback to support preventing given components from ↵Daniel Moody2020-11-121-0/+48
| | | | linking together
* SERVER-38289 Teach objects builders how to build idl files.Daniel Moody2020-10-221-0/+4
|
* SERVER-46871 Added configure check for lzma when libunwind is in useDaniel Moody2020-10-151-0/+4
|
* SERVER-49798 Added LIBDEPS_TYPEINFO for ubsan builds to add typeinfo ↵Daniel Moody2020-10-091-4/+53
| | | | dependencies.
* SERVER-51318 Explicitly set pre/post libdeps flags to be set to nothing.Daniel Moody2020-10-061-3/+6
|
* SERVER-50363 Merge --build-tools=next into stableRyan Egesdahl2020-10-061-55/+42
| | | | | | | | | | | | | | | Merging the following fixes into the stable version of the build tools and migrate fully from --ninja=next to the --build-tools=next: * SERVER-47598 * SERVER-50010 * SERVER-47943 * SERVER-50125 * SERVER-50376 * SERVER-49457 * SERVER-49493 * SERVER-49036 * SERVER-48966
* SERVER-51244 Moved configure checks around so that linker-ld option is ↵Daniel Moody2020-10-011-56/+67
| | | | processed early
* SERVER-49465 Added linker option and disabled use of BFD linker.Daniel Moody2020-09-291-1/+20
|
* SERVER-50258 Add libdeps_next import for build tools nextDaniel Moody2020-09-251-2/+1
|
* SERVER-50258 Added libdeps rule to enforce that DEPS_DEPENDENTS are actually ↵Daniel Moody2020-09-251-0/+10
| | | | built and split libdeps into next version
* SERVER-50376 Ninja should rebuild on compiler and tool changesDaniel Moody2020-09-211-2/+8
|
* Revert "SERVER-50376 Ninja should rebuild on compiler and tool changes"Kaloian Manassiev2020-09-091-8/+2
| | | | This reverts commit 58fd67fc2232a4ca591ff66443fd22213d4b5cac.
* SERVER-50376 Ninja should rebuild on compiler and tool changesRyan Egesdahl2020-09-091-2/+8
| | | | | | | 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.
* Revert "SERVER-50376 Ninja should rebuild on compiler and tool changes"Ryan Egesdahl2020-09-041-2/+2
| | | | This reverts commit 4d43e298fe956c57b3cb0310bcd0785c19f75ef7.
* SERVER-50376 Ninja should rebuild on compiler and tool changesRyan Egesdahl2020-09-031-2/+2
| | | | | | | 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.
* SERVER-50125 Add sanitizer blacklist files to CCACHE_EXTRAFILESRyan Egesdahl2020-09-031-11/+35
| | | | | | | | | | | | | | | 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
* SERVER-47943 Make bad icecream and ccache paths fail hardRyan Egesdahl2020-09-031-12/+38
| | | | | | | | 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.
* SERVER-50689 Support ABI driven linking on macOS with tapiAndrew Morrow2020-09-031-0/+8
|
* SERVER-27507 Add basic visibility support and a testAndrew Morrow2020-09-021-2/+58
|
* SERVER-49168 made SYSLIBDEPS_PRIVATE type and switched lzma to use itDaniel Moody2020-08-271-14/+14
|
* SERVER-49119 Added way for libdeps to generically handle prefix/postfix ↵Daniel Moody2020-08-271-9/+57
| | | | flags, moved --whole-archive out to SConstruct and add --as-needed for dynamic
* SERVER-50010 Added mechanism for custom deps for REGENERATE ruleDaniel Moody2020-08-261-0/+18
|
* SERVER-49857 Explicit llvm-symbolizer path handling with {A,T,UB}SANRyan Egesdahl2020-08-221-25/+22
| | | | | | | | | 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.
* SERVER-43760 Re-enable the ODR detector on a single appropriate --opt=off ↵Andrew Morrow2020-08-191-2/+5
| | | | builder
* SERVER-47598 Refactor ICECC_VERSION handlingAndrew Morrow2020-08-181-2/+5
|
* SERVER-48490 Suppress thread_leak errors under TSANAndrew Morrow2020-08-171-8/+13
|
* SERVER-50016 Fail on missing variables filesAndrew Morrow2020-08-171-8/+7
|
* SERVER-49466 Introduce a flag to opt in to newer mongodb SCons tools as a groupAndrew Morrow2020-08-171-6/+19
|
* SERVER-49875 Added check to only allow supported gcov configurationDaniel Moody2020-08-141-1/+5
|
* SERVER-50184 Separate ASAN and LSAN options againRyan Egesdahl2020-08-071-1/+2
| | | | | It seems the two option sets don't completely overlap as previously thought. This change just separates them again.
* SERVER-50043 Remove Framework build vestiges from embeddedAndrew Morrow2020-08-031-25/+1
|
* SERVER-49493 Add use of depfile to ninja toolDaniel Moody2020-07-291-2/+3
|
* SERVER-49120 Synchronize sanitizer flags with evergreen.ymlRyan Egesdahl2020-07-241-22/+23
| | | | | | | | 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.
* SERVER-41970 update RPATH to use PREFIX valuesDaniel Moody2020-07-241-10/+29
|
* SERVER-48041 Package santizer blacklist files in icecream environmentsRyan Egesdahl2020-07-241-1/+9
| | | | | | | | 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.
* SERVER-48638 Added LibdepsLinter to enforce LIBDEPS rulesDaniel Moody2020-07-231-1/+13
|
* SERVER-49395 more portable way for ninja to build unittests.txtDaniel Moody2020-07-201-7/+9
|