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