Dependency Graph Note
Generated from CMakeLists.txt — 2026-03-10. See Build Tiers for cmake commands.
Legend Color Meaning ⚫ Grey External library 🔵 Dark blue Engine tier 🔵 Light blue Framework 🟢 Green Core modules 🟢 Green dashed cfitsio-dependent (USE_CFITSIO) 🟣 Purple Plugins 🟠 Orange Cacao modules 🟡 Gold Executables -.-> dashed arrow Conditional link
1. Core Stack graph TD
CFITSIO["cfitsio"]:::ext
NCURSES["ncurses"]:::ext
READLINE["readline"]:::ext
subgraph engine ["Engine Tier — POSIX only"]
ISIO["ImageStreamIO"]:::core
PROCINFO["milkprocessinfo"]:::core
FPS["milkfps"]:::core
MILKDATA["milkdata"]:::core
end
MILKTUI["milkTUI"]:::core
PITUI["milkprocessinfoTUI"]:::fw
FPSTUI["milkfpsTUI"]:::fw
FPSCLI["milkfpsCLI"]:::fw
FPSSTANDALONE["milkfpsStandalone"]:::fw
subgraph coremods ["Core Tier — USE_COREMODS"]
ARITH["COREMODarith"]:::coremod
MEMORY["COREMODmemory"]:::coremod
TOOLS["COREMODtools"]:::coremod
end
IOFITS["COREMODiofits"]:::coremod_fits
CLICORE["CLIcore"]:::fw
FPSCTRL["milk-fpsCTRL"]:::exe
PROCCTRL["milk-procCTRL"]:::exe
STREAMCTRL["milk-streamCTRL"]:::exe
MILKEXE["milk-fpsexec-*"]:::exe
CACAOEXE["cacao-fpsexec-*"]:::exe
FPSTOOLS["milk-fps-set/list/..."]:::exe
ISIO -.->|headers only| CFITSIO
PROCINFO --> ISIO
FPS --> ISIO
FPS --> PROCINFO
MILKDATA --> FPS
MILKDATA --> PROCINFO
MILKTUI --> ISIO
MILKTUI --> NCURSES
IOFITS --> FPS
IOFITS --> CFITSIO
ARITH --> FPS
ARITH -.->|USE_CFITSIO| IOFITS
ARITH -.->|USE_CFITSIO| CFITSIO
MEMORY --> FPS
MEMORY -.->|USE_CFITSIO| CFITSIO
TOOLS --> FPS
PITUI --> PROCINFO
PITUI --> MILKTUI
FPSTUI --> FPS
FPSTUI --> MILKTUI
FPSCLI --> FPS
FPSCLI --> CLICORE
FPSSTANDALONE --> FPS
FPSSTANDALONE --> MILKDATA
CLICORE --> ARITH
CLICORE -.->|USE_CFITSIO| IOFITS
CLICORE --> MEMORY
CLICORE --> TOOLS
CLICORE --> FPS
CLICORE --> MILKDATA
CLICORE --> PROCINFO
CLICORE --> MILKTUI
CLICORE --> FPSTUI
CLICORE --> PITUI
CLICORE --> READLINE
CLICORE --> NCURSES
CLICORE -.->|USE_CFITSIO| CFITSIO
FPSCTRL --> FPSTUI
FPSCTRL --> CLICORE
PROCCTRL --> PITUI
STREAMCTRL --> CLICORE
STREAMCTRL --> ISIO
MILKEXE --> FPSSTANDALONE
CACAOEXE --> FPSSTANDALONE
FPSTOOLS --> FPSSTANDALONE
classDef ext fill:#566573,stroke:#333,color:#fff
classDef core fill:#1a5276,stroke:#123,color:#fff
classDef fw fill:#2e86c1,stroke:#1a5,color:#fff
classDef coremod fill:#1e8449,stroke:#145,color:#fff
classDef coremod_fits fill:#27ae60,stroke:#145,color:#fff,stroke-dasharray: 5 5
classDef exe fill:#b7950b,stroke:#a80,color:#000 2. Plugins & Cacao Only built in the Full tier (all defaults ON).
graph TD
CLICORE["CLIcore"]:::fw
OPENBLAS["OpenBLAS"]:::ext
FFTW["FFTW"]:::ext
GSL["GSL"]:::ext
subgraph milkplugins ["milk-extra plugins"]
FFT["milkfft"]:::plugin
LINALG["milklinalgebra"]:::plugin
LINOPT["milklinoptimtools"]:::plugin
STAT["milkstatistic"]:::plugin
IMGGEN["milkimagegen"]:::plugin
IMGBASIC["milkimagebasic"]:::plugin
IMGFILT["milkimagefilter"]:::plugin
IMGFMT["milkimageformat"]:::plugin
INFO["milkinfo"]:::plugin
ZERNIKE["milkZernikePolyn"]:::plugin
LINARPRED["milklinARfilterPred"]:::plugin
KDTREE["milkkdtree"]:::plugin
IMREDUCE["milkimgreduce"]:::plugin
PSF["milkpsf"]:::plugin
CLUSTER["milkclustering"]:::plugin
end
subgraph cacaomods ["cacao modules"]
AOLOOP["cacaoAOloopControl"]:::cacao
AODM["cacaoAOloopControlDM"]:::cacao
AOIO["cacaoAOloopControlIOtools"]:::cacao
AOACQ["cacaoAcquireCalib"]:::cacao
AOPC["cacaoPredictiveControl"]:::cacao
AOCT["cacaoCompTools"]:::cacao
AOPT["cacaoPerfTest"]:::cacao
COMPCALIB["cacaoComputeCalib"]:::cacao
PYRWFS["cacaoPyramidWFS"]:::cacao
end
FFT --> CLICORE
FFT --> FFTW
LINALG --> CLICORE
LINALG --> OPENBLAS
LINOPT --> CLICORE
LINOPT --> GSL
STAT --> CLICORE
IMGGEN --> CLICORE
IMGGEN --> STAT
IMGBASIC --> CLICORE
IMGFILT --> CLICORE
IMGFMT --> CLICORE
IMGFMT -.-> IMGFILT
INFO --> CLICORE
ZERNIKE --> CLICORE
ZERNIKE --> IMGGEN
LINARPRED --> CLICORE
LINARPRED --> OPENBLAS
KDTREE --> CLICORE
IMREDUCE --> CLICORE
PSF --> CLICORE
CLUSTER --> CLICORE
AOLOOP --> CLICORE
AOLOOP --> LINOPT
AODM --> CLICORE
AODM --> FFT
AODM --> IMGGEN
AODM --> IMGFILT
AODM --> AOLOOP
AOIO --> CLICORE
AOIO --> INFO
AOIO --> AOLOOP
AOACQ --> CLICORE
AOACQ --> INFO
AOACQ --> AOLOOP
AOPC --> CLICORE
AOPC --> LINOPT
AOPC --> AOLOOP
AOCT --> CLICORE
AOCT --> AOLOOP
AOPT --> CLICORE
AOPT --> STAT
AOPT --> AOLOOP
COMPCALIB --> CLICORE
COMPCALIB --> INFO
COMPCALIB --> AOLOOP
COMPCALIB --> OPENBLAS
PYRWFS --> CLICORE
PYRWFS --> INFO
PYRWFS --> AOLOOP
classDef ext fill:#566573,stroke:#333,color:#fff
classDef fw fill:#2e86c1,stroke:#1a5,color:#fff
classDef plugin fill:#7d3c98,stroke:#5a2,color:#fff
classDef cacao fill:#d35400,stroke:#a00,color:#fff 3. Standalone Build (USE_CLI=OFF) Standalone executables use _compute library variants (compiled with MILK_NO_CLI).
graph TD
CFITSIO["cfitsio"]:::ext
ISIO["ImageStreamIO"]:::core
PROCINFO["milkprocessinfo"]:::core
FPS["milkfps"]:::core
MILKDATA["milkdata"]:::core
FPSSA["milkfpsStandalone"]:::core
subgraph corecomp ["COREMOD _compute"]
ARITH_C["COREMODarith_compute"]:::compute
IOFITS_C["COREMODiofits_compute"]:::compute_fits
MEMORY_C["COREMODmemory_compute"]:::compute
TOOLS_C["COREMODtools_compute"]:::compute
end
subgraph plugcomp ["plugin _compute"]
FFT_C["milkfft_compute"]:::plugcomp
IMGGEN_C["milkimagegen_compute"]:::plugcomp
IMGBASIC_C["milkimagebasic_compute"]:::plugcomp
IMGFILT_C["milkimagefilter_compute"]:::plugcomp
STAT_C["milkstatistic_compute"]:::plugcomp
end
MILKEXE["milk-fpsexec-*"]:::exe
CACAOEXE["cacao-fpsexec-*"]:::exe
CACAOEXE_P["cacao-fpsexec-* with plugins"]:::exe
FPSTOOLS["milk-fps-set/list/..."]:::exe
ISIO -.->|headers only| CFITSIO
PROCINFO --> ISIO
FPS --> PROCINFO
MILKDATA --> FPS
FPSSA --> FPS
FPSSA --> MILKDATA
IOFITS_C --> CFITSIO
IOFITS_C --> FPS
ARITH_C --> FPS
ARITH_C -.->|USE_CFITSIO| IOFITS_C
MEMORY_C --> FPS
MEMORY_C -.->|USE_CFITSIO| CFITSIO
TOOLS_C --> FPS
FFT_C --> MEMORY_C
FFT_C -.->|USE_CFITSIO| IOFITS_C
IMGGEN_C --> MEMORY_C
IMGGEN_C -.->|USE_CFITSIO| IOFITS_C
IMGBASIC_C --> MEMORY_C
IMGBASIC_C -.->|USE_CFITSIO| IOFITS_C
IMGFILT_C --> MEMORY_C
IMGFILT_C -.->|USE_CFITSIO| IOFITS_C
STAT_C --> MEMORY_C
STAT_C -.->|USE_CFITSIO| IOFITS_C
IMGGEN_C --> STAT_C
MILKEXE --> FPSSA
MILKEXE --> ARITH_C
MILKEXE --> MEMORY_C
MILKEXE --> TOOLS_C
MILKEXE -.->|USE_CFITSIO| IOFITS_C
CACAOEXE --> FPSSA
CACAOEXE --> ARITH_C
CACAOEXE --> MEMORY_C
CACAOEXE --> TOOLS_C
CACAOEXE -.->|USE_CFITSIO| IOFITS_C
CACAOEXE_P --> FPSSA
CACAOEXE_P --> FFT_C
CACAOEXE_P --> IMGGEN_C
CACAOEXE_P --> IMGBASIC_C
CACAOEXE_P --> IMGFILT_C
FPSTOOLS --> FPSSA
classDef ext fill:#566573,stroke:#333,color:#fff
classDef core fill:#1a5276,stroke:#123,color:#fff
classDef compute fill:#1e8449,stroke:#145,color:#fff
classDef compute_fits fill:#27ae60,stroke:#145,color:#fff,stroke-dasharray: 5 5
classDef plugcomp fill:#7d3c98,stroke:#5a2,color:#fff
classDef exe fill:#b7950b,stroke:#a80,color:#000 4. Build Tiers at a Glance Tier CMake flags What is built Engine -DUSE_COREMODS=OFF -DUSE_CLI=OFF ImageStreamIO, milkprocessinfo, milkfps, milkdata Core -DUSE_CLI=OFF -DUSE_CFITSIO=OFF Engine + COREMOD arith, memory, tools Core + FITS -DUSE_CLI=OFF Core + COREMOD_iofits Full (defaults) Core + FITS + CLI + all plugins
cfitsio (headers only, optional)
╌╌ ImageStreamIO ← Engine
└─ milkprocessinfo
└─ milkfps
└─ milkdata
├─ milkfpsStandalone (standalone)
└─ CLIcore (full CLI)
COREMOD_arith ─┐
COREMOD_memory ┼─ Core ← USE_COREMODS
COREMOD_tools ─┘
COREMOD_iofits ── Core+FITS ← USE_CFITSIO
5. Detailed Dependency Tables Engine Tier — Core Libraries Target Links to Optional ImageStreamIO (none at link time) cfitsio (headers), CUDA milkprocessinfo ImageStreamIO milkfps ImageStreamIO, milkprocessinfo milkdata ImageStreamIO, milkfps, milkprocessinfo
Framework Libraries Target Links to Optional milkTUI ImageStreamIO, ncurses milkprocessinfoTUI milkprocessinfo, milkTUI, ncurses milkfpsTUI milkfps, milkTUI, ncurses milkfpsStandalone milkfps, milkdata milkfpsCLI milkfps, CLIcore CLIcore COREMODarith, COREMODmemory, COREMODtools, milkfps, milkdata, milkprocessinfo, milkTUI, milkfpsTUI, milkprocessinfoTUI, readline, ncurses COREMODiofits (USE_CFITSIO), cfitsio (USE_CFITSIO), OpenMP
Core Tier — COREMOD Libraries Target Links to Conditional milkCOREMODtools milkfps milkCOREMODmemory milkfps cfitsio (USE_CFITSIO) milkCOREMODarith milkfps COREMODiofits, cfitsio (USE_CFITSIO) milkCOREMODiofits milkfps, cfitsio only built with USE_CFITSIO
_compute variants (compiled with MILK_NO_CLI):
Target Links to Conditional milkCOREMODtools_compute milkfps milkCOREMODmemory_compute milkfps cfitsio (USE_CFITSIO) milkCOREMODarith_compute milkfps COREMODiofits_compute, cfitsio (USE_CFITSIO) milkCOREMODiofits_compute milkfps, cfitsio only built with USE_CFITSIO
Full Tier — milk-extra Plugins Target Links to Optional milkfft CLIcore, fftw3, fftw3f milklinalgebra CLIcore, OpenBLAS CUDA, MAGMA, MKL, lapacke milklinoptimtools CLIcore GSL milkimagegen CLIcore, milkstatistic milkstatistic CLIcore milkimagebasic CLIcore milkimagefilter CLIcore milkimageformat CLIcore milkinfo CLIcore milkZernikePolyn CLIcore, milkimagegen milklinARfilterPred CLIcore OpenBLAS, MKL milkkdtree CLIcore milkimgreduce CLIcore milkpsf CLIcore milkclustering CLIcore
_compute variants:
Target Links to Conditional milkfft_compute fftw3, fftw3f, COREMODmemory_compute COREMODiofits_compute (USE_CFITSIO) milkimagebasic_compute COREMODmemory_compute COREMODiofits_compute (USE_CFITSIO) milkimagefilter_compute COREMODmemory_compute COREMODiofits_compute (USE_CFITSIO) milkimagegen_compute milkstatistic_compute, COREMODmemory_compute COREMODiofits_compute (USE_CFITSIO) milkstatistic_compute COREMODmemory_compute COREMODiofits_compute (USE_CFITSIO)
Full Tier — Cacao Modules Target Links to Optional cacaoAOloopControl CLIcore, milklinoptimtools cacaoAOloopControlDM CLIcore, milkfft, milkimagegen, milkimagefilter, cacaoAOloopControl cacaoAOloopControlIOtools CLIcore, milkinfo, cacaoAOloopControl cacaoAOloopControlacquireCalib CLIcore, milkinfo, cacaoAOloopControl cacaoAOloopControlPredCtrl CLIcore, milklinoptimtools, cacaoAOloopControl cacaoAOloopControlCompTools CLIcore, cacaoAOloopControl cacaoAOloopControlPerfTest CLIcore, milkstatistic, cacaoAOloopControl cacaocomputeCalib CLIcore, milkinfo, cacaoAOloopControl CUDA, MAGMA, OpenBLAS, MKL, lapacke cacaopyramidWFStools CLIcore, milkinfo, cacaoAOloopControl lapacke
Executables Target Links to milk-cli CLIcore + all module libs milk-fpsCTRL milkfpsTUI, milkfps, milkprocessinfo, ImageStreamIO, CLIcore, ncurses milk-procCTRL milkprocessinfoTUI milk-streamCTRL CLIcore, ImageStreamIO milk-fps-list/search/info/rm milkfps, milkfpsStandalone, milkdata, milkprocessinfo, ImageStreamIO milk-fps-set/track milkfps, milkfpsStandalone, milkdata, milkprocessinfo, ImageStreamIO milk-fps-conf/run milkfps, milkfpsStandalone, milkdata, milkprocessinfo, ImageStreamIO milk-fps-valkey milkfps, milkprocessinfo, ImageStreamIO, valkey stream-monproc-runner milkinfo, CLIcore, ImageStreamIO stream-monproc-disp milkinfo, CLIcore, ImageStreamIO, ncurses
Standalone CMake Functions Function Base link set add_milk_standalone() milkfps, milkfpsStandalone, milkdata, milkprocessinfo, ImageStreamIO, COREMODmemory_compute, COREMODtools_compute, COREMODarith_compute + COREMODiofits_compute (USE_CFITSIO) add_cacao_standalone() same as above add_cacao_standalone_plugins() above + selected plugin _compute libs
add_cacao_standalone_plugins ( name src.c ) # all 4 plugins
add_cacao_standalone_plugins ( name src.c fft imagegen ) # selective
Valid plugin names: fft, imagegen, imagefilter, imagebasic.
ℹ️ Note: _compute variants contain pure computation code (MILK_NO_CLI). Standalone executables do not link ${LIBNAME} by default. Currently 76 of 90 standalones are CLIcore-free.
When USE_STATIC_LTO=ON, static archive (.a) variants of these libraries are built and linked instead, enabling cross-module Link-Time Optimization. See PGO & LTO .
← Documentation Index