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.
27 lines
965 B
Makefile
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))
|