Make can be as low level or high level as one wants. One simply runs shell commands with it mostly, except for in-built functions and using other shells. This means it all depends on the tooling one wants to use for a project. If it is a C project then probably some C compiler. If it is Python then probably some venv and Python. And so on. So it is very flexible. Only doesn't have a great syntax.