diff options
author | Remi Collet <remi@remirepo.net> | 2022-03-14 12:10:06 +0100 |
---|---|---|
committer | Remi Collet <remi@php.net> | 2022-03-14 12:10:06 +0100 |
commit | 6908d519c25805e072d69c600c863fa392885746 (patch) | |
tree | cb5b198b9eed71c6b8862fe32e3b2d4c3ecaf042 /sdl_mixer-build.patch |
new package
Diffstat (limited to 'sdl_mixer-build.patch')
-rw-r--r-- | sdl_mixer-build.patch | 466 |
1 files changed, 466 insertions, 0 deletions
diff --git a/sdl_mixer-build.patch b/sdl_mixer-build.patch new file mode 100644 index 0000000..cb22e35 --- /dev/null +++ b/sdl_mixer-build.patch @@ -0,0 +1,466 @@ +From be799d73a50fba84803a5640f897d71769886860 Mon Sep 17 00:00:00 2001 +From: Remi Collet <remi@remirepo.net> +Subject: [PATCH] SDL is required + +--- + package.xml | 8 +++++++- + src/php_sdl_mixer.c | 9 ++++++++- + 2 files changed, 15 insertions(+), 2 deletions(-) + +diff --git a/src/php_sdl_mixer.c b/src/php_sdl_mixer.c +index a8a0325..ef58d05 100644 +--- a/src/php_sdl_mixer.c ++++ b/src/php_sdl_mixer.c +@@ -41,8 +41,15 @@ PHP_MINFO_FUNCTION(sdl_mixer) + php_info_print_table_end(); + } + ++static const zend_module_dep ext_deps[] = { ++ ZEND_MOD_REQUIRED("sdl") ++ ZEND_MOD_END ++}; ++ + zend_module_entry sdl_mixer_module_entry = { +- STANDARD_MODULE_HEADER, ++ STANDARD_MODULE_HEADER_EX, ++ NULL, ++ ext_deps, + "SDL_mixer", + ext_functions, + PHP_MINIT(sdl_mixer), +From 6e4308959dae7179beb9422797e7fb637c62b919 Mon Sep 17 00:00:00 2001 +From: Remi Collet <remi@remirepo.net> +Date: Sun, 13 Mar 2022 08:12:37 +0100 +Subject: [PATCH] check if Mix_HasMusicDecoder is available + +--- + config.m4 | 4 ++++ + src/music.c | 2 ++ + src/php_sdl_mixer.stub.php | 7 ++++++- + src/php_sdl_mixer_arginfo.h | 12 ++++++++++-- + 4 files changed, 22 insertions(+), 3 deletions(-) + +diff --git a/config.m4 b/config.m4 +index a70426e..2468383 100644 +--- a/config.m4 ++++ b/config.m4 +@@ -30,6 +30,10 @@ if test "$PHP_SDL_MIXER" != "no"; then + AC_MSG_ERROR([libSDL2_mixer not found!]) + ]) + ++ AC_CHECK_LIB(SDL2_mixer, Mix_HasMusicDecoder, [ ++ AC_DEFINE(HAVE_MIX_HASMUSICDECODER, 1, [ Have sdl_mixer support ]) ++ ]) ++ + AC_DEFINE(HAVE_SDL_MIXER, 1, [ Have sdl_mixer support ]) + + PHP_SUBST(SDL_MIXER_SHARED_LIBADD) +diff --git a/src/music.c b/src/music.c +index 7f4c178..122dffe 100644 +--- a/src/music.c ++++ b/src/music.c +@@ -83,6 +83,7 @@ PHP_FUNCTION(Mix_GetMusicDecoder) + RETURN_STRING(result); + } + ++#if defined(HAVE_MIX_HASMUSICDECODER) + PHP_FUNCTION(Mix_HasMusicDecoder) + { + char *name = NULL; +@@ -96,6 +97,7 @@ PHP_FUNCTION(Mix_HasMusicDecoder) + + RETURN_BOOL(result == SDL_TRUE); + } ++#endif + + PHP_FUNCTION(Mix_PlayMusic) + { +diff --git a/src/php_sdl_mixer.stub.php b/src/php_sdl_mixer.stub.php +index c73689c..0ceef5e 100644 +--- a/src/php_sdl_mixer.stub.php ++++ b/src/php_sdl_mixer.stub.php +@@ -1,6 +1,9 @@ + <?php + +-/** @generate-class-entries */ ++/** ++ * @generate-function-entries ++ * @generate-class-entries ++ */ + + function Mix_Init(int $flags): int {} + function Mix_Quit(): void {} +@@ -42,7 +45,9 @@ function Mix_LoadMUS_RW(SDL_RWops $src, int $freesrc): Mix_Music {} + function Mix_FreeMusic(Mix_Music $music): void {} + function Mix_GetNumMusicDecoders(): int {} + function Mix_GetMusicDecoder(int $index): string {} ++#ifdef HAVE_MIX_HASMUSICDECODER + function Mix_HasMusicDecoder(string $name): bool {} ++#endif + function Mix_PlayMusic(Mix_Music $music, int $loops): int {} + function Mix_FadeInMusic(Mix_Music $music, int $loops, int $ms): int {} + function Mix_FadeInMusicPos(Mix_Music $music, int $loops, int $ms, float $position): int {} +diff --git a/src/php_sdl_mixer_arginfo.h b/src/php_sdl_mixer_arginfo.h +index 848f81a..696df72 100644 +--- a/src/php_sdl_mixer_arginfo.h ++++ b/src/php_sdl_mixer_arginfo.h +@@ -1,5 +1,5 @@ + /* This is a generated file, edit the .stub.php file instead. +- * Stub hash: 1a36e3ed90a9a7c0ff05a89516ad4bcec0ef0d44 */ ++ * Stub hash: 0dec727e1d30954b0817f144d4e81e938a9f2d3c */ + + ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Mix_Init, 0, 1, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0) +@@ -168,7 +168,11 @@ ZEND_END_ARG_INFO() + + #define arginfo_Mix_GetMusicDecoder arginfo_Mix_GetChunkDecoder + +-#define arginfo_Mix_HasMusicDecoder arginfo_Mix_HasChunkDecoder ++#if defined(HAVE_MIX_HASMUSICDECODER) ++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Mix_HasMusicDecoder, 0, 1, _IS_BOOL, 0) ++ ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0) ++ZEND_END_ARG_INFO() ++#endif + + ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Mix_PlayMusic, 0, 2, IS_LONG, 0) + ZEND_ARG_OBJ_INFO(0, music, Mix_Music, 0) +@@ -292,7 +296,9 @@ ZEND_FUNCTION(Mix_LoadMUS_RW); + ZEND_FUNCTION(Mix_FreeMusic); + ZEND_FUNCTION(Mix_GetNumMusicDecoders); + ZEND_FUNCTION(Mix_GetMusicDecoder); ++#if defined(HAVE_MIX_HASMUSICDECODER) + ZEND_FUNCTION(Mix_HasMusicDecoder); ++#endif + ZEND_FUNCTION(Mix_PlayMusic); + ZEND_FUNCTION(Mix_FadeInMusic); + ZEND_FUNCTION(Mix_FadeInMusicPos); +@@ -359,7 +365,9 @@ static const zend_function_entry ext_functions[] = { + ZEND_FE(Mix_FreeMusic, arginfo_Mix_FreeMusic) + ZEND_FE(Mix_GetNumMusicDecoders, arginfo_Mix_GetNumMusicDecoders) + ZEND_FE(Mix_GetMusicDecoder, arginfo_Mix_GetMusicDecoder) ++#if defined(HAVE_MIX_HASMUSICDECODER) + ZEND_FE(Mix_HasMusicDecoder, arginfo_Mix_HasMusicDecoder) ++#endif + ZEND_FE(Mix_PlayMusic, arginfo_Mix_PlayMusic) + ZEND_FE(Mix_FadeInMusic, arginfo_Mix_FadeInMusic) + ZEND_FE(Mix_FadeInMusicPos, arginfo_Mix_FadeInMusicPos) +From 076920930c3cc6b2f347d9f5c860412ced13938d Mon Sep 17 00:00:00 2001 +From: Remi Collet <remi@remirepo.net> +Date: Mon, 14 Mar 2022 10:11:00 +0100 +Subject: [PATCH 1/2] split stub and arginfo + +--- + package.xml | 4 ++++ + src/Mix_Chunk.c | 1 + + src/Mix_Chunk.stub.php | 8 ++++++++ + src/Mix_Chunk_arginfo.h | 20 ++++++++++++++++++++ + src/Mix_Music.c | 1 + + src/Mix_Music.stub.php | 8 ++++++++ + src/Mix_Music_arginfo.h | 20 ++++++++++++++++++++ + src/mixer.c | 5 +---- + src/php_sdl_mixer.c | 1 + + src/php_sdl_mixer.h | 1 - + src/php_sdl_mixer.stub.php | 2 -- + src/php_sdl_mixer_arginfo.h | 34 +--------------------------------- + 12 files changed, 65 insertions(+), 40 deletions(-) + create mode 100644 src/Mix_Chunk.stub.php + create mode 100644 src/Mix_Chunk_arginfo.h + create mode 100644 src/Mix_Music.stub.php + create mode 100644 src/Mix_Music_arginfo.h + +diff --git a/src/Mix_Chunk.c b/src/Mix_Chunk.c +index 014108c..6fa1a5b 100644 +--- a/src/Mix_Chunk.c ++++ b/src/Mix_Chunk.c +@@ -1,4 +1,5 @@ + #include "Mix_Chunk.h" ++#include "Mix_Chunk_arginfo.h" + + zend_class_entry *mix_chunk_ce = NULL; + zend_object_handlers php_mix_chunk_object_handlers; +diff --git a/src/Mix_Chunk.stub.php b/src/Mix_Chunk.stub.php +new file mode 100644 +index 0000000..7814a12 +--- /dev/null ++++ b/src/Mix_Chunk.stub.php +@@ -0,0 +1,8 @@ ++<?php ++ ++/** ++ * @generate-class-entries ++ */ ++ ++final class Mix_Chunk {} ++ +diff --git a/src/Mix_Chunk_arginfo.h b/src/Mix_Chunk_arginfo.h +new file mode 100644 +index 0000000..4ba7331 +--- /dev/null ++++ b/src/Mix_Chunk_arginfo.h +@@ -0,0 +1,20 @@ ++/* This is a generated file, edit the .stub.php file instead. ++ * Stub hash: 4d3739c322fe06235f1b4d21c5ad9a8b3bf45f02 */ ++ ++ ++ ++ ++static const zend_function_entry class_Mix_Chunk_methods[] = { ++ ZEND_FE_END ++}; ++ ++static zend_class_entry *register_class_Mix_Chunk(void) ++{ ++ zend_class_entry ce, *class_entry; ++ ++ INIT_CLASS_ENTRY(ce, "Mix_Chunk", class_Mix_Chunk_methods); ++ class_entry = zend_register_internal_class_ex(&ce, NULL); ++ class_entry->ce_flags |= ZEND_ACC_FINAL; ++ ++ return class_entry; ++} +diff --git a/src/Mix_Music.c b/src/Mix_Music.c +index 3c1e3f5..1030404 100644 +--- a/src/Mix_Music.c ++++ b/src/Mix_Music.c +@@ -1,4 +1,5 @@ + #include "Mix_Music.h" ++#include "Mix_Music_arginfo.h" + + zend_class_entry *mix_music_ce = NULL; + zend_object_handlers php_mix_music_object_handlers; +diff --git a/src/Mix_Music.stub.php b/src/Mix_Music.stub.php +new file mode 100644 +index 0000000..e1b56cc +--- /dev/null ++++ b/src/Mix_Music.stub.php +@@ -0,0 +1,8 @@ ++<?php ++ ++/** ++ * @generate-class-entries ++ */ ++ ++final class Mix_Music {} ++ +diff --git a/src/Mix_Music_arginfo.h b/src/Mix_Music_arginfo.h +new file mode 100644 +index 0000000..c0fb1e9 +--- /dev/null ++++ b/src/Mix_Music_arginfo.h +@@ -0,0 +1,20 @@ ++/* This is a generated file, edit the .stub.php file instead. ++ * Stub hash: c6b5d170cc55f739aa2b0cb08eae7d8d2bb45404 */ ++ ++ ++ ++ ++static const zend_function_entry class_Mix_Music_methods[] = { ++ ZEND_FE_END ++}; ++ ++static zend_class_entry *register_class_Mix_Music(void) ++{ ++ zend_class_entry ce, *class_entry; ++ ++ INIT_CLASS_ENTRY(ce, "Mix_Music", class_Mix_Music_methods); ++ class_entry = zend_register_internal_class_ex(&ce, NULL); ++ class_entry->ce_flags |= ZEND_ACC_FINAL; ++ ++ return class_entry; ++} +diff --git a/src/mixer.c b/src/mixer.c +index c976351..7c5d69b 100644 +--- a/src/mixer.c ++++ b/src/mixer.c +@@ -4,9 +4,6 @@ + + #include "mixer.h" + +-static zend_class_entry *php_mix_chunk_ce; +-static zend_object_handlers php_mix_chunk_handlers; +- + extern zend_class_entry *mix_chunk_ce; + extern zend_class_entry *get_php_sdl_rwops_ce(void); + extern SDL_RWops *zval_to_sdl_rwops(zval *z_val); +@@ -549,4 +546,4 @@ PHP_FUNCTION(Mix_GetError) { + if (error) { + RETURN_STRING(error); + } +-} +\ No newline at end of file ++} +diff --git a/src/php_sdl_mixer.c b/src/php_sdl_mixer.c +index ef58d05..4707e04 100644 +--- a/src/php_sdl_mixer.c ++++ b/src/php_sdl_mixer.c +@@ -1,6 +1,7 @@ + #include "php_sdl_mixer.h" + #include "mixer.h" + #include "music.h" ++#include "php_sdl_mixer_arginfo.h" + + #ifdef COMPILE_DL_SDL_MIXER + ZEND_GET_MODULE(sdl_mixer) +diff --git a/src/php_sdl_mixer.h b/src/php_sdl_mixer.h +index eddf015..c909d33 100644 +--- a/src/php_sdl_mixer.h ++++ b/src/php_sdl_mixer.h +@@ -23,7 +23,6 @@ extern "C" { + #include <php.h> + #include <ext/standard/info.h> + #include "SDL_mixer.h" +-#include "php_sdl_mixer_arginfo.h" + + #ifdef __cplusplus + } // extern "C" +diff --git a/src/php_sdl_mixer.stub.php b/src/php_sdl_mixer.stub.php +index 0ceef5e..05e5596 100644 +--- a/src/php_sdl_mixer.stub.php ++++ b/src/php_sdl_mixer.stub.php +@@ -76,5 +76,3 @@ function Mix_GetError(): string {} + /** @alias SDL_ClearError */ + function Mix_ClearError(): string {} + +-final class Mix_Chunk {} +-final class Mix_Music {} +diff --git a/src/php_sdl_mixer_arginfo.h b/src/php_sdl_mixer_arginfo.h +index 696df72..5af4cbc 100644 +--- a/src/php_sdl_mixer_arginfo.h ++++ b/src/php_sdl_mixer_arginfo.h +@@ -1,5 +1,5 @@ + /* This is a generated file, edit the .stub.php file instead. +- * Stub hash: 0dec727e1d30954b0817f144d4e81e938a9f2d3c */ ++ * Stub hash: 06f9569d612687e9fe0e904dcce9ebd88f9e6997 */ + + ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Mix_Init, 0, 1, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0) +@@ -393,35 +393,3 @@ static const zend_function_entry ext_functions[] = { + ZEND_FALIAS(Mix_ClearError, SDL_ClearError, arginfo_Mix_ClearError) + ZEND_FE_END + }; +- +- +-static const zend_function_entry class_Mix_Chunk_methods[] = { +- ZEND_FE_END +-}; +- +- +-static const zend_function_entry class_Mix_Music_methods[] = { +- ZEND_FE_END +-}; +- +-static zend_class_entry *register_class_Mix_Chunk(void) +-{ +- zend_class_entry ce, *class_entry; +- +- INIT_CLASS_ENTRY(ce, "Mix_Chunk", class_Mix_Chunk_methods); +- class_entry = zend_register_internal_class_ex(&ce, NULL); +- class_entry->ce_flags |= ZEND_ACC_FINAL; +- +- return class_entry; +-} +- +-static zend_class_entry *register_class_Mix_Music(void) +-{ +- zend_class_entry ce, *class_entry; +- +- INIT_CLASS_ENTRY(ce, "Mix_Music", class_Mix_Music_methods); +- class_entry = zend_register_internal_class_ex(&ce, NULL); +- class_entry->ce_flags |= ZEND_ACC_FINAL; +- +- return class_entry; +-} + +From 159a86fb28f2f51da09d9ac7b378095aa23c3326 Mon Sep 17 00:00:00 2001 +From: Remi Collet <remi@remirepo.net> +Date: Mon, 14 Mar 2022 11:14:39 +0100 +Subject: [PATCH 2/2] properly init/quit sdl_mixer library + +--- + src/php_sdl_mixer.c | 39 ++++++++++++++++++++++++++++++++++++++- + 1 file changed, 38 insertions(+), 1 deletion(-) + +diff --git a/src/php_sdl_mixer.c b/src/php_sdl_mixer.c +index 4707e04..9e5d7f8 100644 +--- a/src/php_sdl_mixer.c ++++ b/src/php_sdl_mixer.c +@@ -2,6 +2,7 @@ + #include "mixer.h" + #include "music.h" + #include "php_sdl_mixer_arginfo.h" ++#include "zend_smart_string.h" + + #ifdef COMPILE_DL_SDL_MIXER + ZEND_GET_MODULE(sdl_mixer) +@@ -9,9 +10,13 @@ ZEND_GET_MODULE(sdl_mixer) + + #define PHP_MINIT_CALL(func) PHP_MINIT(func)(INIT_FUNC_ARGS_PASSTHRU) + ++static int sld_mixer_flags; ++ + /* {{{ PHP_MINIT_FUNCTION */ + PHP_MINIT_FUNCTION(sdl_mixer) + { ++ sld_mixer_flags = Mix_Init(MIX_INIT_FLAC|MIX_INIT_MOD|MIX_INIT_MP3|MIX_INIT_OGG|MIX_INIT_MID|MIX_INIT_OPUS); ++ + php_mix_chunk_minit_helper(); + php_mix_music_minit_helper(); + +@@ -25,9 +30,19 @@ PHP_MINIT_FUNCTION(sdl_mixer) + } + /* }}} */ + ++/* {{{ PHP_MINIT_FUNCTION */ ++PHP_MSHUTDOWN_FUNCTION(sdl_mixer) ++{ ++ Mix_Quit(); ++ ++ return SUCCESS; ++} ++/* }}} */ ++ + PHP_MINFO_FUNCTION(sdl_mixer) + { + char buffer[128]; ++ smart_string info = {0}; + SDL_version compile_version; + const SDL_version *link_version = Mix_Linked_Version(); + SDL_MIXER_VERSION(&compile_version); +@@ -39,6 +54,28 @@ PHP_MINFO_FUNCTION(sdl_mixer) + php_info_print_table_row(2, "SDL_mixer linked version", buffer); + snprintf(buffer, sizeof(buffer), "%d.%d.%d", compile_version.major, compile_version.minor, compile_version.patch); + php_info_print_table_row(2, "SDL_mixer compiled version", buffer); ++ if (sld_mixer_flags & MIX_INIT_FLAC) { ++ smart_string_appends(&info, "flac"); ++ } ++ if (sld_mixer_flags & MIX_INIT_MOD) { ++ smart_string_appends(&info, ", mod"); ++ } ++ if (sld_mixer_flags & MIX_INIT_MP3) { ++ smart_string_appends(&info, ", mp3"); ++ } ++ if (sld_mixer_flags & MIX_INIT_OGG) { ++ smart_string_appends(&info, ", ogg"); ++ } ++ if (sld_mixer_flags & MIX_INIT_MID) { ++ smart_string_appends(&info, ", mid"); ++ } ++ if (sld_mixer_flags & MIX_INIT_OPUS) { ++ smart_string_appends(&info, ", opus"); ++ } ++ smart_string_0(&info); ++ php_info_print_table_row(2, "SDL_mixer flags", info.c); ++ smart_string_free(&info); ++ + php_info_print_table_end(); + } + +@@ -54,7 +91,7 @@ zend_module_entry sdl_mixer_module_entry = { + "SDL_mixer", + ext_functions, + PHP_MINIT(sdl_mixer), +- NULL, /* PHP_MSHUTDOWN - Module shutdown */ ++ PHP_MSHUTDOWN(sdl_mixer), + NULL, /* PHP_RINIT - Request initialization */ + NULL, /* PHP_RSHUTDOWN - Request shutdown */ + PHP_MINFO(sdl_mixer), |