many build systems have a notion of build targets, with various target types (static/shared library, module, executable, etc.).
You don't have that (which I personally find is good, but that's arguably because I'm opinionated about not having libraries), but how do you deduce what to link and what are the entrypoints?