ports/117691: [patch] audio/nosefart fix build with gcc 4.2
gahr@gahr.ch
Pietro.Cerutti at FreeBSD.org
Tue Oct 30 22:10:01 UTC 2007
>Number: 117691
>Category: ports
>Synopsis: [patch] audio/nosefart fix build with gcc 4.2
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Tue Oct 30 22:10:01 UTC 2007
>Closed-Date:
>Last-Modified:
>Originator: gahr at gahr.ch
>Release: 6.2-STABLE
>Organization:
Bern University of Applied Sciences
>Environment:
FreeBSD gahrtop.localhost 6.2-STABLE FreeBSD 6.2-STABLE #3: Wed Oct 24 08:30:39 CEST 2007 root at gahrtop.localhost:/usr/obj/usr/src/sys/MSI1034 i386
>Description:
audio/nosefart fails to build with gcc 4.2 because of a cast used where an lvalue is required
>How-To-Repeat:
cd /usr/ports/audio/nosefart && make
>Fix:
The following patch removes the BROKEN message from the port's Makefile and adds a patch to files/patch-src-sndhrdw-nes_apu.c which fixes the actual lvalue problem.
diff -ruN nosefart.orig/Makefile nosefart/Makefile
--- nosefart.orig/Makefile 2007-10-02 11:17:16.000000000 +0200
+++ nosefart/Makefile 2007-10-30 22:58:40.000000000 +0100
@@ -27,10 +27,4 @@
pre-build:
@(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} clean)
-.include <bsd.port.pre.mk>
-
-.if ${OSVERSION} >= 700042
-BROKEN= Does not compile with GCC 4.2
-.endif
-
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
diff -ruN nosefart.orig/files/patch-src-sndhrdw-nes_apu.c nosefart/files/patch-src-sndhrdw-nes_apu.c
--- nosefart.orig/files/patch-src-sndhrdw-nes_apu.c 1970-01-01 01:00:00.000000000 +0100
+++ nosefart/files/patch-src-sndhrdw-nes_apu.c 2007-10-30 22:58:40.000000000 +0100
@@ -0,0 +1,25 @@
+--- src/sndhrdw/nes_apu.c.orig 2007-10-30 22:51:03.000000000 +0100
++++ src/sndhrdw/nes_apu.c 2007-10-30 22:52:28.000000000 +0100
+@@ -980,6 +980,9 @@
+ uint32 elapsed_cycles;
+ static int32 prev_sample = 0;
+ int32 next_sample, accum;
++ uint8 *buff_u8 = (uint8 *)buffer;
++ int16 *buff_16 = (int16 *)buffer;
++
+
+ ASSERT(apu);
+
+@@ -1035,9 +1038,9 @@
+
+ /* signed 16-bit output, unsigned 8-bit */
+ if (16 == apu->sample_bits)
+- *((int16 *) buffer)++ = (int16) accum;
+- else
+- *((uint8 *) buffer)++ = (accum >> 8) ^ 0x80;
++ *buff_16++ = (int16) accum;
++ else
++ *buff_u8++ = (accum >> 8) ^0x80;
+ }
+
+ /* resync cycle counter */
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list