SDL: removed os2 support & support for building SDL with watcom.

From 8d6fda48103caf25288f0ba67364851c7472ef09 Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Tue, 22 Nov 2022 19:18:47 +0300
Subject: [PATCH] removed os2 support & support for building SDL with watcom.

---
 .github/workflows/watcom.yml           |   35 -
 CMakeLists.txt                         |   75 +-
 Makefile.os2                           |  296 -----
 Makefile.w32                           |  280 ----
 cmake/sdlchecks.cmake                  |    4 +-
 configure                              |  130 --
 configure.ac                           |  101 --
 docs/README-os2.md                     |   89 --
 docs/README.md                         |    1 -
 include/SDL_config.h                   |    2 -
 include/SDL_config.h.cmake             |    7 -
 include/SDL_config.h.in                |    7 -
 include/SDL_config_os2.h               |  207 ---
 include/SDL_config_windows.h           |   15 -
 include/SDL_opengl.h                   |    7 -
 include/SDL_syswm.h                    |   23 -
 include/SDL_thread.h                   |   43 -
 include/begin_code.h                   |   11 -
 src/SDL.c                              |   19 -
 src/audio/SDL_audio.c                  |    3 -
 src/audio/SDL_sysaudio.h               |    1 -
 src/audio/os2/SDL_os2audio.c           |  450 -------
 src/audio/os2/SDL_os2audio.h           |   54 -
 src/core/os2/SDL_os2.c                 |   38 -
 src/core/os2/SDL_os2.h                 |   57 -
 src/core/os2/geniconv/geniconv.c       |  161 ---
 src/core/os2/geniconv/geniconv.h       |   85 --
 src/core/os2/geniconv/iconv.h          |   21 -
 src/core/os2/geniconv/makefile         |   37 -
 src/core/os2/geniconv/os2cp.c          |  416 ------
 src/core/os2/geniconv/os2cp.h          |   32 -
 src/core/os2/geniconv/os2iconv.c       |  286 ----
 src/core/os2/geniconv/sys2utf8.c       |  119 --
 src/core/os2/geniconv/test.c           |   69 -
 src/core/os2/iconv2.lbc                |    4 -
 src/cpuinfo/SDL_cpuinfo.c              |   21 -
 src/dynapi/SDL3.exports                |  869 ------------
 src/dynapi/SDL_dynapi.c                |   21 -
 src/dynapi/SDL_dynapi_procs.h          |    4 -
 src/dynapi/gendynapi.pl                |    4 -
 src/events/SDL_mouse.c                 |    6 -
 src/filesystem/os2/SDL_sysfilesystem.c |  131 --
 src/hidapi/libusb/hid.c                |    3 -
 src/joystick/SDL_joystick.c            |    3 -
 src/joystick/SDL_sysjoystick.h         |    1 -
 src/joystick/os2/SDL_os2joystick.c     |  799 -----------
 src/loadso/os2/SDL_sysloadso.c         |  103 --
 src/thread/SDL_thread_c.h              |    2 -
 src/thread/os2/SDL_sysmutex.c          |  129 --
 src/thread/os2/SDL_syssem.c            |  190 ---
 src/thread/os2/SDL_systhread.c         |  133 --
 src/thread/os2/SDL_systhread_c.h       |   25 -
 src/thread/os2/SDL_systls.c            |   89 --
 src/thread/os2/SDL_systls_c.h          |   38 -
 src/thread/windows/SDL_systhread.c     |   17 -
 src/timer/os2/SDL_systimer.c           |  186 ---
 src/video/SDL_sysvideo.h               |    2 -
 src/video/SDL_video.c                  |   16 +-
 src/video/os2/SDL_gradd.h              |  171 ---
 src/video/os2/SDL_os2dive.c            |  331 -----
 src/video/os2/SDL_os2messagebox.c      |  561 --------
 src/video/os2/SDL_os2messagebox.h      |   29 -
 src/video/os2/SDL_os2mouse.c           |  194 ---
 src/video/os2/SDL_os2mouse.h           |   33 -
 src/video/os2/SDL_os2output.h          |   59 -
 src/video/os2/SDL_os2util.c            |  114 --
 src/video/os2/SDL_os2util.h            |   38 -
 src/video/os2/SDL_os2video.c           | 1696 ------------------------
 src/video/os2/SDL_os2video.h           |   82 --
 src/video/os2/SDL_os2vman.c            |  483 -------
 test/Makefile.in                       |    8 -
 test/Makefile.os2                      |   18 -
 test/Makefile.w32                      |   21 -
 test/configure                         |    9 -
 test/configure.ac                      |    8 -
 test/testnative.c                      |    3 -
 test/testnative.h                      |    6 -
 test/testnativeos2.c                   |   57 -
 test/watcom.mif                        |  122 --
 79 files changed, 3 insertions(+), 10017 deletions(-)
 delete mode 100644 .github/workflows/watcom.yml
 delete mode 100644 Makefile.os2
 delete mode 100644 Makefile.w32
 delete mode 100644 docs/README-os2.md
 delete mode 100644 include/SDL_config_os2.h
 delete mode 100644 src/audio/os2/SDL_os2audio.c
 delete mode 100644 src/audio/os2/SDL_os2audio.h
 delete mode 100644 src/core/os2/SDL_os2.c
 delete mode 100644 src/core/os2/SDL_os2.h
 delete mode 100644 src/core/os2/geniconv/geniconv.c
 delete mode 100644 src/core/os2/geniconv/geniconv.h
 delete mode 100644 src/core/os2/geniconv/iconv.h
 delete mode 100644 src/core/os2/geniconv/makefile
 delete mode 100644 src/core/os2/geniconv/os2cp.c
 delete mode 100644 src/core/os2/geniconv/os2cp.h
 delete mode 100644 src/core/os2/geniconv/os2iconv.c
 delete mode 100644 src/core/os2/geniconv/sys2utf8.c
 delete mode 100644 src/core/os2/geniconv/test.c
 delete mode 100644 src/core/os2/iconv2.lbc
 delete mode 100644 src/dynapi/SDL3.exports
 delete mode 100644 src/filesystem/os2/SDL_sysfilesystem.c
 delete mode 100644 src/joystick/os2/SDL_os2joystick.c
 delete mode 100644 src/loadso/os2/SDL_sysloadso.c
 delete mode 100644 src/thread/os2/SDL_sysmutex.c
 delete mode 100644 src/thread/os2/SDL_syssem.c
 delete mode 100644 src/thread/os2/SDL_systhread.c
 delete mode 100644 src/thread/os2/SDL_systhread_c.h
 delete mode 100644 src/thread/os2/SDL_systls.c
 delete mode 100644 src/thread/os2/SDL_systls_c.h
 delete mode 100644 src/timer/os2/SDL_systimer.c
 delete mode 100644 src/video/os2/SDL_gradd.h
 delete mode 100644 src/video/os2/SDL_os2dive.c
 delete mode 100644 src/video/os2/SDL_os2messagebox.c
 delete mode 100644 src/video/os2/SDL_os2messagebox.h
 delete mode 100644 src/video/os2/SDL_os2mouse.c
 delete mode 100644 src/video/os2/SDL_os2mouse.h
 delete mode 100644 src/video/os2/SDL_os2output.h
 delete mode 100644 src/video/os2/SDL_os2util.c
 delete mode 100644 src/video/os2/SDL_os2util.h
 delete mode 100644 src/video/os2/SDL_os2video.c
 delete mode 100644 src/video/os2/SDL_os2video.h
 delete mode 100644 src/video/os2/SDL_os2vman.c
 delete mode 100644 test/Makefile.os2
 delete mode 100644 test/Makefile.w32
 delete mode 100644 test/testnativeos2.c
 delete mode 100644 test/watcom.mif

