21 hours agoMake a copy of auto_features options when changing its name master
Xavier Claessens [Wed, 25 May 2022 13:33:17 +0000 (09:33 -0400)] 
Make a copy of auto_features options when changing its name

This fixes bogus messages "skipped: feature foo disabled" when
auto_features=disabled. It was reporting the name of the latest
get_option() call instead of the name of the current feature option.

This is especially visible in GStreamer summary where it should show a
different option name for every subproject but instead shows "tools"
    gst-devtools              : NO Feature 'tools' disabled
    gst-editing-services      : NO Feature 'tools' disabled

21 hours agobuild: replace hand rolled code with CustomTarget[Index].links_dynamically()
Dylan Baker [Thu, 10 Mar 2022 18:52:50 +0000 (10:52 -0800)] 
build: replace hand rolled code with CustomTarget[Index].links_dynamically()

Which also fixes builds on windows that might produce a .lib instead of
a .a. The error message has been changed to reflect that as well

21 hours agointerpreter: add type restrictions to declare_dependency link_whole
Dylan Baker [Thu, 10 Mar 2022 18:52:12 +0000 (10:52 -0800)] 
interpreter: add type restrictions to declare_dependency link_whole

Including that we don't accept SharedLibraries or CustomTarget[Index]s
that are a shared library

21 hours agobuild: Add a `links_dynamically` method to CustomTarget[Index]
Dylan Baker [Thu, 10 Mar 2022 18:43:07 +0000 (10:43 -0800)] 
build: Add a `links_dynamically` method to CustomTarget[Index]

This is useful for cases where we treat CustomTargets as linkable
targets, and need to know whether they're going to link statically or

21 hours agodependencies: Don't allow as_link_whole to complete with SharedLibraries
Dylan Baker [Thu, 10 Mar 2022 18:35:47 +0000 (10:35 -0800)] 
dependencies: Don't allow as_link_whole to complete with SharedLibraries

Since a SharedLibrary can't be statically linked in, we shouldn't allow
the method to complete.

21 hours agointerpreter: add annotations to extract_variables
Dylan Baker [Wed, 9 Mar 2022 18:52:09 +0000 (10:52 -0800)] 
interpreter: add annotations to extract_variables

21 hours agodependencies: Fix several annotations issues
Dylan Baker [Wed, 9 Mar 2022 18:49:37 +0000 (10:49 -0800)] 
dependencies: Fix several annotations issues

- `BuildTarget` should be `SharedLibrary | StaticLibrary`
- Needs to take `CustomTargetIndex` as well as `CustomTarget`
- don't assign to self until values have been converted to the correct

21 hours agobuild: fix annotations for*target
Dylan Baker [Wed, 9 Mar 2022 18:48:41 +0000 (10:48 -0800)] 
build: fix annotations for*target

