[arch-commits] Commit in lib32-sdl2/repos (4 files)

Felix Yan felixonmars at gemini.archlinux.org
Sun Mar 6 16:10:26 UTC 2022


    Date: Sunday, March 6, 2022 @ 16:10:25
  Author: felixonmars
Revision: 1142744

archrelease: copy trunk to multilib-staging-x86_64

Added:
  lib32-sdl2/repos/multilib-staging-x86_64/
  lib32-sdl2/repos/multilib-staging-x86_64/PKGBUILD
    (from rev 1142741, lib32-sdl2/trunk/PKGBUILD)
  lib32-sdl2/repos/multilib-staging-x86_64/cmake-include-paths.patch
    (from rev 1142741, lib32-sdl2/trunk/cmake-include-paths.patch)
  lib32-sdl2/repos/multilib-staging-x86_64/dynapi.patch
    (from rev 1142741, lib32-sdl2/trunk/dynapi.patch)

---------------------------+
 PKGBUILD                  |   74 ++++++++++++++++++++++++++++++++++++++
 cmake-include-paths.patch |   45 +++++++++++++++++++++++
 dynapi.patch              |   84 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 203 insertions(+)

Copied: lib32-sdl2/repos/multilib-staging-x86_64/PKGBUILD (from rev 1142741, lib32-sdl2/trunk/PKGBUILD)
===================================================================
--- multilib-staging-x86_64/PKGBUILD	                        (rev 0)
+++ multilib-staging-x86_64/PKGBUILD	2022-03-06 16:10:25 UTC (rev 1142744)
@@ -0,0 +1,74 @@
+# Maintainer: Maxime Gauduin <alucryd at archlinux.org>
+# Contributor: Jameson Pugh <imntreal at gmail.com>
+# Contributor: J0k3r <moebius282 at gmail.com>
+
+pkgname=lib32-sdl2
+pkgver=2.0.20
+pkgrel=2
+pkgdesc='A library for portable low-level access to a video framebuffer, audio output, mouse, and keyboard'
+arch=(x86_64)
+url=https://www.libsdl.org
+license=(MIT)
+depends=(
+  lib32-glibc
+  lib32-libxext
+  lib32-libxrender
+  lib32-libx11
+  lib32-libgl
+  lib32-libxcursor
+  sdl2
+)
+makedepends=(
+  cmake
+  git
+  jack
+  lib32-alsa-lib
+  lib32-libpulse
+  lib32-libxinerama
+  lib32-libxkbcommon
+  lib32-libxrandr
+  lib32-libxss
+  lib32-mesa
+  lib32-pipewire
+  lib32-wayland
+  ninja
+  wayland-protocols
+)
+optdepends=(
+  'lib32-alsa-lib: ALSA audio driver'
+  'lib32-jack: JACK audio driver'
+  'lib32-libpulse: PulseAudio audio driver'
+  'lib32-pipewire: PipeWire audio driver'
+)
+_tag=b424665e0899769b200231ba943353a5fee1b6b6
+source=(git+https://github.com/libsdl-org/SDL.git#tag=${_tag})
+b2sums=(SKIP)
+
+pkgver() {
+  cd SDL
+  git describe --tags | sed 's/^release-//'
+}
+
+build() {
+  export CC='gcc -m32'
+  export CXX='g++ -m32'
+  export CFLAGS+=" -ffat-lto-objects"
+  export PKG_CONFIG=i686-pc-linux-gnu-pkg-config
+  cmake -S SDL -B build -G Ninja \
+    -DCMAKE_INSTALL_PREFIX=/usr \
+    -DCMAKE_INSTALL_LIBDIR=lib32 \
+    -DSDL_DLOPEN=ON \
+    -DSDL_RPATH=OFF \
+    -DSDL_STATIC=OFF
+  cmake --build build
+}
+
+package() {
+  DESTDIR="${pkgdir}" cmake --install build
+  rm -rf "${pkgdir}"/usr/{bin,include,share}
+  sed -i "s/libSDL2\.a/libSDL2main.a/g" "$pkgdir"/usr/lib32/cmake/SDL2/SDL2Targets-noconfig.cmake
+  install -dm 755 "${pkgdir}"/usr/share/licenses
+  ln -s sdl2 "${pkgdir}"/usr/share/licenses/lib32-sdl2
+}
+
+# vim: ts=2 sw=2 et:

Copied: lib32-sdl2/repos/multilib-staging-x86_64/cmake-include-paths.patch (from rev 1142741, lib32-sdl2/trunk/cmake-include-paths.patch)
===================================================================
--- multilib-staging-x86_64/cmake-include-paths.patch	                        (rev 0)
+++ multilib-staging-x86_64/cmake-include-paths.patch	2022-03-06 16:10:25 UTC (rev 1142744)
@@ -0,0 +1,45 @@
+# HG changeset patch
+# User Bastien Bouclet <bastien.bouclet at gmail.com>
+# Date 1523420183 -7200
+#      Wed Apr 11 06:16:23 2018 +0200
+# Branch cmake-include-path
+# Node ID 52f0351c30b25ec2bb5b0bced247ba858991bec2
+# Parent  fbfacc66c65c3b38ca065ecee1f69fcbc643c14a
+Fix the include path in the installed CMake target import file
+
+Previously the include path was {INSTALL_PREFIX}/include,
+it is now {INSTALL_PREFIX}/include/SDL2 to be consistent with
+the other build and package configuration systems.
+
+Fixes #4128.
+
+diff -r fbfacc66c65c -r 52f0351c30b2 CMakeLists.txt
+--- a/CMakeLists.txt	Mon Mar 26 12:38:29 2018 -0700
++++ b/CMakeLists.txt	Wed Apr 11 06:16:23 2018 +0200
+@@ -1695,7 +1695,7 @@
+ 
+ # Always build SDLmain
+ add_library(SDL2main STATIC ${SDLMAIN_SOURCES})
+-target_include_directories(SDL2main PUBLIC $<INSTALL_INTERFACE:include>)
++target_include_directories(SDL2main PUBLIC $<INSTALL_INTERFACE:include/SDL2>)
+ set(_INSTALL_LIBS "SDL2main")
+ if (NOT ANDROID)
+   set_target_properties(SDL2main PROPERTIES DEBUG_POSTFIX ${SDL_CMAKE_DEBUG_POSTFIX})
+@@ -1724,7 +1724,7 @@
+   endif()
+   set(_INSTALL_LIBS "SDL2" ${_INSTALL_LIBS})
+   target_link_libraries(SDL2 ${EXTRA_LIBS} ${EXTRA_LDFLAGS})
+-  target_include_directories(SDL2 PUBLIC $<INSTALL_INTERFACE:include>)
++  target_include_directories(SDL2 PUBLIC $<INSTALL_INTERFACE:include/SDL2>)
+   if (NOT ANDROID)
+     set_target_properties(SDL2 PROPERTIES DEBUG_POSTFIX ${SDL_CMAKE_DEBUG_POSTFIX})
+   endif()
+@@ -1750,7 +1750,7 @@
+   # libraries - do we need to consider this?
+   set(_INSTALL_LIBS "SDL2-static" ${_INSTALL_LIBS})
+   target_link_libraries(SDL2-static ${EXTRA_LIBS} ${EXTRA_LDFLAGS})
+-  target_include_directories(SDL2-static PUBLIC $<INSTALL_INTERFACE:include>)
++  target_include_directories(SDL2-static PUBLIC $<INSTALL_INTERFACE:include/SDL2>)
+   if (NOT ANDROID)
+     set_target_properties(SDL2-static PROPERTIES DEBUG_POSTFIX ${SDL_CMAKE_DEBUG_POSTFIX})
+   endif()

Copied: lib32-sdl2/repos/multilib-staging-x86_64/dynapi.patch (from rev 1142741, lib32-sdl2/trunk/dynapi.patch)
===================================================================
--- multilib-staging-x86_64/dynapi.patch	                        (rev 0)
+++ multilib-staging-x86_64/dynapi.patch	2022-03-06 16:10:25 UTC (rev 1142744)
@@ -0,0 +1,84 @@
+
+# HG changeset patch
+# User Ryan C. Gordon <icculus at icculus.org>
+# Date 1526575846 14400
+# Node ID 7babfecee045fac18d95e5936fede534ca54ed24
+# Parent  9e46f3dd75fd2e85e0e3ebb8a77329bc74a16e70
+dynapi: don't let system loader resolve the initializer to the wrong version.
+
+Fixes problems launching Firewatch on Linux (which statically links SDL but
+also dynamically loads a system-wide copy from a plugin shared library) with
+a newer SDL build.
+
+diff -r 9e46f3dd75fd -r 7babfecee045 src/dynapi/SDL_dynapi.c
+--- a/src/dynapi/SDL_dynapi.c	Fri May 11 09:37:00 2018 +0300
++++ b/src/dynapi/SDL_dynapi.c	Thu May 17 12:50:46 2018 -0400
+@@ -167,15 +167,10 @@
+ #error Write me.
+ #endif
+ 
+-
+-
+-/* Here's the exported entry point that fills in the jump table. */
+-/*  Use specific types when an "int" might suffice to keep this sane. */
+-typedef Sint32 (SDLCALL *SDL_DYNAPI_ENTRYFN)(Uint32 apiver, void *table, Uint32 tablesize);
+-extern DECLSPEC Sint32 SDLCALL SDL_DYNAPI_entry(Uint32, void *, Uint32);
+-
+-Sint32
+-SDL_DYNAPI_entry(Uint32 apiver, void *table, Uint32 tablesize)
++/* we make this a static function so we can call the correct one without the
++   system's dynamic linker resolving to the wrong version of this. */
++static Sint32
++initialize_jumptable(Uint32 apiver, void *table, Uint32 tablesize)
+ {
+     SDL_DYNAPI_jump_table *output_jump_table = (SDL_DYNAPI_jump_table *) table;
+ 
+@@ -202,6 +197,18 @@
+ }
+ 
+ 
++/* Here's the exported entry point that fills in the jump table. */
++/*  Use specific types when an "int" might suffice to keep this sane. */
++typedef Sint32 (SDLCALL *SDL_DYNAPI_ENTRYFN)(Uint32 apiver, void *table, Uint32 tablesize);
++extern DECLSPEC Sint32 SDLCALL SDL_DYNAPI_entry(Uint32, void *, Uint32);
++
++Sint32
++SDL_DYNAPI_entry(Uint32 apiver, void *table, Uint32 tablesize)
++{
++    return initialize_jumptable(apiver, table, tablesize);
++}
++
++
+ /* Obviously we can't use SDL_LoadObject() to load SDL.  :)  */
+ /* Also obviously, we never close the loaded library. */
+ #if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__)
+@@ -260,7 +267,7 @@
+ SDL_InitDynamicAPILocked(void)
+ {
+     const char *libname = SDL_getenv_REAL("SDL_DYNAMIC_API");
+-    SDL_DYNAPI_ENTRYFN entry = SDL_DYNAPI_entry;  /* funcs from here by default. */
++    SDL_DYNAPI_ENTRYFN entry = NULL;  /* funcs from here by default. */
+ 
+     if (libname) {
+         entry = (SDL_DYNAPI_ENTRYFN) get_sdlapi_entry(libname, "SDL_DYNAPI_entry");
+@@ -268,16 +275,15 @@
+             /* !!! FIXME: fail to startup here instead? */
+             /* !!! FIXME: definitely warn user. */
+             /* Just fill in the function pointers from this library. */
+-            entry = SDL_DYNAPI_entry;
+         }
+     }
+ 
+-    if (entry(SDL_DYNAPI_VERSION, &jump_table, sizeof (jump_table)) < 0) {
++    if (!entry || (entry(SDL_DYNAPI_VERSION, &jump_table, sizeof (jump_table)) < 0)) {
+         /* !!! FIXME: fail to startup here instead? */
+         /* !!! FIXME: definitely warn user. */
+         /* Just fill in the function pointers from this library. */
+-        if (entry != SDL_DYNAPI_entry) {
+-            if (!SDL_DYNAPI_entry(SDL_DYNAPI_VERSION, &jump_table, sizeof (jump_table))) {
++        if (!entry) {
++            if (!initialize_jumptable(SDL_DYNAPI_VERSION, &jump_table, sizeof (jump_table))) {
+                 /* !!! FIXME: now we're screwed. Should definitely abort now. */
+             }
+         }
+



More information about the arch-commits mailing list