build: Avoid using meson.source_root()
The value of meson.source_root() can't be trusted because if we are embedded via subproject() into a larger project, the source root will be that of the parent project.
Instead, use a variable to keep track of the toplevel source directory.