Wine on Sparc

Eric Frias efrias at syncad.com
Mon May 23 12:55:30 CDT 2005


Chuck Hall wrote:
> I have heard that people are using Wine on Solaris.  I would like to know
> if they are using Wine on the SPARC version or the x86 version of Solaris?

I'm using it on the Sparc version, with Solaris 7 and 8.  Winelib only, 
of course, none of the emulation stuff is going to work on Sparc.

> There does seem to be code within Wine to have it run on SPARC machines,
> but it currently does not seem to compile, at least on the Solaris
> version.

Right now I'm using an old version of wine circa November 2004, and it 
needed a few minor fixes to work correctly.  I'm in the process of 
upgrading to the latest & greatest, and unless there are major problems 
I plan on getting it working sometime this week.  In the past, upgrades 
haven't been too much of a problem.  When I get it working, I'll try to 
get my patches back to the wine-patches list promptly.

I posted my last batch of patches to wine-patches back on 2004-11-17, 
and I know some of them didn't make it into CVS.  I also saw some 
patches posted to one of the wine lists around 2005-05-07 by Robert 
Lunnon with titles like "Solaris Compatibility" that you might want to 
look at.  I don't know if his patches were for Sparc or x86, or if 
they've been accepted.

> I have attached a small patch that allows me to get throught the 'make
> depend' section of the compile.  Since it is my first patch, please look
> at and let me know what I did wrong :)
 > [...]
> -#if defined(__GNUC__) && !defined(__MINGW32__) && !defined(__CYGWIN__) && !defined(__APPLE__)
> +#if defined(__GNUC__) && !defined(__MINGW32__) && !defined(__CYGWIN__) && !defined(__APPLE__) && !defined(__sparc__)

I haven't tried this with the current code, but in my working version of 
wine, I didn't make the same change.  My port.h contains:
===
/* Macros to define assembler functions somewhat portably */

#if defined(__GNUC__) && !defined(__MINGW32__) && !defined(__CYGWIN__) 
&& !defined(__APPLE__)
# define __ASM_GLOBAL_FUNC(name,code) \
       __asm__( ".text\n\t" \
                ".align 4\n\t" \
                ".globl " __ASM_NAME(#name) "\n\t" \
                __ASM_FUNC(#name) "\n" \
                __ASM_NAME(#name) ":\n\t" \
                code \
                "\n\t.previous" );
#else  /* defined(__GNUC__) && !defined(__MINGW32__) && 
!defined(__APPLE__)  */
===
I'm not sure how to explain why this isn't working for you.  I know we 
compile with a version of gcc that is configured to use the GNU 
assembler and GNU linker from binutils.  Perhaps yours is using the 
native Solaris assembler, and it doesn't understand .previous?  The 
assembly portions might only compile correctly with the GNU assembler.

Eric



More information about the wine-devel mailing list