Hi,

When compiling svn with the latest Windows SDK I get compiler errors in apr. This only happens if _WIN32_WINNT is >= 0x0502, and only with the SDK for Win8.1 (maybe for Win8 too, haven't tested that).

I have to patch apr to make the build work. I've attached the patch I'm using.

Has anyone else here had the same problems? Or do all of you compile so that Windows XP is still supported?

Stefan

--
       ___
  oo  // \\      "De Chelonian Mobile"
 (_,\/ \_/ \     TortoiseSVN
   \ \_/_\_/>    The coolest interface to (Sub)version control
   /_/   \_\     http://tortoisesvn.net
Index: atomic/win32/apr_atomic.c
===================================================================
--- atomic/win32/apr_atomic.c   (revision 1590049)
+++ atomic/win32/apr_atomic.c   (working copy)
@@ -44,7 +44,7 @@
 
 APR_DECLARE(apr_uint32_t) apr_atomic_add32(volatile apr_uint32_t *mem, 
apr_uint32_t val)
 {
-#if (defined(_M_IA64) || defined(_M_AMD64))
+#if (defined(_M_IA64) || defined(_M_AMD64) || ((_WIN32_WINNT >= 0x0502) && 
defined(_WINBASE_) && !defined(_MANAGED)))
     return InterlockedExchangeAdd(mem, val);
 #elif defined(__MINGW32__)
     return InterlockedExchangeAdd((long *)mem, val);
@@ -60,7 +60,7 @@
 
 APR_DECLARE(void) apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t 
val)
 {
-#if (defined(_M_IA64) || defined(_M_AMD64))
+#if (defined(_M_IA64) || defined(_M_AMD64) || ((_WIN32_WINNT >= 0x0502) && 
defined(_WINBASE_) && !defined(_MANAGED)))
     InterlockedExchangeAdd(mem, -val);
 #elif defined(__MINGW32__)
     InterlockedExchangeAdd((long *)mem, -val);
@@ -72,7 +72,7 @@
 APR_DECLARE(apr_uint32_t) apr_atomic_inc32(volatile apr_uint32_t *mem)
 {
     /* we return old value, win32 returns new value :( */
-#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
+#if (defined(_M_IA64) || defined(_M_AMD64) || ((_WIN32_WINNT >= 0x0502) && 
defined(_WINBASE_) && !defined(_MANAGED))) && !defined(RC_INVOKED)
     return InterlockedIncrement(mem) - 1;
 #elif defined(__MINGW32__)
     return InterlockedIncrement((long *)mem) - 1;
@@ -83,7 +83,7 @@
 
 APR_DECLARE(int) apr_atomic_dec32(volatile apr_uint32_t *mem)
 {
-#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
+#if (defined(_M_IA64) || defined(_M_AMD64) || ((_WIN32_WINNT >= 0x0502) && 
defined(_WINBASE_) && !defined(_MANAGED))) && !defined(RC_INVOKED)
     return InterlockedDecrement(mem);
 #elif defined(__MINGW32__)
     return InterlockedDecrement((long *)mem);
@@ -94,7 +94,7 @@
 
 APR_DECLARE(void) apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t 
val)
 {
-#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
+#if (defined(_M_IA64) || defined(_M_AMD64) || ((_WIN32_WINNT >= 0x0502) && 
defined(_WINBASE_) && !defined(_MANAGED))) && !defined(RC_INVOKED)
     InterlockedExchange(mem, val);
 #elif defined(__MINGW32__)
     InterlockedExchange((long*)mem, val);
@@ -111,7 +111,7 @@
 APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, 
apr_uint32_t with,
                                            apr_uint32_t cmp)
 {
-#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
+#if (defined(_M_IA64) || defined(_M_AMD64) || ((_WIN32_WINNT >= 0x0502) && 
defined(_WINBASE_) && !defined(_MANAGED))) && !defined(RC_INVOKED)
     return InterlockedCompareExchange(mem, with, cmp);
 #elif defined(__MINGW32__)
     return InterlockedCompareExchange((long*)mem, with, cmp);
@@ -122,7 +122,7 @@
 
 APR_DECLARE(void *) apr_atomic_casptr(volatile void **mem, void *with, const 
void *cmp)
 {
-#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
+#if (defined(_M_IA64) || defined(_M_AMD64) || ((_WIN32_WINNT >= 0x0502) && 
defined(_WINBASE_) && !defined(_MANAGED))) && !defined(RC_INVOKED)
     return InterlockedCompareExchangePointer((void* volatile*)mem, with, 
(void*)cmp);
 #elif defined(__MINGW32__)
     return InterlockedCompareExchangePointer((void**)mem, with, (void*)cmp);
@@ -134,7 +134,7 @@
 
 APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, 
apr_uint32_t val)
 {
-#if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED)
+#if (defined(_M_IA64) || defined(_M_AMD64) || ((_WIN32_WINNT >= 0x0502) && 
defined(_WINBASE_) && !defined(_MANAGED))) && !defined(RC_INVOKED)
     return InterlockedExchange(mem, val);
 #elif defined(__MINGW32__)
     return InterlockedExchange((long *)mem, val);
@@ -145,7 +145,7 @@
 
 APR_DECLARE(void*) apr_atomic_xchgptr(volatile void **mem, void *with)
 {
-#if (defined(_M_IA64) || defined(_M_AMD64) || defined(__MINGW32__)) && 
!defined(RC_INVOKED)
+#if (defined(_M_IA64) || defined(_M_AMD64) || ((_WIN32_WINNT >= 0x0502) && 
defined(_WINBASE_) && !defined(_MANAGED))) && !defined(RC_INVOKED)
     return InterlockedExchangePointer((void**)mem, with);
 #else
     /* Too many VC6 users have stale win32 API files, stub this */

Reply via email to