Author: jgardou Date: Thu Nov 11 15:58:18 2010 New Revision: 49565
URL: http://svn.reactos.org/svn/reactos?rev=49565&view=rev Log: [HEADERS] - move stlport headers to the c++ directory - add a specific _reactos.h configuration file for stlport - add cerrno to c++ headers - __declspec(nothrow) must be placed before calling convention with msvc. GCC doesn't care. We now use our headers with both msvc and gcc.
Added: branches/cmake-bringup/include/c++/cerrno (with props) branches/cmake-bringup/include/c++/stlport/ - copied from r49554, branches/cmake-bringup/include/stlport/ branches/cmake-bringup/include/c++/stlport/stl/config/_reactos.h (with props) Removed: branches/cmake-bringup/include/stlport/ Modified: branches/cmake-bringup/CMakeMacros.cmake branches/cmake-bringup/include/c++/cstdio branches/cmake-bringup/include/c++/new branches/cmake-bringup/include/c++/stlport/stl/_limits.h branches/cmake-bringup/include/c++/stlport/stl/config/_system.h branches/cmake-bringup/include/crt/float.h
Modified: branches/cmake-bringup/CMakeMacros.cmake URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/CMakeMacros.cmake?... ============================================================================== --- branches/cmake-bringup/CMakeMacros.cmake [iso-8859-1] (original) +++ branches/cmake-bringup/CMakeMacros.cmake [iso-8859-1] Thu Nov 11 15:58:18 2010 @@ -121,15 +121,11 @@ ENDMACRO(add_minicd)
macro(set_cpp) - include_directories(BEFORE ${REACTOS_SOURCE_DIR}/include/stlport) + include_directories(BEFORE ${REACTOS_SOURCE_DIR}/include/c++/stlport) set(IS_CPP 1) add_definitions( - -D_STLP_NATIVE_CPP_C_INCLUDE_PATH=../c++ - -D_STLP_NATIVE_C_INCLUDE_PATH=../crt - -D_STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH=../c++ - -D_STLP_USE_NEW_C_HEADERS - -D_STLP_NO_TYPEINFO - ) + -DNATIVE_CPP_INCLUDE=${REACTOS_SOURCE_DIR}/include/c++ + -DNATIVE_C_INCLUDE=${REACTOS_SOURCE_DIR}/include/crt) endmacro()
MACRO(add_livecd_target _targetname _dir )# optional parameter : _nameoncd
Added: branches/cmake-bringup/include/c++/cerrno URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/include/c%2B%2B/ce... ============================================================================== --- branches/cmake-bringup/include/c++/cerrno (added) +++ branches/cmake-bringup/include/c++/cerrno [iso-8859-1] Thu Nov 11 15:58:18 2010 @@ -1,0 +1,10 @@ +// C++ forwarding C errno header. + +#pragma once + +#include <errno.h> + +// Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998 +#ifndef errno +#define errno errno +#endif
Propchange: branches/cmake-bringup/include/c++/cerrno ------------------------------------------------------------------------------ svn:eol-style = native
Modified: branches/cmake-bringup/include/c++/cstdio URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/include/c%2B%2B/cs... ============================================================================== --- branches/cmake-bringup/include/c++/cstdio [iso-8859-1] (original) +++ branches/cmake-bringup/include/c++/cstdio [iso-8859-1] Thu Nov 11 15:58:18 2010 @@ -94,4 +94,5 @@ using ::vfprintf; using ::vprintf; using ::vsprintf; + using ::vsnprintf; }
Modified: branches/cmake-bringup/include/c++/new URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/include/c%2B%2B/ne... ============================================================================== --- branches/cmake-bringup/include/c++/new [iso-8859-1] (original) +++ branches/cmake-bringup/include/c++/new [iso-8859-1] Thu Nov 11 15:58:18 2010 @@ -32,19 +32,17 @@
new_handler set_new_handler(new_handler) throw();
-void* operator new (std::size_t size) throw (std::bad_alloc); void* operator new (std::size_t size, const std::nothrow_t& nothrow_constant) throw(); -void* operator new (std::size_t size, void* ptr) throw(); -void* operator new[] (std::size_t size) throw (std::bad_alloc); +inline void* operator new (std::size_t size, void* ptr) throw() { return ptr; } void* operator new[] (std::size_t size, const std::nothrow_t& nothrow_constant) throw(); -void* operator new[] (std::size_t size, void* ptr) throw(); +inline void* operator new[] (std::size_t size, void* ptr) throw() { return ptr; }
void operator delete (void* ptr) throw (); void operator delete (void* ptr, const std::nothrow_t& nothrow_constant) throw(); -void operator delete (void* ptr, void* voidptr2) throw(); +inline void operator delete (void* ptr, void* voidptr2) throw() { } void operator delete[] (void* ptr) throw (); void operator delete[] (void* ptr, const std::nothrow_t& nothrow_constant) throw(); -void operator delete[] (void* ptr, void* voidptr2) throw(); +inline void operator delete[] (void* ptr, void* voidptr2) throw() { } //@} } // extern "C++"
Modified: branches/cmake-bringup/include/c++/stlport/stl/_limits.h URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/include/c%2B%2B/st... ============================================================================== --- branches/cmake-bringup/include/c++/stlport/stl/_limits.h [iso-8859-1] (original) +++ branches/cmake-bringup/include/c++/stlport/stl/_limits.h [iso-8859-1] Thu Nov 11 15:58:18 2010 @@ -52,6 +52,13 @@ denorm_present = 1 };
+#ifdef min +# undef min +#endif +#ifdef max +# undef max +#endif + _STLP_MOVE_TO_PRIV_NAMESPACE
// Base class for all specializations of numeric_limits. @@ -59,8 +66,8 @@ class _Numeric_limits_base { public:
- static __number (_STLP_CALL min)() _STLP_NOTHROW { return __number(); } - static __number (_STLP_CALL max)() _STLP_NOTHROW { return __number(); } + static __number _STLP_CALL min() _STLP_NOTHROW { return __number(); } + static __number _STLP_CALL max() _STLP_NOTHROW { return __number(); }
_STLP_STATIC_CONSTANT(int, digits = 0); _STLP_STATIC_CONSTANT(int, digits10 = 0); @@ -118,8 +125,8 @@ class _Integer_limits : public _Numeric_limits_base<_Int> { public:
- static _Int (_STLP_CALL min) () _STLP_NOTHROW { return (_Int)__imin; } - static _Int (_STLP_CALL max) () _STLP_NOTHROW { return (_Int)__imax; } + static _Int _STLP_CALL min () _STLP_NOTHROW { return (_Int)__imin; } + static _Int _STLP_CALL max () _STLP_NOTHROW { return (_Int)__imax; }
_STLP_STATIC_CONSTANT(int, digits = (__idigits < 0) ? ((int)((sizeof(_Int) * (CHAR_BIT))) - ((__imin == 0) ? 0 : 1)) : (__idigits)); _STLP_STATIC_CONSTANT(int, digits10 = (digits * 301UL) / 1000);
Added: branches/cmake-bringup/include/c++/stlport/stl/config/_reactos.h URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/include/c%2B%2B/st... ============================================================================== --- branches/cmake-bringup/include/c++/stlport/stl/config/_reactos.h (added) +++ branches/cmake-bringup/include/c++/stlport/stl/config/_reactos.h [iso-8859-1] Thu Nov 11 15:58:18 2010 @@ -1,0 +1,308 @@ +/* + * Copyright (c) 2010 + * Jérôme Gardou + * + * + * This material is provided "as is", with absolutely no warranty expressed + * or implied. Any use is at your own risk. + * + * This file is in public domain. + */ + +/* + * Purpose of this file : + * + * A list of COMPILER-SPECIFIC portion of STLport settings. + * This file is provided to help in manual configuration + * of STLport. This file is being included by stlcomp.h + * when STLport is unable to identify your compiler. + * Please remove the error diagnostic below before adjusting + * macros. + * + */ +#ifndef _STLP_REACTOS_H +#define _STLP_REACTOS_H + +#if !defined (_STLP_COMPILER) +# ifdef _MSC_VER +# define _STLP_COMPILER "Microsoft Visual Studio C++" +# define _STLP_MSVC _MSC_VER +# define _STLP_MSVC_LIB _MSC_VER +# elif defined __MINGW32__ +# define _STLP_COMPILER "gcc" +# else +# error "Unrecognized compiler for reactos!" +# endif +#endif + +// We are WIN32 +#define _STLP_WIN32 + +// We declspec +#define _STLP_IMPORT_DECLSPEC __declspec(dllimport) +#define _STLP_EXPORT_DECLSPEC __declspec(dllexport) + +//========================================================== + +// the values choosen here as defaults try to give +// maximum functionality on the most conservative settings + +// Mostly correct guess, change it for Alpha (and other environments +// that has 64-bit "long") +# define _STLP_UINT32_T unsigned __int32 + +// Disables wchar_t functionality +// # define _STLP_NO_WCHAR_T 1 + +// Define if wchar_t is not an intrinsic type, and is actually a typedef to unsigned short. +// # define _STLP_WCHAR_T_IS_USHORT 1 + +// Uncomment if long long is available +# define _STLP_LONG_LONG __int64 +// Uncomment if long double is not available +// # define _STLP_NO_LONG_DOUBLE 1 + +// Uncomment this if your compiler does not support "typename" keyword +// # define _STLP_NEED_TYPENAME 1 + +// Uncomment this if your compiler does not support "mutable" keyword +// # define _STLP_NEED_MUTABLE 1 + +// Uncomment this if your compiler does not support "explicit" keyword +// # define _STLP_NEED_EXPLICIT 1 + +// Uncomment if new-style-casts like const_cast<> are not available +// # define _STLP_NO_NEW_STYLE_CASTS 1 + +// Uncomment this if your compiler does not have "bool" type +// # define _STLP_NO_BOOL 1 + +// Uncomment this if your compiler does not have "bool" type, but has "bool" keyword reserved +// # define _STLP_DONT_USE_BOOL_TYPEDEF 1 + +// Uncomment this if your compiler does not have "bool" type, but defines "bool" in <yvals.h> +// # define _STLP_YVALS_H 1 + +// Uncomment this if your compiler has limited or no default template arguments for classes +// # define _STLP_LIMITED_DEFAULT_TEMPLATES 1 + +// Uncomment this if your compiler support only complete (not dependent on other parameters) +// types as default parameters for class templates +// # define _STLP_DEFAULT_TYPE_PARAM 1 + +// Uncomment this if your compiler do not support default parameters in template class methods +// # define _STLP_DONT_SUP_DFLT_PARAM 1 + +// Uncomment this if your compiler has problem with not-type +// default template parameters +// # define _STLP_NO_DEFAULT_NON_TYPE_PARAM 1 + +// Define if compiler has +// trouble with functions getting non-type-parameterized classes as parameters +// # define _STLP_NON_TYPE_TMPL_PARAM_BUG 1 + +// Uncomment this if your compiler does not support namespaces +// # define _STLP_HAS_NO_NAMESPACES 1 + +// Uncomment if "using" keyword does not work with template types +// # define _STLP_BROKEN_USING_DIRECTIVE 1 + +// Uncomment this if your compiler does not support exceptions +// # define _STLP_HAS_NO_EXCEPTIONS 1 + +// Uncomment this when you are able to detect that the user do not +// want to use the exceptions feature. +// # define _STLP_DONT_USE_EXCEPTIONS 1 + +// Uncomment this if your compiler does not support exception specifications +// # define _STLP_NO_EXCEPTION_SPEC + +// Define this if your compiler requires return statement after throw() +// # define _STLP_THROW_RETURN_BUG 1 + +// Define this if your compiler do not support return of void +// # define _STLP_DONT_RETURN_VOID 1 + +// Header <new> that comes with the compiler +// does not define bad_alloc exception +// # define _STLP_NO_BAD_ALLOC 1 + +// Define this if your compiler do not throw bad_alloc from the new operator +// # define _STLP_NEW_DONT_THROW_BAD_ALLOC 1 + +// Define this if your compiler has no rtti support or if it has been disabled +// # define _STLP_NO_RTTI 1 + +// Define this if there is no native type_info definition +# define _STLP_NO_TYPEINFO 1 + +// Uncomment if member template methods are not available +// # define _STLP_NO_MEMBER_TEMPLATES 1 + +// Uncomment if member template classes are not available +// # define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1 + +// Uncomment if your compiler do not support the std::allocator rebind technique +// This is a special case of bad member template classes support, it is automatically +// defined if _STLP_NO_MEMBER_TEMPLATE_CLASSES is defined. +// # define _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE 1 + +// Uncomment if no "template" keyword should be used with member template classes +// # define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1 + +// Compiler does not accept friend declaration qualified with namespace name. +// # define _STLP_NO_QUALIFIED_FRIENDS 1 + +// Uncomment if partial specialization is not available +// # define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1 + +// Define if class being partially specialized require full name (template parameters) +// of itself for method declarations +// # define _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS + +// Compiler has problem with qualified specializations (cont int, volatile int...) +// # define _STLP_QUALIFIED_SPECIALIZATION_BUG + +// Compiler has problems specializing members of partially +// specialized class +// # define _STLP_MEMBER_SPECIALIZATION_BUG + +// Uncomment if partial order of template functions is not available +// # define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1 + +// Uncomment if specialization of methods is not allowed +// # define _STLP_NO_METHOD_SPECIALIZATION 1 + +// Uncomment if full specialization does not use partial spec. syntax : template <> struct .... +// # define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX 1 + +// Uncomment if compiler does not support explicit template arguments for functions +// # define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS + +// Uncomment this if your compiler can't inline while(), for() +// # define _STLP_LOOP_INLINE_PROBLEMS 1 + +// Define if the compiler fails to match a template function argument of base +// # define _STLP_BASE_MATCH_BUG 1 + +// Define if the compiler fails to match a template function argument of base +// (non-template) +//# define _STLP_NONTEMPL_BASE_MATCH_BUG 1 + +// Define if the compiler rejects outline method definition +// explicitly taking nested types/typedefs +// # define _STLP_NESTED_TYPE_PARAM_BUG 1 + +// Compiler requires typename keyword on outline method definition +// explicitly taking nested types/typedefs +// #define _STLP_TYPENAME_ON_RETURN_TYPE + +// Define if the baseclass typedefs not visible from outside +// # define _STLP_BASE_TYPEDEF_OUTSIDE_BUG 1 + +// if your compiler have serious problems with typedefs, try this one +// # define _STLP_BASE_TYPEDEF_BUG 1 + +// Uncomment if getting errors compiling mem_fun* adaptors +// # define _STLP_MEMBER_POINTER_PARAM_BUG 1 + +// Uncomment if the compiler can't handle a constant-initializer in the +// declaration of a static const data member of integer type. +// (See section 9.4.2, paragraph 4, of the C++ standard.) +// # define _STLP_STATIC_CONST_INIT_BUG + +// Uncomment to indicate that the compiler do not like static constant +// definition. +// Meaningfull only if _STLP_STATIC_CONST_INIT_BUG is not defined. +// # define _STLP_NO_STATIC_CONST_DEFINITION + +// Define if default constructor for builtin integer type fails to initialize it to 0 +// In expression like new(&char) char(): +//# define _STLP_DEF_CONST_PLCT_NEW_BUG 1 +// In default function parameter like _M_method(_Tp __x = _Tp()) +//# define _STLP_DEF_CONST_DEF_PARAM_BUG 1 + +// Defined if constructor +// required to explicitly call member's default constructors for const objects +// # define _STLP_CONST_CONSTRUCTOR_BUG 1 + +// Defined if the compiler has trouble calling POD-types constructors/destructors +// # define _STLP_TRIVIAL_CONSTRUCTOR_BUG 1 +// # define _STLP_TRIVIAL_DESTRUCTOR_BUG 1 + +// Define if having problems specializing maps/sets with +// key type being const +// # define _STLP_MULTI_CONST_TEMPLATE_ARG_BUG + +// Uncomment this to disable -> operators on all iterators +// # define _STLP_NO_ARROW_OPERATOR 1 + +// Uncomment this to disble at() member functions for containers +// # define _STLP_NO_AT_MEMBER_FUNCTION 1 + +// Define this if compiler lacks <exception> header +// # define _STLP_NO_EXCEPTION_HEADER 1 + +// Uncomment this if your C library has lrand48() function +// # define _STLP_RAND48 1 + +// Uncomment if native new-style C library headers lile <cstddef>, etc are not available. +// # define _STLP_HAS_NO_NEW_C_HEADERS 1 + +// uncomment if new-style headers <new> is available +// # define _STLP_HAS_NEW_NEW_HEADER 1 + +// uncomment this if <iostream> and other STD headers put their stuff in ::namespace, +// not std:: +// # define _STLP_VENDOR_GLOBAL_STD + +// uncomment this if <cstdio> and the like put stuff in ::namespace, +// not std:: +// # define _STLP_VENDOR_GLOBAL_CSTD + +// uncomment this if your compiler consider as ambiguous a function imported within +// the stlport namespace and called without scope (:: or std::) +// # define _STLP_NO_USING_FOR_GLOBAL_FUNCTIONS 1 + +// uncomment this if your compiler define all the C math functions C++ additional +// overloads in ::namespace and not only in std::. +// # define _STLP_HAS_GLOBAL_C_MATH_FUNCTIONS 1 + +#define MKSTRING_(a) #a +#define MKSTRING(a) MKSTRING_(a) +#define _STLP_NATIVE_C_HEADER(header) MKSTRING(NATIVE_C_INCLUDE/header) +#define _STLP_NATIVE_CPP_C_HEADER(header) MKSTRING(NATIVE_CPP_INCLUDE/header) +#define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) MKSTRING(NATIVE_CPP_INCLUDE/header) + + +// This macro constructs header path from directory and name. +// You may change it if your compiler does not understand "/". + +// This macro constructs native include header path from include path and name. +// You may have do define it if experimenting problems with preprocessor +// # define _STLP_NATIVE_HEADER(header) _STLP_MAKE_HEADER(_STLP_NATIVE_INCLUDE_PATH,header) + +// Same for C headers +// #define _STLP_NATIVE_C_HEADER(header) + +//========================================================== + +// We have no llabs, lldiv, etc. +#define _STLP_NO_VENDOR_STDLIB_L + +// new_handler is in global namespace +# define _STLP_GLOBAL_NEW_HANDLER + +// terminate function is in global namespace +#define _STLP_VENDOR_TERMINATE_STD + +// We don't want stlport to use its own namespace +#define _STLP_NO_OWN_NAMESPACE + +// Calling convention +#define _STLP_CALL __cdecl + +// Include stlport windows specifics +#include "_windows.h" + +#endif
Propchange: branches/cmake-bringup/include/c++/stlport/stl/config/_reactos.h ------------------------------------------------------------------------------ svn:eol-style = native
Modified: branches/cmake-bringup/include/c++/stlport/stl/config/_system.h URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/include/c%2B%2B/st... ============================================================================== --- branches/cmake-bringup/include/c++/stlport/stl/config/_system.h [iso-8859-1] (original) +++ branches/cmake-bringup/include/c++/stlport/stl/config/_system.h [iso-8859-1] Thu Nov 11 15:58:18 2010 @@ -36,7 +36,9 @@ #ifndef __stl_config__system_h #define __stl_config__system_h
-#if defined (__sun) +#if defined (__REACTOS__) +# include <stl/config/_reactos.h> +#elif defined (__sun) # include <stl/config/_solaris.h> # if defined (__GNUC__) # include <stl/config/_gcc.h>
Modified: branches/cmake-bringup/include/crt/float.h URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/include/crt/float.... ============================================================================== --- branches/cmake-bringup/include/crt/float.h [iso-8859-1] (original) +++ branches/cmake-bringup/include/crt/float.h [iso-8859-1] Thu Nov 11 15:58:18 2010 @@ -104,12 +104,12 @@ /* Set the FPU control word as cw = (cw & ~unMask) | (unNew & unMask), * i.e. change the bits in unMask to have the values they have in unNew, * leaving other bits unchanged. */ -_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _controlfp (unsigned int unNew, unsigned int unMask); -_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _control87 (unsigned int unNew, unsigned int unMask); +__MINGW_NOTHROW _CRTIMP unsigned int __cdecl _controlfp (unsigned int unNew, unsigned int unMask); +__MINGW_NOTHROW _CRTIMP unsigned int __cdecl _control87 (unsigned int unNew, unsigned int unMask);
-_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _clearfp (void); /* Clear the FPU status word */ -_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _statusfp (void); /* Report the FPU status word */ +__MINGW_NOTHROW _CRTIMP unsigned int __cdecl _clearfp (void); /* Clear the FPU status word */ +__MINGW_NOTHROW _CRTIMP unsigned int __cdecl _statusfp (void); /* Report the FPU status word */ #define _clear87 _clearfp #define _status87 _statusfp
@@ -123,8 +123,8 @@ per fninit. To use the MSVCRT.dll _fpreset, include CRT_fp8.o when building your application. */ -void __cdecl __MINGW_NOTHROW _fpreset (void); -void __cdecl __MINGW_NOTHROW fpreset (void); +__MINGW_NOTHROW void __cdecl _fpreset (void); +__MINGW_NOTHROW void __cdecl fpreset (void);
/* Global 'variable' for the current floating point error code. */ __MINGW_NOTHROW _CRTIMP int * __cdecl __fpecode(void); @@ -135,15 +135,15 @@ * but they really belong in math.h. */
-_CRTIMP double __cdecl __MINGW_NOTHROW _chgsign (double); -_CRTIMP double __cdecl __MINGW_NOTHROW _copysign (double, double); -_CRTIMP double __cdecl __MINGW_NOTHROW _logb (double); -_CRTIMP double __cdecl __MINGW_NOTHROW _nextafter (double, double); -_CRTIMP double __cdecl __MINGW_NOTHROW _scalb (double, long); +__MINGW_NOTHROW _CRTIMP double __cdecl _chgsign (double); +__MINGW_NOTHROW _CRTIMP double __cdecl _copysign (double, double); +__MINGW_NOTHROW _CRTIMP double __cdecl _logb (double); +__MINGW_NOTHROW _CRTIMP double __cdecl _nextafter (double, double); +__MINGW_NOTHROW _CRTIMP double __cdecl _scalb (double, long);
-_CRTIMP int __cdecl __MINGW_NOTHROW _finite (double); -_CRTIMP int __cdecl __MINGW_NOTHROW _fpclass (double); -_CRTIMP int __cdecl __MINGW_NOTHROW _isnan (double); +__MINGW_NOTHROW _CRTIMP int __cdecl _finite (double); +__MINGW_NOTHROW _CRTIMP int __cdecl _fpclass (double); +__MINGW_NOTHROW _CRTIMP int __cdecl _isnan (double);
#ifdef __cplusplus }