Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 136701

Summary: app-emulation/uae-0.8.22 needs REGPARAM2 defined for gcc 3.4
Product: Gentoo Linux Reporter: Martin von Gagern <Martin.vGagern>
Component: Current packagesAssignee: David Holm (RETIRED) <dholm>
Status: RESOLVED WONTFIX    
Severity: normal CC: pva
Priority: High    
Version: 2006.0   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Attachments: Patch to uae-0.8.22 file sysdeps.h

Description Martin von Gagern 2006-06-13 12:38:32 UTC
I just encountered the problem below.

[...]
checking for DirectX... no
You can't enable DGA for SVGAlib, SDL and ncurses targets!
The XF86VidMode extension can only be used in DGA mode. Disabling it.
checking for gtk-config... /usr/bin/gtk-config
[...]
checking availability of libscg headers and lib... not available
Please refer to the UAE SCSI device section in docs/README for installation instructions.
updating cache ./config.cache
creating ./config.status
[...]
checking for setitimer... yes
updating cache ./config.cache
creating ./config.status
creating Makefile
creating sysconfig.h


There were 2 errors. UAE may still build and run cleanly, but you may
not get all the features you asked for.

cd src && make
make[1]: Entering directory `/var/tmp/portage/uae-0.8.22/work/uae-0.8.22/src'
gcc -I. -I../src/include/ -c  -O2 -fomit-frame-pointer  -Wall -Wno-unused -Wno-format -W -Wmissing-prototypes -Wstrict-prototypes   -I/usr/include/SDL -D_REENTRANT -DUSE_SDL -DGCCCONSTFUNC="__attribute__((const))" -mpreferred-stack-boundary=2 -fno-exceptions -DUNALIGNED_PROFITABLE -fno-strength-reduce -DREGPARAM="__attribute__((regparm(3)))" -DX86_ASSEMBLY -DOPTIMIZED_FLAGS -DUSE_ZFILE -D__inline__=inline -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/X11R6/include -DSHM_SUPPORT_LINKS=1   main.c -o main.o
main.c: In function `parse_cmdline':
main.c:363: warning: passing arg 2 of `parse_cmdline_option' discards qualifiers from pointer target type
gcc -I. -I../src/include/ -c  -O2 -fomit-frame-pointer  -Wall -Wno-unused -Wno-format -W -Wmissing-prototypes -Wstrict-prototypes   -I/usr/include/SDL -D_REENTRANT -DUSE_SDL -DGCCCONSTFUNC="__attribute__((const))" -mpreferred-stack-boundary=2 -fno-exceptions -DUNALIGNED_PROFITABLE -fno-strength-reduce -DREGPARAM="__attribute__((regparm(3)))" -DX86_ASSEMBLY -DOPTIMIZED_FLAGS -DUSE_ZFILE -D__inline__=inline -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/X11R6/include -DSHM_SUPPORT_LINKS=1   newcpu.c -o newcpu.o
newcpu.c:104: error: conflicting types for 'op_illg_1'
newcpu.c:101: error: previous declaration of 'op_illg_1' was here
newcpu.c:104: error: conflicting types for 'op_illg_1'
newcpu.c:101: error: previous declaration of 'op_illg_1' was here
newcpu.c: In function `build_cpufunctbl':
newcpu.c:124: warning: assignment from incompatible pointer type
newcpu.c:137: warning: comparison of distinct pointer types lacks a cast
newcpu.c: At top level:
newcpu.c:1129: error: conflicting types for 'op_illg'
../src/include/newcpu.h:57: error: previous declaration of 'op_illg' was here
newcpu.c:1129: error: conflicting types for 'op_illg'
../src/include/newcpu.h:57: error: previous declaration of 'op_illg' was here
newcpu.c: In function `m68k_go':
newcpu.c:1429: warning: implicit declaration of function `savestate_restore_finish'
newcpu.c: In function `m68k_verify':
newcpu.c:1451: warning: comparison of distinct pointer types lacks a cast
newcpu.c: In function `m68k_disasm':
newcpu.c:1486: warning: comparison of distinct pointer types lacks a cast
make[1]: *** [newcpu.o] Error 1
make[1]: Leaving directory `/var/tmp/portage/uae-0.8.22/work/uae-0.8.22/src'
make: *** [all] Error 2

!!! ERROR: app-emulation/uae-0.8.22 failed.
Call stack:
  ebuild.sh, line 1539:   Called dyn_compile
  ebuild.sh, line 939:   Called src_compile
  uae-0.8.22.ebuild, line 52:   Called die

[ebuild   R   ] app-emulation/uae-0.8.22  USE="X gtk sdl -svga*" 0 kB
removing the sdl USE flag did not solve the problem.
Comment 1 Martin von Gagern 2006-06-13 12:47:36 UTC
Created attachment 89079 [details, diff]
Patch to uae-0.8.22 file sysdeps.h

This patch checks the gcc version and if it is 3.4 or above, the REGPARAM2 macro is treated as is is on amiga, i.e. set to REGPARAM. This solved the problem for me.

I added a version check to only change behaviour for gcc 3.4 to change as little as possible, to make sure nothing breaks that worked before.
I notice however that the uae-0.8.24 sources just check for __GNUC__, without checks for AMIGA or gcc version. This would be an alternative, to backport the changes made in uae sources.
Comment 2 Peter Volkov (RETIRED) gentoo-dev 2006-06-13 13:48:13 UTC
Do you have this problem with uae-0.8.24.ebuild?
Comment 3 Martin von Gagern 2006-06-15 00:21:17 UTC
(In reply to comment #2)
> Do you have this problem with uae-0.8.24.ebuild?

As I mentioned, the 0.8.24 sources already set REGPARAM2 equal to REGPARAM, without regard for the gcc version. So the question is, will the uae 0.8.24 ebuild work with gcc 3.3.6 as well. I just checked, uae 0.8.24 compiles all right using either gcc 3.3.6 or 3.4.6.

The issue is solved in 0.8.24, marking it stable would be acceptable as well, instead of incorporating my patch into the uae 0.8.22 ebuild.
Comment 4 Jakub Moc (RETIRED) gentoo-dev 2006-10-28 17:36:39 UTC
No point in porting outdated stuff for gcc-3.4 when 4.1 is current stable on all arches this is keyworded for.

WONTFIX, see Bug 141217 for gcc-4.x porting.