app-emulation/dxvk: USE="+winegcc -mingw" is broken #8

Closed
opened 2020-04-25 06:27:26 +02:00 by stefson · 4 comments
FAILED: src/dxgi/dxgi.dll.so 
wineg++  -o src/dxgi/dxgi.dll.so 'src/dxgi/cde8a16@@dxgi.dll@sha/version.res' 'src/dxgi/cde8a16@@dxgi.dll@sha/dxgi_adapter.cpp.o' 'src/dxgi/cde8a16@@dxgi.dll@sha/dxgi_enums.cpp.o' 'src/dxgi/cde8a16@@dxgi.dll@sha/dxgi_factory.cpp.o' 'src/dxgi/cde8a16@@dxgi.dll@sha/dxgi_format.cpp.o' 'src/dxgi/cde8a16@@dxgi.dll@sha/dxgi_main.cpp.o' 'src/dxgi/cde8a16@@dxgi.dll@sha/dxgi_monitor.cpp.o' 'src/dxgi/cde8a16@@dxgi.dll@sha/dxgi_options.cpp.o' 'src/dxgi/cde8a16@@dxgi.dll@sha/dxgi_output.cpp.o' 'src/dxgi/cde8a16@@dxgi.dll@sha/dxgi_swapchain.cpp.o' ../dxvk-1.6.1/src/dxgi/dxgi.spec -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -shared -fPIC -Wl,--start-group -Wl,-soname,dxgi.dll.so -Wl,-O1 -Wl,--as-needed -m64 -mwindows src/dxvk/libdxvk.a src/util/libutil.a src/spirv/libspirv.a src/vulkan/libvkcommon.a -pthread -ldl -lwinevulkan -Wl,--end-group '-Wl,-rpath,$ORIGIN/../dxvk:$ORIGIN/../util:$ORIGIN/../spirv:$ORIGIN/../vulkan' -Wl,-rpath-link,/var/tmp/portage/app-emulation/dxvk-1.6.1-r1/work/dxvk-1.6.1-abi_x86_64.amd64/src/dxvk -Wl,-rpath-link,/var/tmp/portage/app-emulation/dxvk-1.6.1-r1/work/dxvk-1.6.1-abi_x86_64.amd64/src/util -Wl,-rpath-link,/var/tmp/portage/app-emulation/dxvk-1.6.1-r1/work/dxvk-1.6.1-abi_x86_64.amd64/src/spirv -Wl,-rpath-link,/var/tmp/portage/app-emulation/dxvk-1.6.1-r1/work/dxvk-1.6.1-abi_x86_64.amd64/src/vulkan
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /var/tmp/portage/app-emulation/dxvk-1.6.1-r1/temp/dxgi.dll.so.uUoeWl.ltrans2.ltrans.o: in function `dxvk::GetMonitorDisplayMode(HMONITOR__*, unsigned int, DEVMODEW*)':
<artificial>:(.text+0x2176): undefined reference to `EnumDisplaySettingsW'
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /var/tmp/portage/app-emulation/dxvk-1.6.1-r1/temp/dxgi.dll.so.uUoeWl.ltrans2.ltrans.o: in function `dxvk::env::getExePath[abi:cxx11]()':
<artificial>:(.text+0x226b): undefined reference to `GetModuleFileNameW'
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0x22b8): undefined reference to `WideCharToMultiByte'
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0x231a): undefined reference to `WideCharToMultiByte'
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /var/tmp/portage/app-emulation/dxvk-1.6.1-r1/temp/dxgi.dll.so.uUoeWl.ltrans3.ltrans.o: in function `dxvk::DxgiAdapter::runEventThread()':
<artificial>:(.text+0x7ba1): undefined reference to `MultiByteToWideChar'
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0x7baf): undefined reference to `GetCurrentThread'
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0x7df2): undefined reference to `GetModuleHandleW'
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0x7e01): undefined reference to `GetProcAddress'
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /var/tmp/portage/app-emulation/dxvk-1.6.1-r1/temp/dxgi.dll.so.uUoeWl.ltrans3.ltrans.o: in function `dxvk::DxvkInstance::DxvkInstance()':
<artificial>:(.text+0xaadf): undefined reference to `native_vkGetInstanceProcAddrWINE'
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0xaaf2): undefined reference to `native_vkGetInstanceProcAddrWINE'
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0xab05): undefined reference to `native_vkGetInstanceProcAddrWINE'
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0xab75): undefined reference to `native_vkGetInstanceProcAddrWINE'
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0xab89): undefined reference to `native_vkGetInstanceProcAddrWINE'
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /var/tmp/portage/app-emulation/dxvk-1.6.1-r1/temp/dxgi.dll.so.uUoeWl.ltrans3.ltrans.o:<artificial>:(.text+0xab9d): more undefined references to `native_vkGetInstanceProcAddrWINE' follow
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /var/tmp/portage/app-emulation/dxvk-1.6.1-r1/temp/dxgi.dll.so.uUoeWl.ltrans4.ltrans.o: in function `dxvk::DxgiAdapter::GetDesc2(DXGI_ADAPTER_DESC2*)':
<artificial>:(.text+0x14a5): undefined reference to `MultiByteToWideChar'
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0x1783): undefined reference to `AllocateLocallyUniqueId'
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/wine-vanilla-5.5/bin/../../../lib64/wine-vanilla-5.5/wine/libwinecrt0.a(dll_main.o): in function `DllMain':
(.text+0x1d): undefined reference to `DisableThreadLibraryCalls'
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/dxgi/dxgi.dll.so: hidden symbol `EnumDisplaySettingsW' isn't defined
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
winegcc: /usr/bin/x86_64-pc-linux-gnu-g++ failed

