MCC
Loading...
Searching...
No Matches
Build Guide

Configure MCC against a matching Foundation package. More...

Collaboration diagram for Build Guide:

Topics

 Foundation Dependency
 Foundation package resolution and compatibility contract.
 Platform Presets
 Public MCC presets backed by pinned RoModularBuild profiles.

Detailed Description

Configure MCC against a matching Foundation package.

MCC locates or fetches Foundation automatically (see Foundation Dependency):

./scripts/configure.sh macos_arm64 --fresh
./scripts/build.sh macos_arm64 --config Debug

To use a specific Foundation package, point MCC at its prefix:

./scripts/configure.sh macos_arm64 --fresh -- \
-DMCC_FOUNDATION_PREFIX=../Foundation/dist/macos_arm64

Language Standard

CMake packages and direct source builds require C++17. Arduino source mode also supports the C++11 default selected by stock cores, including the AVR core used by Arduino Uno; no global compiler-flag override is required.

Functions that require C++14 relaxed constexpr are ordinary inline functions only under Arduino C++11. They keep the same runtime behavior and remain constexpr with C++14 or newer. Scale and chord catalogs are stored as precomputed constant data, so AVR continues to keep them in program memory rather than initializing them in RAM.

The Arduino source-mode gate compiles every example with the core's default flags:

./scripts/test-arduino.sh

On Windows, run scripts/test-arduino.ps1 from PowerShell.

Arduino Hardware Validation

MCC 0.5.2 was manually validated on a physical Arduino Mega 2560 using the stock AVR core and its default C++11 mode. All seven example sketches compiled, uploaded, and produced their expected serial output. This is runtime hardware evidence in addition to the automated Arduino Uno compile gate. On 2026-10-02 Scale/Scales and Chord/Chords were run again on the same board, reading the catalogs from program memory, and matched the desktop output. The three Rhythm sketches added after 0.5.2 are compiled for the Uno in CI but have not run on hardware yet. Physical-board execution is not yet automated in CI.