which do not hold BuildTargets, they are `SharedLibrary | StaticLibrary |
CustomTarget | CustomTargetIndex` (whole doesn't accept `SharedLIbrary`)

21 hours agomodules/gnome: Fix missing type annotation
Dylan Baker [Mon, 23 May 2022 20:51:51 +0000 (13:51 -0700)] 
modules/gnome: Fix missing type annotation

21 hours agomodules/gnome: fix some typing issues
Dylan Baker [Thu, 10 Mar 2022 18:55:58 +0000 (10:55 -0800)] 
modules/gnome: fix some typing issues

That come to light with some of the changes later in this series,
particularly around dependencies.

33 hours agoFix optimization level 's' for the TI compiler
Andreas Obergschwandtner [Wed, 25 May 2022 06:57:59 +0000 (08:57 +0200)] 
Fix optimization level 's' for the TI compiler

2 days agocmake: Add test case
Daniel Mensinger [Sat, 23 Apr 2022 12:14:35 +0000 (14:14 +0200)] 
cmake: Add test case

2 days agocmake: fix detecting directories as input files (fixes #10244)
Daniel Mensinger [Sat, 23 Apr 2022 11:56:24 +0000 (13:56 +0200)] 
cmake: fix detecting directories as input files (fixes #10244)

2 days agoast: cmake: Generate line numbers while printing the AST for better debugging
Daniel Mensinger [Sat, 23 Apr 2022 10:56:52 +0000 (12:56 +0200)] 
ast: cmake: Generate line numbers while printing the AST for better debugging

2 days agodoc: Generate dev release notes
Xavier Claessens [Wed, 11 May 2022 13:58:42 +0000 (09:58 -0400)] 
doc: Generate dev release notes

2 days to compiler object page
andy5995 [Mon, 16 May 2022 06:52:58 +0000 (01:52 -0500)] to compiler object page

2 days agoTweak "header has symbol" message
Peter Eisentraut [Wed, 18 May 2022 06:42:19 +0000 (08:42 +0200)] 
Tweak "header has symbol" message

Change message

    Header <foo.h> has symbol "BAR"


    Header "foo.h" has symbol "BAR"

with the first part also now in bold.  This is more consistent with
other messages like

    Has header "foo.h"


    Checking whether type "foo" has member "bar"

2 days agofix traceback when run_command has a find_program as the inline arg
Eli Schwartz [Sun, 22 May 2022 23:39:43 +0000 (19:39 -0400)] 
fix traceback when run_command has a find_program as the inline arg

We were poking directly at the node, so if it was a FunctionNode then
this broke. Instead, just do a reverse lookup in the overrides table to
get the original find_program name.

2 days agomtest: ignore invalid input
Paolo Bonzini [Mon, 23 May 2022 10:01:17 +0000 (12:01 +0200)] 
mtest: ignore invalid input

TAP version 14 introduced subtests, that are supposedly backward compatible
because "TAP13 specifies that non-TAP output should be ignored".  Meson
reported TAP syntax errors based on behavior of "prove" at the time,
but it seems that now "prove" has become a lot more lenient; it even
accepts the following completely bogus input just fine:

ok 1
    ok 2

So do the same and make Meson's parser accept invalid TAP input silently.

Fixes: #10032

2 days agomodules/icestorm: use type checking
Dylan Baker [Tue, 8 Mar 2022 23:06:43 +0000 (15:06 -0800)] 
modules/icestorm: use type checking

2 days agomodules/icestorm: replace individual tools attributes with dict
Dylan Baker [Thu, 10 Mar 2022 19:03:30 +0000 (11:03 -0800)] 
modules/icestorm: replace individual tools attributes with dict

As we commonly do in other modules

2 days agointerpreter: Add another overload to source_strings_to_files
Dylan Baker [Mon, 23 May 2022 21:51:11 +0000 (14:51 -0700)] 
interpreter: Add another overload to source_strings_to_files

Which doesn't have `StructuredSources`, as is actually quite common.

2 days agomodules: add typing to the modtest module
Dylan Baker [Tue, 8 Mar 2022 23:10:46 +0000 (15:10 -0800)] 
modules: add typing to the modtest module

3 days agomove various imports into TYPE_CHECKING blocks for neatness
Eli Schwartz [Fri, 8 Apr 2022 02:54:55 +0000 (22:54 -0400)] 
move various imports into TYPE_CHECKING blocks for neatness

3 days agotyping: use forward reference for types defined later in file
Eli Schwartz [Mon, 4 Apr 2022 03:57:01 +0000 (23:57 -0400)] 
typing: use forward reference for types defined later in file

3 days agofix typing regression
Eli Schwartz [Mon, 4 Apr 2022 03:55:33 +0000 (23:55 -0400)] 
fix typing regression

In commit f2d21bf8a98fe4eb528a077f3faf5d68cd35c244 a type annotation was
added that does not exist. The referenced type is present but only as a
dotted name.

7 days agoFix invalid Python overrides
Tristan Partin [Thu, 19 May 2022 18:33:51 +0000 (13:33 -0500)] 
Fix invalid Python overrides

- mismatched method type
- mismatched parameter names

7 days agoAdd cc.has_function_attribute('sentinel')
Tristan Partin [Thu, 19 May 2022 18:33:43 +0000 (13:33 -0500)] 
Add cc.has_function_attribute('sentinel')

7 days agoAdd cc.has_function_attribute('section')
Tristan Partin [Thu, 19 May 2022 18:33:14 +0000 (13:33 -0500)] 
Add cc.has_function_attribute('section')

7 days agoReword message in warning
Zbigniew Jędrzejewski-Szmek [Thu, 19 May 2022 09:00:44 +0000 (11:00 +0200)] 
Reword message in warning

"targetting" is verb-derived adjective, which sort-of-works here, but
makes the whole sentence awkward, because there's no verb. Let's just
use present simple.

7 days agoReword misleading warning
Zbigniew Jędrzejewski-Szmek [Thu, 19 May 2022 08:53:17 +0000 (10:53 +0200)] 
Reword misleading warning

"tried to use" implies that the attempt was not successful, i.e. that meson
ignored the feature. But that is not what happens, apart from the warning the
feature works just fine. The new message is also shorter ;)

7 days agoFix --allow-shlib-undefined for LLVM versions > 9
Tristan Partin [Thu, 19 May 2022 00:37:12 +0000 (19:37 -0500)] 
Fix --allow-shlib-undefined for LLVM versions > 9

9 days agofix incorrect FeatureNew for separator kwarg in environment object methods
Eli Schwartz [Tue, 17 May 2022 19:12:53 +0000 (15:12 -0400)] 
fix incorrect FeatureNew for separator kwarg in environment object methods

In commit 6acfe48f32110671a0adf80ad3497a35105b265d, the kwarg was added
to environment() in addition to the env object methods. As part of the
associated refactor, a shared KwargInfo was used, and evolved to be new
since 0.62.0 in the two cases where it is in fact new.

However, it *also* set the base KwargInfo for the exact same newness,
which is wrong as it was present ever since the initial introduction in

As usual for anything that predates 0.37.0 we simply don't tag
FeatureNew. Revert this back to the same KwargInfo definition from
before the refactoring commit.

Fixes #10402

9 days agomtest: stop disrespecting the gdb config file
Eli Schwartz [Wed, 11 May 2022 21:58:57 +0000 (17:58 -0400)] 
mtest: stop disrespecting the gdb config file

This was added in commit 01be50fdd90851f17de5499537f10b5b62c9fb49 with
zero explanation as a side effect of moving code around. It seems like a
really bad idea and it causes people to view debugging Meson projects on
e.g. debuginfod systems as "painful".

10 days agoUpdate
Adel Kara Slimane [Sun, 15 May 2022 19:03:18 +0000 (21:03 +0200)] 

Qt offers a tool to automatize most of what needs to be done regarding its libraries.

10 days agoAdd optional compress
joshcangit [Tue, 10 May 2022 09:17:35 +0000 (17:17 +0800)] 
Add optional compress

Compress files under source directory using Deflate method.
By default, files are not compressed in the archive.
Compression is active only when this option is defined.

2 weeks agolinkers/MinGW: Allow `efi_application` value for `win_subsystem`
Lens [Mon, 9 May 2022 21:18:01 +0000 (14:18 -0700)] 
linkers/MinGW: Allow `efi_application` value for `win_subsystem`

Previously, any value other than `windows` or `console` caused an
exception. This change allows for `efi_application` to be passed as
the `win_subsystem` to MinGW based linkers.

2 weeks agoRequire CMake 3.14 for all tests that use the cmake module
Simon McVittie [Fri, 6 May 2022 09:58:25 +0000 (10:58 +0100)] 
Require CMake 3.14 for all tests that use the cmake module

Older versions are not supported by the cmake module since 0.62.

This avoids having to hard-code the linux-bionic-gcc CI job as being
unable to run these tests, which leaves other older environments like
Debian 10 still trying to run them (and failing).

Signed-off-by: Simon McVittie <>
2 weeks agodependencies/ ignore unknown files
fghzxm [Mon, 9 May 2022 04:53:58 +0000 (12:53 +0800)] 
dependencies/ ignore unknown files

If we encounter a file under the Boost library directory that doesn't
look like a Boost library binary, we should ignore it.

We log a warning for each file we ignore, except for ones we know are
safe to ignore (e. g. PDB files from the SourceForge Windows
distribution).  This should avoid polluting the log.

Fixes #8325.

2 weeks agopython module: default extensions to hidden symbol visibility
Eli Schwartz [Tue, 19 Apr 2022 02:27:09 +0000 (22:27 -0400)] 
python module: default extensions to hidden symbol visibility

python compiled extensions should never need to expose any symbol other
than PyInit_* which is declared with default visibility via
PyMODINIT_FUNC on supported compilers.

Thus, a reasonably sane default is to mark any other symbols as hidden,
while still respecting any manually specified visibility.

Gate this on the version of python itself, as not all versions decorate
PyMODINIT_FUNC properly.

2 weeks agocompilers/gnu: demote visibilty inlineshidden to hidden for unsupported compilers
Eli Schwartz [Tue, 19 Apr 2022 02:18:35 +0000 (22:18 -0400)] 
compilers/gnu: demote visibilty inlineshidden to hidden for unsupported compilers

This option is only valid for C++ and ObjC++, but the kwarg is useful
for mixed language targets. Asking for inlines as well, when the
compiler driver is trying to build the C components of a target, results
in gcc emitting:

cc1: warning: command-line option ‘-fvisibility-inlines-hidden’ is valid for C++/ObjC++ but not for C

Squelch this warning by filtering it out on Meson's side of things.

2 weeks agofix regression in reporting errors for invalid gnu_symbol_visibility
Eli Schwartz [Sun, 8 May 2022 17:26:01 +0000 (13:26 -0400)] 
fix regression in reporting errors for invalid gnu_symbol_visibility

In commit fb2cdd0fe2797b30e1fd4c118407302402739a3b the internal property
was renamed, but one use case of it in raising a MesonException was not
changed to go with it.

This meant that instead of erroring out with:

ERROR: GNU symbol visibility arg XXXX not one of: default, internal, hidden, protected, inlineshidden

we instead errored out with:
AttributeError: 'SharedLibrary' object has no attribute 'symbol_visibility'

Fixes #9659

2 weeks agocompilers/c++: Add MSVC option to make the __cplusplus define accurate
Eli Schwartz [Wed, 27 Apr 2022 23:25:27 +0000 (19:25 -0400)] 
compilers/c++: Add MSVC option to make the __cplusplus define accurate

Otherwise it always returns the value for c++98, starting with MSVC 2017
15.7 or later. Earlier versions are not affected by this mis-feature.


This was originally applied as 0b97d585480e973d8b149618901f7a4ddfa1a906
but later reverted because it made the CI red. Try it again, now.

Original-patch-by: Dylan Baker <>
Co-authored-by: Dylan Baker <>
2 weeks agoLimit parallelism to hopefully work on machines with 160 cores.
Jussi Pakkanen [Fri, 6 May 2022 20:23:27 +0000 (23:23 +0300)] 
Limit parallelism to hopefully work on machines with 160 cores.

2 weeks agocompiler.has_argument: Add `-Werror=unknown-warning-option` to clang-cl cmd line
Khairul Azhar Kasmiran [Sat, 16 Apr 2022 12:51:52 +0000 (20:51 +0800)] 
compiler.has_argument: Add `-Werror=unknown-warning-option` to clang-cl cmd line

2 weeks agodevenv: Set WINEPATH when cross compiling for Windows
Xavier Claessens [Wed, 20 Apr 2022 19:17:51 +0000 (15:17 -0400)] 
devenv: Set WINEPATH when cross compiling for Windows

2 weeks agocoverage: be clever and detect config files for gcovr/lcov
Eli Schwartz [Thu, 28 Apr 2022 01:47:37 +0000 (21:47 -0400)] 
coverage: be clever and detect config files for gcovr/lcov

gcovr will read this file anyway, but if it exists we don't need to
assume that the project wishes to exclude subprojects/ -- they can
determine that themselves.

Fixes #3287
Closes #9761

lcov doesn't read the config file by default, but we can do the smart
thing here.

Fixes #4628

2 weeks agoAdd some scaffolding needed for C++ modules in GCC.
Jussi Pakkanen [Tue, 3 May 2022 15:11:08 +0000 (18:11 +0300)] 
Add some scaffolding needed for C++ modules in GCC.

Further work pending GCC bug #105467 and/or Ninja bug #1962.

2 weeks agoMove Visual Studio module test to its own subdir.
Jussi Pakkanen [Tue, 3 May 2022 14:02:15 +0000 (17:02 +0300)] 
Move Visual Studio module test to its own subdir.

2 weeks agounittests: Skip prelinking test with gcc 8 or older
Simon McVittie [Thu, 5 May 2022 10:38:41 +0000 (11:38 +0100)] 
unittests: Skip prelinking test with gcc 8 or older

This was already skipped when running on the Ubuntu 18.04 version of gcc,
but it also fails with gcc 8.3.0 on Debian 10. Instead of hard-coding
specific versions to look for, do a version comparison.

Signed-off-by: Simon McVittie <>
2 weeks agominit: refuse to allow creating broken projects
Eli Schwartz [Wed, 27 Apr 2022 23:15:04 +0000 (19:15 -0400)] 
minit: refuse to allow creating broken projects

Some executable names are invalid, and while it's unlikely anyone will
specify such a thing using the --executable argument, it's not unlikely
that people experimenting will attempt to use meson init in a directory
named "test".

This then defaults to that for both the project name and the sample
target name, and the latter produces errors when you try to build it.

Fixes #10321

3 weeks agoadd prefer_static built-in option
Dudemanguy [Tue, 11 Jan 2022 01:02:12 +0000 (19:02 -0600)] 
add prefer_static built-in option

By default, meson will try to look for shared libraries first before
static ones. In the itself, one can use the static keyword
to control if a static library will be tried first but there's no simple
way for an end user performing a build to switch back and forth at will.
Let's cover this usecase by adding an option that allows a user to
specify if they want dependency lookups to try static or shared
libraries first. The writer of the can manually specify the
static keyword where appropriate which will override the value of this

3 weeks agodependencies: cleanup kwargs.get('static') usage
Dudemanguy [Fri, 21 Jan 2022 04:16:25 +0000 (22:16 -0600)] 
dependencies: cleanup kwargs.get('static') usage

In a couple of spots, kwargs.get('static', False) was being
unneccesarily used. In these spots, we can just use self.static instead
which is already inherited from the ExternalDependency. In additional,
the python system dependency oddly has a kwargs.get('static', False)
line which overrides the self.static in that dependency for no real
reason. Delete this line too.

3 weeks agodependencies: handle one more case of subproject installed files
Eli Schwartz [Tue, 3 May 2022 05:09:22 +0000 (01:09 -0400)] 
dependencies: handle one more case of subproject installed files

Some projects treat meson.project_source_root() as the root of the
dependency files, because the project itself merely wraps a bunch of
datafiles. Our validation to make sure this doesn't point to another
subproject, made use of pathlib.Path's generator for all component
paths, which... did not include the path itself. So go ahead and
explicitly check that too. Add a test case to verify it while we are at


3 weeks agodevenv: Use PkgConfigDependency.get_env()
Xavier Claessens [Mon, 2 May 2022 15:20:16 +0000 (11:20 -0400)] 
devenv: Use PkgConfigDependency.get_env()

PKG_CONFIG_SYSROOT_DIR are also set properly.

3 weeks agoadd testcase for bad things with add_project_dependencies
Paolo Bonzini [Tue, 29 Mar 2022 13:24:58 +0000 (15:24 +0200)] 
add testcase for bad things with add_project_dependencies

Test that add_project_dependencies() can only be used before build targets
have been declared.  Also test that one cannot use override_dependency
on a superproject to inject a superproject's build products into the
subproject.  This would violate the rule that build products cannot be used
with add_project_dependencies() (similar to e.g. compiler.has_function),
so check that meson detects the situation correctly.

3 weeks agointerpreter: new function add_project_dependencies()
Paolo Bonzini [Tue, 29 Mar 2022 11:52:03 +0000 (13:52 +0200)] 
interpreter: new function add_project_dependencies()

This function can be used to add fundamental dependencies such as glib
to all build products in one fell swoop.  This can be useful whenever,
due to a project's coding conventions, it is not really possible to
compile any source file without including the dependency.

Signed-off-by: Paolo Bonzini <>
3 weeks agodependencies: extract code to get all leaf dependencies
Paolo Bonzini [Tue, 29 Mar 2022 11:43:59 +0000 (13:43 +0200)] 
dependencies: extract code to get all leaf dependencies

Extract to a separate function the code that resolves dependencies
for compiler methods.  We will reuse it for add_project_dependencies().

Signed-off-by: Paolo Bonzini <>
3 weeks agointerpreter: simplify checks in declare_dependency
Paolo Bonzini [Tue, 29 Mar 2022 11:24:40 +0000 (13:24 +0200)] 
interpreter: simplify checks in declare_dependency

Both dependencies.ExternalLibrary and dependencies.InternalDependency are
subclasses of dependencies.Dependency, no need to list them separately.

Signed-off-by: Paolo Bonzini <>
3 weeks agocomplete documentation of declare_dependency
Remi Thebault [Sun, 1 May 2022 13:42:47 +0000 (15:42 +0200)] 
complete documentation of declare_dependency

3 weeks agoFix wrong name in doc
Remi Thebault [Sun, 1 May 2022 13:20:22 +0000 (15:20 +0200)] 
Fix wrong name in doc

The doc about declare_dependency states
d_module_features instead of d_module_versions

3 weeks agodocs: correct incorrect types for pch files
Eli Schwartz [Mon, 2 May 2022 04:20:10 +0000 (00:20 -0400)] 
docs: correct incorrect types for pch files

In the original RefMan 2.0 implementation, the types for this were
filled in as `str | file`, but the code only ever accepted the former.
Fix the documentation so that it aligns with reality.

Fixes #10338

3 weeks agouse shared implementation to convert files() strings to File objects
Eli Schwartz [Thu, 10 Mar 2022 00:45:42 +0000 (19:45 -0500)] 
use shared implementation to convert files() strings to File objects

This handles various edge cases:
- checks for sandbox violations just like all other functions
- warn for direntry issues
- check for generated files referred to via strings instead of the
  returned object

(All valid use cases for wanting to sneak around the checks, are made to
work via commit bba588d8b03a9125bf5c4faaad31b70d39242b68.)

3 weeks agoWindows: Improve Python 3.8+ module check on Windows
Chun-wei Fan [Mon, 25 Apr 2022 04:50:13 +0000 (12:50 +0800)] 
Windows: Improve Python 3.8+ module check on Windows

On Python 3.8.x and later, if the imported module requires non-system DLLs that
are not installed nor bundled with the module package, os.add_dll_directory()
must be called on every path that contains the required DLLs, so that the module
can be imported successfully by Python.

Make things easier for people by calling os.add_dll_directory() on the
valid directories in %PATH%, so that such module checks can be carried out
successfully with much less manual intervention.

3 weeks agomcompile: Print suggestions when target is ambigous
Xavier Claessens [Sun, 3 Apr 2022 21:16:08 +0000 (17:16 -0400)] 
mcompile: Print suggestions when target is ambigous

Fixes: #10221

3 weeks agocmake: Fix CMake LLVM dependency error (fixes #10322)
Daniel Mensinger [Thu, 28 Apr 2022 17:20:24 +0000 (19:20 +0200)] 
cmake: Fix CMake LLVM dependency error (fixes #10322)

3 weeks agoAdd support for multiline f-strings
Peter Lesslie [Fri, 15 Apr 2022 20:02:14 +0000 (15:02 -0500)] 
Add support for multiline f-strings

+ Extend the parser to recognize the multiline f-strings, which the
documentation already implies will work.

The syntax is like:
x = 'hello'
y = 'world'

msg = f'''This is a multiline string.

Sending a message: '@x@ @y@'

which produces:
This is a multiline string.

Sending a message: 'hello world'


+ Added some f-string tests cases to "62 string arithmetic" to exercise
the new behavior.

3 weeks agoConvert if...error checks to assert() in string arithmetic tests
Peter Lesslie [Fri, 15 Apr 2022 19:57:09 +0000 (14:57 -0500)] 
Convert if...error checks to assert() in string arithmetic tests

3 weeks agoanother day, another mypy update becomes stricter about typing
Eli Schwartz [Wed, 27 Apr 2022 21:41:25 +0000 (17:41 -0400)] 
another day, another mypy update becomes stricter about typing

Move GlobalState to a runtime T.NamedTuple, use it for constructing the
tuple we are passing around rather than expecting mypy to detect that
the one we already have matches.

3 weeks agoSome documentation fix (#10335)
Maple [Sun, 1 May 2022 10:24:38 +0000 (03:24 -0700)] 
Some documentation fix (#10335)

* update sample image

* increase size so all text will be shown

3 weeks agoMerge pull request #10039 from eli-schwartz/wayland-protocols-subproject-files
Jussi Pakkanen [Sat, 30 Apr 2022 21:01:03 +0000 (00:01 +0300)] 
Merge pull request #10039 from eli-schwartz/wayland-protocols-subproject-files

dependencies: allow get_variable to expose files from subprojects

3 weeks agoIgnore detached head warning while cloning subprojects with tags
zxey [Thu, 28 Apr 2022 14:01:24 +0000 (16:01 +0200)] 
Ignore detached head warning while cloning subprojects with tags

3 weeks agognome: Make sure g-ir-scanner can use pkg-config properly
Xavier Claessens [Wed, 13 Apr 2022 13:35:52 +0000 (09:35 -0400)] 
gnome: Make sure g-ir-scanner can use pkg-config properly

We need to setup the environment we pass to g-ir-scanner because it will
try to use pkg-config to find dependencies, and that must respect user
settings from machine file. Also make it use uninstalled pc files Meson
generated in the case dependencies, such as glib, have been built as

3 weeks agopkgconfig: Use EnvironmentVariables to build PKG_CONFIG_* env
Xavier Claessens [Wed, 13 Apr 2022 13:35:52 +0000 (09:35 -0400)] 
pkgconfig: Use EnvironmentVariables to build PKG_CONFIG_* env

The new get_env() method that returns an EnvironmentVariables object
will be needed in next commit that will pass it to CustomTarget.

This has the side effect to use the proper os specific path separator
instead of hardcoding `:`. It is the obvious right thing to do here, but
has caused issues in the past. Hopefully issues have been fixed in the
meantime. If not, better deal with fallouts than keep doing the wrong
thing forever.

3 weeks agouse D compiler to check pointer size in test d/14
Remi Thebault [Thu, 24 Mar 2022 14:03:37 +0000 (15:03 +0100)] 
use D compiler to check pointer size in test d/14

3 weeks agoadd release snippet
Remi Thebault [Sat, 12 Mar 2022 09:10:58 +0000 (10:10 +0100)] 
add release snippet

3 weeks agoimplement and test a few compiler checks for D
Remi Thebault [Fri, 11 Mar 2022 21:46:09 +0000 (22:46 +0100)] 
implement and test a few compiler checks for D

 - run
 - sizeof
 - alignment
 - has_header

3 weeks agolinkers: Add support for mold linker
Fini Jastrow [Tue, 8 Mar 2022 17:41:08 +0000 (18:41 +0100)] 
linkers: Add support for mold linker

Support for the relatively new mold linker is missing. If someone wants
to use mold as linker `LDFLAGS="-B/path/to/mold"` has to be added instead
of the usual `CC_LD=mold meson ...` or `CXX_LD=mold meson ...`.

Allow `mold' as linker for clang and newer GCC versions (that versions
that have support).

The error message can be a bit off, because it is generic for all GNU
like compilers, but I guess that is ok. (i.e. 'mold' is not listed as
possible linker, even if it would be possible for the given compiler.)

GCC Version 12.0.1 is not sufficient to say `mold` is supported. The
expected release with support will be 12.1.0.
On the other hand people that use the un-released 12.0.1 will probably
have built it from trunk. Allowing 12.0.1 is helping bleeding edge
developers to use mold in Meson already now.

Fixes: #9072

Signed-off-by: Fini Jastrow <>
3 weeks agoqt module: fix missing sanity check for install_dir + install
Eli Schwartz [Sun, 24 Apr 2022 03:39:05 +0000 (23:39 -0400)] 
qt module: fix missing sanity check for install_dir + install

Regression in commit 11f96380351a88059ec55f1070fdebc1b1033117. When
`install: true` the install_dir must be set. The CustomTarget
initializer no longer checks this for us, so we must include the check

3 weeks agoqt module: fix broken install_dir kwarg
Eli Schwartz [Sun, 24 Apr 2022 03:32:58 +0000 (23:32 -0400)] 
qt module: fix broken install_dir kwarg

Regression in commit 11f96380351a88059ec55f1070fdebc1b1033117. We expect
exactly one string as an install_dir, but CustomTarget started expecting
it to be a list. So we need to pass it as such when forwarding
compile_translations() arguments to the CustomTarget initializer.

3 weeks agodevenv: Catch FileNotFoundError
Xavier Claessens [Mon, 25 Apr 2022 16:08:56 +0000 (12:08 -0400)] 
devenv: Catch FileNotFoundError

Fixes: #10310

4 weeks agoAdd small note that get_variable can publicize its data files
Eli Schwartz [Thu, 28 Apr 2022 03:45:02 +0000 (23:45 -0400)] 
Add small note that get_variable can publicize its data files

Nothing elaborate, just laying down the ground rules for expected usage
and pointing out that it now works. The idea is not to give people
ideas, but to let projects which already have this use case, use it with

4 weeks agoValidate setting of install_tag for CustomTarget
Ferdinand Thiessen [Sat, 23 Apr 2022 19:44:59 +0000 (21:44 +0200)] 
Validate setting of install_tag for CustomTarget

4 weeks agognome: Use 'doc' install_tag for gnome.yelp
Ferdinand Thiessen [Sat, 23 Apr 2022 11:28:07 +0000 (13:28 +0200)] 
gnome: Use 'doc' install_tag for gnome.yelp

4 weeks agoimprove help for -Ddebug
Paolo Bonzini [Fri, 15 Apr 2022 09:24:11 +0000 (11:24 +0200)] 
improve help for -Ddebug

"Debug" is not a very helpful help message.

Signed-off-by: Paolo Bonzini <>
4 weeks agoVisual Studio: Only use /utf-8 on VS2015 or later or clang-cl
Chun-wei Fan [Mon, 11 Apr 2022 10:38:11 +0000 (18:38 +0800)] 
Visual Studio: Only use /utf-8 on VS2015 or later or clang-cl

The compiler flag only exists on Visual Studio 2015 or later, or clang-cl,
and using this always can interfere with compiler feature detection when
this flag is not supported.

So, remove '/utf-8' from always_args if we are on Visual Studio 2013 or

4 weeks agodocs: Remove deprecated meson.source_root() from localisation page example
Simon Arlott [Sun, 24 Apr 2022 09:10:31 +0000 (10:10 +0100)] 
docs: Remove deprecated meson.source_root() from localisation page example

Meson already supplies the same value

4 weeks agoFix typo that breaks g++ cross detection on Debian.
Jussi Pakkanen [Sat, 23 Apr 2022 11:59:48 +0000 (14:59 +0300)] 
Fix typo that breaks g++ cross detection on Debian.

4 weeks agoDo not use 'echo' as it is not available on plain cmd.exe
Jussi Pakkanen [Sat, 23 Apr 2022 15:12:44 +0000 (18:12 +0300)] 
Do not use 'echo' as it is not available on plain cmd.exe

4 weeks agoUse system install scheme rather than the incorrect Debian one.
Jussi Pakkanen [Fri, 22 Apr 2022 13:19:21 +0000 (16:19 +0300)] 
Use system install scheme rather than the incorrect Debian one.

5 weeks agoAllow deprecating an option for a new one
Xavier Claessens [Thu, 21 Apr 2022 15:00:48 +0000 (11:00 -0400)] 
Allow deprecating an option for a new one

5 weeks Use os.pathsep for --path argument
Chun-wei Fan [Fri, 15 Apr 2022 03:49:11 +0000 (11:49 +0800)] Use os.pathsep for --path argument

This way, we can ensure that gtk-doc parses the --path argument
correctly when passed in from the cmd.exe console, since ':' is normally
used to denote that a drive is being used on local paths.

5 weeks agovcs_tag: handle non-str / non-file arguments
Kirill Isakov [Wed, 20 Apr 2022 05:28:21 +0000 (11:28 +0600)] 
vcs_tag: handle non-str / non-file arguments

This makes vcs_tag behave like other commands so it accepts not only
string and file arguments, but also exe, custom_tgt, and

5 weeks agovcs_tag: document the already supported file arg
Kirill Isakov [Wed, 20 Apr 2022 05:04:40 +0000 (11:04 +0600)] 
vcs_tag: document the already supported file arg

5 weeks agoAdd NetBSD support in symbolextractor.
Thomas Klausner [Wed, 20 Apr 2022 21:23:02 +0000 (23:23 +0200)] 
Add NetBSD support in symbolextractor.

Choose FreeBSD backend (OpenBSD backend would also work).

5 weeks agoFix purelib and platlib validation in Python3 module.
Jussi Pakkanen [Wed, 20 Apr 2022 16:58:33 +0000 (19:58 +0300)] 
Fix purelib and platlib validation in Python3 module.

5 weeks agodocs: Add documentation on pkgconfig.relocatable
Fredrik Salomonsson [Wed, 13 Apr 2022 21:28:59 +0000 (14:28 -0700)] 
docs: Add documentation on pkgconfig.relocatable

- Documentation for the pkgconfig.relocatable module option in
Builtin-options. Gives an explanation on what it does, usefulness and
what error that can occur when using it.

- Add pkgconfig.relocatable release snippet. Similar to the
documentation in Builtin-options. Just a bit more brief.

- Add Pkgconfig to DataTests.test_builtin_options_documented in the
docs unit tests.

5 weeks agounittests: Add test_pkgconfig_relocatable to allplatformstests
Fredrik Salomonsson [Wed, 13 Apr 2022 19:37:36 +0000 (12:37 -0700)] 
unittests: Add test_pkgconfig_relocatable to allplatformstests

Test that the pkgconfig prefix is actually relocatable when
pkgconfig.relocatable=true and is not when

5 weeks agotest cases/failing: Add 123 pkgconfig not relocatable outside prefix
Fredrik Salomonsson [Wed, 13 Apr 2022 19:27:42 +0000 (12:27 -0700)] 
test cases/failing: Add 123 pkgconfig not relocatable outside prefix

Which will check that meson errors out when the install_dir for the
pkgconfig file is outside the install prefix.

5 weeks agopkgconfig: Add relocatable module option
Fredrik Salomonsson [Wed, 13 Apr 2022 01:16:59 +0000 (18:16 -0700)] 
pkgconfig: Add relocatable module option

If set to true it will generate the pkgconfig files as relocatable i.e
the prefix variable will be relative to the install_dir. By default
this is false.

Will generate a MesonException if the pkgconfig file is installed
outside of the package and pkgconfig.relocatable=true.