diff options
author | Andrew Morrow <acm@mongodb.com> | 2018-08-14 15:24:54 -0400 |
---|---|---|
committer | Andrew Morrow <acm@mongodb.com> | 2018-09-20 14:36:08 -0400 |
commit | 499f7c0f7dab2d3ed31cad84d3c96b5884436f5f (patch) | |
tree | 2bba9da77ddf283f74dae8ce10ad69a93e412887 /SConstruct | |
parent | ca7ee87306f3333a9ef1f89d7a272f36282ff963 (diff) | |
download | mongo-499f7c0f7dab2d3ed31cad84d3c96b5884436f5f.tar.gz |
SERVER-33912 Make warnings fatal for embedded builders
Also includes necessary feature flag and new clang warning suppressions
(cherry picked from commit a81a923c2c44d69a39a81ade66572fafedfa4f03)
Diffstat (limited to 'SConstruct')
-rw-r--r-- | SConstruct | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/SConstruct b/SConstruct index 1d634b159bf..8c03735f32e 100644 --- a/SConstruct +++ b/SConstruct @@ -1723,6 +1723,29 @@ if env.ToolchainIs('msvc'): if env.TargetOSIs('posix'): + # On linux, C code compiled with gcc/clang -std=c11 causes + # __STRICT_ANSI__ to be set, and that drops out all of the feature + # test definitions, resulting in confusing errors when we run C + # language configure checks and expect to be able to find newer + # POSIX things. Explicitly enabling _XOPEN_SOURCE fixes that, and + # should be mostly harmless as on Linux, these macros are + # cumulative. The C++ compiler already sets _XOPEN_SOURCE, and, + # notably, setting it again does not disable any other feature + # test macros, so this is safe to do. Other platforms like macOS + # and BSD have crazy rules, so don't try this there. + # + # Furthermore, as both C++ compilers appears to unconditioanlly + # define _GNU_SOURCE (because libstdc++ requires it), it seems + # prudent to explicitly add that too, so that C language checks + # see a consistent set of definitions. + if env.TargetOSIs('linux'): + env.AppendUnique( + CPPDEFINES=[ + ('_XOPEN_SOURCE', 700), + '_GNU_SOURCE', + ], + ) + # Everything on OS X is position independent by default. Solaris doesn't support PIE. if not env.TargetOSIs('darwin', 'solaris'): if get_option('runtime-hardening') == "on": @@ -2108,6 +2131,11 @@ def doConfigure(myenv): # As of clang-3.4, this warning appears in v8, and gets escalated to an error. AddToCCFLAGSIfSupported(myenv, "-Wno-tautological-constant-out-of-range-compare") + # As of clang in Android NDK 17, these warnings appears in boost and/or ICU, and get escalated to errors + AddToCCFLAGSIfSupported(myenv, "-Wno-tautological-constant-compare") + AddToCCFLAGSIfSupported(myenv, "-Wno-tautological-unsigned-zero-compare") + AddToCCFLAGSIfSupported(myenv, "-Wno-tautological-unsigned-enum-zero-compare") + # New in clang-3.4, trips up things mostly in third_party, but in a few places in the # primary mongo sources as well. AddToCCFLAGSIfSupported(myenv, "-Wno-unused-const-variable") |