feat(juce): let JUCE projects add the module through FetchContent - #32
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Argos notifications ↗︎
|
The top-level CMakeLists always looked up OpenSSL, and CURL unless MOONBASE_USE_CURL was off, although the JUCE module needs neither. A JUCE project therefore could not FetchContent_MakeAvailable() this repository on a machine without them, and had to fetch the sources and call juce_add_module() itself. MOONBASE_JUCE_MODULE_ONLY (off by default) adds just the moonbase_licensing module with JUCE's juce_add_module and leaves out the core SDK target and everything built on it, so OpenSSL, CURL and nlohmann_json are never looked up. JUCE has to be added first; the configure says so if it was not. The JUCE workflow now configures with the option, and a new job builds tests/juce_consumer_smoke, a JUCE project consuming the repository this way, with the OpenSSL and CURL lookups disabled outright.
TobbenTM
force-pushed
the
juce-module-only-cmake
branch
from
September 30, 2026 09:58
179c9b9 to
1b4e318
Compare
github-actions Bot
pushed a commit
that referenced
this pull request
Sep 30, 2026
# [4.5.0](v4.4.1...v4.5.0) (2026-09-30) ### Features * **juce:** let JUCE projects add the module through FetchContent ([#32](#32)) ([1717a08](1717a08))
|
🎉 This PR is included in version 4.5.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
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
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.
A customer reported that a JUCE project cannot consume this repository with
FetchContent_MakeAvailableon a machine without OpenSSL. The top-levelCMakeLists.txtalways runsfind_package(OpenSSL REQUIRED), plusfind_package(CURL REQUIRED)unlessMOONBASE_USE_CURLis off, although the JUCE module needs neither: it verifies with Security.framework / CNG / system libcrypto and transports overjuce::WebInputStream. JUCE users currently fetch the sources only and calljuce_add_module()themselves.MOONBASE_JUCE_MODULE_ONLY(off by default) adds just themoonbase_licensingmodule target with JUCE'sjuce_add_module, linksjuce_animationinto it when that JUCE has it, and leaves out the core SDK target and everything built on it (SDK tests, examples, device id tool, bridge example, install rules). OpenSSL, CURL and nlohmann_json are never looked up. JUCE has to be added first; ifjuce_add_moduleis not defined, configure fails with a message saying so. The option is opt-in because adding the module whenever JUCE is present would collide with projects that already callMakeAvailableand thenjuce_add_moduleon the module themselves.To make that a single switch,
CMakeLists.txtnow groups every SDK-only part in oneif(NOT MOONBASE_JUCE_MODULE_ONLY)block, with the JUCE section after it. Most of the diff is re-indentation, so review it with whitespace ignored.tests/juce/CMakeLists.txtnow looks up OpenSSL itself (the suite signs its test tokens with it) rather than relying on the top-level lookup.CI:
juce.ymlconfigures its matrix with-DMOONBASE_JUCE_MODULE_ONLY=ONinstead of-DMOONBASE_USE_CURL=OFF(the suite never used the SDK target). A newmodule-only consumerjob buildstests/juce_consumer_smoke, a JUCE project consuming the repository this way, withCMAKE_DISABLE_FIND_PACKAGE_OpenSSLandCMAKE_DISABLE_FIND_PACKAGE_CURLon, so anyREQUIREDlookup creeping back onto that path fails the configure.Docs: a FetchContent section in
docs/juce-module.md, a pointer in the module README, and a row in thedocs/core-sdk.mdoptions table. The newGIT_TAGpin is added toscripts/bump-version.sh, to the.releaserc.jsongit assets and toCONTRIBUTING.md, so releases keep it current (dry-run ofbump-version.shrewrites it).Verified locally on macOS:
tests/consumer_smokebuild.REQUIREDlookups, which is the reported bug.