Linux and FreeBSD were pinned to -std=gnu++98 while macOS already
builds at C++11. Bump both platforms (dmake and gbuild build systems)
to -std=gnu++11, making C++11 the lowest supported standard across all
platforms. gnu++11 (rather than strict c++11) preserves the GNU dialect
the codebase relies on and avoids __STRICT_ANSI__ system-header fallout.
Compiler floor is GCC 4.8.5 (CentOS 7), which fully supports gnu++11.
---
main/solenv/gbuild/platform/freebsd.mk | 8 +++++---
main/solenv/gbuild/platform/linux.mk | 8 +++++---
main/solenv/inc/unxfbsd.mk | 11 +++++++++--
main/solenv/inc/unxlng.mk | 12 ++++++++++--
4 files changed, 29 insertions(+), 10 deletions(-)
diff --git a/main/solenv/gbuild/platform/freebsd.mk
b/main/solenv/gbuild/platform/freebsd.mk
index b1259cb42d..6433fa2c80 100644
--- a/main/solenv/gbuild/platform/freebsd.mk
+++ b/main/solenv/gbuild/platform/freebsd.mk
@@ -92,7 +92,7 @@ gb_CXXFLAGS := \
-fno-use-cxa-atexit \
-fvisibility-inlines-hidden \
-fvisibility=hidden \
- -std=gnu++98 \
+ -std=gnu++11 \
-pipe
ifeq ($(COM),CLANG)
gb_CXXFLAGS += -DHAVE_STL_INCLUDE_PATH
@@ -101,8 +101,10 @@ gb_CXXFLAGS += -DBOOST_TR1_DISABLE_INCLUDE_NEXT
-DBOOST_TR1_GCC_INCLUDE_PATH=c++
endif
ifneq ($(EXTERNAL_WARNINGS_NOT_ERRORS),TRUE)
-gb_CFLAGS_WERROR := -Werror
-gb_CXXFLAGS_WERROR := -Werror
+# C++11 deprecation/narrowing warnings (std::auto_ptr, dynamic exception specs,
+# braced-init narrowing) must not be fatal. Mirrors macosx.mk.
+gb_CFLAGS_WERROR := -Werror -Wno-error=deprecated
-Wno-error=deprecated-declarations -Wno-error=narrowing
+gb_CXXFLAGS_WERROR := -Werror -Wno-error=deprecated
-Wno-error=deprecated-declarations -Wno-error=narrowing
endif
ifneq ($(strip $(SYSBASE)),)
diff --git a/main/solenv/gbuild/platform/linux.mk
b/main/solenv/gbuild/platform/linux.mk
index 874dbde417..5777898295 100644
--- a/main/solenv/gbuild/platform/linux.mk
+++ b/main/solenv/gbuild/platform/linux.mk
@@ -89,12 +89,14 @@ gb_CXXFLAGS := \
-fuse-cxa-atexit \
-fvisibility-inlines-hidden \
-fvisibility=hidden \
- -std=gnu++98 \
+ -std=gnu++11 \
-pipe \
ifneq ($(EXTERNAL_WARNINGS_NOT_ERRORS),TRUE)
-gb_CFLAGS_WERROR := -Werror
-gb_CXXFLAGS_WERROR := -Werror
+# C++11 deprecation/narrowing warnings (std::auto_ptr, dynamic exception specs,
+# braced-init narrowing) must not be fatal. Mirrors macosx.mk.
+gb_CFLAGS_WERROR := -Werror -Wno-error=deprecated
-Wno-error=deprecated-declarations -Wno-error=narrowing
+gb_CXXFLAGS_WERROR := -Werror -Wno-error=deprecated
-Wno-error=deprecated-declarations -Wno-error=narrowing
endif
ifneq ($(strip $(SYSBASE)),)
diff --git a/main/solenv/inc/unxfbsd.mk b/main/solenv/inc/unxfbsd.mk
index 3e2575f53f..f27ef2a7ba 100644
--- a/main/solenv/inc/unxfbsd.mk
+++ b/main/solenv/inc/unxfbsd.mk
@@ -105,7 +105,11 @@ CFLAGSEXCEPTIONS=-fexceptions -fno-enforce-eh-specs
CFLAGS_NO_EXCEPTIONS=-fno-exceptions
# -fpermissive should be removed as soon as possible
-CFLAGSCXX= -pipe $(ARCH_FLAGS) -std=gnu++98
+# C++11 is the lowest supported standard (matches the macOS floor). Our old
+# code base still uses constructs deprecated in C++11 (notably std::auto_ptr
and
+# dynamic exception specifications); those remain valid until C++17 and are
kept
+# non-fatal via -Wno-error= below.
+CFLAGSCXX= -pipe $(ARCH_FLAGS) -std=gnu++11
.IF "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE"
CFLAGSCXX += -fvisibility-inlines-hidden
.ENDIF # "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE"
@@ -139,7 +143,10 @@ CFLAGSWARNCXX=$(CFLAGSWARNCC) -Wshadow
-Wno-ctor-dtor-privacy \
-Wno-non-virtual-dtor
CFLAGSWALLCC=$(CFLAGSWARNCC)
CFLAGSWALLCXX=$(CFLAGSWARNCXX)
-CFLAGSWERRCC=-Werror
+# Keep -Werror, but do not let the C++11 dialect's deprecation/narrowing
+# warnings (std::auto_ptr, dynamic exception specs, braced-init narrowing)
break
+# the build. Mirrors the macOS handling in unxmacc.mk.
+CFLAGSWERRCC=-Werror -Wno-error=deprecated -Wno-error=deprecated-declarations
-Wno-error=narrowing
# Once all modules on this platform compile without warnings, set
# COMPILER_WARN_ERRORS=TRUE here instead of setting MODULES_WITH_WARNINGS (see
diff --git a/main/solenv/inc/unxlng.mk b/main/solenv/inc/unxlng.mk
index cdbe591b4d..5c2e13c936 100644
--- a/main/solenv/inc/unxlng.mk
+++ b/main/solenv/inc/unxlng.mk
@@ -88,7 +88,12 @@ CFLAGSEXCEPTIONS=-fexceptions -fno-enforce-eh-specs
CFLAGS_NO_EXCEPTIONS=-fno-exceptions
# -fpermissive should be removed as soon as possible
-CFLAGSCXX= -pipe $(ARCH_FLAGS) -std=gnu++98
+# C++11 is the lowest supported standard (matches the macOS floor). Our old
+# code base still uses constructs deprecated in C++11 (notably std::auto_ptr
and
+# dynamic exception specifications); those remain valid until C++17 and are
kept
+# non-fatal via -Wno-error= below. The compiler floor is GCC 4.8.5 (CentOS 7),
+# which fully supports gnu++11.
+CFLAGSCXX= -pipe $(ARCH_FLAGS) -std=gnu++11
.IF "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE"
CFLAGSCXX += -fvisibility-inlines-hidden
.ENDIF # "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE"
@@ -127,7 +132,10 @@ CFLAGSWARNCXX=$(CFLAGSWARNCC) -Wshadow
-Wno-ctor-dtor-privacy \
-Wno-non-virtual-dtor
CFLAGSWALLCC=$(CFLAGSWARNCC)
CFLAGSWALLCXX=$(CFLAGSWARNCXX)
-CFLAGSWERRCC=-Werror
+# Keep -Werror, but do not let the C++11 dialect's deprecation/narrowing
+# warnings (std::auto_ptr, dynamic exception specs, braced-init narrowing)
break
+# the build. Mirrors the macOS handling in unxmacc.mk.
+CFLAGSWERRCC=-Werror -Wno-error=deprecated -Wno-error=deprecated-declarations
-Wno-error=narrowing
# Once all modules on this platform compile without warnings, set
# COMPILER_WARN_ERRORS=TRUE here instead of setting MODULES_WITH_WARNINGS (see