IMO, for build dependencies you can get pretty far with a namespace system and a few initial namespaces, e.g.:
-
pkgconfig:libssl
for a C library (on Unix) -
command:cc
for a C compiler (on Unix) -
conda:clang
for a Conda package -
crate:pyo3
for a Rust crate
Perhaps allow ORing them together (command:cc or conda:clang or something-for-windows)
, and warn (fail later) if all namespaces in a group are not recognized/checkable/installable.
For run-time dependencies, specify names of the actual shared libraries the extension needs, and names of the commands it calls.