diff --git a/.github/workflows/watcom.yml b/.github/workflows/watcom.yml
deleted file mode 100644
index 13f1505ffff2..000000000000
--- a/.github/workflows/watcom.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-name: Build (OpenWatcom)
-
-on: [push, pull_request]
-
-jobs:
-  os2:
-    name: ${{ matrix.platform.name }}
-    runs-on: windows-latest
-
-    strategy:
-      matrix:
-        platform:
-        - { name: Windows, makefile: Makefile.w32 }
-        - { name: OS/2,    makefile: Makefile.os2 }
-
-    steps:
-      - uses: actions/checkout@v3
-      - uses: open-watcom/setup-watcom@v0
-      - name: Build
-        run: |
-          wmake -f ${{ matrix.platform.makefile }} ENABLE_WERROR=1
-      - name: Build tests
-        run: |
-          cd test && wmake -f ${{ matrix.platform.makefile }} ENABLE_WERROR=1
-          cd ..
-      - name: Run tests
-        if: "matrix.platform.makefile == 'Makefile.w32'"
-        run: |
-          cd test && wmake -f ${{ matrix.platform.makefile }} check-quick
-          cd ..
-      - name: distclean
-        run: |
-          wmake -f ${{ matrix.platform.makefile }} distclean
-          cd test && wmake -f ${{ matrix.platform.makefile }} distclean
-          cd ..
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 60a4782ae581..702d0c433f64 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2696,76 +2696,6 @@ elseif(PS2)
     ps2_drivers
   )
 
