diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index f13b2d62..14d0abb9 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -15,12 +15,21 @@ # define BOOST_NO_CXX11_THREAD_LOCAL # define BOOST_NO_CXX11_ATOMIC_SMART_PTR +// 32 functions are missing from the current RTL in cwchar, so it really can not be used even if it exists + +# define BOOST_NO_CWCHAR + # ifndef __MT__ /* If compiling in single-threaded mode, assume there is no CXX11_HDR_ATOMIC */ # define BOOST_NO_CXX11_HDR_ATOMIC # endif -#define BOOST_NO_FENV_H /* temporarily disable this until we can link against fegetround fesetround feholdexcept */ -#define BOOST_NO_CXX11_HDR_EXCEPTION /* Reported this bug to Embarcadero with the latest C++ Builder Rio release */ +/* temporarily disable this until we can link against fegetround fesetround feholdexcept */ + +#define BOOST_NO_FENV_H + +/* Reported this bug to Embarcadero with the latest C++ Builder Rio release */ + +#define BOOST_NO_CXX11_HDR_EXCEPTION // // check for exception handling support: @@ -103,33 +112,28 @@ #endif /* defined(BOOST_EMBTC) */ #if defined(BOOST_EMBTC_WINDOWS) - // About TR1 headers and features: - // BOOST_HAS_TR1_*-style definitions are placed in "boost\tr1\detail\config.hpp", - // because there, they will always be found, but here, they may be not check. - // // This is needed to allow 64-bit integers in cstdint.hpp - //# define BOOST_HAS_MS_INT64 +/* The Windows SDK for Embarcadero has the deprecated 'chdir' function for _chdir + so make sure any call to _chdir becomes a call to chdir */ + +# define _chdir chdir - //# define BOOST_HAS_RVALUE_REFS +/* Undefine the symbols and the Windows platform will automatically define them for us + as appropriate */ + +#if defined(BOOST_SYMBOL_EXPORT) +#undef BOOST_SYMBOL_EXPORT +#endif - // // Boost.Fusion should not use its preprocessed templates, - // // due to we can use its variadic cpp11 templates. If that - // // macro is not defined it tries to use both at the same time - // // giving a redefinition error. - //# define BOOST_FUSION_DONT_USE_PREPROCESSED_FILES +#if defined(BOOST_SYMBOL_IMPORT) +#undef BOOST_SYMBOL_IMPORT +#endif - // // Bcc64 don't have this header - //# define BOOST_NO_FENV_H +#if defined(BOOST_SYMBOL_VISIBLE) +#undef BOOST_SYMBOL_VISIBLE +#endif - // // This is not necessary with the last versions of bcc64 - //# if !defined(__FUNC__) - //# define __FUNC__ __func__ - //# endif - - // FVTODO: This was uncommended with 1_55 - prolly worth testing this by uncommenting it. - // Dinkumware on Win32 and Win64 platforms has - // # define BOOST_HAS_STDINT_H -#endif /* BOOST_EMBTC_WINDOWS */ +#endif # undef BOOST_COMPILER # define BOOST_COMPILER "Embarcadero-Clang C++ version " BOOST_STRINGIZE(__CODEGEARC__) " clang: " __clang_version__ diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index b638286b..2d4dbc71 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -98,7 +98,7 @@ #endif #include #if ( (!_HAS_EXCEPTIONS && !defined(__ghs__)) || (defined(__ghs__) && !_HAS_NAMESPACE) ) && !defined(__TI_COMPILER_VERSION__) && !defined(__VISUALDSPVERSION__) \ - && !defined(__VXWORKS__) + && !defined(__VXWORKS__) && !defined(BOOST_EMBTC_WINDOWS) # define BOOST_NO_STD_TYPEINFO #endif #endif diff --git a/test/boost_no_cwchar.ipp b/test/boost_no_cwchar.ipp index 698dbd63..91f88719 100644 --- a/test/boost_no_cwchar.ipp +++ b/test/boost_no_cwchar.ipp @@ -18,6 +18,9 @@ int test() { wchar_t c1[2] = { 0 }; wchar_t c2[2] = { 0 }; + char c3[2] = { 0 }; + mbstate_t mb = mbstate_t(); + if(!mbsinit(&mb) || mbrlen(c3,1,&mb)) return -1; if(wcscmp(c1,c2) || wcslen(c1)) return -1; //wcscpy(c1,c2); wcsxfrm(c1,c2,0);