Gcenx / macOS_Wine_builds

Official Winehq macOS Packages
461 stars 23 forks source link

DSOUND failure during compile #17

Closed randy-girard closed 3 years ago

randy-girard commented 3 years ago

Hello,

Wasn't sure how to reach out to you directly so figured I would come here.

I was trying to compile crossover wine. I got clang and llvm compiled, but when I go to compile wine with it, it errors out with some generic error message about dsound:

../../tools/winegcc/winegcc -o dsound.dll --wine-objdir ../.. -b i686-w64-mingw32 --lib-suffix=.cross.a \
  -Wl,--wine-builtin -shared dsound.spec -mno-cygwin buffer.cross.o capture.cross.o dsound.cross.o \
  dsound_convert.cross.o dsound_main.cross.o duplex.cross.o mixer.cross.o primary.cross.o \
  propset.cross.o sound3d.cross.o version.res dsound_classes_r.res \
  ../../dlls/dxguid/libdxguid.cross.a ../../dlls/uuid/libuuid.cross.a \
  ../../dlls/winmm/libwinmm.cross.a ../../dlls/ole32/libole32.cross.a \
  ../../dlls/advapi32/libadvapi32.cross.a ../../dlls/user32/libuser32.cross.a \
  ../../dlls/ucrtbase/libucrtbase.cross.a 
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: capture.cross.o:capture.c:(.rdata+0x10d4): multiple definition of `iksbvt'; buffer.cross.o:buffer.c:(.rdata+0x1010): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: capture.cross.o:capture.c:(.rdata+0x1100): multiple definition of `ds3dbvt'; buffer.cross.o:buffer.c:(.rdata+0x1040): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: capture.cross.o:capture.c:(.rdata+0x1160): multiple definition of `ds3dlvt'; buffer.cross.o:buffer.c:(.rdata+0x10a0): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: dsound.cross.o:dsound.c:(.rdata+0xedc): multiple definition of `iksbvt'; buffer.cross.o:buffer.c:(.rdata+0x1010): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: dsound.cross.o:dsound.c:(.rdata+0xf00): multiple definition of `ds3dbvt'; buffer.cross.o:buffer.c:(.rdata+0x1040): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: dsound.cross.o:dsound.c:(.rdata+0xf60): multiple definition of `ds3dlvt'; buffer.cross.o:buffer.c:(.rdata+0x10a0): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: dsound_convert.cross.o:dsound_convert.c:(.rdata+0x94): multiple definition of `iksbvt'; buffer.cross.o:buffer.c:(.rdata+0x1010): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: dsound_convert.cross.o:dsound_convert.c:(.rdata+0xc0): multiple definition of `ds3dbvt'; buffer.cross.o:buffer.c:(.rdata+0x1040): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: dsound_convert.cross.o:dsound_convert.c:(.rdata+0x120): multiple definition of `ds3dlvt'; buffer.cross.o:buffer.c:(.rdata+0x10a0): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: dsound_main.cross.o:dsound_main.c:(.rdata+0x54c): multiple definition of `iksbvt'; buffer.cross.o:buffer.c:(.rdata+0x1010): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: dsound_main.cross.o:dsound_main.c:(.rdata+0x580): multiple definition of `ds3dbvt'; buffer.cross.o:buffer.c:(.rdata+0x1040): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: dsound_main.cross.o:dsound_main.c:(.rdata+0x5e0): multiple definition of `ds3dlvt'; buffer.cross.o:buffer.c:(.rdata+0x10a0): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: duplex.cross.o:duplex.c:(.rdata+0x378): multiple definition of `iksbvt'; buffer.cross.o:buffer.c:(.rdata+0x1010): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: duplex.cross.o:duplex.c:(.rdata+0x3a0): multiple definition of `ds3dbvt'; buffer.cross.o:buffer.c:(.rdata+0x1040): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: duplex.cross.o:duplex.c:(.rdata+0x400): multiple definition of `ds3dlvt'; buffer.cross.o:buffer.c:(.rdata+0x10a0): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: mixer.cross.o:mixer.c:(.rdata+0x800c): multiple definition of `iksbvt'; buffer.cross.o:buffer.c:(.rdata+0x1010): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: mixer.cross.o:mixer.c:(.rdata+0x8040): multiple definition of `ds3dbvt'; buffer.cross.o:buffer.c:(.rdata+0x1040): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: mixer.cross.o:mixer.c:(.rdata+0x80a0): multiple definition of `ds3dlvt'; buffer.cross.o:buffer.c:(.rdata+0x10a0): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: primary.cross.o:primary.c:(.rdata+0xcc0): multiple definition of `ds3dlvt'; buffer.cross.o:buffer.c:(.rdata+0x10a0): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: primary.cross.o:primary.c:(.rdata+0xc40): multiple definition of `iksbvt'; buffer.cross.o:buffer.c:(.rdata+0x1010): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: primary.cross.o:primary.c:(.rdata+0xc60): multiple definition of `ds3dbvt'; buffer.cross.o:buffer.c:(.rdata+0x1040): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: propset.cross.o:propset.c:(.rdata+0x57c): multiple definition of `iksbvt'; buffer.cross.o:buffer.c:(.rdata+0x1010): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: propset.cross.o:propset.c:(.rdata+0x5a0): multiple definition of `ds3dbvt'; buffer.cross.o:buffer.c:(.rdata+0x1040): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: propset.cross.o:propset.c:(.rdata+0x600): multiple definition of `ds3dlvt'; buffer.cross.o:buffer.c:(.rdata+0x10a0): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: sound3d.cross.o:sound3d.c:(.rdata+0x12d4): multiple definition of `iksbvt'; buffer.cross.o:buffer.c:(.rdata+0x1010): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: sound3d.cross.o:sound3d.c:(.rdata+0x1300): multiple definition of `ds3dbvt'; buffer.cross.o:buffer.c:(.rdata+0x1040): first defined here
/usr/local/Cellar/mingw-w64/8.0.0/toolchain-i686/bin/i686-w64-mingw32-ld: sound3d.cross.o:sound3d.c:(.rdata+0x1360): multiple definition of `ds3dlvt'; buffer.cross.o:buffer.c:(.rdata+0x10a0): first defined here
collect2: error: ld returned 1 exit status
winegcc: i686-w64-mingw32-gcc failed
make[1]: *** [dsound.dll] Error 2
make: *** [dlls/dsound] Error 2

If you have any insight, that would be great!

Gcenx commented 3 years ago

That’s an easy one, here’s the section from my builder

# GCC10 changed from the old default of -fcommon to -fno-common this breaks
# older wine compiles passing this flag reverts the new default behavior.
#export CROSSCFLAGS="-fcommon"
# Only enable this if a compile fails with "multiple definitions"

You’ll need to start the compile over with export CROSSCFLAGS="-fcommon"

As mingw-w64 packages from homebrew and Macports now bundle gcc10 the above is required for older wine sources.

Please note;

crossover-wine-20.0.x sources are rather unstable when compared to 19.0.2, the only real improvements were microphone audio capture working within 32Bit apps, requesting permissions in a better manner and midi format audio working within 32Bit apps.

randy-girard commented 3 years ago

Thank you. I will check that out and see how it goes.

randy-girard commented 3 years ago

Now I am getting

icc.c:82:34: error: passing 'unsigned int *' to parameter of type '__storage32 ULONG *' (aka '__storage32 unsigned int *') changes address space of pointer
            adjust_endianness32( &tag->offset );
                                 ^~~~~~~~~~~~
icc.c:36:48: note: passing argument to parameter 'ptr' here
static inline void adjust_endianness32( ULONG *ptr )
                                               ^
icc.c:83:34: error: passing 'unsigned int *' to parameter of type '__storage32 ULONG *' (aka '__storage32 unsigned int *') changes address space of pointer
            adjust_endianness32( &tag->size );

2 errors generated.
make[1]: *** [icc.o] Error 1
make: *** [dlls/mscms] Error 2
Gcenx commented 3 years ago

You will encounter multiple build errors like this you’ll be required to disable these options.