You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Enhancement: per-feature flags + per-OS features in xpkg descriptors
Building the 3-platform compat.opencv surfaced two related gaps in the feature model. Both are needed to fully finish opencv's off-linux dnn feature and to silence benign build warnings.
Today a feature can carry sources, defines, deps — but notflags (per-glob defines/cxxflags). So a feature's group-specific compile flags (e.g. opencv's dnn feature needs mlas-specific defines **/3rdparty/mlas/** → {BUILD_MLAS_NO_ONNXRUNTIME=1, MLAS_GEMM_ONLY=1, …}) must live in the baseflags, whose glob then matches no source on a base (feature-off) build:
warning: [build].flags glob '**/3rdparty/mlas/**' matched no source file
mcpp xpkg parse confirms features.dnn.flags is an unknown key (silently ignored at build). Allowing flags inside a feature (applied only when the feature's sources are present) would let the flags co-locate with their sources and eliminate the dead-glob warnings.
2. per-OS features (or per-OS sources within a feature)
A feature's sources can be platform-specific: opencv's dnn on linux/windows is x86 (AVX kernels), on macOS/arm it's NEON — a different source/flag set. Today features is a neutral top-level key with one source list, so a feature can't differ per OS. Options that would solve it: allow mcpp.<os>.features, or per-OS keys inside a feature (features.dnn.macosx.sources), or document that such features should be split into a separate per-OS xpm package.
Why
Silences benign but noisy "matched no source file" warnings (dead feature/opencl flag-globs) — ecosystem polish.
Unblocks opencv-dnn on macOS/windows (per-OS dnn kernels) without splitting into a second package.
Repro: compat.opencv 5.0.0 on mcpp-index main (its dnn feature + the base build warnings). Happy to provide a minimal case.
Activity
feat(features): per-feature per-glob flags + per-OS features semantics (