BR: Enabling LV2 causes build to fail

error: Build input file cannot be found: '/Users/rrabien/dev.github/slPlugins/plugins/ABTester/modules/juce/modules/juce_audio_plugin_client/LV2/juce_LV2TurtleDumpProgram.cpp' (in target 'ABTester - LV2 Manifest Helper' from project 'ABTester')

weird, I have slPlugins LV2 builds with JUCE 7.0.0 and didn’t see such messages
is it with Projucer?

Yes, with Projucer

stupid question, but is that file actually exist?

perhaps it’s Mac specific issue

wait, this file should be in the slPlugins/modules/juce or do you reorganize it?

Nope, it’s just using the wrong path for some reason

yes, it passes it to the wrong in Mac export
BTW, have you consider using CMake for your plugins? It shall reduce build complexity a lot.

Yes, but I haven’t gotten around to it. Learning CMake is on my todo list.

1 Like

I see the same error on my end, also using the Projucer and VS2022:

Error C1083 Cannot open source file: 'path\to\FancyProject\submodules\JUCE\modules\juce_audio_plugin_client\LV2\juce_LV2TurtleDumpProgram.cpp': No such file or directory	path\to\FancyProject\builds\vs2022\c1xx	1	CMYK_LV2ManifestHelper	

First Issue

It looks like the Projucer incorrectly sets the path to the juce_LV2TurtleDumpProgram.cpp in the builds\vs2022\CMYK_LV2ManifestHelper.vcxproj:

<ClCompile Include="submodules\JUCE\modules\juce_audio_plugin_client\LV2\juce_LV2TurtleDumpProgram.cpp"/>

In this case, the Include attribute should be escaping twice. The paths set in the AdditionalIncludeDirectories XML children in that same vcxproj appear to work any other paths correctly.

Second Issue

Assuming the above is fixed, it looks like the Projucer still doesn’t set up the LV2 project up correctly. Notice the NewProject.dll, which should be the name of my project (eg: FancyProject in this example):

Error	MSB3073	The command ""path\to\FancyProject\builds\vs2022\x64\Debug\LV2 Manifest Helper\juce_lv2_helper.exe" "path\to\FancyProject\builds\vs2022\x64\Debug\LV2 Plugin\NewProject.lv2\NewProject.dll"

:VCEnd" exited with code 9009.	C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets	157	FancyProject_LV2Plugin	

I think I see the cause of the first issue, we’ll fix that shortly.

I’m less sure about the second one. The Projucer should respect the “Binary Name” field of each configuration; if the “Binary Name” is “Custom” then the build system should produce “Custom.lv2/Custom.dll”. When creating a new project, the binary name is initially set to match the project name. Is it possible that the “Binary Name” field is set to “NewProject” in your .jucer project?

Strange - like you said, the Binary Name was set to NewProject… Which is odd because it used to be the actual project name before (ie: set to the default by removing the string altogether). Easy fix anyway. Sorry about that!

Interestingly this is now building on my ci (github actions) but not on my local machine (latest xcode)

I’ve pushed a fix for Projucer LV2 builds here:

2 Likes

This fix appears to be for MSVC, I’m having issues in Xcode 13.3.1 on Monterey

Seems fine on GitHub actions that uses Xcode 13.2.1 on Big Sur

Latest changes and it seems to die linking on mac:

    /bin/sh -c /Users/runner/work/PAPU/PAPU/plugin/Builds/MacOSX/build/PAPU.build/Release/PAPU\\\ -\\\ LV2\\\ Plugin.build/Script-8C3576A278D6C1D114E9AF30.sh
ln: /Users/runner/Library/Audio/Plug-Ins/LV2//PAPU.lv2: No such file or directory
Command PhaseScriptExecution failed with a nonzero exit code

Any tips to actually get LV2 plugins to work? Anything I need to do other than enable the check box?

lilv_plugin_instantiate(): error: No plugin <file:///home/rrabien/.lv2/PAPU.lv2/www.socalabs.com/plugins/PAPU> in <file:///home/rrabien/.lv2/PAPU.lv2/PAPU.so>

Getting failures to instantiate in Carla and Ardour.

I think that autogenerated LV2URI hasn’t “:” separator, so it’s not properly recognized.
You can change the companyWebsite= in the .jucer to https://www.socalabs.com than LV2URI will be https://www.socalabs.com/plugin/PAPU, or set LV2URI to https://socalabs.com/papu/ (that I use for my builds)