diff --git a/pkgs/by-name/sd/sdl2-compat/find-headers.patch b/pkgs/by-name/sd/sdl2-compat/find-headers.patch new file mode 100644 index 000000000000..4b6687cc4078 --- /dev/null +++ b/pkgs/by-name/sd/sdl2-compat/find-headers.patch @@ -0,0 +1,31 @@ +diff --git a/SDL2Config.cmake.in b/SDL2Config.cmake.in +index 80c1b99..54f50e6 100644 +--- a/SDL2Config.cmake.in ++++ b/SDL2Config.cmake.in +@@ -45,7 +45,8 @@ endif() + set(SDL2_PREFIX "@PACKAGE_CMAKE_INSTALL_PREFIX@") + set(SDL2_EXEC_PREFIX "@PACKAGE_CMAKE_INSTALL_PREFIX@") + set(SDL2_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_FULL_INCLUDEDIR@/SDL2") +-set(SDL2_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_FULL_INCLUDEDIR@;@PACKAGE_CMAKE_INSTALL_FULL_INCLUDEDIR@/SDL2") ++set(SDL2_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_FULL_INCLUDEDIR@;@PACKAGE_CMAKE_INSTALL_FULL_INCLUDEDIR@/SDL2" $ENV{SDL2_PATH}) ++separate_arguments(SDL2_INCLUDE_DIRS) + set(SDL2_BINDIR "@PACKAGE_CMAKE_INSTALL_FULL_BINDIR@") + set(SDL2_LIBDIR "@PACKAGE_CMAKE_INSTALL_FULL_LIBDIR@") + set(SDL2_LIBRARIES SDL2::SDL2) +diff --git a/sdl2-config.in b/sdl2-config.in +index d21b1b2..bb0d624 100644 +--- a/sdl2-config.in ++++ b/sdl2-config.in +@@ -50,7 +50,11 @@ while test $# -gt 0; do + echo @PROJECT_VERSION@ + ;; + --cflags) +- echo -I${includedir}/SDL2 @SDL_CFLAGS@ ++ SDL_CFLAGS="" ++ for i in @includedir@/SDL2 $SDL2_PATH; do ++ SDL_CFLAGS="$SDL_CFLAGS -I$i" ++ done ++ echo $SDL_CFLAGS @SDL_CFLAGS@ + ;; + @ENABLE_SHARED_TRUE@ --libs) + @ENABLE_SHARED_TRUE@ echo -L${libdir} @SDL_RLD_FLAGS@ @SDL_LIBS@ diff --git a/pkgs/by-name/sd/sdl2-compat/package.nix b/pkgs/by-name/sd/sdl2-compat/package.nix index 6d4507dc41ae..392641b68f36 100644 --- a/pkgs/by-name/sd/sdl2-compat/package.nix +++ b/pkgs/by-name/sd/sdl2-compat/package.nix @@ -44,21 +44,21 @@ stdenv.mkDerivation (finalAttrs: { outputBin = "dev"; + # SDL3 is dlopened at runtime, leave it in runpath + dontPatchELF = true; + cmakeFlags = [ (lib.cmakeBool "SDL2COMPAT_TESTS" finalAttrs.finalPackage.doCheck) + (lib.cmakeFeature "CMAKE_INSTALL_RPATH" (lib.makeLibraryPath [ sdl3 ])) ]; + # skip timing-based tests as those are flaky + env.SDL_TESTS_QUICK = 1; + doCheck = testSupport && stdenv.buildPlatform.canExecute stdenv.hostPlatform; - postFixup = - if stdenv.hostPlatform.isDarwin then - '' - install_name_tool -add_rpath ${lib.makeLibraryPath [ sdl3 ]} $out/lib/libSDL2.dylib - '' - else - '' - patchelf --add-rpath ${lib.makeLibraryPath [ sdl3 ]} $out/lib/libSDL2.so - ''; + patches = [ ./find-headers.patch ]; + setupHook = ./setup-hook.sh; passthru = { tests = @@ -92,7 +92,7 @@ stdenv.mkDerivation (finalAttrs: { changelog = "https://github.com/libsdl-org/sdl2-compat/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.zlib; maintainers = with lib.maintainers; [ nadiaholmquist ]; - platforms = lib.platforms.unix; + platforms = lib.platforms.all; pkgConfigModules = [ "sdl2_compat" ]; }; }) diff --git a/pkgs/by-name/sd/sdl2-compat/setup-hook.sh b/pkgs/by-name/sd/sdl2-compat/setup-hook.sh new file mode 100644 index 000000000000..0119926491af --- /dev/null +++ b/pkgs/by-name/sd/sdl2-compat/setup-hook.sh @@ -0,0 +1,7 @@ +addSDL2Path () { + if [ -e "$1/include/SDL2" ]; then + export SDL2_PATH="${SDL2_PATH-}${SDL2_PATH:+ }$1/include/SDL2" + fi +} + +addEnvHooks "$hostOffset" addSDL2Path