| 20 Feb 2025 |
John Ericson | no they don't consume the pc files internally sadly | 18:48:46 |
emily | and Meson just adds the entire source tree of every library to the include path of downstream ones? | 18:48:50 |
John Ericson | this is IMO some design debt in Meson I've been meaning to talk to them about | 18:48:53 |
John Ericson | include_directories pc file generation, and internal depedency overriding should all be unified | 18:49:27 |
John Ericson | but they are not yet in meosn | 18:49:34 |
John Ericson | * but they are not yet in meson | 18:49:36 |
emily | (well, one dir per library, but yes) | 18:49:38 |
emily | (this seems wild to me if true) | 18:50:18 |
John Ericson | no no it doesn't do that | 18:52:56 |
John Ericson | let me check | 18:53:05 |
John Ericson | cause I forget | 18:53:08 |
John Ericson | emily: look at nix-meson-build-support/export/meson.build | 18:53:45 |
John Ericson | see how declare_dependency has include_directories in it? | 18:54:19 |
emily | ok, and include_dirs is defined as include_dirs += [include_directories('.')] in the various libraries | 18:55:35 |
emily | so in practice this is exactly what's happening | 18:56:05 |
emily | but at least it's not Meson doing it out of the box I guess | 18:56:06 |
John Ericson | emily: oh and install_headers, another hack on their end | 18:58:44 |
John Ericson | oh sorry I see what you mean now | 18:59:14 |
John Ericson | yes Lix and us are both doing that haha | 18:59:25 |
John Ericson | they put their source code in lix/libutil/ | 18:59:35 |
John Ericson | and then they make the repo root the include path | 18:59:45 |
John Ericson | so everything, upstream and downstream libraries is in principle able to incldue | 18:59:59 |
John Ericson | meson has "targets", e.g. those produced by executable(..) and library(..) | 19:00:28 |
John Ericson | but they don't have any analogous notion for headers | 19:00:35 |
emily | I still think just libfoo/include/nix is the thing that makes sense. but if that's not an option, how about simply generating a nix/ with header files in it in Meson and having that be the downstream include directory used? | 19:00:52 |
emily | you can also use it for installing headers: simply install that generated thing | 19:00:59 |
emily | no symlinks in the source tree, should be pretty simple on the Meson end, and no .cc files in include paths | 19:01:10 |
emily | right now it seems like libraries can see headers from "downstream" libraries that they don't depend on too, which this would avoid | 19:01:25 |
John Ericson | it is just done with side effects instead like install_headers, making PC files, and include_directories , the logic is very balkanized between those 3 things which must stay in sync | 19:01:30 |
emily | (but I might be misreading that) | 19:01:33 |