[...] > WANTLIB= m pthread sndio usbhid samplerate > -# GL/X11/Xext/Xrender/Xrandr are dlopen'd by SDL > -WANTLIB+= GL X11 Xau Xdmcp Xext Xrandr Xrender xcb > +# GL/Xau/Xdmcp/vulkan are dlopen'd by SDL > +WANTLIB+= GL X11 Xau xcb Xcursor Xdmcp Xext Xfixes Xi Xinerama > +WANTLIB+= Xrandr Xrender Xss Xxf86vm vulkan > > -LIB_DEPENDS= audio/libsamplerate > +LIB_DEPENDS= audio/libsamplerate \ > + graphics/vulkan-loader
After discussion with brynet@ I realized that adding vulkan which is an optional runtime dependency that is dlopen'd will break sdl2 on several architectures - aarch64, mips*. Therefore, new diff below that removes vulkan from WANTLIB and vulkan-loader from LIB_DEPENDS. ok? Index: Makefile =================================================================== RCS file: /cvs/ports/devel/sdl2/Makefile,v retrieving revision 1.27 diff -u -p -r1.27 Makefile --- Makefile 12 Jul 2019 20:46:01 -0000 1.27 +++ Makefile 20 Sep 2019 20:41:27 -0000 @@ -2,14 +2,13 @@ COMMENT= cross-platform multimedia library -V= 2.0.9 -REVISION= 0 +V= 2.0.10 DISTNAME= SDL2-${V} PKGNAME= sdl2-${V} CATEGORIES= devel MASTER_SITES= https://www.libsdl.org/release/ -SHARED_LIBS= SDL2 0.6 # 0.9 +SHARED_LIBS= SDL2 0.7 # 0.10 HOMEPAGE= https://www.libsdl.org/ @@ -19,8 +18,9 @@ MAINTAINER= Thomas Frohwein <thfr@openbs PERMIT_PACKAGE= Yes WANTLIB= m pthread sndio usbhid samplerate -# GL/X11/Xext/Xrender/Xrandr are dlopen'd by SDL -WANTLIB+= GL X11 Xau Xdmcp Xext Xrandr Xrender xcb +# GL/Xau/Xdmcp are dlopen'd by SDL +WANTLIB+= GL X11 Xau xcb Xcursor Xdmcp Xext Xfixes Xi Xinerama +WANTLIB+= Xrandr Xrender Xss Xxf86vm LIB_DEPENDS= audio/libsamplerate @@ -37,10 +37,13 @@ CONFIGURE_ARGS+= --disable-alsa \ --disable-esd \ --disable-ibus \ --disable-jack \ + --disable-libsamplerate-shared \ --disable-libudev \ --disable-nas \ --disable-oss \ - --disable-pulseaudio + --disable-pulseaudio \ + --disable-sndio-shared \ + --disable-x11-shared # in case devel/usb is installed, don't pick it up. CONFIGURE_ENV+= ac_cv_lib_usb_hid_init=no \ ac_cv_header_usb_h=no @@ -49,6 +52,7 @@ CONFIGURE_ENV+= ac_cv_lib_usb_hid_init=n CONFIGURE_ARGS+= --disable-atomic .endif +# tests in test subdir, but interactive and not hooked up to build NO_TEST= Yes .include <bsd.port.mk> Index: distinfo =================================================================== RCS file: /cvs/ports/devel/sdl2/distinfo,v retrieving revision 1.8 diff -u -p -r1.8 distinfo --- distinfo 3 Jan 2019 17:55:08 -0000 1.8 +++ distinfo 20 Sep 2019 20:41:27 -0000 @@ -1,2 +1,2 @@ -SHA256 (SDL2-2.0.9.tar.gz) = JVGG3GduzQwdvxDsiizF1oabUHnYo4GUwq7N/1SzJLE= -SIZE (SDL2-2.0.9.tar.gz) = 5246942 +SHA256 (SDL2-2.0.10.tar.gz) = tGVsE6Hw0AI64vSpzwjskv/7Rk4PJCODN3hBWbi5HVc= +SIZE (SDL2-2.0.10.tar.gz) = 5550762 Index: patches/patch-Makefile_in =================================================================== RCS file: /cvs/ports/devel/sdl2/patches/patch-Makefile_in,v retrieving revision 1.6 diff -u -p -r1.6 patch-Makefile_in --- patches/patch-Makefile_in 3 Jan 2019 17:55:08 -0000 1.6 +++ patches/patch-Makefile_in 20 Sep 2019 20:41:27 -0000 @@ -3,12 +3,12 @@ $OpenBSD: patch-Makefile_in,v 1.6 2019/0 Index: Makefile.in --- Makefile.in.orig +++ Makefile.in -@@ -123,7 +123,7 @@ LT_AGE = @LT_AGE@ +@@ -125,7 +125,7 @@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_RELEASE = @LT_RELEASE@ LT_REVISION = @LT_REVISION@ -LT_LDFLAGS = -no-undefined -rpath $(libdir) -release $(LT_RELEASE) -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) +LT_LDFLAGS = -no-undefined -rpath $(DESTDIR)$(libdir) -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) - all: $(srcdir)/configure Makefile $(objects) $(objects)/$(TARGET) $(objects)/$(SDLMAIN_TARGET) $(objects)/$(SDLTEST_TARGET) + all: $(srcdir)/configure Makefile $(objects)/$(TARGET) $(objects)/$(SDLMAIN_TARGET) $(objects)/$(SDLTEST_TARGET) Index: patches/patch-src_SDL_c =================================================================== RCS file: /cvs/ports/devel/sdl2/patches/patch-src_SDL_c,v retrieving revision 1.2 diff -u -p -r1.2 patch-src_SDL_c --- patches/patch-src_SDL_c 3 Jan 2019 17:55:08 -0000 1.2 +++ patches/patch-src_SDL_c 20 Sep 2019 20:41:27 -0000 @@ -7,7 +7,7 @@ until OpenBSD support has been rolled ou Index: src/SDL.c --- src/SDL.c.orig +++ src/SDL.c -@@ -228,8 +228,6 @@ SDL_InitSubSystem(Uint32 flags) +@@ -227,8 +227,6 @@ SDL_InitSubSystem(Uint32 flags) } } SDL_PrivateSubsystemRefCountIncr(SDL_INIT_HAPTIC); @@ -16,7 +16,7 @@ Index: src/SDL.c #endif } -@@ -449,7 +447,7 @@ SDL_GetPlatform() +@@ -453,7 +451,7 @@ SDL_GetPlatform() #elif __NETBSD__ return "NetBSD"; #elif __OPENBSD__ Index: patches/patch-src_joystick_SDL_gamecontroller_c =================================================================== RCS file: /cvs/ports/devel/sdl2/patches/patch-src_joystick_SDL_gamecontroller_c,v retrieving revision 1.3 diff -u -p -r1.3 patch-src_joystick_SDL_gamecontroller_c --- patches/patch-src_joystick_SDL_gamecontroller_c 3 Jan 2019 17:55:08 -0000 1.3 +++ patches/patch-src_joystick_SDL_gamecontroller_c 20 Sep 2019 20:41:27 -0000 @@ -1,15 +1,26 @@ -$OpenBSD: patch-src_joystick_SDL_gamecontroller_c,v 1.3 2019/01/03 17:55:08 thfr Exp $ +$OpenBSD$ enable GameController API the Linux fallback way (by posing as Xbox360 controller) also disable checking string "Xbox 360 Wireless Receiver", so for now everything will be Xbox360 controller (works with generic joysticks) map to SDL_GAMECONTROLLERCONFIG envvar if available +Use layout for XBox360 controller to maximize compatibility because +many controllers use this mapping Index: src/joystick/SDL_gamecontroller.c --- src/joystick/SDL_gamecontroller.c.orig +++ src/joystick/SDL_gamecontroller.c -@@ -1008,17 +1008,23 @@ static ControllerMapping_t *SDL_PrivateGetControllerMa +@@ -735,7 +735,7 @@ static char *SDL_PrivateGetControllerGUIDFromMappingSt + SDL_memcpy(&pchGUID[8], &pchGUID[0], 4); + SDL_memcpy(&pchGUID[0], "03000000", 8); + } +-#elif __MACOSX__ ++#else if(__MACOSX__) || (__OpenBSD__) + if (SDL_strlen(pchGUID) == 32 && + SDL_memcmp(&pchGUID[4], "000000000000", 12) == 0 && + SDL_memcmp(&pchGUID[20], "000000000000", 12) == 0) { +@@ -1022,17 +1022,21 @@ static ControllerMapping_t *SDL_PrivateGetControllerMa ControllerMapping_t *mapping; mapping = SDL_PrivateGetControllerMappingForGUID(&guid, SDL_FALSE); @@ -17,21 +28,21 @@ Index: src/joystick/SDL_gamecontroller.c +#if defined(__LINUX__) || defined(__OpenBSD__) if (!mapping && name) { - if (SDL_strstr(name, "Xbox 360 Wireless Receiver")) { -+ //if (SDL_strstr(name, "Xbox 360 Wireless Receiver")) { - /* The Linux driver xpad.c maps the wireless dpad to buttons */ - SDL_bool existing; -- mapping = SDL_PrivateAddMappingForGUID(guid, -+ char guid_str[1024]; -+ SDL_JoystickGetGUIDString(guid, guid_str, sizeof(guid_str)); -+ if (SDL_GetHint(SDL_HINT_GAMECONTROLLERCONFIG) == NULL) { -+ mapping = SDL_PrivateAddMappingForGUID(guid, - "none,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", - &existing, SDL_CONTROLLER_MAPPING_PRIORITY_DEFAULT); -- } -+ } else { -+ mapping = SDL_PrivateAddMappingForGUID(guid, SDL_GetHint(SDL_HINT_GAMECONTROLLERCONFIG), &existing, SDL_CONTROLLER_MAPPING_PRIORITY_DEFAULT); -+ } -+ //} +- /* The Linux driver xpad.c maps the wireless dpad to buttons */ +- SDL_bool existing; ++ /* The Linux driver xpad.c maps the wireless dpad to buttons */ ++ SDL_bool existing; ++ char guid_str[1024]; ++ SDL_JoystickGetGUIDString(guid, guid_str, sizeof(guid_str)); ++ if (SDL_GetHint(SDL_HINT_GAMECONTROLLERCONFIG) == NULL) { + mapping = SDL_PrivateAddMappingForGUID(guid, +-"none,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3", +- &existing, SDL_CONTROLLER_MAPPING_PRIORITY_DEFAULT); ++"none,XBox360 Controller,a:b7,b:b8,back:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b2,lefttrigger:a2,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b3,righttrigger:a5,rightx:a3,righty:a4~,start:b0,x:b9,y:b10", ++ &existing, SDL_CONTROLLER_MAPPING_PRIORITY_DEFAULT); ++ } else { ++ mapping = SDL_PrivateAddMappingForGUID(guid, SDL_GetHint(SDL_HINT_GAMECONTROLLERCONFIG), &existing, SDL_CONTROLLER_MAPPING_PRIORITY_DEFAULT); + } } -#endif /* __LINUX__ */ +#endif /* __LINUX__ || __OpenBSD__ */ Index: patches/patch-src_joystick_bsd_SDL_sysjoystick_c =================================================================== RCS file: /cvs/ports/devel/sdl2/patches/patch-src_joystick_bsd_SDL_sysjoystick_c,v retrieving revision 1.1 diff -u -p -r1.1 patch-src_joystick_bsd_SDL_sysjoystick_c --- patches/patch-src_joystick_bsd_SDL_sysjoystick_c 3 Jan 2019 17:55:08 -0000 1.1 +++ patches/patch-src_joystick_bsd_SDL_sysjoystick_c 20 Sep 2019 20:41:27 -0000 @@ -1,109 +0,0 @@ -$OpenBSD: patch-src_joystick_bsd_SDL_sysjoystick_c,v 1.1 2019/01/03 17:55:08 thfr Exp $ - -detect D-Pad as hat and turn D-pad input into equivalent hat position -This improves compatibility with Xbox 360 controller and XInput devices - -Index: src/joystick/bsd/SDL_sysjoystick.c ---- src/joystick/bsd/SDL_sysjoystick.c.orig -+++ src/joystick/bsd/SDL_sysjoystick.c -@@ -80,7 +80,50 @@ - #define MAX_JOY_JOYS 2 - #define MAX_JOYS (MAX_UHID_JOYS + MAX_JOY_JOYS) - -+#ifdef __OpenBSD__ - -+#define HUG_DPAD_UP 0x90 -+#define HUG_DPAD_DOWN 0x91 -+#define HUG_DPAD_RIGHT 0x92 -+#define HUG_DPAD_LEFT 0x93 -+ -+#define HAT_CENTERED 0x00 -+#define HAT_UP 0x01 -+#define HAT_RIGHT 0x02 -+#define HAT_DOWN 0x04 -+#define HAT_LEFT 0x08 -+#define HAT_RIGHTUP (HAT_RIGHT|HAT_UP) -+#define HAT_RIGHTDOWN (HAT_RIGHT|HAT_DOWN) -+#define HAT_LEFTUP (HAT_LEFT|HAT_UP) -+#define HAT_LEFTDOWN (HAT_LEFT|HAT_DOWN) -+ -+/* calculate the value from the state of the dpad */ -+int -+dpad_to_sdl(Sint32 *dpad) -+{ -+ if (dpad[2]) { -+ if (dpad[0]) -+ return HAT_RIGHTUP; -+ else if (dpad[1]) -+ return HAT_RIGHTDOWN; -+ else -+ return HAT_RIGHT; -+ } else if (dpad[3]) { -+ if (dpad[0]) -+ return HAT_LEFTUP; -+ else if (dpad[1]) -+ return HAT_LEFTDOWN; -+ else -+ return HAT_LEFT; -+ } else if (dpad[0]) { -+ return HAT_UP; -+ } else if (dpad[1]) { -+ return HAT_DOWN; -+ } -+ return HAT_CENTERED; -+} -+#endif -+ - struct report - { - #if defined(__FREEBSD__) && (__FreeBSD_kernel_version > 900000) -@@ -432,7 +475,11 @@ desc_failed: - int joyaxe = usage_to_joyaxe(usage); - if (joyaxe >= 0) { - hw->axis_map[joyaxe] = 1; -- } else if (usage == HUG_HAT_SWITCH) { -+ } else if (usage == HUG_HAT_SWITCH -+#ifdef __OpenBSD__ -+ || usage == HUG_DPAD_UP -+#endif -+ ) { - joy->nhats++; - } - break; -@@ -485,6 +532,9 @@ BSD_JoystickUpdate(SDL_Joystick * joy) - struct report *rep; - int nbutton, naxe = -1; - Sint32 v; -+#ifdef __OpenBSD__ -+ Sint32 dpad[4] = {0, 0, 0, 0}; -+#endif - - #if defined(__FREEBSD__) || SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H || defined(__FreeBSD_kernel__) - struct joystick gameport; -@@ -570,6 +620,16 @@ BSD_JoystickUpdate(SDL_Joystick * joy) - hatval_to_sdl(v) - - hitem.logical_minimum); - } -+#ifdef __OpenBSD__ -+ else if (usage == HUG_DPAD_UP) -+ dpad[0] = (Sint32) hid_get_data(REP_BUF_DATA(rep), &hitem); -+ else if (usage == HUG_DPAD_DOWN) -+ dpad[1] = (Sint32) hid_get_data(REP_BUF_DATA(rep), &hitem); -+ else if (usage == HUG_DPAD_RIGHT) -+ dpad[2] = (Sint32) hid_get_data(REP_BUF_DATA(rep), &hitem); -+ else if (usage == HUG_DPAD_LEFT) -+ dpad[3] = (Sint32) hid_get_data(REP_BUF_DATA(rep), &hitem); -+#endif - break; - } - case HUP_BUTTON: -@@ -585,6 +645,9 @@ BSD_JoystickUpdate(SDL_Joystick * joy) - break; - } - } -+#ifdef __OpenBSD__ -+ SDL_PrivateJoystickHat(joy, 0, dpad_to_sdl(dpad)); -+#endif - hid_end_parse(hdata); - } - } Index: patches/patch-src_video_SDL_egl_c =================================================================== RCS file: /cvs/ports/devel/sdl2/patches/patch-src_video_SDL_egl_c,v retrieving revision 1.3 diff -u -p -r1.3 patch-src_video_SDL_egl_c --- patches/patch-src_video_SDL_egl_c 11 Mar 2018 22:40:20 -0000 1.3 +++ patches/patch-src_video_SDL_egl_c 20 Sep 2019 20:41:27 -0000 @@ -2,7 +2,7 @@ $OpenBSD: patch-src_video_SDL_egl_c,v 1. Index: src/video/SDL_egl.c --- src/video/SDL_egl.c.orig +++ src/video/SDL_egl.c -@@ -72,6 +72,13 @@ +@@ -73,6 +73,13 @@ #define DEFAULT_OGL_ES_PVR "libGLES_CM.dylib" //??? #define DEFAULT_OGL_ES "libGLESv1_CM.dylib" //???