-elseif(OS2)
-  list(APPEND EXTRA_CFLAGS "-DOS2EMX_PLAIN_CHAR")
-
-  file(GLOB CORE_SOURCES ${SDL3_SOURCE_DIR}/src/core/os2/*.c)
-  list(APPEND SOURCE_FILES ${CORE_SOURCES})
-  if(NOT (HAVE_ICONV AND HAVE_ICONV_H))
-    file(GLOB CORE_SOURCES ${SDL3_SOURCE_DIR}/src/core/os2/geniconv/*.c)
-    list(APPEND SOURCE_FILES ${CORE_SOURCES})
-  endif()
-
-  if(SDL_THREADS)
-    set(SDL_THREAD_OS2 1)
-    file(GLOB OS2_THREAD_SOURCES ${SDL3_SOURCE_DIR}/src/thread/os2/*.c)
-    list(APPEND SOURCE_FILES ${OS2_THREAD_SOURCES})
-    set(HAVE_SDL_THREADS TRUE)
-  endif()
-
-  if(SDL_TIMERS)
-    set(SDL_TIMER_UNIX 1)
-    file(GLOB OS2_TIMER_SOURCES ${SDL3_SOURCE_DIR}/src/timer/os2/*.c)
-    list(APPEND SOURCE_FILES ${OS2_TIMER_SOURCES})
-    set(HAVE_SDL_TIMERS TRUE)
-  endif()
-
-  if(SDL_LOADSO)
-    set(SDL_LOADSO_OS2 1)
-    file(GLOB OS2_LOADSO_SOURCES ${SDL3_SOURCE_DIR}/src/loadso/os2/*.c)
-    list(APPEND SOURCE_FILES ${OS2_LOADSO_SOURCES})
-    set(HAVE_SDL_LOADSO TRUE)
-  endif()
-
-  if(SDL_FILESYSTEM)
-    set(SDL_FILESYSTEM_OS2 1)
-    file(GLOB FILESYSTEM_SOURCES ${SDL3_SOURCE_DIR}/src/filesystem/os2/*.c)
-    list(APPEND SOURCE_FILES ${FILESYSTEM_SOURCES})
-    set(HAVE_SDL_FILESYSTEM TRUE)
-  endif()
-
-  if(SDL_LOCALE)
-    file(GLOB LOCALE_SOURCES ${SDL3_SOURCE_DIR}/src/locale/unix/*.c)
-    list(APPEND SOURCE_FILES ${LOCALE_SOURCES})
-    set(HAVE_SDL_LOCALE TRUE)
-  endif()
-
-  if(SDL_VIDEO)
-    set(SDL_VIDEO_DRIVER_OS2 1)
-    file(GLOB OS2_VIDEO_SOURCES ${SDL3_SOURCE_DIR}/src/video/os2/*.c)
-    list(APPEND SOURCE_FILES ${OS2_VIDEO_SOURCES})
-    set(HAVE_SDL_VIDEO TRUE)
-  endif()
-
-  if(SDL_AUDIO)
-    set(SDL_AUDIO_DRIVER_OS2 1)
-    file(GLOB OS2_AUDIO_SOURCES ${SDL3_SOURCE_DIR}/src/audio/os2/*.c)
-    list(APPEND SOURCE_FILES ${OS2_AUDIO_SOURCES})
-    set(HAVE_SDL_AUDIO TRUE)
-    list(APPEND EXTRA_LIBS mmpm2)
-  endif()
-
-  if(SDL_JOYSTICK)
-    set(SDL_JOYSTICK_OS2 1)
-    file(GLOB OS2_JOYSTICK_SOURCES ${SDL3_SOURCE_DIR}/src/joystick/os2/*.c)
-    list(APPEND SOURCE_FILES ${OS2_JOYSTICK_SOURCES})
-    set(HAVE_SDL_JOYSTICK TRUE)
-  endif()
-
-  if(SDL_HIDAPI)
-    CheckHIDAPI()
-  endif()
-
 elseif(N3DS)
   file(GLOB N3DS_MAIN_SOURCES ${SDL3_SOURCE_DIR}/src/main/n3ds/*.c)
   set(SDLMAIN_SOURCES ${SDLMAIN_SOURCES} ${N3DS_MAIN_SOURCES})
@@ -3302,9 +3232,6 @@ if(SDL_SHARED)
     if(WINDOWS OR CYGWIN)
       set_target_properties(SDL3 PROPERTIES
         DEFINE_SYMBOL DLL_EXPORT)
-    elseif(OS2)
-      set_target_properties(SDL3 PROPERTIES
-        DEFINE_SYMBOL BUILD_SDL)
     endif()
     set_target_properties(SDL3 PROPERTIES
       VERSION ${SDL_VERSION}
@@ -3522,7 +3449,7 @@ if(NOT SDL3_DISABLE_INSTALL)
     if(SDL_SHARED)
       set(SOEXT ${CMAKE_SHARED_LIBRARY_SUFFIX}) # ".so", ".dylib", etc.
       get_target_property(SONAME SDL3 OUTPUT_NAME)
-      if(NOT ANDROID AND NOT MINGW AND NOT OS2)
+      if(NOT ANDROID AND NOT MINGW)
           install(CODE "
             execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
               \"lib${SONAME}${SOPOSTFIX}${SOEXT}\" \"libSDL3${SOPOSTFIX}${SOEXT}\"
diff --git a/Makefile.os2 b/Makefile.os2
deleted file mode 100644
index 0cefb4b3ebb2..000000000000
--- a/Makefile.os2
+++ /dev/null
@@ -1,296 +0,0 @@
-# Open Watcom makefile to build SDL3.dll for OS/2
-# wmake -f Makefile.os2
-#
-# If you have GNU libiconv installed (iconv2.dll), you
-# can compile against it by specifying LIBICONV=1, e.g.:
-# wmake -f Makefile.os2 LIBICONV=1
-#
-# If you have libusb-1.0 installed (usb100.dll, libusb.h), you
-# can compile hidapi joystick support against it (experimental)
-# by specifying HIDAPI=1, e.g.:
-# wmake -f Makefile.os2 HIDAPI=1
-#
-# To error out upon warnings: wmake -f Makefile.os2 ENABLE_WERROR=1
-
-LIBNAME = SDL3
-MAJOR_VERSION = 3
-MINOR_VERSION = 0
-MICRO_VERSION = 0
-VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION)
-DESCRIPTION = Simple DirectMedia Layer 2
-
-LIBICONV=0
-ICONVLIB=$(LIBICONV_LIB)
-
-LIBHOME = .
-DLLFILE = $(LIBHOME)/$(LIBNAME).dll
-LIBFILE = $(LIBHOME)/$(LIBNAME).lib
-LNKFILE = $(LIBNAME).lnk
-
-INCPATH = -I"$(%WATCOM)/h/os2" -I"$(%WATCOM)/h"
-INCPATH+= -Iinclude
-
-LIBM = SDL3libm.lib
-TLIB = SDL3test.lib
-LIBS = mmpm2.lib $(LIBM)
-CFLAGS = -bt=os2 -d0 -q -bm -5s -fp5 -fpi87 -sg -oeatxhn -ei
-# Debug options:
-# - debug messages from OS/2 related code to stdout:
-#CFLAGS+= -DOS2DEBUG
-# - debug messages from OS/2 code via SDL_LogDebug():
-#CFLAGS+= -DOS2DEBUG=2
-
-# max warnings:
-CFLAGS+= -wx
-!ifeq ENABLE_WERROR 1
-CFLAGS+= -we
-!endif
-# newer OpenWatcom versions enable W303 by default
-CFLAGS+= -wcd=303
-# the include paths :
-CFLAGS+= $(INCPATH)
-CFLAGS_STATIC=$(CFLAGS)
-# building dll:
-CFLAGS_DLL =$(CFLAGS)
-CFLAGS_DLL+= -bd
-# iconv:
-LIBICONV_LIB=iconv2.lib
-!ifeq LIBICONV 1
-CFLAGS_DLL+= -DHAVE_ICONV=1 -DHAVE_ICONV_H=1
-LIBS+= $(ICONVLIB)
-!else
-LIBS+= libuls.lib libconv.lib
-!endif
-# hidapi (libusb):
-!ifeq HIDAPI 1
-CFLAGS_DLL+= -DHAVE_LIBUSB_H=1
-!endif
-# building SDL itself (for DECLSPEC):
-CFLAGS_DLL+= -DBUILD_SDL
-
-CFLAGS_DLL+= -DSDL_BUILD_MAJOR_VERSION=$(MAJOR_VERSION)
-CFLAGS_DLL+= -DSDL_BUILD_MINOR_VERSION=$(MINOR_VERSION)
-CFLAGS_DLL+= -DSDL_BUILD_MICRO_VERSION=$(MICRO_VERSION)
-
-SRCS = SDL.c SDL_assert.c SDL_error.c SDL_guid.c SDL_log.c SDL_dataqueue.c SDL_hints.c SDL_list.c SDL_utils.c
-SRCS+= SDL_getenv.c SDL_iconv.c SDL_malloc.c SDL_qsort.c SDL_stdlib.c SDL_string.c SDL_strtokr.c SDL_crc16.c SDL_crc32.c
-SRCS+= SDL_cpuinfo.c SDL_atomic.c SDL_spinlock.c SDL_thread.c SDL_timer.c
-SRCS+= SDL_rwops.c SDL_power.c
-SRCS+= SDL_audio.c SDL_audiocvt.c SDL_audiodev.c SDL_audiotypecvt.c SDL_mixer.c SDL_wave.c
-SRCS+= SDL_events.c SDL_quit.c SDL_keyboard.c SDL_mouse.c SDL_windowevents.c &
-       SDL_clipboardevents.c SDL_dropevents.c SDL_displayevents.c SDL_gesture.c &
-       SDL_sensor.c SDL_touch.c
-SRCS+= SDL_haptic.c SDL_hidapi.c SDL_gamecontroller.c SDL_joystick.c controller_type.c
-SRCS+= SDL_render.c yuv_rgb.c SDL_yuv.c SDL_yuv_sw.c SDL_blendfillrect.c &
-       SDL_blendline.c SDL_blendpoint.c SDL_drawline.c SDL_drawpoint.c &
-       SDL_render_sw.c SDL_rotate.c SDL_triangle.c
-SRCS+= SDL_blit.c SDL_blit_0.c SDL_blit_1.c SDL_blit_A.c SDL_blit_auto.c &
-       SDL_blit_copy.c SDL_blit_N.c SDL_blit_slow.c SDL_fillrect.c SDL_bmp.c &
-       SDL_pixels.c SDL_rect.c SDL_RLEaccel.c SDL_shape.c SDL_stretch.c &
-       SDL_surface.c SDL_video.c SDL_clipboard.c SDL_vulkan_utils.c SDL_egl.c
-
-SRCS+= SDL_syscond.c SDL_sysmutex.c SDL_syssem.c SDL_systhread.c SDL_systls.c
-SRCS+= SDL_systimer.c
-SRCS+= SDL_sysloadso.c
-SRCS+= SDL_sysfilesystem.c
-SRCS+= SDL_os2joystick.c SDL_syshaptic.c SDL_sysjoystick.c SDL_virtualjoystick.c
-SRCS+= SDL_hidapijoystick.c SDL_hidapi_rumble.c SDL_hidapi_combined.c SDL_hidapi_gamecube.c SDL_hidapi_luna.c SDL_hidapi_ps3.c SDL_hidapi_ps4.c SDL_hidapi_ps5.c SDL_hidapi_shield.c SDL_hidapi_stadia.c SDL_hidapi_switch.c SDL_hidapi_wii.c SDL_hidapi_xbox360.c SDL_hidapi_xbox360w.c SDL_hidapi_xboxone.c SDL_hidapi_steam.c
-SRCS+= SDL_dummyaudio.c SDL_diskaudio.c
-SRCS+= SDL_nullvideo.c SDL_nullframebuffer.c SDL_nullevents.c
-SRCS+= SDL_dummysensor.c
-SRCS+= SDL_locale.c SDL_syslocale.c
-SRCS+= SDL_url.c SDL_sysurl.c
-
-SRCS+= SDL_os2.c
-!ifeq LIBICONV 0
-SRCS+= geniconv.c os2cp.c os2iconv.c sys2utf8.c
-!endif
-SRCS+= SDL_os2audio.c
-SRCS+= SDL_os2video.c SDL_os2util.c SDL_os2dive.c SDL_os2vman.c &
-       SDL_os2mouse.c SDL_os2messagebox.c
-
-SRCS+= SDL_dynapi.c
-
-OBJS = $(SRCS:.c=.obj)
-
-.extensions:
-.extensions: .lib .dll .obj .c .asm
-
-.c: ./src;./src/dynapi;./src/audio;./src/cpuinfo;./src/events;./src/file;./src/haptic;./src/joystick;./src/power;./src/render;./src/render/software;./src/sensor;./src/stdlib;./src/thread;./src/timer;./src/video;./src/video/yuv2rgb;./src/atomic;./src/audio/disk;
-.c: ./src/haptic/dummy;./src/joystick/dummy;./src/joystick/virtual;./src/audio/dummy;./src/video/dummy;./src/sensor/dummy;
-.c: ./src/core/os2;./src/audio/os2;./src/loadso/os2;./src/filesystem/os2;./src/joystick/os2;./src/thread/os2;./src/timer/os2;./src/video/os2;
-.c: ./src/core/os2/geniconv;
-.c: ./src/locale/;./src/locale/unix;./src/misc;./src/misc/dummy;./src/joystick/hidapi;./src/hidapi
-
-all: $(DLLFILE) $(LIBFILE) $(TLIB) .symbolic
-
-build_dll: .symbolic
-    @echo * Compiling dll objects
-
-$(DLLFILE): build_dll $(OBJS) $(LIBM) $(LIBICONV_LIB) $(LNKFILE)
-    @echo * Linking: $@
-    wlink @$(LNKFILE)
-
-$(LIBFILE): $(DLLFILE)
-    @echo * Creating LIB file: $@
-    wlib -q -b -n -c -pa -s -t -zld -ii -io $* $(DLLFILE)
-
-.c.obj:
-    wcc386 $(CFLAGS_DLL) -fo=$^@ $<
-
-SDL_syscond.obj: "src/thread/generic/SDL_syscond.c"
-    wcc386 $(CFLAGS_DLL) -fo=$^@ $<
-SDL_cpuinfo.obj: SDL_cpuinfo.c
-    wcc386 $(CFLAGS_DLL) -wcd=200 -fo=$^@ $<
-SDL_wave.obj: SDL_wave.c
-    wcc386 $(CFLAGS_DLL) -wcd=124 -fo=$^@ $<
-SDL_blendfillrect.obj: SDL_blendfillrect.c
-    wcc386 $(CFLAGS_DLL) -wcd=200 -fo=$^@ $<
-SDL_blendline.obj: SDL_blendline.c
-    wcc386 $(CFLAGS_DLL) -wcd=200 -fo=$^@ $<
-SDL_blendpoint.obj: SDL_blendpoint.c
-    wcc386 $(CFLAGS_DLL) -wcd=200 -fo=$^@ $<
-SDL_RLEaccel.obj: SDL_RLEaccel.c
-    wcc386 $(CFLAGS_DLL) -wcd=201 -fo=$^@ $<
-!ifeq HIDAPI 1
-# c99 mode needed because of structs with flexible array members in libusb.h
-SDL_hidapi.obj: SDL_hidapi.c
-    wcc386 $(CFLAGS_DLL) -za99 -fo=$^@ $<
-!endif
-
-$(LIBICONV_LIB):  "src/core/os2/iconv2.lbc"
-    @echo * Creating: $@
-    wlib -q -b -n -c -pa -s -t -zld -ii -io $@ @$<
-
-# SDL3libm
-MSRCS= e_atan2.c e_exp.c e_fmod.c e_log10.c e_log.c e_pow.c e_rem_pio2.c e_sqrt.c &
-       k_cos.c k_rem_pio2.c k_sin.c k_tan.c &
-       s_atan.c s_copysign.c s_cos.c s_fabs.c s_floor.c s_scalbn.c s_sin.c s_tan.c
-MOBJS= $(MSRCS:.c=.obj)
-
-.c: ./src/libm;
-e_atan2.obj: e_atan2.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-e_exp.obj: e_exp.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-e_fmod.obj: e_fmod.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-e_log10.obj: e_log10.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-e_log.obj: e_log.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-e_pow.obj: e_pow.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-e_rem_pio2.obj: e_rem_pio2.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-e_sqrt.obj: e_sqrt.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-k_cos.obj: k_cos.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-k_rem_pio2.obj: k_rem_pio2.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-k_sin.obj: k_sin.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-k_tan.obj: k_tan.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-s_atan.obj: s_atan.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-s_copysign.obj: s_copysign.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-s_cos.obj: s_cos.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-s_fabs.obj: s_fabs.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-s_floor.obj: s_floor.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-s_scalbn.obj: s_scalbn.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-s_sin.obj: s_sin.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-s_tan.obj: s_tan.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-
-build_libm: .symbolic
-    @echo * Compiling libm objects
-$(LIBM): build_libm $(MOBJS)
-    @echo * Creating: $@
-    wlib -q -b -n -c -pa -s -t -zld -ii -io $@ $(MOBJS)
-
-# SDL3test
-TSRCS = SDL_test_assert.c SDL_test_common.c SDL_test_compare.c &
-        SDL_test_crc32.c SDL_test_font.c SDL_test_fuzzer.c SDL_test_harness.c &
-        SDL_test_imageBlit.c SDL_test_imageBlitBlend.c SDL_test_imageFace.c &
-        SDL_test_imagePrimitives.c SDL_test_imagePrimitivesBlend.c &
-        SDL_test_log.c SDL_test_md5.c SDL_test_random.c SDL_test_memory.c
-TOBJS= $(TSRCS:.c=.obj)
-
-.c: ./src/test;
-SDL_test_assert.obj: SDL_test_assert.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_common.obj: SDL_test_common.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_compare.obj: SDL_test_compare.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_crc32.obj: SDL_test_crc32.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_font.obj: SDL_test_font.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_fuzzer.obj: SDL_test_fuzzer.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_harness.obj: SDL_test_harness.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_imageBlit.obj: SDL_test_imageBlit.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_imageBlitBlend.obj: SDL_test_imageBlitBlend.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_imageFace.obj: SDL_test_imageFace.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_imagePrimitives.obj: SDL_test_imagePrimitives.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_imagePrimitivesBlend.obj: SDL_test_imagePrimitivesBlend.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_log.obj: SDL_test_log.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_md5.obj: SDL_test_md5.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_random.obj: SDL_test_random.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_memory.obj: SDL_test_memory.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-
-build_tlib: .symbolic
-    @echo * Compiling testlib objects
-$(TLIB): build_tlib $(TOBJS)
-    @echo * Creating: $@
-    wlib -q -b -n -c -pa -s -t -zld -ii -io $@ $(TOBJS)
-
-$(LNKFILE):
-    @echo * Creating linker file: $@
-    @%create $@
-    @%append $@ SYSTEM os2v2_dll INITINSTANCE TERMINSTANCE
-    @%append $@ NAME $(DLLFILE)
-    @for %i in ($(OBJS)) do @%append $@ FILE %i
-    @for %i in ($(LIBS)) do @%append $@ LIB %i
-    @%append $@ OPTION QUIET
-    @%append $@ OPTION IMPF=$(LIBHOME)/$^&.exp
-    @%append $@ OPTION MAP=$(LIBHOME)/$^&.map
-    @%append $@ OPTION DESCRIPTION '@$#libsdl org:$(VERSION)$#@$(DESCRIPTION)'
-    @%append $@ OPTION ELIMINATE
-    @%append $@ OPTION MANYAUTODATA
-    @%append $@ OPTION OSNAME='OS/2 and eComStation'
-    @%append $@ OPTION SHOWDEAD
-
-clean: .SYMBOLIC
-    @echo * Clean: $(LIBNAME)
-    @if exist *.obj rm *.obj
-    @if exist *.err rm *.err
-    @if exist $(LNKFILE) rm $(LNKFILE)
-    @if exist $(LIBM) rm $(LIBM)
-    @if exist $(LIBICONV_LIB) rm $(LIBICONV_LIB)
-
-distclean: .SYMBOLIC clean
-    @if exist $(LIBHOME)/*.exp rm $(LIBHOME)/*.exp
-    @if exist $(LIBHOME)/*.map rm $(LIBHOME)/*.map
-    @if exist $(LIBFILE) rm $(LIBFILE)
-    @if exist $(DLLFILE) rm $(DLLFILE)
-    @if exist $(TLIB) rm $(TLIB)
diff --git a/Makefile.w32 b/Makefile.w32
deleted file mode 100644
index b89a44e578e3..000000000000
--- a/Makefile.w32
+++ /dev/null
@@ -1,280 +0,0 @@
-# Open Watcom makefile to build SDL3.dll for Win32
-# wmake -f Makefile.w32
-#
-# To error out upon warnings: wmake -f Makefile.w32 ENABLE_WERROR=1
-
-LIBNAME = SDL3
-MAJOR_VERSION = 3
-MINOR_VERSION = 0
-MICRO_VERSION = 0
-VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION)
-
-LIBHOME = .
-DLLFILE = $(LIBHOME)/$(LIBNAME).dll
-LIBFILE = $(LIBHOME)/$(LIBNAME).lib
-EXPFILE = $(LIBHOME)/$(LIBNAME).exp
-LNKFILE = $(LIBNAME).lnk
-
-INCPATH = -I"$(%WATCOM)/h/nt" -I"$(%WATCOM)/h/nt/directx" -I"$(%WATCOM)/h"
-INCPATH+= -Iinclude
-INCPATH+= -I"src/video/khronos"
-
-LIBM = SDL3libm.lib
-TLIB = SDL3test.lib
-# user32.lib, gdi32.lib, ole32.lib and oleaut32.lib are actually
-# among the default libraries in wlink.lnk for nt_dll linkage...
-LIBS = user32.lib gdi32.lib winmm.lib imm32.lib ole32.lib oleaut32.lib shell32.lib setupapi.lib version.lib uuid.lib dxguid.lib $(LIBM)
-
-CFLAGS = -bt=nt -d0 -q -bm -5s -fp5 -fpi87 -sg -oeatxhn -ei
-# max warnings:
-CFLAGS+= -wx
-!ifeq ENABLE_WERROR 1
-CFLAGS+= -we
-!endif
-# newer OpenWatcom versions enable W303 by default
-CFLAGS+= -wcd=303
-# new vulkan headers result in lots of W202 warnings
-CFLAGS+= -wcd=202
-# the include paths :
-CFLAGS+= $(INCPATH)
-CFLAGS_STATIC=$(CFLAGS)
-# building dll:
-CFLAGS_DLL =$(CFLAGS)
-CFLAGS_DLL+= -bd
-# we override the DECLSPEC define in begin_code.h, because we are using
-# an exports file to remove the _cdecl '_' prefix from the symbol names
-CFLAGS_DLL+= -DDECLSPEC=
-
-CFLAGS_DLL+= -DSDL_BUILD_MAJOR_VERSION=$(MAJOR_VERSION)
-CFLAGS_DLL+= -DSDL_BUILD_MINOR_VERSION=$(MINOR_VERSION)
-CFLAGS_DLL+= -DSDL_BUILD_MICRO_VERSION=$(MICRO_VERSION)
-
-RCFLAGS = -q -r -bt=nt $(INCPATH)
-
-SRCS = SDL.c SDL_assert.c SDL_error.c SDL_guid.c SDL_log.c SDL_dataqueue.c SDL_hints.c SDL_list.c SDL_utils.c
-SRCS+= SDL_getenv.c SDL_iconv.c SDL_malloc.c SDL_qsort.c SDL_stdlib.c SDL_string.c SDL_strtokr.c SDL_crc16.c SDL_crc32.c
-SRCS+= SDL_cpuinfo.c SDL_atomic.c SDL_spinlock.c SDL_thread.c SDL_timer.c
-SRCS+= SDL_rwops.c SDL_power.c
-SRCS+= SDL_audio.c SDL_audiocvt.c SDL_audiodev.c SDL_audiotypecvt.c SDL_mixer.c SDL_wave.c
-SRCS+= SDL_events.c SDL_quit.c SDL_keyboard.c SDL_mouse.c SDL_windowevents.c &
-       SDL_clipboardevents.c SDL_dropevents.c SDL_displayevents.c SDL_gesture.c &
-       SDL_sensor.c SDL_touch.c
-SRCS+= SDL_haptic.c SDL_hidapi.c SDL_gamecontroller.c SDL_joystick.c controller_type.c
-SRCS+= SDL_render.c yuv_rgb.c SDL_yuv.c SDL_yuv_sw.c SDL_blendfillrect.c &
-       SDL_blendline.c SDL_blendpoint.c SDL_drawline.c SDL_drawpoint.c &
-       SDL_render_sw.c SDL_rotate.c SDL_triangle.c
-SRCS+= SDL_blit.c SDL_blit_0.c SDL_blit_1.c SDL_blit_A.c SDL_blit_auto.c &
-       SDL_blit_copy.c SDL_blit_N.c SDL_blit_slow.c SDL_fillrect.c SDL_bmp.c &
-       SDL_pixels.c SDL_rect.c SDL_RLEaccel.c SDL_shape.c SDL_stretch.c &
-       SDL_surface.c SDL_video.c SDL_clipboard.c SDL_vulkan_utils.c SDL_egl.c
-
-SRCS+= SDL_syscond.c SDL_sysmutex.c SDL_syssem.c SDL_systhread.c SDL_systls.c
-SRCS+= SDL_systimer.c
-SRCS+= SDL_sysloadso.c
-SRCS+= SDL_sysfilesystem.c
-SRCS+= SDL_syshaptic.c SDL_sysjoystick.c SDL_virtualjoystick.c
-SRCS+= SDL_hidapijoystick.c SDL_hidapi_rumble.c SDL_hidapi_combined.c SDL_hidapi_gamecube.c SDL_hidapi_luna.c SDL_hidapi_ps3.c SDL_hidapi_ps4.c SDL_hidapi_ps5.c SDL_hidapi_shield.c SDL_hidapi_stadia.c SDL_hidapi_switch.c SDL_hidapi_wii.c SDL_hidapi_xbox360.c SDL_hidapi_xbox360w.c SDL_hidapi_xboxone.c SDL_hidapi_steam.c
-SRCS+= SDL_dummyaudio.c SDL_diskaudio.c
-SRCS+= SDL_nullvideo.c SDL_nullframebuffer.c SDL_nullevents.c
-SRCS+= SDL_dummysensor.c
-SRCS+= SDL_locale.c SDL_syslocale.c
-SRCS+= SDL_url.c SDL_sysurl.c
-
-SRCS+= SDL_winmm.c SDL_directsound.c SDL_wasapi.c SDL_wasapi_win32.c
-SRCS+= SDL_hid.c SDL_immdevice.c SDL_windows.c SDL_xinput.c
-SRCS+= SDL_dinputhaptic.c SDL_windowshaptic.c SDL_xinputhaptic.c
-SRCS+= SDL_dinputjoystick.c SDL_rawinputjoystick.c SDL_windowsjoystick.c SDL_windows_gaming_input.c SDL_xinputjoystick.c
-SRCS+= SDL_syspower.c
-SRCS+= SDL_d3dmath.c
-SRCS+= SDL_render_d3d.c SDL_shaders_d3d.c
-SRCS+= SDL_render_d3d11.c SDL_shaders_d3d11.c
-SRCS+= SDL_render_d3d12.c SDL_shaders_d3d12.c
-SRCS+= SDL_render_gl.c SDL_shaders_gl.c
-SRCS+= SDL_render_gles2.c SDL_shaders_gles2.c
-SRCS+= SDL_windowssensor.c
-SRCS+= SDL_syscond_cv.c
-SRCS+= SDL_windowsclipboard.c SDL_windowsevents.c SDL_windowsframebuffer.c SDL_windowskeyboard.c SDL_windowsmessagebox.c SDL_windowsmodes.c SDL_windowsmouse.c SDL_windowsopengl.c SDL_windowsopengles.c SDL_windowsshape.c SDL_windowsvideo.c SDL_windowsvulkan.c SDL_windowswindow.c
-
-SRCS+= SDL_dynapi.c
-
-RCSRCS = version.rc
-
-OBJS = $(SRCS:.c=.obj)
-RCOBJS= $(RCSRCS:.rc=.res)
-
-.extensions:
-.extensions: .lib .dll .obj .res .c .rc .asm
-
-.c: ./src;./src/dynapi;./src/audio;./src/cpuinfo;./src/events;./src/file;./src/haptic;./src/joystick;./src/power;./src/render;./src/render/software;./src/sensor;./src/stdlib;./src/thread;./src/timer;./src/video;./src/video/yuv2rgb;./src/atomic;./src/audio/disk;
-.c: ./src/haptic/dummy;./src/joystick/dummy;./src/joystick/virtual;./src/audio/dummy;./src/video/dummy;./src/sensor/dummy;
-.c: ./src/core/windows;./src/audio/winmm;./src/audio/directsound;./src/audio/wasapi;./src/loadso/windows;./src/filesystem/windows;./src/haptic/windows;./src/joystick/windows;./src/sensor/windows;./src/thread/windows;./src/timer/windows;./src/video/windows;
-.c: ./src/locale/;./src/locale/windows;./src/misc;./src/misc/windows;./src/power/windows;./src/joystick/hidapi;./src/hidapi;./src/render/direct3d;./src/render/direct3d11;./src/render/direct3d12;./src/render/opengl;./src/render/opengles2
-.rc: ./src/main/windows
-
-all: $(DLLFILE) $(LIBFILE) $(TLIB) .symbolic
-
-build_dll: .symbolic
-    @echo * Compiling dll objects
-
-$(DLLFILE): build_dll $(OBJS) $(LIBM) $(RCOBJS) $(LNKFILE)
-    @echo * Linking: $@
-    wlink @$(LNKFILE)
-
-$(LIBFILE): $(DLLFILE)
-    @echo * Creating LIB file: $@
-    wlib -q -b -n -c -pa -s -t -zld -ii -io $* @$(EXPFILE)
-
-.c.obj:
-    wcc386 $(CFLAGS_DLL) -fo=$^@ $<
-
-.rc.res:
-    wrc $(RCFLAGS) -fo=$^@ $<
-
-SDL_syscond.obj: "src/thread/generic/SDL_syscond.c"
-    wcc386 $(CFLAGS_DLL) -fo=$^@ $<
-SDL_cpuinfo.obj: SDL_cpuinfo.c
-    wcc386 $(CFLAGS_DLL) -wcd=200 -fo=$^@ $<
-SDL_wave.obj: SDL_wave.c
-    wcc386 $(CFLAGS_DLL) -wcd=124 -fo=$^@ $<
-SDL_blendfillrect.obj: SDL_blendfillrect.c
-    wcc386 $(CFLAGS_DLL) -wcd=200 -fo=$^@ $<
-SDL_blendline.obj: SDL_blendline.c
-    wcc386 $(CFLAGS_DLL) -wcd=200 -fo=$^@ $<
-SDL_blendpoint.obj: SDL_blendpoint.c
-    wcc386 $(CFLAGS_DLL) -wcd=200 -fo=$^@ $<
-SDL_RLEaccel.obj: SDL_RLEaccel.c
-    wcc386 $(CFLAGS_DLL) -wcd=201 -fo=$^@ $<
-SDL_malloc.obj: SDL_malloc.c
-    wcc386 $(CFLAGS_DLL) -wcd=201 -fo=$^@ $<
-
-# SDL3libm
-MSRCS= e_atan2.c e_exp.c e_fmod.c e_log10.c e_log.c e_pow.c e_rem_pio2.c e_sqrt.c &
-       k_cos.c k_rem_pio2.c k_sin.c k_tan.c &
-       s_atan.c s_copysign.c s_cos.c s_fabs.c s_floor.c s_scalbn.c s_sin.c s_tan.c
-MOBJS= $(MSRCS:.c=.obj)
-
-.c: ./src/libm;
-e_atan2.obj: e_atan2.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-e_exp.obj: e_exp.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-e_fmod.obj: e_fmod.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-e_log10.obj: e_log10.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-e_log.obj: e_log.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-e_pow.obj: e_pow.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-e_rem_pio2.obj: e_rem_pio2.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-e_sqrt.obj: e_sqrt.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-k_cos.obj: k_cos.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-k_rem_pio2.obj: k_rem_pio2.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-k_sin.obj: k_sin.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-k_tan.obj: k_tan.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-s_atan.obj: s_atan.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-s_copysign.obj: s_copysign.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-s_cos.obj: s_cos.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-s_fabs.obj: s_fabs.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-s_floor.obj: s_floor.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-s_scalbn.obj: s_scalbn.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-s_sin.obj: s_sin.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-s_tan.obj: s_tan.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-
-build_libm: .symbolic
-    @echo * Compiling libm objects
-$(LIBM): build_libm $(MOBJS)
-    @echo * Creating: $@
-    wlib -q -b -n -c -pa -s -t -zld -ii -io $@ $(MOBJS)
-
-# SDL3test
-TSRCS = SDL_test_assert.c SDL_test_common.c SDL_test_compare.c &
-        SDL_test_crc32.c SDL_test_font.c SDL_test_fuzzer.c SDL_test_harness.c &
-        SDL_test_imageBlit.c SDL_test_imageBlitBlend.c SDL_test_imageFace.c &
-        SDL_test_imagePrimitives.c SDL_test_imagePrimitivesBlend.c &
-        SDL_test_log.c SDL_test_md5.c SDL_test_random.c SDL_test_memory.c
-TOBJS= $(TSRCS:.c=.obj)
-
-.c: ./src/test;
-SDL_test_assert.obj: SDL_test_assert.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_common.obj: SDL_test_common.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_compare.obj: SDL_test_compare.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_crc32.obj: SDL_test_crc32.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_font.obj: SDL_test_font.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_fuzzer.obj: SDL_test_fuzzer.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_harness.obj: SDL_test_harness.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_imageBlit.obj: SDL_test_imageBlit.c
-    wcc386 $(CFLAGS_STATIC) -fo=$^@ $<
-SDL_test_imageBlitBlend.obj:

(Patch may be truncated, please check the link at the top of this post.)