build: sync default CXXFLAGS and DEFINES with ndn-cxx

Change-Id: I2e7916942e6f5e347e21949f4945af37573da5cc
diff --git a/.jenkins.d/40-headers-check.sh b/.jenkins.d/40-headers-check.sh
index 88c0003..ad268e1 100755
--- a/.jenkins.d/40-headers-check.sh
+++ b/.jenkins.d/40-headers-check.sh
@@ -17,7 +17,7 @@
 
 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 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 @@
             '-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 @@
         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 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):
diff --git a/src/logic.cpp b/src/logic.cpp
index d93db65..1d09813 100644
--- a/src/logic.cpp
+++ b/src/logic.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
 /*
- * Copyright (c) 2012-2023 University of California, Los Angeles
+ * Copyright (c) 2012-2024 University of California, Los Angeles
  *
  * This file is part of ChronoSync, synchronization library for distributed realtime
  * applications for NDN.
@@ -594,7 +594,7 @@
 
   m_pendingSyncInterestName = interestName;
 
-#ifdef _DEBUG
+#ifndef NDEBUG
   printDigest(m_state.getRootDigest());
 #endif