LMMS / LMMS/lmms

32-bit windows VST plugin host fails to compile on WoW64 wine

Open
#8,050 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug vst
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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.