Skip to content

Commit 5d9c44c

Browse files
jcelerierclaude
andauthored
cmake: converge to generic find_package(Avendish) + avnd_addon_* setup (#4)
* ci: use ossia/actions/avendish-template composite action (build_cmake + vs2026) * ci: point avendish-template action at @master * ci: build pd back-end (pd: true) * cmake: migrate to find_package(Avendish) + avnd_addon_* (builds as score addon or standalone) * cmake: bump avendish pin * ci: replace legacy build_cmake.yml with the new avnd-addon.yml flow - builds.yaml calls ossia/actions/.github/workflows/avnd-addon.yml with all 11 backend toggles ON (the template's avnd_addon_object uses CATEGORY all, so every backend is expected). The new workflow brings per-backend SDK fetches (CLAP/VST3/PD/Max/TD/pybind11/emsdk) inline, so no special template-only composite is needed. - portability.yml calls avnd-portability.yml — desktop GCC/Clang/MSVC/ mingw matrix + FreeBSD + WASM + Android + iOS + ESP32 + RP2040 (the embedded lanes auto-skip without examples/*.ino, so they're silent for this template). - Drops build_cmake.yml + build_vs2026.yml (replaced + the new flow ships its own continuous-release job). builds.yaml currently pins ossia/actions to the @drop-ossia-sdk-dep branch while the corresponding actions PR is in review — flip to @master once it lands. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * trigger CI * ci: add workflow_dispatch trigger + push on migrate branch for testing * cmake: bump avendish pin to pick up output-naming + godot framework fixes Pins to c3f4b7c (avendish main HEAD) which includes: - option(AVND_ENABLE_<BACKEND>) flags for selective CI builds - corrected per-backend output naming (clap/vintage/python/vst3/standalone) - godot .framework BUNDLE on macOS + matching .gdextension paths Lets the new ossia/actions packagers find artifacts at the expected names (e.g. clap composite now finds <name>.clap instead of failing on <name>.clap.so). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * trigger rerun with gstreamer apt fix * trigger rerun with composite maxdepth fix * trigger rerun with gcc-14 default on Linux * trigger rerun with gstreamer glob fix * trigger rerun against pinned composite refs * trigger rerun with godot framework collection fix * trigger rerun with zip/gstreamer-mac/wasm fixes * trigger rerun with pd-windows pd.lib fix * trigger rerun with wasm boost fix * trigger rerun with gstreamer-mac linker fix * trigger rerun with gstreamer-mac + bash-3.2 fixes * ci: drop standalone, re-pin avendish for wasm embind fix - standalone: false — avendish's standalone backend is incomplete and needs a GUI toolkit (Qt / GLEW+glfw) not provisioned in CI. - Re-pin avendish to the fix-wasm-embind commit (celtera/avendish#105) so the wasm lane links embind via -lembind. Bump back to a main SHA once that PR merges. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * ci: re-pin avendish to corrected embind link-order fix * ci: wire portability workflow to run on the PR - Point at @drop-ossia-sdk-dep to pick up the fixed avnd-portability.yml (real SDK-free build instead of placeholder flags). - Add migrate-avnd-addon to the push trigger so the workflow actually runs while in review (GitHub doesn't fire pull_request for a workflow added in the same PR). Drop both feature-branch refs once ossia/actions#9 lands. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * trigger rerun with portability cross-lane fixes * trigger rerun with backend-disabled portability * ci: drop the iOS portability lane iOS isn't a meaningful target for an audio-processing avendish addon, and the lane failed on Xcode multi-config intermediate-path plumbing (the .a lands in a different config dir than the link step expects) rather than any real portability issue. The remaining 20 lanes cover the surface that matters. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * ci: consolidate to merged refs (avendish main + actions @master) avendish#105 and ossia/actions#9 are merged, so: - re-pin avendish to main (7f7dac9, the embind link-order fix) - point both workflows at ossia/actions ...@master - drop the testing-only migrate-avnd-addon push trigger and the workflow_dispatch/pull_request types scaffolding Final shipping config for the template. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * ci: temporarily re-add branch trigger to validate consolidated config * cmake: bump avendish pin to main (post enum-control fix #107) Moves off the temporary feature-branch SHA to avendish main, which now includes the wasm enum-control fix. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 5373a06 commit 5d9c44c

6 files changed

Lines changed: 80 additions & 97 deletions

File tree

.github/workflows/build_cmake.yml

Lines changed: 0 additions & 46 deletions
This file was deleted.

.github/workflows/build_vs2026.yml

Lines changed: 0 additions & 15 deletions
This file was deleted.

