aboutsummaryrefslogtreecommitdiff
path: root/docs/markdown/SourceSet-module.md
AgeCommit message (Collapse)AuthorFilesLines
2021-01-31Capitalize "Meson" consistently as it is a proper name. [skip ci]Jussi Pakkanen1-13/+13
2021-01-30Rewrap long text lines in docs. [skip ci]Jussi Pakkanen1-40/+45
2019-08-04sourceset: add all_dependencies() methodMarc-André Lureau1-0/+11
'if_true' sources should be built with their dependencies, as illustrated by test case change. Ideally, I think we would want only the files with the dependencies to be built with the flags, but that would probably change the way sourceset are used.
2019-05-22new module "sourceset" to match source file lists against configuration dataPaolo Bonzini1-0/+196
In QEMU a single set of source files is built against many different configurations in order to generate many executable. Each executable includes a different but overlapping subset of the source files; some of the files are compiled separately for each output, others are compiled just once. Using Makefiles, this is achieved with a complicated mechanism involving a combination of non-recursive and recursive make; Meson can do better, but because there are hundreds of such conditional rules, it's important to keep meson.build files brief and easy to follow. Therefore, this commit adds a new module to satisfy this use case while preserving Meson's declarative nature. Configurations are mapped to a configuration_data object, and a new "source set" object is used to store all the rules, and then retrieve the desired set of sources together with their dependencies. The test case shows how extract_objects can be used to satisfy both cases, i.e. when the object files are shared across targets and when they have to be separate. In the real-world case, a project would use two source set objects for the two cases and then do "executable(..., sources: ... , objects: ...)". The next commit adds such an example.