memlnaut-nisps/vcv/Makefile
monkey-w1n5t0n 1b69254de2 feat(vcv): reunify module onto core MLP — thin iml.hpp adapter (P6)
Replace the vendored runtime MLP in vcv/src/iml.hpp (DetRng + 3D-weight-store
MLP + Dataset + IML) with a THIN, Rack-free adapter over the shared core:
nisps::ml::MLPCore<nisps::ml::DynamicStorage> (8->[16,24,16]->16, the P2 dynamic
case), nisps::Rng, and the core MLP's own FIFO dataset. Behaviour changes from
the vendored approximation to core-exact firmware/WASM semantics.

- MEMLNaut.cpp: staged/pending weight buffers and patch JSON now use the core's
  flat [weights..][biases..] vector (nisps::IML<float>::Weights); patch version
  bumped to 3. Double-buffer / single-writer threading discipline unchanged.
- New ctest tests/cpp/test_vcv_iml_parity.cpp: seeded train/infer/move_weights
  session through the adapter is memcmp-equal to a bare MLPCore<DynamicStorage>.
- Docs: vcv-module.md delta #5 marked CLOSED (2026-07-18); MAP.md vcv/ updated.

Closes vcv-module.md delta #5.
2026-07-18 13:01:28 +02:00

27 lines
965 B
Makefile

RACK_DIR ?= $(HOME)/.local/share/Rack2/Rack-SDK
# Detect the target arch early (defines ARCH_WIN/ARCH_LIN/ARCH_MAC) so we can add
# per-platform link libs before plugin.mk wires the link rule. The OSC bridge
# server (src/osc_server.hpp) uses Winsock2 on Windows; mingw ignores the
# MSVC-only `#pragma comment(lib, "ws2_32.lib")`, so link it explicitly.
include $(RACK_DIR)/arch.mk
ifdef ARCH_WIN
LDFLAGS += -lws2_32
endif
FLAGS += -std=c++20
FLAGS += -I$(RACK_DIR)/include -I$(RACK_DIR)/dep/include
# src/iml.hpp is a THIN adapter over the shared C++ core: it pulls in
# nisps/ml/{mlp,dynamic_storage}.hpp + nisps/core/rng.hpp via relative includes
# (../../nisps/…), so no extra -I for the core is needed here (P6, 2026-07-18).
FLAGS += -Isrc
SOURCES += src/plugin.cpp
SOURCES += src/MEMLNaut.cpp
DISTRIBUTABLES += res
include $(RACK_DIR)/plugin.mk
# Remove SDK's default c++11 to avoid conflicting flags
CXXFLAGS := $(filter-out -std=c++11,$(CXXFLAGS))