From 08f671f9dce9ac08533038bca37c4a8563560710 Mon Sep 17 00:00:00 2001 From: Michał Górny Date: Thu, 15 Apr 2021 21:57:47 +0200 Subject: games-engines/scummvm: Backport fluidsynth-2.2 fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes: https://bugs.gentoo.org/782805 Signed-off-by: Michał Górny --- .../files/scummvm-2.2.0-fluidsynth-2.2.patch | 150 +++++++++++++++++++++ games-engines/scummvm/scummvm-2.2.0-r1.ebuild | 126 +++++++++++++++++ games-engines/scummvm/scummvm-2.2.0.ebuild | 125 ----------------- 3 files changed, 276 insertions(+), 125 deletions(-) create mode 100644 games-engines/scummvm/files/scummvm-2.2.0-fluidsynth-2.2.patch create mode 100644 games-engines/scummvm/scummvm-2.2.0-r1.ebuild delete mode 100644 games-engines/scummvm/scummvm-2.2.0.ebuild (limited to 'games-engines/scummvm') diff --git a/games-engines/scummvm/files/scummvm-2.2.0-fluidsynth-2.2.patch b/games-engines/scummvm/files/scummvm-2.2.0-fluidsynth-2.2.patch new file mode 100644 index 000000000000..8bb94ec6ab6e --- /dev/null +++ b/games-engines/scummvm/files/scummvm-2.2.0-fluidsynth-2.2.patch @@ -0,0 +1,150 @@ +diff --git a/audio/softsynth/fluidsynth.cpp b/audio/softsynth/fluidsynth.cpp +index e0d7c4e3df..d8e82c24f5 100644 +--- a/audio/softsynth/fluidsynth.cpp ++++ b/audio/softsynth/fluidsynth.cpp +@@ -46,6 +46,14 @@ + #include "backends/platform/ios7/ios7_common.h" + #endif + ++// We assume here Fluidsynth minor will never be above 255 and ++// that micro versions won't break API compatibility ++#if defined(FLUIDSYNTH_VERSION_MAJOR) && defined(FLUIDSYNTH_VERSION_MINOR) ++#define FS_API_VERSION ((FLUIDSYNTH_VERSION_MAJOR << 8) | FLUIDSYNTH_VERSION_MINOR) ++#else ++#define FS_API_VERSION 0 ++#endif ++ + class MidiDriver_FluidSynth : public MidiDriver_Emulated { + private: + MidiChannel_MPU401 _midiChannels[16]; +@@ -75,7 +83,7 @@ public: + + void setEngineSoundFont(Common::SeekableReadStream *soundFontData) override; + bool acceptsSoundFontData() override { +-#if defined(FLUIDSYNTH_VERSION_MAJOR) && FLUIDSYNTH_VERSION_MAJOR > 1 ++#if FS_API_VERSION >= 0x0200 + return true; + #else + return false; +@@ -134,7 +142,7 @@ void MidiDriver_FluidSynth::setStr(const char *name, const char *val) { + + // Soundfont memory loader callback functions. + +-#if defined(FLUIDSYNTH_VERSION_MAJOR) && FLUIDSYNTH_VERSION_MAJOR > 1 ++#if FS_API_VERSION >= 0x0200 + static void *SoundFontMemLoader_open(const char *filename) { + void *p; + if (filename[0] != '&') { +@@ -144,11 +152,19 @@ static void *SoundFontMemLoader_open(const char *filename) { + return p; + } + ++#if FS_API_VERSION >= 0x0202 ++static int SoundFontMemLoader_read(void *buf, fluid_long_long_t count, void *handle) { ++#else + static int SoundFontMemLoader_read(void *buf, int count, void *handle) { ++#endif + return ((Common::SeekableReadStream *) handle)->read(buf, count) == (uint32)count ? FLUID_OK : FLUID_FAILED; + } + ++#if FS_API_VERSION >= 0x0202 ++static int SoundFontMemLoader_seek(void *handle, fluid_long_long_t offset, int origin) { ++#else + static int SoundFontMemLoader_seek(void *handle, long offset, int origin) { ++#endif + return ((Common::SeekableReadStream *) handle)->seek(offset, origin) ? FLUID_OK : FLUID_FAILED; + } + +@@ -157,7 +173,11 @@ static int SoundFontMemLoader_close(void *handle) { + return FLUID_OK; + } + ++#if FS_API_VERSION >= 0x0202 ++static fluid_long_long_t SoundFontMemLoader_tell(void *handle) { ++#else + static long SoundFontMemLoader_tell(void *handle) { ++#endif + return ((Common::SeekableReadStream *) handle)->pos(); + } + #endif +@@ -166,7 +186,8 @@ int MidiDriver_FluidSynth::open() { + if (_isOpen) + return MERR_ALREADY_OPEN; + +-#if defined(FLUIDSYNTH_VERSION_MAJOR) && FLUIDSYNTH_VERSION_MAJOR > 1 ++ ++#if FS_API_VERSION >= 0x0200 + // When provided with in-memory SoundFont data, only use the configured + // SoundFont instead if it's explicitly configured on the current game. + bool isUsingInMemorySoundFontData = _engineSoundFontData && !ConfMan.getActiveDomain()->contains("soundfont"); +@@ -195,7 +216,11 @@ int MidiDriver_FluidSynth::open() { + _synth = new_fluid_synth(_settings); + + if (ConfMan.getBool("fluidsynth_chorus_activate")) { ++#if FS_API_VERSION >= 0x0202 ++ fluid_synth_chorus_on(_synth, -1, 1); ++#else + fluid_synth_set_chorus_on(_synth, 1); ++#endif + + int chorusNr = ConfMan.getInt("fluidsynth_chorus_nr"); + double chorusLevel = (double)ConfMan.getInt("fluidsynth_chorus_level") / 100.0; +@@ -210,22 +235,49 @@ int MidiDriver_FluidSynth::open() { + chorusType = FLUID_CHORUS_MOD_TRIANGLE; + } + ++#if FS_API_VERSION >= 0x0202 ++ fluid_synth_set_chorus_group_nr(_synth, -1, chorusNr); ++ fluid_synth_set_chorus_group_level(_synth, -1, chorusLevel); ++ fluid_synth_set_chorus_group_speed(_synth, -1, chorusSpeed); ++ fluid_synth_set_chorus_group_depth(_synth, -1, chorusDepthMs); ++ fluid_synth_set_chorus_group_type(_synth, -1, chorusType); ++#else + fluid_synth_set_chorus(_synth, chorusNr, chorusLevel, chorusSpeed, chorusDepthMs, chorusType); ++#endif + } else { ++#if FS_API_VERSION >= 0x0202 ++ fluid_synth_chorus_on(_synth, -1, 0); ++#else + fluid_synth_set_chorus_on(_synth, 0); ++#endif + } + + if (ConfMan.getBool("fluidsynth_reverb_activate")) { ++#if FS_API_VERSION >= 0x0202 ++ fluid_synth_reverb_on(_synth, -1, 1); ++#else + fluid_synth_set_reverb_on(_synth, 1); ++#endif + + double reverbRoomSize = (double)ConfMan.getInt("fluidsynth_reverb_roomsize") / 100.0; + double reverbDamping = (double)ConfMan.getInt("fluidsynth_reverb_damping") / 100.0; + int reverbWidth = ConfMan.getInt("fluidsynth_reverb_width"); + double reverbLevel = (double)ConfMan.getInt("fluidsynth_reverb_level") / 100.0; + ++#if FS_API_VERSION >= 0x0202 ++ fluid_synth_set_reverb_group_roomsize(_synth, -1, reverbRoomSize); ++ fluid_synth_set_reverb_group_damp(_synth, -1, reverbDamping); ++ fluid_synth_set_reverb_group_width(_synth, -1, reverbWidth); ++ fluid_synth_set_reverb_group_level(_synth, -1, reverbLevel); ++#else + fluid_synth_set_reverb(_synth, reverbRoomSize, reverbDamping, reverbWidth, reverbLevel); ++#endif + } else { ++#if FS_API_VERSION >= 0x0202 ++ fluid_synth_reverb_on(_synth, -1, 0); ++#else + fluid_synth_set_reverb_on(_synth, 0); ++#endif + } + + Common::String interpolation = ConfMan.get("fluidsynth_misc_interpolation"); +@@ -246,7 +298,7 @@ int MidiDriver_FluidSynth::open() { + const char *soundfont = !isUsingInMemorySoundFontData ? + ConfMan.get("soundfont").c_str() : Common::String::format("&%p", (void *)_engineSoundFontData).c_str(); + +-#if defined(FLUIDSYNTH_VERSION_MAJOR) && FLUIDSYNTH_VERSION_MAJOR > 1 ++#if FS_API_VERSION >= 0x0200 + if (isUsingInMemorySoundFontData) { + fluid_sfloader_t *soundFontMemoryLoader = new_fluid_defsfloader(_settings); + fluid_sfloader_set_callbacks(soundFontMemoryLoader, diff --git a/games-engines/scummvm/scummvm-2.2.0-r1.ebuild b/games-engines/scummvm/scummvm-2.2.0-r1.ebuild new file mode 100644 index 000000000000..f4ab2f0515e9 --- /dev/null +++ b/games-engines/scummvm/scummvm-2.2.0-r1.ebuild @@ -0,0 +1,126 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +inherit desktop flag-o-matic toolchain-funcs xdg + +DESCRIPTION="Reimplementation of the SCUMM game engine used in Lucasarts adventures" +HOMEPAGE="https://www.scummvm.org/" +SRC_URI="https://scummvm.org/frs/scummvm/${PV}/${P}.tar.xz" + +LICENSE="GPL-2+ LGPL-2.1 BSD GPL-3-with-font-exception" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~x86" +IUSE="a52 aac alsa debug flac fluidsynth fribidi +gtk jpeg lua mpeg2 mp3 +net opengl png speech theora truetype unsupported vorbis zlib" +RESTRICT="test" # it only looks like there's a test there #77507 + +RDEPEND=" + >=media-libs/libsdl2-2.0.0[sound,joystick,video] + a52? ( media-libs/a52dec ) + aac? ( media-libs/faad2 ) + alsa? ( media-libs/alsa-lib ) + flac? ( media-libs/flac ) + fluidsynth? ( media-sound/fluidsynth:= ) + fribidi? ( dev-libs/fribidi ) + gtk? ( + dev-libs/glib:2 + x11-libs/gtk+:3 + ) + jpeg? ( virtual/jpeg:0 ) + mp3? ( media-libs/libmad ) + mpeg2? ( media-libs/libmpeg2 ) + net? ( media-libs/sdl2-net ) + opengl? ( || ( + virtual/opengl + media-libs/mesa[gles2] + media-libs/mesa[gles1] + ) ) + png? ( media-libs/libpng:0 ) + speech? ( app-accessibility/speech-dispatcher ) + truetype? ( media-libs/freetype:2 ) + theora? ( media-libs/libtheora ) + vorbis? ( + media-libs/libogg + media-libs/libvorbis + ) + zlib? ( sys-libs/zlib:= ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + app-arch/xz-utils + truetype? ( virtual/pkgconfig ) + x86? ( dev-lang/nasm ) +" + +S="${WORKDIR}/${P/_/}" + +PATCHES=( + "${FILESDIR}/${P}-ultima_engine_lua_dep.patch" + "${FILESDIR}/${P}-fluidsynth-2.2.patch" +) + +src_prepare() { + xdg_src_prepare + + # -g isn't needed for nasm here + sed -i \ + -e '/NASMFLAGS/ s/-g//' \ + configure || die + sed -i \ + -e '/INSTALL.*doc/d' \ + -e '/INSTALL.*\/pixmaps/d' \ + -e 's/-s //' \ + ports.mk || die +} + +src_configure() { + use x86 && append-ldflags -Wl,-z,noexecstack + + local myconf=( + --backend=sdl + --host=${CHOST} + --enable-verbose-build + --prefix="${EPREFIX}/usr" + --libdir="${EPREFIX}/usr/$(get_libdir)" + --opengl-mode=$(usex opengl auto none) + --with-sdl-prefix="${EPREFIX}/usr" + $(use_enable a52) + $(use_enable aac faad) + $(use_enable alsa) + $(use_enable debug) + $(use_enable !debug release-mode) + $(use_enable flac) + $(usex fluidsynth '' --disable-fluidsynth) + $(use_enable fribidi) + $(use_enable gtk) + $(use_enable jpeg) + $(use_enable lua) + $(use_enable mp3 mad) + $(use_enable mpeg2) + $(use_enable net sdlnet) + $(use_enable png) + $(use_enable speech tts) + $(use_enable theora theoradec) + $(use_enable truetype freetype2) + $(usex unsupported --enable-all-engines '') + $(use_enable vorbis) + $(use_enable zlib) + $(use_enable x86 nasm) + ) + echo "configure ${myconf[@]}" + # NOT AN AUTOCONF SCRIPT SO DONT CALL ECONF + SDL_CONFIG="sdl2-config" \ + ./configure "${myconf[@]}" "${EXTRA_ECONF}" || die +} + +src_compile() { + emake \ + AR="$(tc-getAR) cru" \ + RANLIB="$(tc-getRANLIB)" \ + STRINGS="$(tc-getSTRINGS)" +} + +src_install() { + default + doicon -s scalable icons/scummvm.svg +} diff --git a/games-engines/scummvm/scummvm-2.2.0.ebuild b/games-engines/scummvm/scummvm-2.2.0.ebuild deleted file mode 100644 index 93e50eddec4f..000000000000 --- a/games-engines/scummvm/scummvm-2.2.0.ebuild +++ /dev/null @@ -1,125 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 -inherit desktop flag-o-matic toolchain-funcs xdg - -DESCRIPTION="Reimplementation of the SCUMM game engine used in Lucasarts adventures" -HOMEPAGE="https://www.scummvm.org/" -SRC_URI="https://scummvm.org/frs/scummvm/${PV}/${P}.tar.xz" - -LICENSE="GPL-2+ LGPL-2.1 BSD GPL-3-with-font-exception" -SLOT="0" -KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~x86" -IUSE="a52 aac alsa debug flac fluidsynth fribidi +gtk jpeg lua mpeg2 mp3 +net opengl png speech theora truetype unsupported vorbis zlib" -RESTRICT="test" # it only looks like there's a test there #77507 - -RDEPEND=" - >=media-libs/libsdl2-2.0.0[sound,joystick,video] - a52? ( media-libs/a52dec ) - aac? ( media-libs/faad2 ) - alsa? ( media-libs/alsa-lib ) - flac? ( media-libs/flac ) - fluidsynth? ( media-sound/fluidsynth ) - fribidi? ( dev-libs/fribidi ) - gtk? ( - dev-libs/glib:2 - x11-libs/gtk+:3 - ) - jpeg? ( virtual/jpeg:0 ) - mp3? ( media-libs/libmad ) - mpeg2? ( media-libs/libmpeg2 ) - net? ( media-libs/sdl2-net ) - opengl? ( || ( - virtual/opengl - media-libs/mesa[gles2] - media-libs/mesa[gles1] - ) ) - png? ( media-libs/libpng:0 ) - speech? ( app-accessibility/speech-dispatcher ) - truetype? ( media-libs/freetype:2 ) - theora? ( media-libs/libtheora ) - vorbis? ( - media-libs/libogg - media-libs/libvorbis - ) - zlib? ( sys-libs/zlib:= ) -" -DEPEND="${RDEPEND}" -BDEPEND=" - app-arch/xz-utils - truetype? ( virtual/pkgconfig ) - x86? ( dev-lang/nasm ) -" - -S="${WORKDIR}/${P/_/}" - -PATCHES=( - "${FILESDIR}/${P}-ultima_engine_lua_dep.patch" -) - -src_prepare() { - xdg_src_prepare - - # -g isn't needed for nasm here - sed -i \ - -e '/NASMFLAGS/ s/-g//' \ - configure || die - sed -i \ - -e '/INSTALL.*doc/d' \ - -e '/INSTALL.*\/pixmaps/d' \ - -e 's/-s //' \ - ports.mk || die -} - -src_configure() { - use x86 && append-ldflags -Wl,-z,noexecstack - - local myconf=( - --backend=sdl - --host=${CHOST} - --enable-verbose-build - --prefix="${EPREFIX}/usr" - --libdir="${EPREFIX}/usr/$(get_libdir)" - --opengl-mode=$(usex opengl auto none) - --with-sdl-prefix="${EPREFIX}/usr" - $(use_enable a52) - $(use_enable aac faad) - $(use_enable alsa) - $(use_enable debug) - $(use_enable !debug release-mode) - $(use_enable flac) - $(usex fluidsynth '' --disable-fluidsynth) - $(use_enable fribidi) - $(use_enable gtk) - $(use_enable jpeg) - $(use_enable lua) - $(use_enable mp3 mad) - $(use_enable mpeg2) - $(use_enable net sdlnet) - $(use_enable png) - $(use_enable speech tts) - $(use_enable theora theoradec) - $(use_enable truetype freetype2) - $(usex unsupported --enable-all-engines '') - $(use_enable vorbis) - $(use_enable zlib) - $(use_enable x86 nasm) - ) - echo "configure ${myconf[@]}" - # NOT AN AUTOCONF SCRIPT SO DONT CALL ECONF - SDL_CONFIG="sdl2-config" \ - ./configure "${myconf[@]}" "${EXTRA_ECONF}" || die -} - -src_compile() { - emake \ - AR="$(tc-getAR) cru" \ - RANLIB="$(tc-getRANLIB)" \ - STRINGS="$(tc-getSTRINGS)" -} - -src_install() { - default - doicon -s scalable icons/scummvm.svg -} -- cgit v1.2.3-65-gdbad