Browse Source

use bleeding edge sdl_mixer

Signed-off-by: Michel-FK <michel.stempin@funkey-project.com>
Michel-FK 3 years ago
parent
commit
444b6a5b6c

+ 15 - 9
package/sdl_mixer/0002-add-LDFLAGS-while-linking.patch

@@ -11,19 +11,25 @@ when -static is correctly passed in the linking step.
 
 Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
 
-diff -Nur SDL_mixer-1.2.12.orig/Makefile.in SDL_mixer-1.2.12/Makefile.in
---- SDL_mixer-1.2.12.orig/Makefile.in	2012-01-15 23:01:04.000000000 +0100
-+++ SDL_mixer-1.2.12/Makefile.in	2016-12-07 08:29:22.479786596 +0100
-@@ -66,10 +66,10 @@
- 	$(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS)
+Revised patch so it would also work with SDL_mixer 1.2.13
+
+diff -Nur SDL_mixer-1.2.13.orig/Makefile.in SDL_mixer-1.2.13/Makefile.in
+--- SDL_mixer-1.2.13.orig/Makefile.in	2012-01-15 23:01:04.000000000 +0100
++++ SDL_mixer-1.2.13/Makefile.in	2016-12-07 08:29:22.479786596 +0100
+@@ -63,13 +63,13 @@
+ .PHONY: all install install-hdrs install-lib install-bin uninstall uninstall-hdrs uninstall-lib uninstall-bin clean distclean dist
+ 
+ $(objects)/$(TARGET): $(OBJECTS) $(VERSION_OBJECTS)
+-	$(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(SDL_LIBS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS)
++	$(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(SDL_LIBS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS)
  
  $(objects)/playwave$(EXE): $(objects)/playwave.lo $(objects)/$(TARGET)
--	$(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET)
-+	$(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(LDFLAGS) $(objects)/$(TARGET)
+-	$(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(LDFLAGS) $(objects)/$(TARGET)
++	$(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(LDFLAGS) $(LDFLAGS) $(objects)/$(TARGET)
  
  $(objects)/playmus$(EXE): $(objects)/playmus.lo $(objects)/$(TARGET)
--	$(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET)
-+	$(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(SDL_LIBS) $(LDFLAGS) $(objects)/$(TARGET)
+-	$(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(SDL_LIBS) $(LDFLAGS) $(objects)/$(TARGET)
++	$(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(SDL_LIBS) $(LDFLAGS) $(LDFLAGS) $(objects)/$(TARGET)
  
  install: all install-hdrs install-lib #install-bin
  install-hdrs:

+ 12 - 0
package/sdl_mixer/0004-modpluginclude.patch

@@ -0,0 +1,12 @@
+diff -ru SDL_mixer-1.2.13.org/configure.in SDL_mixer-1.2.13/configure.in
+--- SDL_mixer-1.2.13.org/configure.in	2012-01-15 23:01:05.000000000 +0100
++++ SDL_mixer-1.2.13/configure.in	2014-07-03 05:25:44.761854572 +0200
+@@ -301,7 +301,7 @@
+         have_libmikmod=yes
+         AC_MSG_CHECKING([for libmikmod - version >= $libmikmod_ver])
+         AC_TRY_RUN([
+-#include "mikmod.h"
++#include "libmodplug/mikmod.h"
+ #include "stdio.h"
+ 
+ int main(int argc, char **argv)

+ 58 - 0
package/sdl_mixer/0005-Fixwontbuildontremor.patch

@@ -0,0 +1,58 @@
+--- a/configure.in
++++ a/configure.in
+@@ -449,7 +449,7 @@
+                 echo "-- dynamic libvorbisidec -> $ogg_lib"
+                 EXTRA_CFLAGS="$EXTRA_CFLAGS -DOGG_DYNAMIC=\\\"$ogg_lib\\\""
+             else
+-                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lvorbisidec -lvorbis"
++                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lvorbisidec "
+             fi
+         else
+             AC_MSG_WARN([*** Unable to find Ogg Vorbis Tremor library (http://www.xiph.org/)])
+@@ -457,7 +457,7 @@
+         fi
+     else
+         AC_CHECK_HEADER([vorbis/vorbisfile.h], [have_ogg_hdr=yes])
+-        AC_CHECK_LIB([vorbisfile], [ov_open_callbacks], [have_ogg_lib=yes], [], [-lvorbis -logg -lm])
++        AC_CHECK_LIB([vorbisfile], [ov_open_callbacks], [have_ogg_lib=yes], [], [ -logg -lm])
+         if test x$have_ogg_hdr = xyes -a x$have_ogg_lib = xyes; then
+             case "$host" in
+                 *-*-darwin*)
+@@ -479,7 +479,7 @@
+                 echo "-- dynamic libvorbisfile -> $ogg_lib"
+                 EXTRA_CFLAGS="$EXTRA_CFLAGS -DOGG_DYNAMIC=\\\"$ogg_lib\\\""
+             else
+-                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lvorbisfile -lvorbis -logg -lm"
++                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lvorbisfile  -logg -lm"
+             fi
+         else
+             AC_MSG_WARN([*** Unable to find Ogg Vorbis library (http://www.xiph.org/)])
+--- a/configure
++++ a/configure
+@@ -13936,7 +13936,7 @@
+                 echo "-- dynamic libvorbisidec -> $ogg_lib"
+                 EXTRA_CFLAGS="$EXTRA_CFLAGS -DOGG_DYNAMIC=\\\"$ogg_lib\\\""
+             else
+-                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lvorbisidec -lvorbis"
++                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lvorbisidec "
+             fi
+         else
+             { $as_echo "$as_me:$LINENO: WARNING: *** Unable to find Ogg Vorbis Tremor library (http://www.xiph.org/)" >&5
+@@ -14083,7 +14083,7 @@
+   $as_echo_n "(cached) " >&6
+ else
+   ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lvorbisfile -lvorbis -logg -lm $LIBS"
++LIBS="-lvorbisfile  -logg -lm $LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+@@ -14167,7 +14167,7 @@
+                 echo "-- dynamic libvorbisfile -> $ogg_lib"
+                 EXTRA_CFLAGS="$EXTRA_CFLAGS -DOGG_DYNAMIC=\\\"$ogg_lib\\\""
+             else
+-                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lvorbisfile -lvorbis -logg -lm"
++                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lvorbisfile  -logg -lm"
+             fi
+         else
+             { $as_echo "$as_me:$LINENO: WARNING: *** Unable to find Ogg Vorbis library (http://www.xiph.org/)" >&5

+ 781 - 0
package/sdl_mixer/0006-staticerrorhack.patch

@@ -0,0 +1,781 @@
+--- a/dynamic_mod.c
++++ b/dynamic_mod.c
+@@ -28,6 +28,8 @@
+ mikmod_loader mikmod = {
+ 	0, NULL
+ };
++
++#undef MOD_DYNAMIC
+ 
+ #ifdef MOD_DYNAMIC
+ int Mix_InitMOD()
+
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -47,7 +47,7 @@
+ LT_REVISION = @LT_REVISION@
+ LT_LDFLAGS  = -no-undefined -rpath $(libdir) -release $(LT_RELEASE) -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
+ 
+-all: $(srcdir)/configure Makefile $(objects) $(objects)/$(TARGET) $(objects)/playwave$(EXE) $(objects)/playmus$(EXE)
++all: $(srcdir)/configure Makefile $(objects) $(objects)/$(TARGET)
+ 
+ $(srcdir)/configure: $(srcdir)/configure.in
+ 	@echo "Warning, configure.in is out of date"
+
+--- a/playmus.c
++++ b/playmus.c
+@@ -1,247 +0,0 @@
+-/*
+-  PLAYMUS:  A test application for the SDL mixer library.
+-  Copyright (C) 1997-2012 Sam Lantinga <slouken@libsdl.org>
+-
+-  This software is provided 'as-is', without any express or implied
+-  warranty.  In no event will the authors be held liable for any damages
+-  arising from the use of this software.
+-
+-  Permission is granted to anyone to use this software for any purpose,
+-  including commercial applications, and to alter it and redistribute it
+-  freely, subject to the following restrictions:
+-
+-  1. The origin of this software must not be misrepresented; you must not
+-     claim that you wrote the original software. If you use this software
+-     in a product, an acknowledgment in the product documentation would be
+-     appreciated but is not required.
+-  2. Altered source versions must be plainly marked as such, and must not be
+-     misrepresented as being the original software.
+-  3. This notice may not be removed or altered from any source distribution.
+-*/
+-
+-/* $Id$ */
+-
+-#include <stdlib.h>
+-#include <stdio.h>
+-#include <string.h>
+-
+-#ifdef unix
+-#include <unistd.h>
+-#endif
+-
+-#include "SDL.h"
+-#include "SDL_mixer.h"
+-
+-#ifdef HAVE_SIGNAL_H
+-#include <signal.h>
+-#endif
+-
+-
+-static int audio_open = 0;
+-static Mix_Music *music = NULL;
+-static int next_track = 0;
+-
+-void CleanUp(int exitcode)
+-{
+-	if( Mix_PlayingMusic() ) {
+-		Mix_FadeOutMusic(1500);
+-		SDL_Delay(1500);
+-	}
+-	if ( music ) {
+-		Mix_FreeMusic(music);
+-		music = NULL;
+-	}
+-	if ( audio_open ) {
+-		Mix_CloseAudio();
+-		audio_open = 0;
+-	}
+-	SDL_Quit();
+-	exit(exitcode);
+-}
+-
+-void Usage(char *argv0)
+-{
+-	fprintf(stderr, "Usage: %s [-i] [-l] [-8] [-r rate] [-c channels] [-b buffers] [-v N] [-rwops] <musicfile>\n", argv0);
+-}
+-
+-/*#define SEEK_TEST */
+-void Menu(void)
+-{
+-	char buf[10];
+-
+-	printf("Available commands: (p)ause (r)esume (h)alt volume(v#) > ");
+-	fflush(stdin);
+-	if (scanf("%s",buf) == 1) {
+-		switch(buf[0]){
+-#if defined(SEEK_TEST)
+-		case '0': Mix_SetMusicPosition(0); break;
+-		case '1': Mix_SetMusicPosition(10);break;
+-		case '2': Mix_SetMusicPosition(20);break;
+-		case '3': Mix_SetMusicPosition(30);break;
+-		case '4': Mix_SetMusicPosition(40);break;
+-#endif /* SEEK_TEST */
+-		case 'p': case 'P':
+-			Mix_PauseMusic();
+-			break;
+-		case 'r': case 'R':
+-			Mix_ResumeMusic();
+-			break;
+-		case 'h': case 'H':
+-			Mix_HaltMusic();
+-			break;
+-		case 'v': case 'V':
+-			Mix_VolumeMusic(atoi(buf+1));
+-			break;
+-		}
+-	}
+-	printf("Music playing: %s Paused: %s\n", Mix_PlayingMusic() ? "yes" : "no", 
+-		   Mix_PausedMusic() ? "yes" : "no");
+-}
+-
+-#ifdef HAVE_SIGNAL_H
+-
+-void IntHandler(int sig)
+-{
+-	switch (sig) {
+-	        case SIGINT:
+-			next_track++;
+-			break;
+-	}
+-}
+-
+-#endif
+-
+-int main(int argc, char *argv[])
+-{
+-	SDL_RWops *rwfp = NULL;
+-	int audio_rate;
+-	Uint16 audio_format;
+-	int audio_channels;
+-	int audio_buffers;
+-	int audio_volume = MIX_MAX_VOLUME;
+-	int looping = 0;
+-	int interactive = 0;
+-	int rwops = 0;
+-	int i;
+-
+-	/* Initialize variables */
+-	audio_rate = 22050;
+-	audio_format = AUDIO_S16;
+-	audio_channels = 2;
+-	audio_buffers = 4096;
+-
+-	/* Check command line usage */
+-	for ( i=1; argv[i] && (*argv[i] == '-'); ++i ) {
+-		if ( (strcmp(argv[i], "-r") == 0) && argv[i+1] ) {
+-			++i;
+-			audio_rate = atoi(argv[i]);
+-		} else
+-		if ( strcmp(argv[i], "-m") == 0 ) {
+-			audio_channels = 1;
+-		} else
+-		if ( (strcmp(argv[i], "-c") == 0) && argv[i+1] ) {
+-			++i;
+-			audio_channels = atoi(argv[i]);
+-		} else
+-		if ( (strcmp(argv[i], "-b") == 0) && argv[i+1] ) {
+-			++i;
+-			audio_buffers = atoi(argv[i]);
+-		} else
+-		if ( (strcmp(argv[i], "-v") == 0) && argv[i+1] ) {
+-			++i;
+-			audio_volume = atoi(argv[i]);
+-		} else
+-		if ( strcmp(argv[i], "-l") == 0 ) {
+-			looping = -1;
+-		} else
+-		if ( strcmp(argv[i], "-i") == 0 ) {
+-			interactive = 1;
+-		} else
+-		if ( strcmp(argv[i], "-8") == 0 ) {
+-			audio_format = AUDIO_U8;
+-		} else
+-		if ( strcmp(argv[i], "-rwops") == 0 ) {
+-			rwops = 1;
+-		} else {
+-			Usage(argv[0]);
+-			return(1);
+-		}
+-	}
+-	if ( ! argv[i] ) {
+-		Usage(argv[0]);
+-		return(1);
+-	}
+-
+-	/* Initialize the SDL library */
+-	if ( SDL_Init(SDL_INIT_AUDIO) < 0 ) {
+-		fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError());
+-		return(255);
+-	}
+-
+-#ifdef HAVE_SIGNAL_H
+-	signal(SIGINT, IntHandler);
+-	signal(SIGTERM, CleanUp);
+-#endif
+-
+-	/* Open the audio device */
+-	if (Mix_OpenAudio(audio_rate, audio_format, audio_channels, audio_buffers) < 0) {
+-		fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError());
+-		return(2);
+-	} else {
+-		Mix_QuerySpec(&audio_rate, &audio_format, &audio_channels);
+-		printf("Opened audio at %d Hz %d bit %s (%s), %d bytes audio buffer\n", audio_rate,
+-			(audio_format&0xFF),
+-			(audio_channels > 2) ? "surround" : (audio_channels > 1) ? "stereo" : "mono", 
+-			(audio_format&0x1000) ? "BE" : "LE",
+-			audio_buffers );
+-	}
+-	audio_open = 1;
+-
+-	/* Set the music volume */
+-	Mix_VolumeMusic(audio_volume);
+-
+-	/* Set the external music player, if any */
+-	Mix_SetMusicCMD(SDL_getenv("MUSIC_CMD"));
+-
+-	while (argv[i]) {
+-		next_track = 0;
+-		
+-		/* Load the requested music file */
+-		if ( rwops ) {
+-			rwfp = SDL_RWFromFile(argv[i], "rb");
+-			music = Mix_LoadMUS_RW(rwfp);
+-		} else {
+-			music = Mix_LoadMUS(argv[i]);
+-		}
+-		if ( music == NULL ) {
+-			fprintf(stderr, "Couldn't load %s: %s\n",
+-				argv[i], SDL_GetError());
+-			CleanUp(2);
+-		}
+-		
+-		/* Play and then exit */
+-		printf("Playing %s\n", argv[i]);
+-		Mix_FadeInMusic(music,looping,2000);
+-		while ( !next_track && (Mix_PlayingMusic() || Mix_PausedMusic()) ) {
+-			if(interactive)
+-				Menu();
+-			else
+-				SDL_Delay(100);
+-		}
+-		Mix_FreeMusic(music);
+-		if ( rwops ) {
+-			SDL_RWclose(rwfp);
+-		}
+-		music = NULL;
+-
+-		/* If the user presses Ctrl-C more than once, exit. */
+-		SDL_Delay(500);
+-		if ( next_track > 1 ) break;
+-		
+-		i++;
+-	}
+-	CleanUp(0);
+-
+-	/* Not reached, but fixes compiler warnings */
+-	return 0;
+-}
+
++int main(){}
+--- a/playwave.c
++++ b/playwave.c
+@@ -1,501 +0,0 @@
+-/*
+-  PLAYWAVE:  A test application for the SDL mixer library.
+-  Copyright (C) 1997-2012 Sam Lantinga <slouken@libsdl.org>
+-
+-  This software is provided 'as-is', without any express or implied
+-  warranty.  In no event will the authors be held liable for any damages
+-  arising from the use of this software.
+-
+-  Permission is granted to anyone to use this software for any purpose,
+-  including commercial applications, and to alter it and redistribute it
+-  freely, subject to the following restrictions:
+-
+-  1. The origin of this software must not be misrepresented; you must not
+-     claim that you wrote the original software. If you use this software
+-     in a product, an acknowledgment in the product documentation would be
+-     appreciated but is not required.
+-  2. Altered source versions must be plainly marked as such, and must not be
+-     misrepresented as being the original software.
+-  3. This notice may not be removed or altered from any source distribution.
+-*/
+-
+-/* $Id$ */
+-
+-#include <stdlib.h>
+-#include <stdio.h>
+-#include <string.h>
+-
+-#ifdef unix
+-#include <unistd.h>
+-#endif
+-
+-#include "SDL.h"
+-#include "SDL_mixer.h"
+-
+-#ifdef HAVE_SIGNAL_H
+-#include <signal.h>
+-#endif
+-
+-
+-/*
+- * rcg06132001 various mixer tests. Define the ones you want.
+- */
+-/*#define TEST_MIX_DECODERS*/
+-/*#define TEST_MIX_VERSIONS*/
+-/*#define TEST_MIX_CHANNELFINISHED*/
+-/*#define TEST_MIX_PANNING*/
+-/*#define TEST_MIX_DISTANCE*/
+-/*#define TEST_MIX_POSITION*/
+-
+-
+-#if (defined TEST_MIX_POSITION)
+-
+-#if (defined TEST_MIX_PANNING)
+-#error TEST_MIX_POSITION interferes with TEST_MIX_PANNING.
+-#endif
+-
+-#if (defined TEST_MIX_DISTANCE)
+-#error TEST_MIX_POSITION interferes with TEST_MIX_DISTANCE.
+-#endif
+-
+-#endif
+-
+-
+-/* rcg06192001 for debugging purposes. */
+-static void output_test_warnings(void)
+-{
+-#if (defined TEST_MIX_CHANNELFINISHED)
+-	fprintf(stderr, "Warning: TEST_MIX_CHANNELFINISHED is enabled in this binary...\n");
+-#endif
+-#if (defined TEST_MIX_PANNING)
+-	fprintf(stderr, "Warning: TEST_MIX_PANNING is enabled in this binary...\n");
+-#endif
+-#if (defined TEST_MIX_VERSIONS)
+-	fprintf(stderr, "Warning: TEST_MIX_VERSIONS is enabled in this binary...\n");
+-#endif
+-#if (defined TEST_MIX_DISTANCE)
+-	fprintf(stderr, "Warning: TEST_MIX_DISTANCE is enabled in this binary...\n");
+-#endif
+-#if (defined TEST_MIX_POSITION)
+-	fprintf(stderr, "Warning: TEST_MIX_POSITION is enabled in this binary...\n");
+-#endif
+-}
+-
+-
+-static int audio_open = 0;
+-static Mix_Chunk *wave = NULL;
+-
+-/* rcg06042009 Report available decoders. */
+-#if (defined TEST_MIX_DECODERS)
+-static void report_decoders(void)
+-{
+-	int i, total;
+-
+-    printf("Supported decoders...\n");
+-	total = Mix_GetNumChunkDecoders();
+-	for (i = 0; i < total; i++) {
+-		fprintf(stderr, " - chunk decoder: %s\n", Mix_GetChunkDecoder(i));
+-	}
+-
+-	total = Mix_GetNumMusicDecoders();
+-	for (i = 0; i < total; i++) {
+-		fprintf(stderr, " - music decoder: %s\n", Mix_GetMusicDecoder(i));
+-	}
+-}
+-#endif
+-
+-/* rcg06192001 Check new Mixer version API. */
+-#if (defined TEST_MIX_VERSIONS)
+-static void output_versions(const char *libname, const SDL_version *compiled,
+-							const SDL_version *linked)
+-{
+-	fprintf(stderr,
+-			"This program was compiled against %s %d.%d.%d,\n"
+-			" and is dynamically linked to %d.%d.%d.\n", libname,
+-			compiled->major, compiled->minor, compiled->patch,
+-			linked->major, linked->minor, linked->patch);
+-}
+-
+-static void test_versions(void)
+-{
+-	SDL_version compiled;
+-	const SDL_version *linked;
+-
+-	SDL_VERSION(&compiled);
+-	linked = SDL_Linked_Version();
+-	output_versions("SDL", &compiled, linked);
+-
+-	SDL_MIXER_VERSION(&compiled);
+-	linked = Mix_Linked_Version();
+-	output_versions("SDL_mixer", &compiled, linked);
+-}
+-#endif
+-
+-
+-#ifdef TEST_MIX_CHANNELFINISHED  /* rcg06072001 */
+-static volatile int channel_is_done = 0;
+-static void SDLCALL channel_complete_callback (int chan)
+-{
+-	Mix_Chunk *done_chunk = Mix_GetChunk(chan);
+-	fprintf(stderr, "We were just alerted that Mixer channel #%d is done.\n", chan);
+-	fprintf(stderr, "Channel's chunk pointer is (%p).\n", done_chunk);
+-	fprintf(stderr, " Which %s correct.\n", (wave == done_chunk) ? "is" : "is NOT");
+-	channel_is_done = 1;
+-}
+-#endif
+-
+-
+-/* rcg06192001 abstract this out for testing purposes. */
+-static int still_playing(void)
+-{
+-#ifdef TEST_MIX_CHANNELFINISHED
+-	return(!channel_is_done);
+-#else
+-	return(Mix_Playing(0));
+-#endif
+-}
+-
+-
+-#if (defined TEST_MIX_PANNING)
+-static void do_panning_update(void)
+-{
+-	static Uint8 leftvol = 128;
+-	static Uint8 rightvol = 128;
+-	static Uint8 leftincr = -1;
+-	static Uint8 rightincr = 1;
+-	static int panningok = 1;
+-	static Uint32 next_panning_update = 0;
+-
+-	if ((panningok) && (SDL_GetTicks() >= next_panning_update)) {
+-		panningok = Mix_SetPanning(0, leftvol, rightvol);
+-		if (!panningok) {
+-			fprintf(stderr, "Mix_SetPanning(0, %d, %d) failed!\n",
+-					(int) leftvol, (int) rightvol);
+-			fprintf(stderr, "Reason: [%s].\n", Mix_GetError());
+-		}
+-
+-		if ((leftvol == 255) || (leftvol == 0)) {
+-			if (leftvol == 255)
+-				printf("All the way in the left speaker.\n");
+-				leftincr *= -1;
+-		}
+-
+-		if ((rightvol == 255) || (rightvol == 0)) {
+-			if (rightvol == 255)
+-				printf("All the way in the right speaker.\n");
+-			rightincr *= -1;
+-		}
+-
+-		leftvol += leftincr;
+-		rightvol += rightincr;
+-		next_panning_update = SDL_GetTicks() + 10;
+-	}
+-}
+-#endif
+-
+-
+-#if (defined TEST_MIX_DISTANCE)
+-static void do_distance_update(void)
+-{
+-	static Uint8 distance = 1;
+-	static Uint8 distincr = 1;
+-	static int distanceok = 1;
+-	static Uint32 next_distance_update = 0;
+-
+-	if ((distanceok) && (SDL_GetTicks() >= next_distance_update)) {
+-		distanceok = Mix_SetDistance(0, distance);
+-		if (!distanceok) {
+-			fprintf(stderr, "Mix_SetDistance(0, %d) failed!\n", (int) distance);
+-			fprintf(stderr, "Reason: [%s].\n", Mix_GetError());
+-		}
+-
+-		if (distance == 0) {
+-			printf("Distance at nearest point.\n");
+-			distincr *= -1;
+-		}
+-		else if (distance == 255) {
+-			printf("Distance at furthest point.\n");
+-			distincr *= -1;
+-		}
+-
+-		distance += distincr;
+-		next_distance_update = SDL_GetTicks() + 15;
+-	}
+-}
+-#endif
+-
+-
+-#if (defined TEST_MIX_POSITION)
+-static void do_position_update(void)
+-{
+-	static Sint16 distance = 1;
+-	static Sint8 distincr = 1;
+-	static Uint16 angle = 0;
+-	static Sint8 angleincr = 1;
+-	static int positionok = 1;
+-	static Uint32 next_position_update = 0;
+-
+-	if ((positionok) && (SDL_GetTicks() >= next_position_update)) {
+-		positionok = Mix_SetPosition(0, angle, distance);
+-		if (!positionok) {
+-			fprintf(stderr, "Mix_SetPosition(0, %d, %d) failed!\n",
+-					(int) angle, (int) distance);
+-			fprintf(stderr, "Reason: [%s].\n", Mix_GetError());
+-		}
+-
+-		if (angle == 0) {
+-			printf("Due north; now rotating clockwise...\n");
+-			angleincr = 1;
+-		}
+-
+-		else if (angle == 360) {
+-			printf("Due north; now rotating counter-clockwise...\n");
+-			angleincr = -1;
+-		}
+-
+-		distance += distincr;
+-
+-		if (distance < 0) {
+-			distance = 0;
+-			distincr = 3;
+-			printf("Distance is very, very near. Stepping away by threes...\n");
+-		} else if (distance > 255) {
+-			distance = 255;
+-			distincr = -3;
+-			printf("Distance is very, very far. Stepping towards by threes...\n");
+-		}
+-
+-		angle += angleincr;
+-		next_position_update = SDL_GetTicks() + 30;
+-	}
+-}
+-#endif
+-
+-
+-static void CleanUp(int exitcode)
+-{
+-	if ( wave ) {
+-		Mix_FreeChunk(wave);
+-		wave = NULL;
+-	}
+-	if ( audio_open ) {
+-		Mix_CloseAudio();
+-		audio_open = 0;
+-	}
+-	SDL_Quit();
+-
+-	exit(exitcode);
+-}
+-
+-
+-static void Usage(char *argv0)
+-{
+-	fprintf(stderr, "Usage: %s [-8] [-r rate] [-c channels] [-f] [-F] [-l] [-m] <wavefile>\n", argv0);
+-}
+-
+-
+-/*
+- * rcg06182001 This is sick, but cool.
+- *
+- *  Actually, it's meant to be an example of how to manipulate a voice
+- *  without having to use the mixer effects API. This is more processing
+- *  up front, but no extra during the mixing process. Also, in a case like
+- *  this, when you need to touch the whole sample at once, it's the only
+- *  option you've got. And, with the effects API, you are altering a copy of
+- *  the original sample for each playback, and thus, your changes aren't
+- *  permanent; here, you've got a reversed sample, and that's that until
+- *  you either reverse it again, or reload it.
+- */
+-static void flip_sample(Mix_Chunk *wave)
+-{
+-	Uint16 format;
+-	int channels, i, incr;
+-	Uint8 *start = wave->abuf;
+-	Uint8 *end = wave->abuf + wave->alen;
+-
+-	Mix_QuerySpec(NULL, &format, &channels);
+-	incr = (format & 0xFF) * channels;
+-
+-	end -= incr;
+-
+-	switch (incr) {
+-		case 8:
+-			for (i = wave->alen / 2; i >= 0; i -= 1) {
+-				Uint8 tmp = *start;
+-				*start = *end;
+-				*end = tmp;
+-				start++;
+-				end--;
+-			}
+-			break;
+-
+-		case 16:
+-			for (i = wave->alen / 2; i >= 0; i -= 2) {
+-				Uint16 tmp = *start;
+-				*((Uint16 *) start) = *((Uint16 *) end);
+-				*((Uint16 *) end) = tmp;
+-				start += 2;
+-				end -= 2;
+-			}
+-			break;
+-
+-		case 32:
+-			for (i = wave->alen / 2; i >= 0; i -= 4) {
+-				Uint32 tmp = *start;
+-				*((Uint32 *) start) = *((Uint32 *) end);
+-				*((Uint32 *) end) = tmp;
+-				start += 4;
+-				end -= 4;
+-			}
+-			break;
+-
+-		default:
+-			fprintf(stderr, "Unhandled format in sample flipping.\n");
+-			return;
+-	}
+-}
+-
+-
+-int main(int argc, char *argv[])
+-{
+-	int audio_rate;
+-	Uint16 audio_format;
+-	int audio_channels;
+-	int loops = 0;
+-	int i;
+-	int reverse_stereo = 0;
+-	int reverse_sample = 0;
+-
+-#ifdef HAVE_SETBUF
+-	setbuf(stdout, NULL);    /* rcg06132001 for debugging purposes. */
+-	setbuf(stderr, NULL);    /* rcg06192001 for debugging purposes, too. */
+-#endif
+-	output_test_warnings();
+-
+-	/* Initialize variables */
+-	audio_rate = MIX_DEFAULT_FREQUENCY;
+-	audio_format = MIX_DEFAULT_FORMAT;
+-	audio_channels = 2;
+-
+-	/* Check command line usage */
+-	for ( i=1; argv[i] && (*argv[i] == '-'); ++i ) {
+-		if ( (strcmp(argv[i], "-r") == 0) && argv[i+1] ) {
+-			++i;
+-			audio_rate = atoi(argv[i]);
+-		} else
+-		if ( strcmp(argv[i], "-m") == 0 ) {
+-			audio_channels = 1;
+-		} else
+-		if ( (strcmp(argv[i], "-c") == 0) && argv[i+1] ) {
+-			++i;
+-			audio_channels = atoi(argv[i]);
+-		} else
+-		if ( strcmp(argv[i], "-l") == 0 ) {
+-			loops = -1;
+-		} else
+-		if ( strcmp(argv[i], "-8") == 0 ) {
+-			audio_format = AUDIO_U8;
+-		} else
+-		if ( strcmp(argv[i], "-f") == 0 ) { /* rcg06122001 flip stereo */
+-			reverse_stereo = 1;
+-		} else
+-		if ( strcmp(argv[i], "-F") == 0 ) { /* rcg06172001 flip sample */
+-			reverse_sample = 1;
+-		} else {
+-			Usage(argv[0]);
+-			return(1);
+-		}
+-	}
+-	if ( ! argv[i] ) {
+-		Usage(argv[0]);
+-		return(1);
+-	}
+-
+-	/* Initialize the SDL library */
+-	if ( SDL_Init(SDL_INIT_AUDIO) < 0 ) {
+-		fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError());
+-		return(255);
+-	}
+-#ifdef HAVE_SIGNAL_H
+-	signal(SIGINT, CleanUp);
+-	signal(SIGTERM, CleanUp);
+-#endif
+-
+-	/* Open the audio device */
+-	if (Mix_OpenAudio(audio_rate, audio_format, audio_channels, 4096) < 0) {
+-		fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError());
+-		CleanUp(2);
+-	} else {
+-		Mix_QuerySpec(&audio_rate, &audio_format, &audio_channels);
+-		printf("Opened audio at %d Hz %d bit %s", audio_rate,
+-			(audio_format&0xFF),
+-			(audio_channels > 2) ? "surround" :
+-			(audio_channels > 1) ? "stereo" : "mono");
+-		if ( loops ) {
+-		  printf(" (looping)\n");
+-		} else {
+-		  putchar('\n');
+-		}
+-	}
+-	audio_open = 1;
+-
+-#if (defined TEST_MIX_VERSIONS)
+-	test_versions();
+-#endif
+-
+-#if (defined TEST_MIX_DECODERS)
+-	report_decoders();
+-#endif
+-
+-	/* Load the requested wave file */
+-	wave = Mix_LoadWAV(argv[i]);
+-	if ( wave == NULL ) {
+-		fprintf(stderr, "Couldn't load %s: %s\n",
+-						argv[i], SDL_GetError());
+-		CleanUp(2);
+-	}
+-
+-	if (reverse_sample) {
+-		flip_sample(wave);
+-	}
+-
+-#ifdef TEST_MIX_CHANNELFINISHED  /* rcg06072001 */
+-	Mix_ChannelFinished(channel_complete_callback);
+-#endif
+-
+-	if ( (!Mix_SetReverseStereo(MIX_CHANNEL_POST, reverse_stereo)) &&
+-		 (reverse_stereo) )
+-	{
+-		printf("Failed to set up reverse stereo effect!\n");
+-		printf("Reason: [%s].\n", Mix_GetError());
+-	}
+-
+-	/* Play and then exit */
+-	Mix_PlayChannel(0, wave, loops);
+-
+-	while (still_playing()) {
+-
+-#if (defined TEST_MIX_PANNING)  /* rcg06132001 */
+-		do_panning_update();
+-#endif
+-
+-#if (defined TEST_MIX_DISTANCE) /* rcg06192001 */
+-		do_distance_update();
+-#endif
+-
+-#if (defined TEST_MIX_POSITION) /* rcg06202001 */
+-		do_position_update();
+-#endif
+-
+-		SDL_Delay(1);
+-
+-	} /* while still_playing() loop... */
+-
+-	CleanUp(0);
+-
+-	/* Not reached, but fixes compiler warnings */
+-	return 0;
+-}
+-
+-/* end of playwave.c ... */
+-
++int main(){}

+ 30 - 0
package/sdl_mixer/0007-forceTremor.patch

@@ -0,0 +1,30 @@
+--- a/configure
++++ b/configure
+@@ -13701,7 +13701,7 @@
+ if test "${enable_music_ogg_tremor+set}" = set; then
+   enableval=$enable_music_ogg_tremor;
+ else
+-  enable_music_ogg_tremor=no
++  enableval=$enable_music_ogg_tremor;
+ fi
+ 
+ # Check whether --enable-music-ogg-shared was given.
+@@ -13939,10 +13939,14 @@
+                 EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lvorbisidec -lvorbis"
+             fi
+         else
+-            { $as_echo "$as_me:$LINENO: WARNING: *** Unable to find Ogg Vorbis Tremor library (http://www.xiph.org/)" >&5
+-$as_echo "$as_me: WARNING: *** Unable to find Ogg Vorbis Tremor library (http://www.xiph.org/)" >&2;}
+-            { $as_echo "$as_me:$LINENO: WARNING: Ogg Vorbis support disabled" >&5
+-$as_echo "$as_me: WARNING: Ogg Vorbis support disabled" >&2;}
++            SOURCES="$SOURCES $srcdir/*_ogg.c"
++            EXTRA_CFLAGS="$EXTRA_CFLAGS -DOGG_MUSIC -DOGG_USE_TREMOR"
++            if test x$enable_music_ogg_shared = xyes && test x$ogg_lib != x; then
++                echo "-- dynamic libvorbisidec -> $ogg_lib"
++                EXTRA_CFLAGS="$EXTRA_CFLAGS -DOGG_DYNAMIC=\\\"$ogg_lib\\\""
++            else
++                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lvorbisidec"
++            fi
+         fi
+     else
+         if test "${ac_cv_header_vorbis_vorbisfile_h+set}" = set; then

+ 19 - 0
package/sdl_mixer/0008-forceTremor.patch

@@ -0,0 +1,19 @@
+--- a/configure.in
++++ b/configure.in
+@@ -452,8 +452,14 @@
+                 EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lvorbisidec -lvorbis"
+             fi
+         else
+-            AC_MSG_WARN([*** Unable to find Ogg Vorbis Tremor library (http://www.xiph.org/)])
+-            AC_MSG_WARN([Ogg Vorbis support disabled])
++            SOURCES="$SOURCES $srcdir/*_ogg.c"
++            EXTRA_CFLAGS="$EXTRA_CFLAGS -DOGG_MUSIC -DOGG_USE_TREMOR"
++            if test x$enable_music_ogg_shared = xyes && test x$ogg_lib != x; then
++                echo "-- dynamic libvorbisidec -> $ogg_lib"
++                EXTRA_CFLAGS="$EXTRA_CFLAGS -DOGG_DYNAMIC=\\\"$ogg_lib\\\""
++            else
++                EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lvorbisidec"
++            fi
+         fi
+     else
+         AC_CHECK_HEADER([vorbis/vorbisfile.h], [have_ogg_hdr=yes])

+ 0 - 10
package/sdl_mixer/Config.in

@@ -9,13 +9,3 @@ config BR2_PACKAGE_SDL_MIXER
 	  SMPEG MP3 libraries.
 
 	  http://www.libsdl.org/projects/SDL_mixer/
-
-if BR2_PACKAGE_SDL_MIXER
-
-config BR2_PACKAGE_SDL_MIXER_MIDI_TIMIDITY
-	bool "MIDI support with built-in Timidity synth"
-	help
-	  Support MIDI audio using the built-in synth based on Timidity.
-	  You will need MIDI instruments installed in the filesystem.
-
-endif

+ 24 - 35
package/sdl_mixer/sdl_mixer.mk

@@ -4,69 +4,58 @@
 #
 ################################################################################
 
-SDL_MIXER_VERSION = 1.2.12
-SDL_MIXER_SOURCE = SDL_mixer-$(SDL_MIXER_VERSION).tar.gz
-SDL_MIXER_SITE = http://www.libsdl.org/projects/SDL_mixer/release
-SDL_MIXER_LICENSE = Zlib
+SDL_MIXER_VERSION = 1.2.13
+SDL_MIXER_SOURCE = SDL-1.2.tar.gz
+SDL_MIXER_SITE =  https://github.com/SDL-mirror/SDL_mixer/archive
+SDL_MIXER_LICENSE = zlib
 SDL_MIXER_LICENSE_FILES = COPYING
 
-# Package does not build in parallel due to improper make rules
-SDL_MIXER_MAKE = $(MAKE1)
-
 SDL_MIXER_INSTALL_STAGING = YES
 SDL_MIXER_DEPENDENCIES = sdl
-
-# We're patching configure.in, so we need to autoreconf
-SDL_MIXER_AUTORECONF = YES
-
 SDL_MIXER_CONF_OPTS = \
 	--without-x \
 	--with-sdl-prefix=$(STAGING_DIR)/usr \
-	--disable-music-mod \
 	--disable-music-mp3 \
+	--disable-music-mod \
 	--disable-music-flac # configure script fails when cross compiling
-
-ifeq ($(BR2_PACKAGE_FLUIDSYNTH),y)
-SDL_MIXER_DEPENDENCIES += fluidsynth
-SDL_MIXER_CONF_OPTS += \
-	--enable-music-midi \
-	--enable-music-fluidsynth-midi
-SDL_MIXER_HAS_MIDI = YES
-endif
-
-ifeq ($(BR2_PACKAGE_SDL_MIXER_MIDI_TIMIDITY),y)
-SDL_MIXER_CONF_OPTS += \
-	--enable-music-midi \
-	--enable-music-timidity-midi
-SDL_MIXER_HAS_MIDI = YES
-endif
-
-ifneq ($(SDL_MIXER_HAS_MIDI),YES)
-SDL_MIXER_CONF_OPTS += --disable-music-midi
+	
+ifeq ($(BR2_STATIC_LIBS),y)
+SDL_MIXER_CONF_OPTS += --disable-music-mod-shared --disable-music-fluidsynth-shared --disable-music-ogg-shared --disable-music-flac-shared --disable-music-mp3-shared --disable-shared
 endif
 
 ifeq ($(BR2_PACKAGE_LIBMAD),y)
 SDL_MIXER_CONF_OPTS += --enable-music-mp3-mad-gpl
 SDL_MIXER_DEPENDENCIES += libmad
 else
-SDL_MIXER_CONF_OPTS += --disable-music-mp3-mad-gpl
+ifeq ($(BR2_PACKAGE_MPG123),y)
+SDL_MIXER_CONF_OPTS += --enable-music-mp3
+SDL_MIXER_DEPENDENCIES += mpg123
+else
+SDL_MIXER_CONF_OPTS += --disable-music-mp3
+endif
 endif
 
+# Prefer libmikmod over Modplug due to dependency on C++
+ifeq ($(BR2_PACKAGE_LIBMIKMOD),y)
+SDL_MIXER_CONF_OPTS += --enable-music-mod
+SDL_MIXER_DEPENDENCIES += libmikmod
+else
 ifeq ($(BR2_PACKAGE_LIBMODPLUG),y)
 SDL_MIXER_CONF_OPTS += --enable-music-mod-modplug
-SDL_MIXER_DEPENDENCIES += host-pkgconf libmodplug
+SDL_MIXER_DEPENDENCIES += libmodplug
 else
 SDL_MIXER_CONF_OPTS += --disable-music-mod-modplug
 endif
+endif
 
+# prefer tremor over libvorbis
 ifeq ($(BR2_PACKAGE_TREMOR),y)
 SDL_MIXER_CONF_OPTS += --enable-music-ogg-tremor
 SDL_MIXER_DEPENDENCIES += tremor
-else ifeq ($(BR2_PACKAGE_LIBVORBIS),y)
-SDL_MIXER_CONF_OPTS += --enable-music-ogg
-SDL_MIXER_DEPENDENCIES += libvorbis
 else
 SDL_MIXER_CONF_OPTS += --disable-music-ogg
 endif
 
+SDL_MIXER_CONF_OPTS += --enable-music-timidity-midi
+
 $(eval $(autotools-package))