Skip to content

Conversation

@drowaudio
Copy link
Contributor

  • 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

claude and others added 14 commits January 31, 2026 17:48
- 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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants