From 35065f107014dde0c4ead784d7ffd7b2396f7394 Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Wed, 5 Mar 2025 19:24:43 +0100 Subject: [PATCH 1/2] SDL_compat: patch sdl-config to use setup-hook The setup hook creating SDL_PATH variable was copied from the SDL1, however, the necessary patch to `sdl-config.in` was not adapted making the hook useless. --- pkgs/by-name/sd/SDL_compat/find-headers.patch | 26 +++++++++++++++++++ pkgs/by-name/sd/SDL_compat/package.nix | 8 ++++-- 2 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 pkgs/by-name/sd/SDL_compat/find-headers.patch diff --git a/pkgs/by-name/sd/SDL_compat/find-headers.patch b/pkgs/by-name/sd/SDL_compat/find-headers.patch new file mode 100644 index 000000000000..92b48fb1c2ab --- /dev/null +++ b/pkgs/by-name/sd/SDL_compat/find-headers.patch @@ -0,0 +1,26 @@ +diff --git a/sdl-config.in b/sdl-config.in +index ce332b3..359d574 100755 +--- a/sdl-config.in ++++ b/sdl-config.in +@@ -50,14 +50,18 @@ while test $# -gt 0; do + echo @PROJECT_VERSION@ + ;; + --cflags) +- echo -I${includedir}/SDL @SDL_CFLAGS@ ++ SDL_CFLAGS="" ++ for i in @includedir@/SDL $SDL_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@ ++@ENABLE_SHARED_TRUE@ echo -L${libdir} @SDL_RLD_FLAGS@ @SDL_LIBS@ $SDL_LIB_PATH + @ENABLE_SHARED_TRUE@ ;; + @ENABLE_STATIC_TRUE@@ENABLE_SHARED_TRUE@ --static-libs) + @ENABLE_STATIC_TRUE@@ENABLE_SHARED_FALSE@ --libs|--static-libs) +-@ENABLE_STATIC_TRUE@ echo -L${libdir} @SDL_LIBS@ @SDL_STATIC_LIBS@ ++@ENABLE_STATIC_TRUE@ echo -L${libdir} @SDL_LIBS@ @SDL_STATIC_LIBS@ $SDL_LIB_PATH + @ENABLE_STATIC_TRUE@ ;; + *) + echo "${usage}" 1>&2 diff --git a/pkgs/by-name/sd/SDL_compat/package.nix b/pkgs/by-name/sd/SDL_compat/package.nix index 235613fa3d8d..c1d02ce324b6 100644 --- a/pkgs/by-name/sd/SDL_compat/package.nix +++ b/pkgs/by-name/sd/SDL_compat/package.nix @@ -48,14 +48,18 @@ stdenv.mkDerivation (finalAttrs: { enableParallelBuilding = true; - setupHook = ./setup-hook.sh; - postInstall = '' # allow as a drop in replacement for SDL # Can be removed after treewide switch from pkg-config to pkgconf ln -s $out/lib/pkgconfig/sdl12_compat.pc $out/lib/pkgconfig/sdl.pc ''; + # The setup hook scans paths of buildInputs to find SDL related packages and + # adds their include and library paths to environment variables. The sdl-config + # is patched to use these variables to produce correct flags for compiler. + patches = [ ./find-headers.patch ]; + setupHook = ./setup-hook.sh; + postFixup = '' for lib in $out/lib/*${stdenv.hostPlatform.extensions.sharedLibrary}* ; do if [[ -L "$lib" ]]; then From 16ed9c78b70f4d851d58c115feca8978611fda0c Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Sun, 9 Mar 2025 21:30:47 +0100 Subject: [PATCH 2/2] rott: remove SDL_compat workaround --- pkgs/games/rott/default.nix | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pkgs/games/rott/default.nix b/pkgs/games/rott/default.nix index a91187730151..f9d39a527daa 100644 --- a/pkgs/games/rott/default.nix +++ b/pkgs/games/rott/default.nix @@ -44,12 +44,6 @@ stdenv.mkDerivation rec { "SHAREWARE=${if buildShareware then "1" else "0"}" ]; - # when using SDL_compat instead of SDL1, SDL_mixer isn't correctly detected, - # but there is no harm just specifying it - env.NIX_CFLAGS_COMPILE = toString [ - "-I${lib.getDev SDL_mixer}/include/SDL" - ]; - installPhase = '' runHook preInstall