Isn't it possible to say in stlport to define a ooo_ptr which points to auto_ptr for old and unique_ptr for the new tool chains?
I think of use or type. Imho we should decouple from stdlib as much as possible to simplify maintenance. Am 3. November 2019 22:59:49 MEZ schrieb Don Lewis <[email protected]>: >For much of our history, until fairly recently, the versions of gcc >that >we used defaulted to -std=gnu++98 when compiiling C++ code. > >When FreeBSD on i386 and amd64 switched from gcc to clang, it also >defaulted to -std=gnu++98. Clang has been C++11 compliant from version >3.3 onwards. Around the time of the switch, I added the >-DHAVE_STL_INCLUDE_PATH compiler flag so that clang would use it's own >STL include files instead of the boost TR1 includes. Clang was >perfectly happy using its own STL include files even though they were >not part of C++98, only C++11. > >Later on, when clang 6 changed the default to gnu++14, the build >generated tons warning and some number of errors. To work around this, >I added the -std=gnu++98 compiler flag to force the old mode. > >FreeBSD on powerpc still uses gcc and it recently came to my attention >that the build was broken there. The FreeBSD port of AOO to powerpc >does not use -DHAVE_STL_INCLUDE_PATH, so it was falling back to the >boost TR1 headers. The FreeBSD port uses the system boost, and recent >versions of boost have dropped TR1 support. To work around that, I >tried enabling -DHAVE_STL_INCLUDE_PATH to use the gcc C++ headers. >This >failed badly because the gcc STL headers check to see if the >compilation >mode is C++11 or better and immediately error out of this is not the >case. Switching the compilation mode to c++11 results in the warning >and error spew mentioned above. I tried modifying the stlport headers >to include the gcc TR1 headers in gnu++98 mode. That worked better, >but >I still got some mysterious C++ errors that I was not able to figure >out. My next attempt will be to try the boost non-TR1 headers. > >Turning to Linux as a stepping stone, I've notice the build warning >spewage on recent Linux distributions, such as Debian 9, that have >newer >versions of gcc. By using the patch below, I was able to reduce the >size of the build log for trunk from 1354815 lines to 359998 lines. I >think the extra compiler defines are required because the compiler >detection code in our bundled version of boost is too old to figure out >what to do with new gcc in gnu++98 mode. > >One of the largest contributors to the warnings is std::auto_ptr. This >is deprecated in C++11 and is totally removed in C++17. The new way is >to use std::unique_ptr, but that wasn't available before C++11. We >can't fix our code for this until we are totally off the old >toolchains, >which means after we have abandoned CentOS 6 and earlier as well as >Visual Studio earlier than 2015. > >Once our code has been converted to C++11, then I think we might be >able >to deorbit the boost and stlport modules and just use the compiler >includes directly. > >diff --git a/main/solenv/gbuild/platform/linux.mk >b/main/solenv/gbuild/platform/linux.mk >index 3f35f2a3ce..0ffaf1a84f 100644 >--- a/main/solenv/gbuild/platform/linux.mk >+++ b/main/solenv/gbuild/platform/linux.mk >@@ -89,6 +89,10 @@ gb_CXXFLAGS := \ > -fuse-cxa-atexit \ > -fvisibility-inlines-hidden \ > -fvisibility=hidden \ >+ -std=gnu++98 \ >+ -DBOOST_NO_CXX11_VARIADIC_TEMPLATES \ >+ -DBOOST_NO_CXX11_RVALUE_REFERENCES \ >+ -DBOOST_NO_CXX11_STATIC_ASSERT \ > -pipe \ > > ifneq ($(EXTERNAL_WARNINGS_NOT_ERRORS),TRUE) >diff --git a/main/solenv/inc/unxlng.mk b/main/solenv/inc/unxlng.mk >index afaa50a0e5..060ee5976c 100644 >--- a/main/solenv/inc/unxlng.mk >+++ b/main/solenv/inc/unxlng.mk >@@ -77,7 +77,7 @@ CFLAGSENABLESYMBOLS=-g # was temporarily commented >out, reenabled before Beta > .ENDIF > > # flags for the C++ Compiler >-CFLAGSCC= -pipe $(ARCH_FLAGS) >+CFLAGSCC= -pipe $(ARCH_FLAGS) -std=gnu++98 >-DBOOST_NO_CXX11_VARIADIC_TEMPLATES -DBOOST_NO_CXX11_RVALUE_REFERENCES >-DBOOST_NO_CXX11_STATIC_ASSERT > # Flags for enabling exception handling > .IF "$(COM)"=="CLANG" > CFLAGSEXCEPTIONS=-fexceptions > > >--------------------------------------------------------------------- >To unsubscribe, e-mail: [email protected] >For additional commands, e-mail: [email protected]
