From 580c90ebb2c3149c3ddbdd0ff816cd115c51ea4d Mon Sep 17 00:00:00 2001 From: Sudara Date: Sat, 18 Jul 2026 23:37:06 +0200 Subject: [PATCH 1/6] Skip the pluginval_cli target when the consuming project has no matching plugin target --- CMakeLists.txt | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 714fb91..fdda65b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -266,16 +266,19 @@ else() set(PLUGINVAL_TARGET "${CMAKE_PROJECT_NAME}_VST3") endif() - get_target_property(artefact ${PLUGINVAL_TARGET} JUCE_PLUGIN_ARTEFACT_FILE) - - # TODO: This doesn't populate the executable in clion - add_custom_target(${CMAKE_PROJECT_NAME}_pluginval_cli - COMMAND $ - validate - --strictness-level 10 - ${artefact} - DEPENDS pluginval ${PLUGINVAL_TARGET} - COMMENT "Run pluginval CLI with strict validation") + # An umbrella/multi-product project has no ${CMAKE_PROJECT_NAME}_AU target, so skip instead of hard-erroring. + if (TARGET ${PLUGINVAL_TARGET}) + get_target_property(artefact ${PLUGINVAL_TARGET} JUCE_PLUGIN_ARTEFACT_FILE) + + # TODO: This doesn't populate the executable in clion + add_custom_target(${CMAKE_PROJECT_NAME}_pluginval_cli + COMMAND $ + validate + --strictness-level 10 + ${artefact} + DEPENDS pluginval ${PLUGINVAL_TARGET} + COMMENT "Run pluginval CLI with strict validation") + endif() endif() # In-repo dogfood plugins + acceptance self-tests. From 0e808313556e3623c13bf42d361b444ddd569de5 Mon Sep 17 00:00:00 2001 From: David Rowland Date: Thu, 8 Oct 2026 12:10:13 +0100 Subject: [PATCH 2/6] Bump JUCE to 9.0.3 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fdda65b..e682e9c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,7 +81,7 @@ endif() # Only fetch JUCE when top-level (when used as dependency, JUCE is already available) if (pluginval_IS_TOP_LEVEL) - CPMAddPackage("gh:juce-framework/juce#8.0.13") + CPMAddPackage("gh:juce-framework/juce#9.0.3") endif() From eeb7178110efbe4cdc339d4fc3ff1832b92b2a5c Mon Sep 17 00:00:00 2001 From: David Rowland Date: Thu, 8 Oct 2026 12:13:48 +0100 Subject: [PATCH 3/6] Test as-dependency against JUCE 9.0.3 and add libxi-dev to Linux CI deps --- .github/workflows/build.yaml | 6 +++--- tests/pluginval_as_dependency/CMakeLists.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 0272528..fbb9dcb 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -67,7 +67,7 @@ jobs: run: | sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update - sudo apt-get install -y freeglut3-dev g++ libasound2-dev libcurl4-openssl-dev libfreetype6-dev libjack-jackd2-dev libx11-dev libxcomposite-dev libxcursor-dev libxinerama-dev libxrandr-dev mesa-common-dev ladspa-sdk libwebkit2gtk-4.1-dev xvfb gdb + sudo apt-get install -y freeglut3-dev g++ libasound2-dev libcurl4-openssl-dev libfreetype6-dev libjack-jackd2-dev libx11-dev libxi-dev libxcomposite-dev libxcursor-dev libxinerama-dev libxrandr-dev mesa-common-dev ladspa-sdk libwebkit2gtk-4.1-dev xvfb gdb sudo /usr/bin/Xvfb $DISPLAY & - name: Make VST2 SDK available @@ -177,7 +177,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, macos-15, windows-latest] - juce: ["8.0.13"] + juce: ["8.0.13", "9.0.3"] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 @@ -186,7 +186,7 @@ jobs: if: runner.os == 'Linux' run: | sudo apt-get update - sudo apt-get install -y libasound2-dev libfreetype6-dev libx11-dev libxcomposite-dev libxcursor-dev libxinerama-dev libxrandr-dev mesa-common-dev libwebkit2gtk-4.1-dev ladspa-sdk + sudo apt-get install -y libasound2-dev libfreetype6-dev libx11-dev libxi-dev libxcomposite-dev libxcursor-dev libxinerama-dev libxrandr-dev mesa-common-dev libwebkit2gtk-4.1-dev ladspa-sdk - name: Configure run: cmake -B build -S tests/pluginval_as_dependency -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE}} -DJUCE_VERSION="${{ matrix.juce }}" diff --git a/tests/pluginval_as_dependency/CMakeLists.txt b/tests/pluginval_as_dependency/CMakeLists.txt index 0ea3743..01d22b7 100644 --- a/tests/pluginval_as_dependency/CMakeLists.txt +++ b/tests/pluginval_as_dependency/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.22) project(PluginvalAsDependency VERSION 1.0.0) -set(JUCE_VERSION "8.0.3" CACHE STRING "JUCE version to test against") +set(JUCE_VERSION "9.0.3" CACHE STRING "JUCE version to test against") include(${CMAKE_CURRENT_LIST_DIR}/../../cmake/CPM.cmake) From 1266a7c6a04b0e7bb7af2f933949bc0425a11caf Mon Sep 17 00:00:00 2001 From: David Rowland Date: Thu, 8 Oct 2026 12:13:51 +0100 Subject: [PATCH 4/6] Add JUCE 9.0.3 update to the change list --- CHANGELIST.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELIST.md b/CHANGELIST.md index 4154f08..edd972a 100644 --- a/CHANGELIST.md +++ b/CHANGELIST.md @@ -1,6 +1,7 @@ # pluginval Change List ### 2.0.0 +- Updated JUCE to 9.0.3 - Added acceptance testing: `pluginval test ` renders a plugin with a known state, input (audio/MIDI) and optional playhead, then compares the output against a checked-in reference WAV, exiting `0` on a match and `1` on a mismatch (with a diff WAV). Use `--record-missing` to record new references. See `docs/Acceptance testing.md` - Restructured the command line into subcommands: `pluginval validate [options] ` (the default), `pluginval run-tests` and `pluginval strictness-help [level]`. The plugin path is now a positional argument of `validate` - **Deprecated:** the flat flags `--validate `, `--run-tests` and `--strictness-help [level]` still work as aliases (with a one-line notice) but will be removed in a future version. `pluginval ` remains a silent shorthand for `validate` From 3dd4751906545b9eb9d6378bd360842096bd36d7 Mon Sep 17 00:00:00 2001 From: David Rowland Date: Thu, 8 Oct 2026 12:13:51 +0100 Subject: [PATCH 5/6] Update JUCE version mentions in docs --- CLAUDE.md | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 4a16898..56ba315 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,7 +6,7 @@ - **Version**: 2.0.0 (see `VERSION` file) - **License**: GPLv3 -- **Framework**: Built on JUCE (v8.0.x) +- **Framework**: Built on JUCE (v9.0.x) - **Language**: C++20 ### Key Features diff --git a/README.md b/README.md index 144a6bc..4daf147 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ CPMAddPackage("gh:tracktion/pluginval#develop") Then all you need to do is call `add_subdirectory ("modules/pluginval")` in your `CMakeLists.txt`. This should be done **after** your call to `juce_add_plugin`. -Note that only JUCE 8 is currently supported/tested for this method. +Note that only JUCE 8 and 9 are currently supported/tested for this method. ### Third-party Installation ###### _Chocolatey (Windows):_ From d8dbdf6732fe9d823c73524bda5f7ff4d1a6f9e4 Mon Sep 17 00:00:00 2001 From: David Rowland Date: Thu, 8 Oct 2026 12:43:46 +0100 Subject: [PATCH 6/6] Add libxi-dev to the acceptance workflow's Linux deps --- .github/workflows/acceptance.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index 80b1f18..f764864 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -43,7 +43,7 @@ jobs: run: | sudo apt-get update sudo apt-get install -y \ - libasound2-dev libx11-dev libxext-dev libxinerama-dev libxrandr-dev \ + libasound2-dev libx11-dev libxext-dev libxi-dev libxinerama-dev libxrandr-dev \ libxcursor-dev libxcomposite-dev libfreetype6-dev libfontconfig1-dev \ libgl1-mesa-dev libcurl4-openssl-dev ladspa-sdk ninja-build xvfb