diff --git a/allegro-4.2.2-gcc43.patch b/allegro-4.2.2-gcc43.patch new file mode 100644 index 0000000..2ac6a73 --- /dev/null +++ b/allegro-4.2.2-gcc43.patch @@ -0,0 +1,57 @@ +diff -up allegro-4.2.2/include/allegro/platform/al386gcc.h~ allegro-4.2.2/include/allegro/platform/al386gcc.h +--- allegro-4.2.2/include/allegro/platform/al386gcc.h~ 2008-01-21 19:18:34.000000000 +0100 ++++ allegro-4.2.2/include/allegro/platform/al386gcc.h 2008-01-21 19:18:34.000000000 +0100 +@@ -208,14 +208,13 @@ AL_INLINE(fixed, fixsub, (fixed x, fixed + */ + AL_INLINE(fixed, fixmul, (fixed x, fixed y), + { +- fixed edx __attribute__ ((__unused__)); + fixed result; + + __PRECALCULATE_CONSTANTS(x / 65536.0 * y) + { + __asm__ ( +- " movl %2, %%eax ; " +- " imull %3 ; " /* do the multiply */ ++ " movl %1, %%eax ; " ++ " imull %2 ; " /* do the multiply */ + " shrdl $16, %%edx, %%eax ; " + + " sarl $15, %%edx ; " /* check for overflow */ +@@ -223,14 +222,14 @@ AL_INLINE(fixed, fixmul, (fixed x, fixed + " cmpl $-1, %%edx ; " + " je 0f ; " + +- " movl %5, %%eax ; " /* on overflow, set errno */ +- " movl %4, (%%eax) ; " ++ " movl %4, %%eax ; " /* on overflow, set errno */ ++ " movl %3, (%%eax) ; " + " movl $0x7FFFFFFF, %%eax ; " /* and return MAXINT */ +- " cmpl $0, %2 ; " ++ " cmpl $0, %1 ; " + " jge 1f ; " + " negl %%eax ; " + " 1: " +- " cmpl $0, %3 ; " ++ " cmpl $0, %2 ; " + " jge 0f ; " + " negl %%eax ; " + +@@ -238,15 +237,14 @@ AL_INLINE(fixed, fixmul, (fixed x, fixed + + " 0: " /* finished */ + +- : "=&a" (result), /* the result has to go in eax */ +- "=&d" (edx) /* reliably reserve edx */ ++ : "=&a" (result) /* the result has to go in eax */ + + : "mr" (x), /* x and y can be regs or mem */ + "mr" (y), + "i" (ERANGE), + "m" (allegro_errno) + +- : "%cc", "memory" /* clobbers flags and errno */ ++ : "%cc", "memory", "edx" /* clobbers flags, errno and edx */ + ); + + return result; diff --git a/allegro-4.2.2-pulseaudio.patch b/allegro-4.2.2-pulseaudio.patch new file mode 100644 index 0000000..7e6dfbc --- /dev/null +++ b/allegro-4.2.2-pulseaudio.patch @@ -0,0 +1,69 @@ +diff -up allegro-4.2.2/src/unix/alsa9.c.pulse allegro-4.2.2/src/unix/alsa9.c +--- allegro-4.2.2/src/unix/alsa9.c.pulse 2006-03-18 16:05:34.000000000 +0100 ++++ allegro-4.2.2/src/unix/alsa9.c 2008-01-21 20:01:18.000000000 +0100 +@@ -81,7 +81,7 @@ static double alsa_mixer_allegro_ratio = + + static snd_pcm_t *pcm_handle; + static unsigned char *alsa_bufdata; +-static int alsa_bits, alsa_signed, alsa_stereo; ++static int alsa_bits, alsa_signed, alsa_stereo, alsa_format; + static unsigned int alsa_rate; + static unsigned int alsa_fragments; + static int alsa_sample_size; +@@ -292,7 +292,6 @@ static int alsa_init(int input, int voic + { + int ret = 0; + char tmp1[128], tmp2[128]; +- int format = 0; + unsigned int numfrags = 0; + snd_pcm_uframes_t fragsize; + +@@ -354,29 +353,14 @@ static int alsa_init(int input, int voic + alsa_stereo = (_sound_stereo) ? 1 : 0; + alsa_rate = (_sound_freq > 0) ? _sound_freq : 44100; + alsa_signed = 0; ++ alsa_format = (alsa_bits == 16) ? SND_PCM_FORMAT_U16_NE : SND_PCM_FORMAT_U8; ++ alsa_sample_size = (alsa_bits / 8) * (alsa_stereo ? 2 : 1); + +- format = ((alsa_bits == 16) ? SND_PCM_FORMAT_U16_NE : SND_PCM_FORMAT_U8); +- +- switch (format) { +- +- case SND_PCM_FORMAT_U8: +- alsa_bits = 8; +- break; +- +- case SND_PCM_FORMAT_U16_NE: +- if (sizeof(short) != 2) { +- ustrzcpy(allegro_error, ALLEGRO_ERROR_SIZE, get_config_text("Unsupported sample format")); +- goto Error; +- } +- break; +- +- default: +- ustrzcpy(allegro_error, ALLEGRO_ERROR_SIZE, get_config_text("Unsupported sample format")); +- goto Error; ++ if (alsa_format == SND_PCM_FORMAT_U16_NE && sizeof(short) != 2) { ++ ustrzcpy(allegro_error, ALLEGRO_ERROR_SIZE, get_config_text("Unsupported sample format")); ++ goto Error; + } + +- alsa_sample_size = (alsa_bits / 8) * (alsa_stereo ? 2 : 1); +- + if (fragsize == 0) { + unsigned int size = alsa_rate * ALSA_DEFAULT_BUFFER_MS / 1000 / numfrags; + fragsize = 1; +@@ -389,7 +373,12 @@ static int alsa_init(int input, int voic + + ALSA9_CHECK(snd_pcm_hw_params_any(pcm_handle, hwparams)); + ALSA9_CHECK(snd_pcm_hw_params_set_access(pcm_handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)); +- ALSA9_CHECK(snd_pcm_hw_params_set_format(pcm_handle, hwparams, format)); ++ if (snd_pcm_hw_params_set_format(pcm_handle, hwparams, alsa_format) < 0) { ++ /* Try again with signed samples (needed atleast for pulseaudio) */ ++ alsa_format = (alsa_bits == 16) ? SND_PCM_FORMAT_S16_NE : SND_PCM_FORMAT_S8; ++ alsa_signed = 1; ++ ALSA9_CHECK(snd_pcm_hw_params_set_format(pcm_handle, hwparams, alsa_format)); ++ } + ALSA9_CHECK(snd_pcm_hw_params_set_channels(pcm_handle, hwparams, alsa_stereo + 1)); + + ALSA9_CHECK(snd_pcm_hw_params_set_rate_near(pcm_handle, hwparams, &alsa_rate, NULL)); diff --git a/allegro.spec b/allegro.spec index 9feb932..276ba76 100644 --- a/allegro.spec +++ b/allegro.spec @@ -1,6 +1,6 @@ Name: allegro Version: 4.2.2 -Release: 6%{?dist} +Release: 7%{?dist} Summary: A game programming library Summary(es): Una libreria de programacion de juegos @@ -18,6 +18,8 @@ Patch3: allegro-4.2.0-noexecstack.patch Patch4: allegro-4.2.0-multilib.patch Patch5: allegro-4.2.1-noexecmod.patch Patch6: allegro-4.0.3-libdir.patch +Patch7: allegro-4.2.2-pulseaudio.patch +Patch8: allegro-4.2.2-gcc43.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: esound-devel, texinfo, perl, arts-devel, glib2-devel BuildRequires: xorg-x11-proto-devel, libX11-devel, libXext-devel, libXt-devel @@ -159,6 +161,8 @@ sound through JACK (Jack Audio Connection Kit). %patch4 -p1 -z .multilib %patch5 -p1 -z .noexecmod %patch6 -p1 -z .multilib2 +%patch7 -p1 -z .pulse +%patch8 -p1 -z .gcc43 iconv -f iso-8859-1 -t utf-8 docs/src/allegro._tx > docs/src/allegro._tx.tmp mv docs/src/allegro._tx.tmp docs/src/allegro._tx @@ -182,6 +186,7 @@ make CFLAGS="$RPM_OPT_FLAGS -I%{_includedir}/kde/artsc" rm -rf $RPM_BUILD_ROOT make install install-man install-info \ DESTDIR=$RPM_BUILD_ROOT LDCONFIG=/bin/true +install -m 755 docs/makedoc $RPM_BUILD_ROOT%{_bindir}/allegro-makedoc install -Dpm 644 allegro.cfg $RPM_BUILD_ROOT%{_sysconfdir}/allegrorc install -dm 755 $RPM_BUILD_ROOT%{_datadir}/allegro install -pm 644 keyboard.dat language.dat $RPM_BUILD_ROOT%{_datadir}/allegro @@ -249,6 +254,7 @@ rm -rf $RPM_BUILD_ROOT %doc todo.txt docs/html %doc demo examples setup %{_bindir}/allegro-config +%{_bindir}/allegro-makedoc %{_libdir}/liballeg_unsharable.a %{_libdir}/liball?.so.* %{_libdir}/liball?-%{version}.so @@ -285,6 +291,11 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Mon Jan 21 2008 Hans de Goede 4.2.2-7 +- Add makedoc utility to allegro-devel as allegro-makedoc (bz 429450) +- Fix sound when using pulseaudio +- Fix compilation of inline asm with gcc 4.3 + * Sun Oct 14 2007 Hans de Goede 4.2.2-6 - Require timidity++-patches instead of timidity++ itself so that we don't drag in arts and through arts, qt and boost