Winelib under Solaris/SPARC

Robin KAY komadori at gekkou.co.uk
Mon Aug 9 08:41:14 CDT 2004


I would to like compile Winelib under Solaris/SPARC so that I can 
develop Windows applications from the relative comfort of UNIX, leaving 
only the final building and testing to real Windows running under Bochs. 
I have tested a selection of Wine releases and the build typically fails 
with either one of two errors. I used gcc 3.3.4 with the assembler and 
linker from binutils 2.15, and I configured the builds with:

LDFLAGS="-R/opt/csw/lib -L/opt/csw/lib" CPPFLAGS="-I/opt/csw/include" 
./configure --without-opengl

1) Releases between wine-20021125 and wine-20040121 (inclusive)

gcc -c -I. -I. -I../../include -I../../include -I/usr/openwin/include
-D__WINESRC__  -D_REENTRANT -fPIC -Wall -pipe -fno-strict-aliasing
-gstabs+ -Wpointer-arith -I/opt/csw/include -g -O2 -o ddraw.spec.o
ddraw.spec.c
{standard input}: Assembler messages:
{standard input}:1169: Error: operation combines symbols in different
segments
[snip]
{standard input}:2006: Error: operation combines symbols in different
segments
gmake[2]: *** [ddraw.spec.o] Error 1

An archived mailing list post suggested that this is caused by a failure 
to RTFM and configure the source tree to build winelib rather than plain 
wine with PE loader, however I haven't been able to find any 
documentation that supports this view. None of the releases I tested had 
a configure script which accepted --disable-emulator. The source file 
which causes this error varies with release.

2) Releases between wine-20040213 and wine-20040716 (inclusive)

../../tools/winegcc/winegcc -B../../tools/winebuild -shared ./ntdll.spec
    cdrom.o critsection.o debugbuffer.o debugtools.o directory.o env.o
error.o exception.o file.o heap.o large_int.o loader.o loadorder.o
misc.o nt.o om.o path.o process.o reg.o relay.o resource.o rtl.o
rtlbitmap.o rtlstr.o sec.o server.o signal_i386.o signal_powerpc.o
signal_sparc.o string.o sync.o version.o thread.o time.o virtual.o
wcstring.o relay32.o ntdll.dll.dbg.o   -o ntdll.dll.so -L../../dlls
-L../../libs/wine -lwine -L../../libs/unicode -lwine_unicode
-L../../libs/port -lwine_port -R/opt/csw/lib -L/opt/csw/lib -lresolv
-lsocket -lnsl
ntdll.dll-DqmZVz.spec.c:20:1: warning: "__stdcall" redefined
<command line>:17:1: warning: this is the location of the previous
definition
thread.o(.text+0xc1c): In function `NtCurrentTeb':
/home/komadori/dev/stuff/wine-20040716/dlls/ntdll/thread.c:582:
undefined reference to `wine_pthread_get_current_teb'
collect2: ld returned 1 exit status
winegcc: gcc failed.
gmake[2]: *** [ntdll.dll.so] Error 2

I tried adding wine_pthread_get_current_teb to libs/wine/wine.def and 
libs/wine/wine.map, but this caused the resulting binaries to 
dereference a bad address in NtCurrentTeb.

This mail was origianally posted to comp.emulators.ms-windows.wine from 
where I was redirectled. Does anyone know how to fix these problems or 
if any of the older release tags in CVS will build under Solaris/SPARC? 
Thanks.

-- 
Wishing you good fortune,
--Robin Kay-- (komadori)



More information about the wine-devel mailing list