brummer10 / guitarix

guitarix virtual versatile amplification for Jack/Linux
234 stars 24 forks source link

Support building LV2 plugins for MSWin #116

Closed torte71 closed 1 year ago

torte71 commented 1 year ago

API-wise, there is just a single change required to the zita-convolver to compile and work (_aligned_malloc()), see 0e746cc. The plugins are built as statically linked dynamic libraries to avoid install problems. Commit 1d351a1 prevents fftw3 from being dynamically linked by waf's automagic and the livelooper is disabled because of its additional dependency on libsndfile. The required steps and flags for "waf configure" are described in the README.mswin.

brummer10 commented 1 year ago

Many thanks! I wonder about the 'Avoid dynamic linkinglibfftw3 foe MSwin plugins' how does it work then when no fftw symbols been found? Don't we need a replacement then?

torte71 commented 1 year ago

(If compiled on MSWin,) libfftw3 gets statically linked to the plugins using the ldflags passed to "waf configure" as parameter. There is an example command in the README.mswin, ldflags on line 28.

brummer10 commented 1 year ago

Ah, okay, haven't seen that. Nice, well done.

torte71 commented 1 year ago

In the meantime, I've got most of xputty working on mswin: The comboboxes still need some work and the widgets for other projects (filepicker, midikey) haven't been looked at, but the other widgets and drawing stuff seem to work as expected. The assets generated from the qnd branch of my fork are gui-enabled and work fine, e.g. the tuner. There are still a bunch of things to do (cleanups, missing implementations, taming the waf, checking the linux version, etc.), but I'm quite positive, that this is doable until springtime.

brummer10 commented 1 year ago

Very cool. I've added you to the Collaborators list of guitarix, libxputty and XUiDesigner so you've write access to those repositories now.

torte71 commented 1 year ago

It's almost done, the widgets are working fine so far and I've pushed my code to the guitarix master banch. Left to do is renaming the .so files to .dll (only mswin, of course) and adjust the ttl files. And (probably) setting up a build.yaml that produces readily built versions, as done on GxPlugins (I am currently checking out to get descriptive names for these "test" builds, e.g. "guitarix-0.44.1-master-abcdef.deb", so the branch and commit is visible. But the released versions should be named, as before).

brummer10 commented 1 year ago

Very nice work!

brummer10 commented 1 year ago

I noticed a small issue when I tried to regenerate the faust files. Renaming LV2 ports needs to be done in the faust source files, not in the generated files, in order to allow regenerating the correspondent *.cc files. I've pushed a fix for that to the repository. Otherwise it seems to work nicely.