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]

Reply via email to