.github/workflows/builds.yaml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Build
2+
3+
on:
4+
pull_request:
5+
push:
6+
branches: [main, master]
7+
tags: ['v*']
8+
9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
11+
cancel-in-progress: true
12+
13+
jobs:
14+
ci:
15+
uses: ossia/actions/.github/workflows/avnd-addon.yml@master
16+
secrets: inherit
17+
with:
18+
pd: true
19+
max: true
20+
vst3: true
21+
clap: true
22+
vintage: true
23+
touchdesigner: true
24+
python: true
25+
godot: true
26+
# standalone left off: the avendish standalone backend is incomplete and
27+
# pulls in a GUI toolkit (Qt / GLEW+glfw) we don't provision in CI.
28+
standalone: false
29+
gstreamer: true
30+
wasm: true

.github/workflows/portability.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: Portability
2+
3+
on:
4+
pull_request:
5+
push:
6+
branches: [main, master]
7+
8+
concurrency:
9+
group: ${{ github.workflow }}-portability-${{ github.event.pull_request.number || github.ref }}
10+
cancel-in-progress: true
11+
12+
jobs:
13+
smoke:
14+
uses: ossia/actions/.github/workflows/avnd-portability.yml@master
15+
secrets: inherit
16+
with:
17+
# iOS off: Xcode multi-config intermediate-path plumbing fails for an
18+
# audio-processing addon, and iOS isn't a meaningful target here. The
19+
# other 20 lanes (desktop compilers + sanitizers, mingw, FreeBSD, wasm,
20+
# Android, ESP32/RP2040) cover the portability surface.
21+
ios: false

CMakeLists.txt

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,36 @@
1-
cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
1+
cmake_minimum_required(VERSION 3.24 FATAL_ERROR)
22

33
project(MyProcessor CXX)
44

5-
include(dependencies.cmake)
5+
# Use the Avendish the host already provides (e.g. ossia score); otherwise fetch it.
6+
# The same CMakeLists builds this as an ossia/score add-on or as a standalone object.
7+
find_package(Avendish QUIET)
8+
if(NOT Avendish_FOUND)
9+
include(FetchContent)
10+
FetchContent_Declare(
11+
Avendish
12+
GIT_REPOSITORY "https://github.com/celtera/avendish"
13+
GIT_TAG 6dacc12)
14+
FetchContent_Populate(Avendish)
15+
list(APPEND CMAKE_PREFIX_PATH "${avendish_SOURCE_DIR}")
16+
find_package(Avendish REQUIRED)
17+
endif()
618

7-
add_library(MyProcessor STATIC
8-
src/Model.cpp
9-
src/Model.hpp
10-
src/UI.hpp
11-
src/Processor.hpp
12-
)
19+
avnd_addon_init(NAME MyProcessor)
1320

14-
avnd_make_all(
15-
TARGET MyProcessor
16-
MAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/Processor.hpp"
17-
MAIN_CLASS MyProcessor
21+
# CATEGORY all: every back-end family -- audio plug-ins (VST3 / CLAP / VST2), the object
22+
# bindings (Max / Pd / Python / TouchDesigner / Godot) and gstreamer. In a score build
23+
# only the ossia process is produced. Back-ends whose SDK is absent are silently skipped.
24+
avnd_addon_object(
25+
BASE MyProcessor
1826
C_NAME my_processor
19-
)
27+
CLASS MyProcessor
28+
CATEGORY all
29+
MAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/Processor.hpp"
30+
SOURCES
31+
src/Model.cpp
32+
src/Model.hpp
33+
src/UI.hpp
34+
src/Processor.hpp)
2035

21-
# Workaround: when godot-cpp is pulled in via FetchContent, its only targets are
22-
# `godot-cpp` (+ alias `godot::cpp`) — there is no `godot-cpp::godot-cpp`. Avendish's
23-
# avnd_make_godot doesn't always resolve the target, so the generated headers under
24-
# <godot-cpp-build>/gen/include never make it onto the GDExtension's include path and
25-
# compilation fails with "godot_cpp/classes/node.hpp not found". Re-linking the target
26-
# here (at a scope where it is visible) propagates godot-cpp's PUBLIC include dirs.
27-
foreach(godot_target MyProcessor_NODE_godot MyProcessor_AUDIO_EFFECT_godot)
28-
if(TARGET ${godot_target} AND TARGET godot-cpp)
29-
target_link_libraries(${godot_target} PRIVATE godot-cpp)
30-
endif()
31-
endforeach()
36+
avnd_addon_finalize(NAME MyProcessor UUID a0ef0602-d1b2-46b7-9615-2049e1e97774 VERSION 1.0.0)

dependencies.cmake

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)