From 57908c1624f93fd5c77b5d6cd094ab6bca8577e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Hamb=C3=BCchen?= Date: Sun, 3 Nov 2019 18:36:28 +0100 Subject: [PATCH] SDL2: Keep .a files on `dontDisableStatic`; don't move them to $dev; prune .la. Most other packages don't move `.a` files to "$dev", and that is because it makes the pkg-config `.pc` file wrong (the `libdir` is the non-dev one). Keeping them in the main output makes static linking of SDL2 work. See added comment about pruning of `.la` files. --- pkgs/development/libraries/SDL2/default.nix | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/SDL2/default.nix b/pkgs/development/libraries/SDL2/default.nix index 8fe6bbe61130..e02ea05a7262 100644 --- a/pkgs/development/libraries/SDL2/default.nix +++ b/pkgs/development/libraries/SDL2/default.nix @@ -75,9 +75,21 @@ stdenv.mkDerivation rec { ++ optional alsaSupport "--with-alsa-prefix=${alsaLib.out}/lib" ++ optional stdenv.isDarwin "--disable-sdltest"; + # We remove libtool .la files when static libs are requested, + # because they make the builds of downstream libs like `SDL_tff` + # fail with `cannot find -lXext, `-lXcursor` etc. linker errors + # because the `.la` files are not pruned if static libs exist + # (see https://github.com/NixOS/nixpkgs/commit/fd97db43bcb05e37f6bb77f363f1e1e239d9de53) + # and they also don't carry the necessary `-L` paths of their + # X11 dependencies. + # For static linking, it is better to rely on `pkg-config` `.pc` + # files. postInstall = '' - moveToOutput lib/libSDL2main.a "$dev" - rm $out/lib/*.a + if [ "$dontDisableStatic" -eq "1" ]; then + rm $out/lib/*.la + else + rm $out/lib/*.a + fi moveToOutput bin/sdl2-config "$dev" '';