32-bit windows VST plugin host fails to compile on WoW64 wine
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 10.4k
- Forks
- 1.3k
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 7
Description
### System Information
Arch Linux 6.16.3 and 6.15.4, probably a little earlier too
### LMMS Version(s)
any (tested with fbac56fdccc615b4efbd43dcb0a45a748e588838 and 344fdd5b1f228117a2587df3e3e833918e525a0f)
### Bug Summary
since arch updated to wine with WoW64, RemoteVstPlugin32 hasn't been able to build.
```
* VST plugin host : OK
* 32-bit Windows host : winegcc fails to compile 32-bit binaries, please make sure you have 32-bit GCC libraries
* 64-bit Windows host : OK
```
both `lib32-clang` and `lib32-gcc-libs` are installed, tested with gcc 15.1.1 ([log](https://github.com/user-attachments/files/21237781/cmake_gcc.log)), clang 20.1.7 ([log](https://github.com/user-attachments/files/21237782/cmake_clang.log)) and clang 20.1.8.
I also removed ERROR_QUIET from cmake/modules/CheckWineGcc.cmake:27 and it gave me this output:
error logs
/usr/bin/ld: cannot find -ladvapi32: No such file or directory
/usr/bin/ld: cannot find -luser32: No such file or directory
/usr/bin/ld: cannot find -lwinecrt0: No such file or directory
/usr/bin/ld: cannot find -lkernel32: No such file or directory
/usr/bin/ld: cannot find -lntdll: No such file or directory
/usr/bin/ld: skipping incompatible /usr/lib/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/libstdc++.a when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/libm.so when searching for -lm
/usr/bin/ld: skipping incompatible /usr/lib/libm.a when searching for -lm
/usr/bin/ld: skipping incompatible /usr/lib/libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib/libc.a when searching for -lc
collect2: error: ld returned 1 exit status
winegcc: /usr/bin/g++ failed
seeing the wine_64_flags, I looked into `/usr/lib/wine/` and indeed there was `i386-unix` with nothing inside. Trying to look for a package that contains `/usr/lib/wine/i386-unix/advapi32.a` yielded no results.
After building, trying to open e.g. mda Piano in vestige yields the error `Remote plugin '/data/diyfs/lmms/build/plugins/32/RemoteVstPlugin32' not found` in stderr, which makes sense.
### Expected Behaviour
RemoteVstPlugin32 should build, allowing 32-bit VSTs to be loaded
### Steps To Reproduce
1. install arch (or any other distro that uses WoW64 wine)
2. try building LMMS
3. profit?
### Please search the issue tracker for existing bug reports before submitting your own.
- [x] I have searched all existing issues and confirmed that this is not a duplicate.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with cmake/modules/CheckWineGcc.cmake at line 27 and inspect how the winegcc 32-bit compiler check is configured for WoW64. Reproduce the failure on Arch Linux with the reported 32-bit GCC or Clang libraries and review the linked compiler logs. Done means the build produces plugins/32/RemoteVstPlugin32 and 32-bit VSTs can be loaded.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cmake, cpp, linux
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100