diff --git a/src/SDL.c b/src/SDL.c index ca29b4ed30..14a32eef72 100644 --- a/src/SDL.c +++ b/src/SDL.c @@ -845,9 +845,7 @@ SDL_Sandbox SDL_GetSandbox(void) #ifdef SDL_PLATFORM_WIN32 -#if (!defined(HAVE_LIBC) || defined(__WATCOMC__)) && !defined(SDL_STATIC_LIB) -// FIXME: Still need to include DllMain() on Watcom C ? - +#if !defined(HAVE_LIBC) && !defined(SDL_STATIC_LIB) BOOL APIENTRY MINGW32_FORCEALIGN _DllMainCRTStartup(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch (ul_reason_for_call) { diff --git a/src/SDL_assert.c b/src/SDL_assert.c index 93ddf8b585..59f36398af 100644 --- a/src/SDL_assert.c +++ b/src/SDL_assert.c @@ -120,10 +120,6 @@ static void SDL_GenerateAssertionReport(void) } } -#ifdef __WATCOMC__ -static void SDL_AbortAssertion(void); -#pragma aux SDL_AbortAssertion aborts; -#endif static SDL_NORETURN void SDL_AbortAssertion(void) { SDL_Quit(); diff --git a/src/SDL_internal.h b/src/SDL_internal.h index 28ebebaac4..4abc8ed304 100644 --- a/src/SDL_internal.h +++ b/src/SDL_internal.h @@ -269,10 +269,6 @@ extern "C" { /* SDL_ExitProcess is not declared in any public header, although it is shared between some parts of SDL, because we don't want anything calling it without an extremely good reason. */ -#ifdef __WATCOMC__ -extern void SDL_ExitProcess(int exitcode); -#pragma aux SDL_ExitProcess aborts; -#endif extern SDL_NORETURN void SDL_ExitProcess(int exitcode); #ifdef HAVE_LIBC diff --git a/src/atomic/SDL_atomic.c b/src/atomic/SDL_atomic.c index c51ba710a5..9286d63b18 100644 --- a/src/atomic/SDL_atomic.c +++ b/src/atomic/SDL_atomic.c @@ -48,35 +48,6 @@ #endif #endif -/* *INDENT-OFF* */ // clang-format off -#if defined(__WATCOMC__) && defined(__386__) -SDL_COMPILE_TIME_ASSERT(intsize, 4==sizeof(int)); -#define HAVE_WATCOM_ATOMICS -extern __inline int _SDL_xchg_watcom(volatile int *a, int v); -#pragma aux _SDL_xchg_watcom = \ - "lock xchg [ecx], eax" \ - parm [ecx] [eax] \ - value [eax] \ - modify exact [eax]; - -extern __inline unsigned char _SDL_cmpxchg_watcom(volatile int *a, int newval, int oldval); -#pragma aux _SDL_cmpxchg_watcom = \ - "lock cmpxchg [edx], ecx" \ - "setz al" \ - parm [edx] [ecx] [eax] \ - value [al] \ - modify exact [eax]; - -extern __inline int _SDL_xadd_watcom(volatile int *a, int v); -#pragma aux _SDL_xadd_watcom = \ - "lock xadd [ecx], eax" \ - parm [ecx] [eax] \ - value [eax] \ - modify exact [eax]; - -#endif // __WATCOMC__ && __386__ -/* *INDENT-ON* */ // clang-format on - /* If any of the operations are not provided then we must emulate some of them. That means we need a nice implementation of spin locks @@ -100,7 +71,7 @@ extern __inline int _SDL_xadd_watcom(volatile int *a, int v); Contributed by Bob Pendleton, bob@pendleton.com */ -#if !defined(HAVE_MSC_ATOMICS) && !defined(HAVE_GCC_ATOMICS) && !defined(SDL_PLATFORM_MACOS) && !defined(SDL_PLATFORM_SOLARIS) && !defined(HAVE_WATCOM_ATOMICS) +#if !defined(HAVE_MSC_ATOMICS) && !defined(HAVE_GCC_ATOMICS) && !defined(SDL_PLATFORM_MACOS) && !defined(SDL_PLATFORM_SOLARIS) #define EMULATE_CAS 1 #endif @@ -127,8 +98,6 @@ bool SDL_CompareAndSwapAtomicInt(SDL_AtomicInt *a, int oldval, int newval) #ifdef HAVE_MSC_ATOMICS SDL_COMPILE_TIME_ASSERT(atomic_cas, sizeof(long) == sizeof(a->value)); return _InterlockedCompareExchange((long *)&a->value, (long)newval, (long)oldval) == (long)oldval; -#elif defined(HAVE_WATCOM_ATOMICS) - return _SDL_cmpxchg_watcom((volatile int *)&a->value, newval, oldval); #elif defined(HAVE_GCC_ATOMICS) return __sync_bool_compare_and_swap(&a->value, oldval, newval); #elif defined(SDL_PLATFORM_MACOS) // this is deprecated in 10.12 sdk; favor gcc atomics. @@ -157,9 +126,6 @@ bool SDL_CompareAndSwapAtomicU32(SDL_AtomicU32 *a, Uint32 oldval, Uint32 newval) #ifdef HAVE_MSC_ATOMICS SDL_COMPILE_TIME_ASSERT(atomic_cas, sizeof(long) == sizeof(a->value)); return _InterlockedCompareExchange((long *)&a->value, (long)newval, (long)oldval) == (long)oldval; -#elif defined(HAVE_WATCOM_ATOMICS) - SDL_COMPILE_TIME_ASSERT(atomic_cas, sizeof(int) == sizeof(a->value)); - return _SDL_cmpxchg_watcom((volatile int *)&a->value, (int)newval, (int)oldval); #elif defined(HAVE_GCC_ATOMICS) return __sync_bool_compare_and_swap(&a->value, oldval, newval); #elif defined(SDL_PLATFORM_MACOS) // this is deprecated in 10.12 sdk; favor gcc atomics. @@ -187,8 +153,6 @@ bool SDL_CompareAndSwapAtomicPointer(void **a, void *oldval, void *newval) { #ifdef HAVE_MSC_ATOMICS return _InterlockedCompareExchangePointer(a, newval, oldval) == oldval; -#elif defined(HAVE_WATCOM_ATOMICS) - return _SDL_cmpxchg_watcom((int *)a, (long)newval, (long)oldval); #elif defined(HAVE_GCC_ATOMICS) return __sync_bool_compare_and_swap(a, oldval, newval); #elif defined(SDL_PLATFORM_MACOS) && defined(__LP64__) // this is deprecated in 10.12 sdk; favor gcc atomics. @@ -218,8 +182,6 @@ int SDL_SetAtomicInt(SDL_AtomicInt *a, int v) #ifdef HAVE_MSC_ATOMICS SDL_COMPILE_TIME_ASSERT(atomic_set, sizeof(long) == sizeof(a->value)); return _InterlockedExchange((long *)&a->value, v); -#elif defined(HAVE_WATCOM_ATOMICS) - return _SDL_xchg_watcom(&a->value, v); #elif defined(HAVE_GCC_ATOMICS) return __sync_lock_test_and_set(&a->value, v); #elif defined(SDL_PLATFORM_SOLARIS) @@ -239,8 +201,6 @@ Uint32 SDL_SetAtomicU32(SDL_AtomicU32 *a, Uint32 v) #ifdef HAVE_MSC_ATOMICS SDL_COMPILE_TIME_ASSERT(atomic_set, sizeof(long) == sizeof(a->value)); return _InterlockedExchange((long *)&a->value, v); -#elif defined(HAVE_WATCOM_ATOMICS) - return _SDL_xchg_watcom(&a->value, v); #elif defined(HAVE_GCC_ATOMICS) return __sync_lock_test_and_set(&a->value, v); #elif defined(SDL_PLATFORM_SOLARIS) @@ -259,8 +219,6 @@ void *SDL_SetAtomicPointer(void **a, void *v) { #ifdef HAVE_MSC_ATOMICS return _InterlockedExchangePointer(a, v); -#elif defined(HAVE_WATCOM_ATOMICS) - return (void *)_SDL_xchg_watcom((int *)a, (long)v); #elif defined(HAVE_GCC_ATOMICS) return __sync_lock_test_and_set(a, v); #elif defined(SDL_PLATFORM_SOLARIS) @@ -279,9 +237,6 @@ int SDL_AddAtomicInt(SDL_AtomicInt *a, int v) #ifdef HAVE_MSC_ATOMICS SDL_COMPILE_TIME_ASSERT(atomic_add, sizeof(long) == sizeof(a->value)); return _InterlockedExchangeAdd((long *)&a->value, v); -#elif defined(HAVE_WATCOM_ATOMICS) - SDL_COMPILE_TIME_ASSERT(atomic_add, sizeof(int) == sizeof(a->value)); - return _SDL_xadd_watcom((volatile int *)&a->value, v); #elif defined(HAVE_GCC_ATOMICS) return __sync_fetch_and_add(&a->value, v); #elif defined(SDL_PLATFORM_SOLARIS) @@ -303,9 +258,6 @@ Uint32 SDL_AddAtomicU32(SDL_AtomicU32 *a, int v) #ifdef HAVE_MSC_ATOMICS SDL_COMPILE_TIME_ASSERT(atomic_add, sizeof(long) == sizeof(a->value)); return (Uint32)_InterlockedExchangeAdd((long *)&a->value, v); -#elif defined(HAVE_WATCOM_ATOMICS) - SDL_COMPILE_TIME_ASSERT(atomic_add, sizeof(int) == sizeof(a->value)); - return (Uint32)_SDL_xadd_watcom((volatile int *)&a->value, v); #elif defined(HAVE_GCC_ATOMICS) return __sync_fetch_and_add(&a->value, v); #elif defined(SDL_PLATFORM_SOLARIS) @@ -329,8 +281,6 @@ int SDL_GetAtomicInt(SDL_AtomicInt *a) #elif defined(HAVE_MSC_ATOMICS) SDL_COMPILE_TIME_ASSERT(atomic_get, sizeof(long) == sizeof(a->value)); return _InterlockedOr((long *)&a->value, 0); -#elif defined(HAVE_WATCOM_ATOMICS) - return _SDL_xadd_watcom(&a->value, 0); #elif defined(HAVE_GCC_ATOMICS) return __sync_or_and_fetch(&a->value, 0); #elif defined(SDL_PLATFORM_MACOS) // this is deprecated in 10.12 sdk; favor gcc atomics. @@ -353,9 +303,6 @@ Uint32 SDL_GetAtomicU32(SDL_AtomicU32 *a) #elif defined(HAVE_MSC_ATOMICS) SDL_COMPILE_TIME_ASSERT(atomic_get, sizeof(long) == sizeof(a->value)); return (Uint32)_InterlockedOr((long *)&a->value, 0); -#elif defined(HAVE_WATCOM_ATOMICS) - SDL_COMPILE_TIME_ASSERT(atomic_get, sizeof(int) == sizeof(a->value)); - return (Uint32)_SDL_xadd_watcom((volatile int *)&a->value, 0); #elif defined(HAVE_GCC_ATOMICS) return __sync_or_and_fetch(&a->value, 0); #elif defined(SDL_PLATFORM_MACOS) // this is deprecated in 10.12 sdk; favor gcc atomics. diff --git a/src/atomic/SDL_spinlock.c b/src/atomic/SDL_spinlock.c index 8e35c8a74b..75bacda7c9 100644 --- a/src/atomic/SDL_spinlock.c +++ b/src/atomic/SDL_spinlock.c @@ -44,18 +44,6 @@ #include #endif -/* *INDENT-OFF* */ // clang-format off -#if defined(__WATCOMC__) && defined(__386__) -SDL_COMPILE_TIME_ASSERT(locksize, 4==sizeof(SDL_SpinLock)); -extern __inline int _SDL_xchg_watcom(volatile int *a, int v); -#pragma aux _SDL_xchg_watcom = \ - "lock xchg [ecx], eax" \ - parm [ecx] [eax] \ - value [eax] \ - modify exact [eax]; -#endif // __WATCOMC__ && __386__ -/* *INDENT-ON* */ // clang-format on - // This function is where all the magic happens... bool SDL_TryLockSpinlock(SDL_SpinLock *lock) { @@ -69,9 +57,6 @@ bool SDL_TryLockSpinlock(SDL_SpinLock *lock) SDL_COMPILE_TIME_ASSERT(locksize, sizeof(*lock) == sizeof(long)); return InterlockedExchange((long *)lock, 1) == 0; -#elif defined(__WATCOMC__) && defined(__386__) - return _SDL_xchg_watcom(lock, 1) == 0; - #elif defined(__GNUC__) && defined(__arm__) && \ (defined(__ARM_ARCH_3__) || defined(__ARM_ARCH_3M__) || \ defined(__ARM_ARCH_4__) || defined(__ARM_ARCH_4T__) || \ @@ -188,10 +173,6 @@ void SDL_UnlockSpinlock(SDL_SpinLock *lock) _ReadWriteBarrier(); *lock = 0; -#elif defined(__WATCOMC__) && defined(__386__) - SDL_CompilerBarrier(); - *lock = 0; - #elif defined(SDL_PLATFORM_SOLARIS) // Used for Solaris when not using gcc. *lock = 0; diff --git a/src/cpuinfo/SDL_cpuinfo.c b/src/cpuinfo/SDL_cpuinfo.c index fc747c1944..ff8720d03e 100644 --- a/src/cpuinfo/SDL_cpuinfo.c +++ b/src/cpuinfo/SDL_cpuinfo.c @@ -174,7 +174,7 @@ static int CPU_haveCPUID(void) : : "%rax", "%rcx" ); -#elif (defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__) +#elif defined(_MSC_VER) && defined(_M_IX86) __asm { pushfd ; Get original EFLAGS pop eax @@ -247,7 +247,7 @@ done: " popq %%rbx \n" \ : "=a"(a), "=S"(b), "=c"(c), "=d"(d) \ : "a"(func)) -#elif (defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__) +#elif defined(_MSC_VER) && defined(_M_IX86) #define cpuid(func, a, b, c, d) \ __asm { \ __asm mov eax, func \ @@ -311,7 +311,7 @@ static void CPU_calcCPUIDFeatures(void) : "%edx"); #elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)) && (_MSC_FULL_VER >= 160040219) // VS2010 SP1 a = (int)_xgetbv(0); -#elif (defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__) +#elif defined(_MSC_VER) && defined(_M_IX86) __asm { xor ecx, ecx diff --git a/src/dynapi/SDL_dynapi.c b/src/dynapi/SDL_dynapi.c index a7b51af6be..a7b4e850c4 100644 --- a/src/dynapi/SDL_dynapi.c +++ b/src/dynapi/SDL_dynapi.c @@ -86,7 +86,7 @@ static void SDL_InitDynamicAPI(void); } #define SDL_DYNAPI_VARARGS(_static, name, initcall) \ - _static bool SDLCALL SDL_SetError##name(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) \ + _static bool SDLCALL SDL_SetError##name(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) \ { \ char buf[128], *str = buf; \ int result; \ @@ -98,7 +98,7 @@ static void SDL_InitDynamicAPI(void); if (result >= 0 && (size_t)result >= sizeof(buf)) { \ str = NULL; \ va_start(ap, fmt); \ - result = jump_table.SDL_vasprintf(&str, fmt, ap); \ + result = jump_table.SDL_vasprintf(&str, fmt, ap); \ va_end(ap); \ } \ if (result >= 0) { \ @@ -107,7 +107,7 @@ static void SDL_InitDynamicAPI(void); if (str != buf) { \ jump_table.SDL_free(str); \ } \ - return false; \ + return false; \ } \ _static int SDLCALL SDL_sscanf##name(const char *buf, SDL_SCANF_FORMAT_STRING const char *fmt, ...) \ { \ @@ -149,7 +149,7 @@ static void SDL_InitDynamicAPI(void); va_end(ap); \ return result; \ } \ - _static size_t SDLCALL SDL_IOprintf##name(SDL_IOStream *context, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) \ + _static size_t SDLCALL SDL_IOprintf##name(SDL_IOStream *context, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) \ { \ size_t result; \ va_list ap; \ @@ -199,7 +199,7 @@ static void SDL_InitDynamicAPI(void); jump_table.SDL_LogMessageV(category, priority, fmt, ap); \ va_end(ap); \ } \ - SDL_DYNAPI_VARARGS_LOGFN(_static, name, initcall, Trace, TRACE) \ + SDL_DYNAPI_VARARGS_LOGFN(_static, name, initcall, Trace, TRACE) \ SDL_DYNAPI_VARARGS_LOGFN(_static, name, initcall, Verbose, VERBOSE) \ SDL_DYNAPI_VARARGS_LOGFN(_static, name, initcall, Debug, DEBUG) \ SDL_DYNAPI_VARARGS_LOGFN(_static, name, initcall, Info, INFO) \ @@ -500,9 +500,6 @@ static void dynapi_warn(const char *msg) extern "C" { #endif extern SDL_NORETURN void SDL_ExitProcess(int exitcode); -#ifdef __WATCOMC__ -#pragma aux SDL_ExitProcess aborts; -#endif #ifdef __cplusplus } #endif diff --git a/src/libm/e_exp.c b/src/libm/e_exp.c index 6519f58087..413e3609d0 100644 --- a/src/libm/e_exp.c +++ b/src/libm/e_exp.c @@ -76,10 +76,6 @@ #include "math_libm.h" #include "math_private.h" -#ifdef __WATCOMC__ /* Watcom defines huge=__huge */ -#undef huge -#endif - static const double one = 1.0, halF[2] = {0.5,-0.5,}, diff --git a/src/libm/e_pow.c b/src/libm/e_pow.c index d1a141ec4b..dc393e1f0c 100644 --- a/src/libm/e_pow.c +++ b/src/libm/e_pow.c @@ -64,10 +64,6 @@ #pragma warning ( disable : 4756 ) #endif -#ifdef __WATCOMC__ /* Watcom defines huge=__huge */ -#undef huge -#endif - static const double bp[] = {1.0, 1.5,}, dp_h[] = { 0.0, 5.84962487220764160156e-01,}, /* 0x3FE2B803, 0x40000000 */ diff --git a/src/libm/s_atan.c b/src/libm/s_atan.c index ce429d2269..c8a0d01543 100644 --- a/src/libm/s_atan.c +++ b/src/libm/s_atan.c @@ -61,10 +61,6 @@ static const double aT[] = { 1.62858201153657823623e-02, /* 0x3F90AD3A, 0xE322DA11 */ }; -#ifdef __WATCOMC__ /* Watcom defines huge=__huge */ -#undef huge -#endif - static const double one = 1.0, huge = 1.0e300; diff --git a/src/libm/s_floor.c b/src/libm/s_floor.c index 4809af1551..a3f4f2fa55 100644 --- a/src/libm/s_floor.c +++ b/src/libm/s_floor.c @@ -25,10 +25,6 @@ #include "math_libm.h" #include "math_private.h" -#ifdef __WATCOMC__ /* Watcom defines huge=__huge */ -#undef huge -#endif - static const double huge = 1.0e300; double floor(double x) diff --git a/src/libm/s_scalbn.c b/src/libm/s_scalbn.c index b3a06044ab..799e7fc578 100644 --- a/src/libm/s_scalbn.c +++ b/src/libm/s_scalbn.c @@ -21,10 +21,6 @@ #include "math_private.h" #include -#ifdef __WATCOMC__ /* Watcom defines huge=__huge */ -#undef huge -#endif - static const double two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */ twom54 = 5.55111512312578270212e-17, /* 0x3C900000, 0x00000000 */ diff --git a/src/stdlib/SDL_stdlib.c b/src/stdlib/SDL_stdlib.c index 6463720150..82441a86f7 100644 --- a/src/stdlib/SDL_stdlib.c +++ b/src/stdlib/SDL_stdlib.c @@ -140,12 +140,6 @@ double SDL_copysign(double x, double y) return copysign(x, y); #elif defined(HAVE__COPYSIGN) return _copysign(x, y); -#elif defined(__WATCOMC__) && defined(__386__) - // this is nasty as hell, but it works.. - unsigned int *xi = (unsigned int *)&x, - *yi = (unsigned int *)&y; - xi[1] = (yi[1] & 0x80000000) | (xi[1] & 0x7fffffff); - return x; #else return SDL_uclibc_copysign(x, y); #endif // HAVE_COPYSIGN diff --git a/src/stdlib/SDL_string.c b/src/stdlib/SDL_string.c index 77b99b5f31..8c2148682f 100644 --- a/src/stdlib/SDL_string.c +++ b/src/stdlib/SDL_string.c @@ -1830,24 +1830,7 @@ int SDL_swprintf(SDL_OUT_Z_CAP(maxlen) wchar_t *text, size_t maxlen, SDL_PRINTF_ return result; } -#if defined(HAVE_LIBC) && defined(__WATCOMC__) -// _vsnprintf() doesn't ensure nul termination -int SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap) -{ - int result; - if (!fmt) { - fmt = ""; - } - result = _vsnprintf(text, maxlen, fmt, ap); - if (maxlen > 0) { - text[maxlen - 1] = '\0'; - } - if (result < 0) { - result = (int)maxlen; - } - return result; -} -#elif defined(HAVE_VSNPRINTF) +#if defined(HAVE_VSNPRINTF) int SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap) { if (!fmt) {