aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/modules/sourceset.py
AgeCommit message (Collapse)AuthorFilesLines
2022-03-14sourceset: reorder fields in SourceSetRulePaolo Bonzini1-10/+10
Keep conditions first, then "if true" fields, and the if_false sources last. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-14sourceset: document fields of SourceSetRulePaolo Bonzini1-0/+12
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-14sourceset: improve typing of SourceSetRulePaolo Bonzini1-2/+2
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-14sourceset: reinstate extra_depsPaolo Bonzini1-2/+4
Dependencies in the "if_true" keyword argument do not prevent the sources from being used; in other words, they work just like dependencies with "disabler: false". However, this was broken in commit ab0ffc6a2 ("modules/sourceset: Fix remaining typing issues", 2022-02-23) which changed logic instead of just fixing typing issues. This was likely an attempt to avoid using "dependencies.Dependency" after the "dependencies" field was declared, but it also broke QEMU. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-14sourceset: rename "dependencies" fields to depsPaolo Bonzini1-6/+6
The dependencies field clashes with the dependencies module, so that mypy interprets "dependencies.Dependency" as a "Dependency" attribute of the "dependencies" field. Rename the field to something else, so that it does not clash. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-02-27sourceset module: fix minor regression in making sourcesets immutableEli Schwartz1-1/+1
In commit c0be7e05b070d85b38c79088df882970a5cd0279 the setting of merged sourcesets as immutable in a loop accidentally got dedented, and only applied to the last loop iteration.
2022-02-23run_mypy: add sourceset moduleDylan Baker1-3/+3
2022-02-23modules/sourceset: Fix remaining typing issuesDylan Baker1-30/+45
2022-02-23modules/sourceset: use typed_kwargs for all functionsDylan Baker1-45/+97
removing permittedKwargs usage
2022-02-23modules/sourceset: Use typed_pos_argsDylan Baker1-13/+27
2022-02-23modules/sourceset: add a few super easy type annotationsDylan Baker1-13/+20
2022-02-23modules/sourceset: sort importsDylan Baker1-3/+4
2022-01-18interpreter: replace ConfigurationDataObject with ConfigurationDataHolderDylan Baker1-2/+6
This is much cleaner, and more in line with the way we handle interpreter objects in modern meson practice
2021-06-18holders: Fix the remaining code to respect the holder changesDaniel Mensinger1-6/+3
2021-06-18holders: remove unholderDaniel Mensinger1-1/+0
2021-05-28modules: Add methods dict everywhereXavier Claessens1-0/+3
This fix calling random internal methods from meson.build as long as they were not prefixed by underscore.
2021-05-28modules: Stop using InterpreterObjectXavier Claessens1-23/+23
Custom objects returned by modules must be subclass of ModuleObject and have the state argument in its methods. Add MutableModuleObject base class for objects that needs to be deep copied on assignation.
2021-05-28modules: Remove snippet methodsXavier Claessens1-3/+2
The only advantage they have is they have the interpreter in arguments, but it's already available as self.interpreter. We should discourage usage of the interpreter API and rely on ModuleState object instead in the future. This also lift the restriction that a module method cannot add build targets, but that was not enforced for snippet methods anyway (and some modules were doing it) and it's really loose restriction as it should check for many other things if we wanted to make it consistent.
2021-03-04mass rewrite of string formatting to use f-strings everywhereEli Schwartz1-1/+1
performed by running "pyupgrade --py36-plus" and committing the results
2020-11-15stabilize sets that are converted to listsPaolo Bonzini1-2/+2
The order of elements in sets cannot be relied upon, because the hash values are randomized by Python. Whenever sets are converted to lists we need to keep their order stable, or random changes in the command line cause ninja to rebuild a lot of files unnecessarily. To stabilize them, use either sort or OrderedSet. Sorting is not always applicable, but it can be faster because it's done in C and it can produce slightly nicer output.
2020-04-21switch python2 %s for python3 .formatMichael1-1/+1
2019-08-04sourceset: add all_dependencies() methodMarc-André Lureau1-0/+9
'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-08-04sourceset: fix using FeatureCheck decoratorsMarc-André Lureau1-4/+5
The feature check facilities need to have access to subproject.
2019-05-22new module "sourceset" to match source file lists against configuration dataPaolo Bonzini1-0/+190
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.