ModuLisp/meson.build

108 lines
3.4 KiB
Meson
Raw Normal View History

# ModuLisp — standalone build of the portable engine extracted from uSEQ.
#
# Provenance: extracted from /home/w1n5t0n/src/useq-perform/src-useq @ git
# 1081ae8 (working-tree state, 2026-08-17). Library structure, flags and
# source lists mirror src-useq/meson.build; the firmware library and every
# firmware/WASM/nodedef-dependent test are intentionally absent.
project('modulisp', 'cpp',
default_options : ['cpp_std=c++17'],
)
# Add global compiler arguments with sensible warning configuration
# (identical to src-useq/meson.build).
common_warning_args = [
'-Wall', # Enable most warnings
'-Wextra', # Enable extra warnings
'-Wpedantic', # Pedantic warnings for ISO C++ compliance
'-Wshadow', # Warn about variable shadowing
'-Wunused', # Warn about unused variables/functions
'-Wuninitialized', # Warn about uninitialized variables
'-Wdouble-promotion', # Warn about float to double promotions
'-Wformat=2', # Strict format string checking
'-Wnull-dereference', # Warn about null pointer dereferences
]
add_global_arguments(common_warning_args, language : 'cpp')
# Define include directories
src_inc = include_directories('src')
# Define precompiled header for faster compilation
pch_file = 'src/pch.h'
# Host (non-Arduino) compile flags, mirroring src-useq with the always-on
# test configuration baked in: signal engine + devtools telemetry enabled.
standalone_args = [
'-DUSE_OWN_ARDUINO_STR',
'-DUSE_STD_IO',
'-DNO_ETL',
'-D__not_in_flash(section)=',
'-D__not_in_flash_func(x)=',
'-DENABLE_SIGNAL_ENGINE',
'-DUSEQ_DEVTOOLS=1',
]
# === STATIC LIBRARIES FOR PROPER DEPENDENCY TRACKING ===
# Utils library - lowest level, no dependencies
utils_lib = static_library('useq_utils',
'src/utils/string.cpp',
'src/utils/common.cpp',
'src/utils/itoa.cpp',
'src/utils/log.cpp',
include_directories : src_inc,
cpp_args : standalone_args,
cpp_pch : pch_file,
)
# Create a dependency object for utils
utils_dep = declare_dependency(
link_with : utils_lib,
include_directories : src_inc
)
# Devtools library - compile-time-gated telemetry instrumentation
devtools_inc = include_directories('src/devtools')
devtools_lib = static_library('useq_devtools',
'src/devtools/devtools.cpp',
include_directories : [src_inc, devtools_inc],
cpp_args : standalone_args,
cpp_pch : pch_file,
dependencies : utils_dep,
)
devtools_dep = declare_dependency(
link_with : devtools_lib,
include_directories : [src_inc, devtools_inc],
dependencies : utils_dep
)
# Signal engine library - depends on utils (symbol_intern.h is header-only)
signal_engine_lib = static_library('useq_signal_engine',
'src/signal_engine/diagnostics.cpp',
'src/signal_engine/token.cpp',
'src/signal_engine/cell_store.cpp',
'src/signal_engine/node_pool.cpp',
'src/signal_engine/executor.cpp',
'src/signal_engine/graph_builder.cpp',
'src/signal_engine/compiler_pipeline.cpp',
'src/signal_engine/cold_eval.cpp',
'src/signal_engine/state_registry.cpp',
'src/signal_engine/synth_registry.cpp',
'src/signal_engine/synth_graph.cpp',
include_directories : src_inc,
cpp_args : standalone_args,
cpp_pch : pch_file,
dependencies : [utils_dep, devtools_dep],
)
signal_engine_dep = declare_dependency(
link_with : signal_engine_lib,
include_directories : src_inc,
dependencies : [utils_dep, devtools_dep]
)
# Add test subdirectory
subdir('test')