Here is a diff to SDL3 to add getexecpath() support.

Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/sdl3/Makefile,v
retrieving revision 1.9
diff -u -p -u -p -r1.9 Makefile
--- Makefile    8 Sep 2026 12:45:28 -0000       1.9
+++ Makefile    11 Sep 2026 06:31:18 -0000
@@ -3,6 +3,7 @@ COMMENT =               cross-platform multimedia lib
 V =                    3.4.16
 DISTNAME =             SDL3-${V}
 PKGNAME =              ${DISTNAME:L}
+REVISION =             0
 
 SHARED_LIBS +=         SDL3                      0.1 # 3.4.0
 
Index: patches/patch-CMakeLists_txt
===================================================================
RCS file: patches/patch-CMakeLists_txt
diff -N patches/patch-CMakeLists_txt
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-CMakeLists_txt        11 Sep 2026 06:31:18 -0000
@@ -0,0 +1,14 @@
+- fs: Use getexecpath() on OpenBSD for GetExePath().
+  b7606be372bff4f434d0e2e06ca8a1edd249cde4
+
+Index: CMakeLists.txt
+--- CMakeLists.txt.orig
++++ CMakeLists.txt
+@@ -1159,6 +1159,7 @@ if(SDL_LIBC)
+ 
+   if(NOT WINDOWS)
+     check_symbol_exists(fdatasync "unistd.h" HAVE_FDATASYNC)
++    check_symbol_exists(getexecpath "unistd.h" HAVE_GETEXECPATH)
+     check_symbol_exists(gethostname "unistd.h" HAVE_GETHOSTNAME)
+     check_symbol_exists(getpagesize "unistd.h" HAVE_GETPAGESIZE)
+     check_symbol_exists(getresgid "unistd.h" HAVE_GETRESGID)
Index: patches/patch-include_build_config_SDL_build_config_h_cmake
===================================================================
RCS file: patches/patch-include_build_config_SDL_build_config_h_cmake
diff -N patches/patch-include_build_config_SDL_build_config_h_cmake
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-include_build_config_SDL_build_config_h_cmake 11 Sep 2026 
06:31:18 -0000
@@ -0,0 +1,14 @@
+- fs: Follow up to the initial getexecpath() support
+  c545b20bd7fbd536a37c00271e6d474acc861a34
+
+Index: include/build_config/SDL_build_config.h.cmake
+--- include/build_config/SDL_build_config.h.cmake.orig
++++ include/build_config/SDL_build_config.h.cmake
+@@ -73,6 +73,7 @@
+ #cmakedefine HAVE_DLOPEN 1
+ #cmakedefine HAVE_MALLOC 1
+ #cmakedefine HAVE_FDATASYNC 1
++#cmakedefine HAVE_GETEXECPATH 1
+ #cmakedefine HAVE_GETENV 1
+ #cmakedefine HAVE_GETHOSTNAME 1
+ #cmakedefine HAVE_SETENV 1
Index: patches/patch-src_filesystem_unix_SDL_sysfilesystem_c
===================================================================
RCS file: patches/patch-src_filesystem_unix_SDL_sysfilesystem_c
diff -N patches/patch-src_filesystem_unix_SDL_sysfilesystem_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_filesystem_unix_SDL_sysfilesystem_c       11 Sep 2026 
06:31:18 -0000
@@ -0,0 +1,41 @@
+- fs: Use getexecpath() on OpenBSD for GetExePath().
+  b7606be372bff4f434d0e2e06ca8a1edd249cde4
+- fs: Follow up to the initial getexecpath() support
+  c545b20bd7fbd536a37c00271e6d474acc861a34
+
+Index: src/filesystem/unix/SDL_sysfilesystem.c
+--- src/filesystem/unix/SDL_sysfilesystem.c.orig
++++ src/filesystem/unix/SDL_sysfilesystem.c
+@@ -71,7 +71,7 @@ static char *readSymLink(const char *path)
+     return NULL;
+ }
+ 
+-#ifdef SDL_PLATFORM_OPENBSD
++#if defined(SDL_PLATFORM_OPENBSD) && !defined(HAVE_GETEXECPATH)
+ static char *search_path_for_binary(const char *bin)
+ {
+     const char *envr_real = SDL_getenv("PATH");
+@@ -138,6 +138,15 @@ static char *GetExePath(void)
+     }
+ #endif
+ #ifdef SDL_PLATFORM_OPENBSD
++#ifdef HAVE_GETEXECPATH
++    char fullpath[PATH_MAX];
++    if (getexecpath(fullpath, sizeof(fullpath)) == 0) {
++        result = SDL_strdup(fullpath);
++        if (!result) {
++            return NULL;
++        }
++    }
++#else
+     // Please note that this will fail if the process was launched with a 
relative path and $PWD + the cwd have changed, or argv is altered. So don't do 
that. Or add a new sysctl to OpenBSD.
+     char **cmdline;
+     size_t len;
+@@ -193,6 +202,7 @@ static char *GetExePath(void)
+ 
+         SDL_free(cmdline);
+     }
++#endif
+ #endif
+ 
+     // is a Linux-style /proc filesystem available?

Reply via email to