SDL_image: fix build with clang 16
Use the correct function pointer types to avoid incompatible function pointer type assignment errors with clang 16. Also disable `webp-shared` like the other image formats already do and add it as an explicit dependency.
This commit is contained in:
parent
d72845c2ca
commit
97d56a3365
16
pkgs/by-name/sd/SDL_image/clang16-webp-errors.patch
Normal file
16
pkgs/by-name/sd/SDL_image/clang16-webp-errors.patch
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
diff -ur a/IMG_webp.c b/IMG_webp.c
|
||||||
|
--- a/IMG_webp.c 2012-01-20 20:51:33.000000000 -0500
|
||||||
|
+++ b/IMG_webp.c 2024-07-24 20:48:58.697398200 -0400
|
||||||
|
@@ -47,9 +47,9 @@
|
||||||
|
static struct {
|
||||||
|
int loaded;
|
||||||
|
void *handle;
|
||||||
|
- int/*VP8StatuCode*/ (*webp_get_features_internal) (const uint8_t *data, uint32_t data_size, WebPBitstreamFeatures* const features, int decoder_abi_version);
|
||||||
|
- uint8_t* (*webp_decode_rgb_into) (const uint8_t* data, uint32_t data_size, uint8_t* output_buffer, int output_buffer_size, int output_stride);
|
||||||
|
- uint8_t* (*webp_decode_rgba_into) (const uint8_t* data, uint32_t data_size, uint8_t* output_buffer, int output_buffer_size, int output_stride);
|
||||||
|
+ VP8StatusCode (*webp_get_features_internal) (const uint8_t *data, size_t data_size, WebPBitstreamFeatures* const features, int decoder_abi_version);
|
||||||
|
+ uint8_t* (*webp_decode_rgb_into) (const uint8_t* data, size_t data_size, uint8_t* output_buffer, size_t output_buffer_size, int output_stride);
|
||||||
|
+ uint8_t* (*webp_decode_rgba_into) (const uint8_t* data, size_t data_size, uint8_t* output_buffer, size_t output_buffer_size, int output_stride);
|
||||||
|
} lib;
|
||||||
|
|
||||||
|
#ifdef LOAD_WEBP_DYNAMIC
|
@ -8,6 +8,7 @@
|
|||||||
libjpeg,
|
libjpeg,
|
||||||
libpng,
|
libpng,
|
||||||
libtiff,
|
libtiff,
|
||||||
|
libwebp,
|
||||||
pkg-config,
|
pkg-config,
|
||||||
stdenv,
|
stdenv,
|
||||||
}:
|
}:
|
||||||
@ -29,6 +30,8 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
includes = [ "IMG_xcf.c" ];
|
includes = [ "IMG_xcf.c" ];
|
||||||
hash = "sha256-Z0nyEtE1LNGsGsN9SFG8ZyPDdunmvg81tUnEkrJQk5w=";
|
hash = "sha256-Z0nyEtE1LNGsGsN9SFG8ZyPDdunmvg81tUnEkrJQk5w=";
|
||||||
})
|
})
|
||||||
|
# Fixes incompatible function pointer type errors with clang 16
|
||||||
|
./clang16-webp-errors.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
configureFlags = [
|
configureFlags = [
|
||||||
@ -37,6 +40,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
(lib.enableFeature false "jpg-shared")
|
(lib.enableFeature false "jpg-shared")
|
||||||
(lib.enableFeature false "png-shared")
|
(lib.enableFeature false "png-shared")
|
||||||
(lib.enableFeature false "tif-shared")
|
(lib.enableFeature false "tif-shared")
|
||||||
|
(lib.enableFeature false "webp-shared")
|
||||||
(lib.enableFeature (!stdenv.isDarwin) "sdltest")
|
(lib.enableFeature (!stdenv.isDarwin) "sdltest")
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -52,9 +56,13 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
libjpeg
|
libjpeg
|
||||||
libpng
|
libpng
|
||||||
libtiff
|
libtiff
|
||||||
|
libwebp
|
||||||
];
|
];
|
||||||
|
|
||||||
outputs = [ "out" "dev" ];
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"dev"
|
||||||
|
];
|
||||||
|
|
||||||
strictDeps = true;
|
strictDeps = true;
|
||||||
|
|
||||||
@ -62,8 +70,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
homepage = "http://www.libsdl.org/projects/SDL_image/";
|
homepage = "http://www.libsdl.org/projects/SDL_image/";
|
||||||
description = "SDL image library";
|
description = "SDL image library";
|
||||||
license = lib.licenses.zlib;
|
license = lib.licenses.zlib;
|
||||||
maintainers = lib.teams.sdl.members
|
maintainers = lib.teams.sdl.members ++ (with lib.maintainers; [ ]);
|
||||||
++ (with lib.maintainers; [ ]);
|
|
||||||
inherit (SDL.meta) platforms;
|
inherit (SDL.meta) platforms;
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user