diff --git a/.jenkins.d/40-headers-check.sh b/.jenkins.d/40-headers-check.sh index 821ba4c..a008516 100755 --- a/.jenkins.d/40-headers-check.sh +++ b/.jenkins.d/40-headers-check.sh @@ -17,7 +17,7 @@ fi CXX=${CXX:-g++} STD=-std=c++17 -CXXFLAGS="-O2 -Wall -Wno-unneeded-internal-declaration -Wno-unused-const-variable $(pkg-config --cflags libndn-cxx $PCFILE)" +CXXFLAGS="-O2 -Wall -Wno-unknown-warning-option -Wno-enum-constexpr-conversion -Wno-unused-const-variable $(pkg-config --cflags libndn-cxx $PCFILE)" INCLUDEDIR="$(pkg-config --variable=includedir $PCFILE)"/$PROJ echo "Using: $CXX $STD $CXXFLAGS" diff --git a/.waf-tools/default-compiler-flags.py b/.waf-tools/default-compiler-flags.py index bee5072..6869097 100644 --- a/.waf-tools/default-compiler-flags.py +++ b/.waf-tools/default-compiler-flags.py @@ -136,7 +136,7 @@ def getGeneralFlags(self, conf): def getDebugFlags(self, conf): """Get dict of CXXFLAGS, LINKFLAGS, and DEFINES that are needed only in debug mode""" - return {'CXXFLAGS': [], 'LINKFLAGS': [], 'DEFINES': ['_DEBUG']} + return {'CXXFLAGS': [], 'LINKFLAGS': [], 'DEFINES': []} def getOptimizedFlags(self, conf): """Get dict of CXXFLAGS, LINKFLAGS, and DEFINES that are needed only in optimized mode""" @@ -175,6 +175,9 @@ def getDebugFlags(self, conf): '-Wno-error=maybe-uninitialized', # Bug #1615 ] flags['LINKFLAGS'] += self.__linkFlags + # Enable assertions in libstdc++ + # https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_macros.html + flags['DEFINES'] += ['_GLIBCXX_ASSERTIONS=1'] return flags def getOptimizedFlags(self, conf): @@ -223,6 +226,9 @@ def getGeneralFlags(self, conf): elif Utils.unversioned_sys_platform() == 'freebsd': # Bug #4790 flags['CXXFLAGS'] += [['-isystem', '/usr/local/include']] + if self.getCompilerVersion(conf) >= (18, 0, 0): + # Bug #5300 + flags['CXXFLAGS'] += ['-Wno-enum-constexpr-conversion'] return flags __cxxFlags = [ @@ -233,6 +239,13 @@ def getGeneralFlags(self, conf): def getDebugFlags(self, conf): flags = super().getDebugFlags(conf) flags['CXXFLAGS'] += self.__cxxFlags + # Enable assertions in libc++ + if self.getCompilerVersion(conf) >= (18, 0, 0): + # https://libcxx.llvm.org/Hardening.html + flags['DEFINES'] += ['_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE'] + elif self.getCompilerVersion(conf) >= (15, 0, 0): + # https://releases.llvm.org/15.0.0/projects/libcxx/docs/UsingLibcxx.html#enabling-the-safe-libc-mode + flags['DEFINES'] += ['_LIBCPP_ENABLE_ASSERTIONS=1'] return flags def getOptimizedFlags(self, conf):