full build log is attached

``` FAILED: src/dxgi/dxgi.dll.so wineg++ -o src/dxgi/dxgi.dll.so 'src/dxgi/cde8a16@@dxgi.dll@sha/version.res' 'src/dxgi/cde8a16@@dxgi.dll@sha/dxgi_adapter.cpp.o' 'src/dxgi/cde8a16@@dxgi.dll@sha/dxgi_enums.cpp.o' 'src/dxgi/cde8a16@@dxgi.dll@sha/dxgi_factory.cpp.o' 'src/dxgi/cde8a16@@dxgi.dll@sha/dxgi_format.cpp.o' 'src/dxgi/cde8a16@@dxgi.dll@sha/dxgi_main.cpp.o' 'src/dxgi/cde8a16@@dxgi.dll@sha/dxgi_monitor.cpp.o' 'src/dxgi/cde8a16@@dxgi.dll@sha/dxgi_options.cpp.o' 'src/dxgi/cde8a16@@dxgi.dll@sha/dxgi_output.cpp.o' 'src/dxgi/cde8a16@@dxgi.dll@sha/dxgi_swapchain.cpp.o' ../dxvk-1.6.1/src/dxgi/dxgi.spec -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -shared -fPIC -Wl,--start-group -Wl,-soname,dxgi.dll.so -Wl,-O1 -Wl,--as-needed -m64 -mwindows src/dxvk/libdxvk.a src/util/libutil.a src/spirv/libspirv.a src/vulkan/libvkcommon.a -pthread -ldl -lwinevulkan -Wl,--end-group '-Wl,-rpath,$ORIGIN/../dxvk:$ORIGIN/../util:$ORIGIN/../spirv:$ORIGIN/../vulkan' -Wl,-rpath-link,/var/tmp/portage/app-emulation/dxvk-1.6.1-r1/work/dxvk-1.6.1-abi_x86_64.amd64/src/dxvk -Wl,-rpath-link,/var/tmp/portage/app-emulation/dxvk-1.6.1-r1/work/dxvk-1.6.1-abi_x86_64.amd64/src/util -Wl,-rpath-link,/var/tmp/portage/app-emulation/dxvk-1.6.1-r1/work/dxvk-1.6.1-abi_x86_64.amd64/src/spirv -Wl,-rpath-link,/var/tmp/portage/app-emulation/dxvk-1.6.1-r1/work/dxvk-1.6.1-abi_x86_64.amd64/src/vulkan /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /var/tmp/portage/app-emulation/dxvk-1.6.1-r1/temp/dxgi.dll.so.uUoeWl.ltrans2.ltrans.o: in function `dxvk::GetMonitorDisplayMode(HMONITOR__*, unsigned int, DEVMODEW*)': <artificial>:(.text+0x2176): undefined reference to `EnumDisplaySettingsW' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /var/tmp/portage/app-emulation/dxvk-1.6.1-r1/temp/dxgi.dll.so.uUoeWl.ltrans2.ltrans.o: in function `dxvk::env::getExePath[abi:cxx11]()': <artificial>:(.text+0x226b): undefined reference to `GetModuleFileNameW' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0x22b8): undefined reference to `WideCharToMultiByte' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0x231a): undefined reference to `WideCharToMultiByte' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /var/tmp/portage/app-emulation/dxvk-1.6.1-r1/temp/dxgi.dll.so.uUoeWl.ltrans3.ltrans.o: in function `dxvk::DxgiAdapter::runEventThread()': <artificial>:(.text+0x7ba1): undefined reference to `MultiByteToWideChar' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0x7baf): undefined reference to `GetCurrentThread' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0x7df2): undefined reference to `GetModuleHandleW' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0x7e01): undefined reference to `GetProcAddress' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /var/tmp/portage/app-emulation/dxvk-1.6.1-r1/temp/dxgi.dll.so.uUoeWl.ltrans3.ltrans.o: in function `dxvk::DxvkInstance::DxvkInstance()': <artificial>:(.text+0xaadf): undefined reference to `native_vkGetInstanceProcAddrWINE' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0xaaf2): undefined reference to `native_vkGetInstanceProcAddrWINE' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0xab05): undefined reference to `native_vkGetInstanceProcAddrWINE' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0xab75): undefined reference to `native_vkGetInstanceProcAddrWINE' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0xab89): undefined reference to `native_vkGetInstanceProcAddrWINE' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /var/tmp/portage/app-emulation/dxvk-1.6.1-r1/temp/dxgi.dll.so.uUoeWl.ltrans3.ltrans.o:<artificial>:(.text+0xab9d): more undefined references to `native_vkGetInstanceProcAddrWINE' follow /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /var/tmp/portage/app-emulation/dxvk-1.6.1-r1/temp/dxgi.dll.so.uUoeWl.ltrans4.ltrans.o: in function `dxvk::DxgiAdapter::GetDesc2(DXGI_ADAPTER_DESC2*)': <artificial>:(.text+0x14a5): undefined reference to `MultiByteToWideChar' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: <artificial>:(.text+0x1783): undefined reference to `AllocateLocallyUniqueId' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib/wine-vanilla-5.5/bin/../../../lib64/wine-vanilla-5.5/wine/libwinecrt0.a(dll_main.o): in function `DllMain': (.text+0x1d): undefined reference to `DisableThreadLibraryCalls' /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: src/dxgi/dxgi.dll.so: hidden symbol `EnumDisplaySettingsW' isn't defined /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: final link failed: bad value collect2: error: ld returned 1 exit status winegcc: /usr/bin/x86_64-pc-linux-gnu-g++ failed ``` full build log is attached
Author

