aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
AgeCommit message (Collapse)AuthorFilesLines
2023-01-18 Fix nasm when target has threads as added dependencyGijs Peskens1-0/+8
2023-01-17mparser: Use a literal for the ComparisonNodeDylan Baker1-11/+18
And fix a bug where `not in` is in the wrong order.
2023-01-16properly type utils/core.py and add it to mypyEli Schwartz2-6/+10
EnvironmentVariables was always broken, it used MutableMapping because everyone <3 abstract interfaces, especially when they are broken and don't actually do what you want. This needs a dict interface, exposing `.copy()`. We either use a dict or os._Environ, and the latter also supports that. Also fix a broken import, and the fallout from forgetting to update the signature of self.envvars in commit b926374205bd761085031755c87152d08bc10e9d.
2023-01-15BUG: Fix generated sources not being included as dependencies in cython ↵Thomas Li1-0/+14
transpilation
2023-01-11coredata: Remove dead codeXavier Claessens1-11/+0
2023-01-10backends: Stop passing generator exes to ExecutableSerialisation as stringsDylan Baker3-7/+6
The code below this already handles being passed an Executable or ExternalProgram, and it does it correctly, since it handles host binaries that need an exe_wrapper correctly, while the code in the generator paths doesn't. The xcode backend is, like always, problematic, it doesn't handle things the same way as the ninja and vscode backends, and generates a shell script instead of using meson as a wrapper when needed (it seems likely that just forcing the meson path for xcode would be better). I don't have a working mac to develop a fix for, so I've left a todo comment there. Fixes: #11264
2023-01-10linkers: detect ld64 as AppleDynamicLinkerjack2-6/+28
2023-01-10modules: fully type the Qt* modulesDylan Baker3-9/+26
The base module is fully typed, but the numbered version are not, though it's pretty trivial to do so.
2023-01-10modules: add type annotations to the `__init__` moduleDylan Baker1-8/+9
2023-01-10modules/external_project: `make` should be immutableDylan Baker1-1/+6
In some cases we'll get an `ImmutableListProtocol[str]` anyway (and actually, we should probably be getting one in call cases), since we don't mutate it anyway, just store it as immutable.
2023-01-10modules/i18n: fix type annotationsDylan Baker1-1/+1
Again, state.find_program is wrong
2023-01-10modules/icestorm: fix type annotationsDylan Baker1-1/+1
This is also due to the incorrect annotations of state.find_program()
2023-01-10modules/qt: Fix annotations for state.find_programDylan Baker1-3/+3
Because this too, has the wrong assumptions
2023-01-10modules/rust: Fix annotation for _bindgen_binDylan Baker1-2/+2
Which suffers from the same issue as the gnome module
2023-01-10modules/gnome: fix type annotations from `__init__`, which are wrongDylan Baker1-9/+10
Mainly thi sis that `state.find_program()` is annotated incorrectly, it returns `ExternalProgram | Executable | OverrideProgram`, but it's annotated to return only `ExteranlProgram`, and thus a bunch of the annotations in the gnome module are wrong.
2023-01-10build: Add a found method to ExecutableDylan Baker1-0/+4
Again, this is necessary for polymorphism with ExternalProgram
2023-01-10build: Add a get_path method to ExecutableDylan Baker1-0/+5
This is needed to make Executable Polymorphic with ExternalProgram. This can happen when a build program overrides a lookup.
2023-01-09linkers: Do not use numeric windows subsystems with lldJan Janssen1-12/+25
Fixes: #11258
2023-01-09linkers: Fix lld detectionJan Janssen1-1/+1
This was actually probing bfd without always_args passed. Fixes: #10763
2023-01-08avoid detecting masm as a MSVC-like compiler for detecting showincludesEli Schwartz1-2/+2
It's msvc-like but, just like Intel Fortran, doesn't support this argument.
2023-01-08msvc: handle filename extensions for incdetect based on the compiler languageEli Schwartz1-2/+3
It is possible, albeit possibly inadvisable, for the exact combination of MSVC and "$CXX has C++ specific flags in it" to occur. When this happens, and cl.exe is given a filename ending in .c, it complains that you cannot compile a .c file with that option. Instead, pick the first filename matching that language and use that as the temporary filename. This more or less matches what we do in compiler-time checks. And it's the proper thing to do, rather than assume that cl.exe, when detected as the current C++ compiler, can *also* compile C because it's *also* a C compiler. Fixes #11257
2023-01-04be more explicit about asyncio usageEli Schwartz1-1/+2
`get_event_loop()` would always implicitly create one on demand, but Python upstream has decided it's a bad/confusing API. Explicitly starting our own, then setting it, is exactly equivalent other than not being scheduled for deprecation.
2023-01-04mtest: simplify deprecated access to current loopEli Schwartz1-9/+11
These functions constantly want the current asyncio loop, and we run a function call each time to get it. And the function call is a deprecated one. Python 3.7 brings the more explicit get_running_loop for use when we know we're inside one, with the aim of getting rid of get_event_loop once support for python <3.7 disappears. Meson no longer supports python <3.7 either. Switch to the new API, and save the reference for reuse instead of constantly re-calculating it.
2023-01-04mtest: clean up asyncio event loop instantiationEli Schwartz1-7/+6
Fix a TODO comment about moving to asyncio.run, now that we use sufficiently new python to do it. Note that we create an event loop for Windows using the new python defaults, but in a completely different part of the code from where we need to use it. Since asyncio.run creates the loop on its own, we need to set the default policy instead -- which we probably should have done all along.
2023-01-04mtest: delay creation of asyncio lock until event loop existsEli Schwartz1-1/+4
In https://bugs.python.org/issue42392 this stopped implicitly creating an event loop if none exists. We created it before running _run_tests(), so it would auto-create an event loop and set the default, which means we cannot create one explicitly on our own schedule or we end up with two of them. Delay this until we actually start the logger. This happens inside the actual testsuite loop, so it finds the running loop and doesn't create a new one, even on python <3.10.
2023-01-04add a hidden environment variable to make Meson complain hard on deprecationsEli Schwartz1-0/+7
Useful for running the testsuite with this environment variable and catching obscure issues. Just like with the encoding warning later down, we have to do this inside meson itself, not externally injected.
2023-01-04clang-cl: supports /std:c++20 now.Luke Elliott1-1/+1
See https://github.com/llvm/llvm-project/commit/a8f75d49
2023-01-04forbid using declare_dependency(objects: ...) with pkg-config modulePaolo Bonzini1-0/+2
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2023-01-04add objects keyword argument to declare_dependenciesPaolo Bonzini5-8/+13
2023-01-04allow passing generated objects in the "objects" keyword argumentPaolo Bonzini1-6/+5
Generated objects can already be passed in the "objects" keyword argument as long as you go through an extract_objects() indirection. Allow the same even directly, since that is more intuitive than having to add them to "sources". Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2023-01-03modules/gnome: use `mlog.log(once=True)` in a few more placesDylan Baker1-2/+2
It's probably not useful to spam the user with warnings that old versions of software may not behave correctly when the first warning was perfectly valid.
2023-01-03Add fatal=False to many mlog.warnings()Dylan Baker5-11/+16
There are lots of warnings that become fatal, that are simply unfixable by the end user. Things like using old versions of software (because they're using some kind of LTS release), warnings about compilers not supporting certain kinds of checks, or standards being upgraded due to skipped implementations (MSVC has c++98 and c++14, but not c++11). None of these should be fatal, they're informative, and too important to reduce to notices, but not important enough to stop meson if they're printed.
2023-01-03wrap: use log once instead of hand rollingDylan Baker1-5/+1
2023-01-03mparser: Don't create an exception to pass to mlog.warningDylan Baker1-5/+4
Just call `mlog.code_line` directly, since the exception is never raised.
2023-01-03mlog: move code for printing code with a caret to the mlog moduleDylan Baker2-1/+12
We need this outside the constructor for the ParseException class, so let's pull it out. mlog seemed like a good place since it's a text formatting function, and has no dependencies.
2023-01-03reformat some warnings for better code readabilityDylan Baker2-5/+7
2023-01-03backends/backends: Add helpful message for getting rid of warningDylan Baker1-1/+1
2023-01-03mlog: use an enum instead of stringsDylan Baker1-11/+19
enum comparisons are ultimately ints, so they're faster, plus they're exhaustive, so mypy can statically determine that we've passed a valid value rather than via an assertion at runtime.
2023-01-03mlog: Remove using of `**kwargs: T.Any`Dylan Baker1-29/+59
This is annoying because we can't get proper auto-completion of mlog, and because ultimately it was allowing keyword arguments to be silently dropped on the floor. This does make the code a little more verbose, but I think the trade-offs of completion + better safety are worth it. PEP692, which will be part of python 3.12, provides a more elegant solution using `TypedDicts` to annotate `**kwargs`, which we should consider in the future.
2023-01-03msetup: do some stupid casting to make mypy happyDylan Baker1-4/+5
mypy is pretty dumb when it comes to unions of callables (pylance is also dumb in this regard), and can't figure out that our use of `mlog.debug | mlog.log` is perfectly safe. We also can't annotate them properly to cast them to a valid subset of arguments because you can't have splats in `typing.Callable`, so I've done enough to make it work.
2023-01-03dependencies/dev: refactor some code to make mypy happyDylan Baker1-4/+10
There should be a way to make mypy happy without casting, but I can't figure it out, since the mlog.error and mlog.debug actually have different signatures.
2023-01-03mparser: don't pass a SimpleNamespace where a BaseNode is expectedDylan Baker1-2/+1
mypy spotted this as well. And it turns out that we're not setting the column either for the warning, so improvements!
2023-01-03mesonlib: remove filename parameter to mlog.warningDylan Baker1-1/+1
After tracing all the way down to the bottom of this (or really, adding annotations so mypy can) it turns out that passing file would just be ignored at the end of the mlog call stack, so it should be removed
2022-12-27add builtin option to install licensesEli Schwartz3-6/+14
Unless `meson.install_dependency_manifest()` is explicitly used, this will cause a default implied one to be installed.
2022-12-27add license_files kwarg to projectEli Schwartz4-3/+35
Hook this up to installed dependency manifests. This is often needed above and beyond just an SPDX string -- e.g. many licenses have custom copyright lines.
2022-12-27emscripten: remove no longer relevant commentKleis Auke Wolthuizen1-2/+1
This was fixed in Emscripten 1.39.16, see: https://github.com/emscripten-core/emscripten/commit/d4fabf3da40e7f556700b16950739d5960a91559
2022-12-27emscripten: enforce version 1.39.19 or higherKleis Auke Wolthuizen2-0/+4
2022-12-27emscripten: remove redundant `thread_flags` implementationKleis Auke Wolthuizen1-3/+0
Since it's the same as the one in `CLikeCompiler`.
2022-12-27emscripten: use single arguments when specifying optionsKleis Auke Wolthuizen2-3/+3
i.e. without a space between the "-s" and option name. See: https://github.com/emscripten-core/emscripten/issues/11463 This is supported since Emscripten 1.39.19, see: https://github.com/emscripten-core/emscripten/commit/f45bea21f3a8f74a68ed4e3e3d7e290807ee2aff
2022-12-27emscripten: prefer `-pthread` over `-s USE_PTHREADS=1`Kleis Auke Wolthuizen1-2/+2
See: https://github.com/emscripten-core/emscripten/issues/12346 This is supported since Emscripten 1.38.33, see: https://github.com/emscripten-core/emscripten/commit/24350798a8570f567327f873cf1efb0361aec284