I would like to cleanup our source file layout and the artifacts we build.
I think that there should be one
src/ directory with a flat hierarchy of subdirectories (the modules). Those subdirectories should build one thing (e.g. a library, or a executable), and they should have a clear order dependency on other subdirectories.
For that, the "shared/nm-default.h" header is odd. It's included by everybody, so it doesn't fit into this "everything belongs to clear module".
Another problem is that it gets controlled via CFLAGS defines. That's really ugly, because (especially as we have two build systems), there is a lot of code in Makefile/meson, and due to the size, it's hard to review. Preferably, you look at the source file and know what gets included.