someone using fedora has hit another bug while linking: https://github.com/doitsujin/dxvk/issues/1584

In this thread the maintainer also makes the decision to drop support for winegcc/winelibs builds entirely, so I guess you can remove it.

In any case, please be so kind to restore dxvk-1.6 , so that people have a safe ebuild to upgrade from.

Speaking of upgrading, does your setup_dxvk.sh script handle the WINEPREFIX upgrade on the fly when switching dxvk compilers and thus filenames? I haven't tried but prefered to uninstall the symlinks before upgrading to mingw, since I wasn't brave enough to reinstall the whole 45gb of Witcher3, which is my only usecase x)

someone using fedora has hit another bug while linking: https://github.com/doitsujin/dxvk/issues/1584 In this thread the maintainer also makes the decision to drop support for winegcc/winelibs builds entirely, so I guess you can remove it. In any case, please be so kind to restore dxvk-1.6 , so that people have a safe ebuild to upgrade from. Speaking of upgrading, does your setup_dxvk.sh script handle the WINEPREFIX upgrade on the fly when switching dxvk compilers and thus filenames? I haven't tried but prefered to uninstall the symlinks before upgrading to mingw, since I wasn't brave enough to reinstall the whole 45gb of Witcher3, which is my only usecase x)
Owner

I'll restore 1.6 later today. Which wine version are you using? It compiles fine here with wine-5.6 (Staging).

does your setup_dxvk.sh script handle the WINEPREFIX upgrade on the fly when switching dxvk compilers and thus filenames?

It looks like setup_dxvk.sh always named the files in $WINEPREFIX *.dll¹, even if they link to .so files, so there should be no problem. Did / Do you have any .so files in your system32 / syswow64 folders? I couldn't find any here.

¹ Here in dxvk 1.3: https://github.com/doitsujin/dxvk/blob/v1.3/setup_dxvk.sh#L93

I'll restore 1.6 later today. Which wine version are you using? It compiles fine here with wine-5.6 (Staging). > does your setup_dxvk.sh script handle the WINEPREFIX upgrade on the fly when switching dxvk compilers and thus filenames? It looks like `setup_dxvk.sh` always named the files in `$WINEPREFIX` *.dll¹, even if they link to .so files, so there should be no problem. Did / Do you have any .so files in your system32 / syswow64 folders? I couldn't find any here. ¹ Here in dxvk 1.3: <https://github.com/doitsujin/dxvk/blob/v1.3/setup_dxvk.sh#L93>
Author

No, I haven't really tried to find evidence about what the shell script actually does, I only saw there's at least a difference in the filenames, and also I haven't emerged dxvk-1.6.1-r1 with d3d9 support. I simply used --uninstall with the prefix before upgrading and thus reinstalled instead of updating the symlinks to play it safe.

Regarding the linking error, I'm using wine-vanilla-5.6, anything 5.x before that seems fine. Maybe I try again with wine-staging for finding the error.

No, I haven't really tried to find evidence about what the shell script actually does, I only saw there's at least a difference in the filenames, and also I haven't emerged dxvk-1.6.1-r1 with d3d9 support. I simply used --uninstall with the prefix before upgrading and thus reinstalled instead of updating the symlinks to play it safe. Regarding the linking error, I'm using wine-vanilla-5.6, ~~anything 5.x before that seems fine.~~ Maybe I try again with wine-staging for finding the error.
tastytea added the
wontfix
label 2020-05-18 15:57:42 +02:00
Owner

FireBurn maintains current versions with winegcc support. I'm gonna drop old versions with winegcc support from this repo soon.

[FireBurn](https://github.com/FireBurn/Overlay) maintains current versions with winegcc support. I'm gonna drop old versions with winegcc support from this repo soon.
Sign in to join this conversation.
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: tastytea/overlay#8
No description provided.