Visual Studio 2013 support was experimental and never worked due to missing C++11 support in the compiler and various compiler bugs that caused it to crash on some of the more complicated files. Microsoft never issued sufficient patches to get Visual Studio 2013 to compile Rebirth successfully. Remove the Visual Studio 2013 files and add files to build Rebirth with Visual Studio 2017. Visual Studio 2017 support is also experimental and is also currently broken. Among the known problems: - Visual Studio 2017's C99 preprocessor support, like those of predecessor versions, is deficient regarding variadic macros, causing it to reject valid constructs with confusing error messages. common\include\window.h(170): error C2672: 'con_puts_literal': no matching overloaded function found common\include\window.h(170): error C2780: 'void con_puts_literal(const con_priority,const char (&)[len])': expects 2 arguments - 1 provided common\include\console.h(44): note: see declaration of 'con_puts_literal' common\include\window.h(170): error C2664: 'void con_printf(con_priority,const char *,...)': cannot convert argument 1 from 'const char [54]' to 'con_priority' Visual Studio 2017's preprocessor expanded this line to: ( ((void)(("%s:%u: sending event %s to window of dimensions %dx%d"))), (sizeof("file, line, e, c.cv_bitmap.bm_w, c.cv_bitmap.bm_h") == 1) ? (con_puts_literal(("%s:%u: sending event %s to window of dimensions %dx%d"))) : (con_printf(("%s:%u: sending event %s to window of dimensions %dx%d") ,file, line, e, c.cv_bitmap.bm_w, c.cv_bitmap.bm_h)) ); gcc-5.4.0's preprocessor expanded this line to: ( ((void)(("%s:%u: sending event %s to window of dimensions %dx%d"))), (sizeof("file, line, e, c.cv_bitmap.bm_w, c.cv_bitmap.bm_h") == 1) ? (con_puts_literal(CON_DEBUG ,("%s:%u: sending event %s to window of dimensions %dx%d"))) : (con_printf(CON_DEBUG ,("%s:%u: sending event %s to window of dimensions %dx%d") , file, line, e, c.cv_bitmap.bm_w, c.cv_bitmap.bm_h)) ); Note the absence of the leading "CON_DEBUG," in the Visual Studio version. - Visual Studio 2017 sometimes disallows inner classes access to private typedef symbols in the containing class. Both gcc and clang permit this and the standard says this should work. This is shown mixed in as part of the next error. - Visual Studio 2017's cl.exe crashes processing some files. Including "segment.h" is sufficient to crash cl.exe. Before crashing it prints: common\include\fwd-valptridx.h(200): error C2833: 'operator integral_type' is not a recognized operator or type common\include\fwd-valptridx.h(201): note: see reference to class template instantiation 'valptridx<managed_type>::magic_constant<constant>' being compiled common\include\fwd-valptridx.h(202): note: see reference to class template instantiation 'valptridx<managed_type>' being compiled common\main\fwd-segment.h(19): note: see reference to class template instantiation 'std::integral_constant<::size_t,9000>' being compiled common\include\fwd-valptridx.h(200): error C2059: syntax error: 'newline' common\include\fwd-valptridx.h(200): error C2334: unexpected token(s) preceding '{'; skipping apparent function body common\main\fwd-segment.h(48): error C2248: 'valptridx<d2x::segment>::specialized_types': cannot access private typedef declared in class 'valptridx<d2x::segment>' common\include\fwd-valptridx.h(87): note: see declaration of 'valptridx<d2x::segment>::specialized_types' common\main\fwd-segment.h(46): note: see declaration of 'valptridx<d2x::segment>' common\main\fwd-segment.h(48): note: see reference to class template instantiation 'valptridx<d2x::segment>::magic_constant<65534>' being compiled common\main\fwd-segment.h(48): fatal error C1903: unable to recover from previous error(s); stopping compilation This list is not exhaustive. The project was abandoned upon encountering a compiler crash suspiciously similar to the one seen when using Visual Studio 2013 to compile this code. No one should expect Visual Studio 2017 version 15.0.0+26228.9 to successfully compile Rebirth, but these files are published in the hope that future patches fix the problems in Visual Studio 2017.
30 lines
860 B
C++
30 lines
860 B
C++
#pragma once
|
|
|
|
#define __attribute_alloc_size(A,...)
|
|
#define __attribute_always_inline()
|
|
#define __attribute_cold
|
|
#define __attribute_format_printf(A,B)
|
|
#define __attribute_format_arg(A)
|
|
#define __attribute_malloc()
|
|
#define __attribute_nonnull(...)
|
|
#define __attribute_noreturn
|
|
#define __attribute_unused
|
|
#define __attribute_used
|
|
#define __attribute_warn_unused_result
|
|
#define likely(X) (X)
|
|
#define unlikely(X) (X)
|
|
#define DXX_HAVE_CXX_ARRAY
|
|
#define DXX_HAVE_CXX11_ADDRESSOF
|
|
#define DXX_HAVE_CXX11_RANGE_FOR
|
|
#define DXX_HAVE_CXX11_STATIC_ASSERT
|
|
#define DXX_HAVE_CXX11_TYPE_TRAITS
|
|
#define DXX_HAVE_CXX11_BEGIN
|
|
#define dxx_builtin_constant_p(A) (false)
|
|
#define DXX_INHERIT_CONSTRUCTORS(D,B,...) \
|
|
template <typename... Args> \
|
|
D(Args&&... args) : \
|
|
B,##__VA_ARGS__(std::forward<Args>(args)...) {}
|
|
|
|
#define __func__ __FUNCTION__
|
|
typedef signed long ssize_t;
|