-
-
Notifications
You must be signed in to change notification settings - Fork 72
Integrate VST3 validator directly into pluginval binary #162
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
drowaudio
wants to merge
14
commits into
develop
Choose a base branch
from
claude/plan-vstvalidator-integration-4wOI7
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+462
−62
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- Add VST3 SDK as a dependency via CPM (fetched during cmake configure) - Create VST3ValidatorRunner wrapper to call SDK validation APIs - Add --vst3-validator-mode CLI option for running embedded validator - Modify VST3validator test to use embedded validator instead of external binary - Remove --vst3validator CLI option and related UI code (no longer needed) - Update CLAUDE.md documentation with new build options and architecture The embedded validator eliminates the need for users to supply a separate vstvalidator binary path. When built with PLUGINVAL_VST3_VALIDATOR=ON (default), the validator runs automatically for VST3 plugins at strictness level 5+. https://claude.ai/code/session_01AY9chvBEmsCVjNZSUkNcbw
- Add platform-specific module loading sources from SDK (module_linux.cpp, etc.) - Fix VST3ValidatorRunner to use correct SDK APIs: - Use template createInstance<T>() method - Use FUnknownPtr for interface casting - Remove incompatible ITestResult implementation - Add sdk library to link dependencies - Fix argument parsing to not auto-insert --validate when using --vst3-validator-mode https://claude.ai/code/session_01AY9chvBEmsCVjNZSUkNcbw
The VST3 SDK's module_mac.mm requires Automatic Reference Counting (ARC) to be enabled. Add -fobjc-arc compile flag for this specific source file. https://claude.ai/code/session_01AY9chvBEmsCVjNZSUkNcbw
- Add Ole32 and Shell32 libraries for Windows module loading - Add Cocoa framework for macOS module loading - Add hosting directory to include paths https://claude.ai/code/session_01AY9chvBEmsCVjNZSUkNcbw
Add NOMINMAX and WIN32_LEAN_AND_MEAN definitions to avoid conflicts with JUCE's Windows header handling. https://claude.ai/code/session_01AY9chvBEmsCVjNZSUkNcbw
- Add try-catch around validation logic to handle exceptions - Add stderr output for errors to improve visibility in CI logs - This helps diagnose validation failures on macOS and Windows https://claude.ai/code/session_01AY9chvBEmsCVjNZSUkNcbw
- Use MSVC-specific /D flags for compile definitions - Add _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING - This ensures definitions are applied correctly for MSVC builds https://claude.ai/code/session_01AY9chvBEmsCVjNZSUkNcbw
Instead of adding compile flags to the SDK's module_win32.cpp directly, use a wrapper source file that sets up the necessary preprocessor definitions (NOMINMAX, WIN32_LEAN_AND_MEAN, _UNICODE, etc.) before including the SDK source. This ensures proper compilation environment when building outside the VST3 SDK's CMake context. https://claude.ai/code/session_01AY9chvBEmsCVjNZSUkNcbw
Replace wrapper file approach with target-level compile definitions. This adds the necessary Windows macros (NOMINMAX, WIN32_LEAN_AND_MEAN, _UNICODE, _CRT_SECURE_NO_WARNINGS, etc.) to the pluginval target when building on Windows with VST3 validator enabled. https://claude.ai/code/session_01AY9chvBEmsCVjNZSUkNcbw
- Set SMTG_USE_STATIC_CRT=ON to match pluginval's static CRT linking - Add vst and utility include directories for VST3 SDK module compilation https://claude.ai/code/session_01AY9chvBEmsCVjNZSUkNcbw
Isolate the Windows module_win32.cpp compilation into a separate OBJECT library with its own compile settings, avoiding potential conflicts with JUCE's compilation environment. The object library: - Uses C++17 (matching SDK's validator) - Has SDK-specific include directories - Sets Windows compatibility definitions - Uses static CRT to match pluginval https://claude.ai/code/session_01AY9chvBEmsCVjNZSUkNcbw
Use PUBLIC link to sdk_hosting to inherit its include directories automatically, and only add the minimal additional includes needed. https://claude.ai/code/session_01AY9chvBEmsCVjNZSUkNcbw
Remove the OBJECT library approach and add module_win32.cpp directly to the pluginval sources like on other platforms. The Windows-specific compile definitions (NOMINMAX, WIN32_LEAN_AND_MEAN, etc.) are already set at the target level. https://claude.ai/code/session_01AY9chvBEmsCVjNZSUkNcbw
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The embedded validator eliminates the need for users to supply a separate
vstvalidator binary path. When built with PLUGINVAL_VST3_VALIDATOR=ON (default),
the validator runs automatically for VST3 plugins at strictness level 5+.
https://claude.ai/code/session_01AY9chvBEmsCVjNZSUkNcbw