aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
AgeCommit message (Collapse)AuthorFilesLines
2022-11-24remove a couple of unneeded type annotationsEli Schwartz1-8/+8
These are trivially inferred based on their initialized values.
2022-11-24python module: fix broken non-embed dependencyEli Schwartz1-11/+13
The `py.dependency(embed: false)` method is supposed to consistently provide a distutils-like `python.pc` / `python-embed.pc` interface regardless of Python version. It handles both pkg-config and sysconfig scraping. For the latter, we respect the value of self.link_libpython as determined by distutils, and construct a fully custom dependency. For the former, we blindly assume pkg-config is correct. It isn't correct, not until Python 3.8 when embed was added. Before then, we need to process the pkg-config dependency based on link_libpython. We did this, but only inside the extension_module method, which is obviously wrong. Delete the special casing from extension_module, and handle it inside the dependency. Fixes #11097
2022-11-23python: Use correct extension filename suffix on Python < 3.8.7Daniele Nicolodi1-2/+10
On Windows, in Python version prior to 3.8.7, the `sysconfig` modules provides an extension filename suffix that disagrees the one returned by `distutils.sysconfig`. Get the more awesome suffix from the latter when building for a Python version known to present this issue. Simplify the extension module filename suffix lookup to use the same method used by `setuptools`. Adjust project tests accordingly. Fixes #10960.
2022-11-22compilers: remove opinionated c++ warning flagEli Schwartz2-6/+6
-Wnon-virtual-dtor is not what people think of as a standard warning flag. It was previously removed from -Wall in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=16190 on the grounds that people didn't like it and were refusing to use -Wall at all because it forced this warning. Instead, it is enabled by -Weffc++ which is typically not enabled and even comes with GCC documentation warnings stating that the standard library doesn't obey it, and you might need to `grep -v` and filter out warnings. (!!!) It doesn't fit into the typical semantics of Meson's warning_level option, which usually aligns with compiler standard warning levels rather than a niche ideological warning level. It was originally added in commit 22af56e05aa9cba4740d2ff303d876bb0c3cfb2b, but without any specific rationale included, and has gone unquestioned since then -- except by the Meson users who see it, assume there is a finely crafted design behind it, and quietly opt out by rolling their own warning options with `add_project_arguments('-Wall', ...)`. Furthermore a GCC component maintainer for the C++ standard library opened a Meson bug report specially to tell us that this warning flag is a "dumb option" and "broken by design" and "doesn't warn about the right thing anyway", thus it should not be used. This is a reasonably authoritative source that maybe, just maybe, this flag... is too opinionated to force upon Meson users without recourse. It's gone beyond opinionated and into the realm of compiler vendors seem to think that the state of the language would be better if the flag did not exist at all, whether default or not. Fixes #11096
2022-11-22Fix writing single strings in env2mfile.Jussi Pakkanen1-1/+2
2022-11-21Handle freezing tests. Fixes #10752.Jussi Pakkanen1-3/+3
2022-11-20hotdoc module: fix broken include pathsEli Schwartz1-2/+1
Since commit 32b14b1bb533e10c7344c2e04125a226553c9b9f, hotdoc is run during configure as an external program. It turns out though, that in some cases we passed NoneType in the cmd array, previously to hotdoc.run_hotdoc.run() and now via subprocesses. The former "worked" due to ignoring unknown arguments (?) but the latter was broken because command line interfaces don't accept python NoneType objects, naturally. End result: when for example building Meson's own documentation, this fails with a python traceback. The reason this happens to begin with turns out to be, once again, because of the legacy debt of homebrewed kwargs parsing. We have a function for `process_known_args` that handles args and ignores them if they are NoneType, and then include_paths is handled via a custom processor that internally adds them, then returns a *list* of NoneType which then gets appended to the global cmd, because the logic ends up as `[None, None] is None` which is a failed check, so we go ahead and add it. It's odd that we ever attempted to process it twice to begin with, so let's simply not do that.
2022-11-20hotdoc module: remove homebrew function-proxied OrderedSetEli Schwartz1-10/+6
We are just using this dictionary to get keys, and we could also just set it ourselves but with None values. But we have a code abstraction for this already; use it.
2022-11-19modules/rust: stabilizeDylan Baker1-1/+1
Mesa is using the rust module in production, so we should stabilize it.
2022-11-17backend/ninja: replace ` ` with `_` in rust crate-namesDylan Baker1-2/+2
Because spaces aren't allowed and result in compilation failures
2022-11-17modules/rust: Also include generated sources for testsDylan Baker1-2/+5
When we create a test from a non-executable, we weren't copying the generated sources, just the static ones.
2022-11-17build: fix annotations of BuildTarget derived classesDylan Baker1-5/+5
Which thinks `sources` should be `List[File]`, but they should be `List[SourceOutputs]`
2022-11-17hotdoc module: run hotdoc as an external command during configureEli Schwartz1-5/+8
We need to run it as an external command at build time anyway, and we detect it by looking it up as an ExternalProgram. It seems odd to then import it into Meson's python interpreter and run the main function. Moreover, this errors out when you are running two different pythons, one for Meson and one for hotdoc. For example, when hotdoc is installed normally, but you're testing Meson against a nondefault newer version of python.
2022-11-17build: use the unified pickle loader to handle more edge casesEli Schwartz2-20/+12
We have divergent implementations of loading a pickled *.dat file. The Build class loader has a better error message. But the generic loader handles TypeError and ModuleNotFoundError. Merge the implementations, and use it for Build as well. Fixes #11051
2022-11-17Fix a typo in the CUDA templateZihua Wu1-1/+1
The original version will output something like `xtakes no arguments`, and the modified version will correctly output `x takes no arguments`.
2022-11-17mdist: fix error when running tests with a cross fileEli Schwartz1-2/+2
Since commit 1420d0daceb10cafb52a7405f157032a5cc811a5 we use coredata's cmd_line.txt handler to get the right setup arguments. But there's a bug in that -- it mishandles cross/native files, producing invalid descriptions of the command line. The only other place this was used, though, is when generating meson-log.txt. Fix it to produce correctly formatted arguments. Fixes #10980
2022-11-16Fix deprecation message, the function name is fs.copyfile()Xavier Claessens1-1/+1
2022-11-16Change the warning generated by importing an unstable module to non-fatalTristan Partin1-1/+1
Penalizing users for helping to test unstable modules really makes no sense. As a fatal warning, users can no longer use `--fatal-meson-warnings`.
2022-11-16linkers: Don't build thin archives on illumos or SolarisAlan Coopersmith1-2/+6
The system linkers don't support this particular GNU extension on these OS'es, so don't build them there. Based on an OpenIndiana patch created by @alarcher. Closes #9882.
2022-11-14Raise an error, if the file element in a resource file has no text.Hagen Möbius1-3/+6
- minor cleanups in the vicinity
2022-11-12Add CMake to cross file.Jussi Pakkanen1-4/+30
Original patch by Helmut Grohne. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1023744
2022-11-12Fix ppc64 detection in Debian.Jussi Pakkanen1-1/+3
Original patch by Helmut Grohne. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1023744
2022-11-10Fix options overrides for vsbackendDenis Fortin1-1/+1
Use OptionOverrideProxy instead of pure options. Closes #10393
2022-11-08Fix since annotation for str "in" operatorXavier Claessens1-2/+2
2022-11-07hotdoc module: add dedicated depends kwarg, deprecate file deps in dependenciesEli Schwartz1-2/+17
We consistently use the "dependencies" kwarg to refer to C-like CFLAGS/LDFLAGS interfaces. And for hotdoc, we actually accept libraries for this as well, as we may want to document their (generated?) sources, so we want their CFLAGS too. But we also accepted custom targets and just added a build order dependency on these, which was odd and typically we call that "depends". Let's deprecate this in favor of the depends kwarg.
2022-11-07hotdoc module: use less confusing namesEli Schwartz1-7/+7
Internally we pass this as extra_depends to the CustomTarget initializer, so it makes sense to call it that rather than confusing the topic by referring to "dependencies", a term that indicates CFLAGS/LDFLAGS interfaces.
2022-11-06Implement `in` operator on stringXavier Claessens1-0/+12
2022-11-06Bump version number for new development.Jussi Pakkanen1-1/+1
2022-11-06Bump version number for release.0.64.0Jussi Pakkanen1-1/+1
2022-11-05nasm: Fix get_optimization_args()Ole André Vadla RavnÄs1-1/+11
2022-11-03depfixer: handle darwin dependencies with non-ASCII pathsEli Schwartz1-4/+4
I assume there's no real reason this cannot happen, perhaps if the meson source directory has one. So we should use Popen_safe for safety reasons.
2022-11-03squelch an EncodingWarning we don't care aboutEli Schwartz1-1/+1
We would like to use the default value (the one python urged us not to use), but without getting a warning for it. Luckily, we have the correct value already, so we can pass it manually to avoid the complaint.
2022-11-03python 3.11: suppress an incorrect EncodingWarningEli Schwartz1-0/+7
python 3.11 adds a warning that in 3.15, UTF-8 mode will be default. This is fantastic news, we'd love that. Less fantastic: this warning is silly, we *want* these checks to be affected. Plus, the recommended alternative API would (in addition to warning people when UTF-8 mode removed the problem) also require using a minimum python version of 3.11 (in which the warning was added) or add verbose if/else soup. The simple, and obvious, approach is to add a warnings filter to hide it.
2022-11-03dependencies: make the hdf5 dependency use Popen_safeEli Schwartz1-4/+3
It is, after all, "safe". ;) That's why it exists. There's no reason to think listing all pkg-config entries cannot print unicode descriptions, it's absolutely possible, and we should handle it properly if we encounter it.
2022-11-02backends: Try guessing install tag for all installed filesXavier Claessens1-3/+11
It was only trying to guess install tag, and log missing tags, for files installed by install_data(). Do it also for all other files, especially custom_taget() that commonly installs generated headers.
2022-11-01Bump version for rc2.0.64.0rc2Jussi Pakkanen1-1/+1
2022-11-01nasm: Implement get_crt_compile_args()Xavier Claessens1-0/+3
This fix a crash when using NASM on Windows.
2022-11-01minstall: make do_strip run with -Sx for macOS targetsL. E. Segovia1-2/+8
This commit also adds some extra symbol noise to lib.c, in order to aid detection of the debug information with nm. Fixes #10943
2022-10-31Revert "backends/ninja: run `ranlib -c $out` when using the apple ar"Eli Schwartz1-13/+2
This reverts commit bdc6f243e9f95246b5801d2c0ccf64173fb280f3. This is part of #10628 and needs to be reverted, as it breaks other things. See https://github.com/mesonbuild/meson/pull/10628#issuecomment-1230560772
2022-10-31Revert "build: don't add targets to link_whole_targets if we took their objects"Eli Schwartz1-5/+3
This reverts commit c94c492089e7fecb56b7cc11ea76712a770f1e34. This broke propagated deps as well as PCH in MSVC, and has not been fixed in time for the final release of 0.64.0, so it needs to be reverted and then brought back later. Fixes #10745 Fixes #10975
2022-10-31both_libraries: Make sure to select the right linker for static libXavier Claessens1-3/+2
Regression test: libccpp has both C and C++ sources. The executable only has C sources. It should still link using the C++ compiler. When using both_libraries the static has no sources and thus no compilers, resulting in the executable linking using the C compiler. https://github.com/Netflix/vmaf/issues/1107
2022-10-31emit a FeatureNew when using include_directories as a stringEli Schwartz1-0/+7
This was introduced in commit 3a6e2aeed9737f1082571e868ba50e72957f27c7 as part of 0.50.0, but did not contain a FeatureNew. As a result, people would use it without realizing that they broke support for versions of Meson included in their minimum requirements.
2022-10-28gnome: allow generator outputs as gdbus-codegen inputsPaolo Bonzini1-3/+3
GeneratedLists as sources to `gnome.gdbus_codegen` worked until version 0.60 of Meson, but broke in 0.61 because of the conversion to typed_pos_args and typed_kwargs. Reinstate this by adding them to the decorators and annotations. Note that gdbus_codegen desugars to two custom_targets and therefore the generator is invoked twice. This is not optimal, but it should not be an issue and can be changed later. Fixes: 53a187ba2 ("modules/gnome: use typed_pos_args for gdbus_codegen", 2021-11-01) Fixes: ef52e6093 ("modules/gnome: use typed_kwargs for gdbus_codegen", 2021-11-08)
2022-10-28gnome: allow custom targets as gdbus-codegen inputsPaolo Bonzini1-4/+4
Custom targets as sources to `gnome.gdbus_codegen` worked until version 0.60 of Meson, but broke in 0.61 because of the conversion to typed_pos_args and typed_kwargs. Reinstate this by adding custom targets to the decorators and annotations. While generators also used to work, they are a bit tricky because gdbus_codegen desugars to two custom_targets and therefore the generator is invoked twice. This should not be a problem, but be explicit and leave that to a separate commit to highlight the problem. Fixes: 53a187ba2 ("modules/gnome: use typed_pos_args for gdbus_codegen", 2021-11-01) Fixes: ef52e6093 ("modules/gnome: use typed_kwargs for gdbus_codegen", 2021-11-08)
2022-10-25compilers: Make sure to not use ccache in compiler checksXavier Claessens5-12/+10
ccache was used in all command lines but disabled using CCACHE_DISABLE in Compiler.compile() method. Wrapping invokations still has a cost, especially on Windows. With sccache things are even worse because CCACHE_DISABLE was not respected at all, making configure *extremely* slow on Windows when sccache is installed.
2022-10-25Compilers: Keep ccache and exelist separatedXavier Claessens15-112/+110
Only combine them in the Compiler base class, this will make easier to run compiler without ccache.
2022-10-25Bump version numbers for 0.64.0.rc1.0.64.0rc1Jussi Pakkanen1-1/+1
2022-10-25Fix native compilation on ARM64 WindowsGustavoLCR3-23/+45
Move `detect_native_windows_arch()` to `mesonlib/universal.py` and rename it to `windows_detect_native_arch()` Use `IsWow64Process2()` to detect native architecture if available Use native `vcvarsarm64.bat` to initialize vsenv if available
2022-10-24Add missing since annotations in docsElliott Sales de Andrade1-1/+1
This is based on searching for `@FeatureNew*` decorators. There is also one correction to a version in a decorators; `build_by_default` was added in #1303, which is 0.38.0, not 0.40.0.
2022-10-24Move JNISystemDependency to dependencies.base.detect_compilerTristan Partin1-3/+2
Only searches if the project already added that language before.