aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2025-05-11compilers/rust: fix syntax of has_argument checksDaniel Foster1-2/+2
2025-05-08Update Getting-meson_zh.mdDaniel1-1/+1
Sync with the English version
2025-05-07interpreter: reintroduce a convertor for override_options and default_optionsPaolo Bonzini5-41/+25
Replace optlist2optdict with a convertor. However, while default_options should use OptionKeys like it did before the option refactoring, override_options keeps using strings. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-07interpreterbase: allow any return type for convertorsPaolo Bonzini1-1/+1
A convertor will *accept* something that is definitely a TYPE_var; but the output can be any Python object that the evaluation function desires. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-07options: store augments as OptionKeysPaolo Bonzini2-26/+20
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-07options: do not go back to list representationPaolo Bonzini1-12/+9
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-07options: support non-string data types in more placesPaolo Bonzini3-22/+24
Allow OptionStringLikeDict to use non-string data types, and use it as much as possible instead of string-valued dictionaries. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-07ast: clean up handling of default optionsPaolo Bonzini2-13/+17
Do not go through string first and OptionKey second. Just pass the OptionKeys down. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-07options: early convert project default options to dictionaryPaolo Bonzini1-33/+17
This makes it possible to remove all list cases from first_handle_prefix and callees. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-07options: fix type for OptionStore.augmentsPaolo Bonzini1-1/+1
2025-05-07options: tighten types for validating optionsPaolo Bonzini1-10/+13
Make the validators accept any object since that is where the type checking is done. The same is true for listify_array_value, which also performs type checking. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-07options: machine_file_options keys are always OptionKeysPaolo Bonzini1-6/+1
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-07interpreter: rename default_project_optionsPaolo Bonzini1-7/+6
It is assigned to invoker_method_default_options for clarity, use that name everywhere. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-07options: fix "deprecated" with dictionary argument and non-string typesPaolo Bonzini3-4/+21
Since opt.deprecated is a dictionary with string keys, the lookup must use str() around the user-provided value; with some care because booleans will be the meson-ic 'true' and 'false' instead of Python's 'True' and 'False'. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-06test cases: add testcase for setting options from superprojectPaolo Bonzini5-3/+10
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-06test cases: cover passing default_options together with static: truePaolo Bonzini3-1/+3
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-06interpreter: allow passing default default_options to do_subprojectPaolo Bonzini2-12/+9
Apply the default_library=... default after the default options have been converted to a dictionary, to avoid having to deal with all the possible types of the default_options keyword argument. Fixes: #14532 Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-06interpreter: convert subproject default options to dictionaryPaolo Bonzini3-8/+11
Always use a dictionary (even though later OptionStore will convert it back to list for hackish historical reasons) to make it easy to apply overrides. Long term we probably want OptionStore to not know about T.List[str] at all, anyway. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-06options: fix types for initialize_from_subproject_callPaolo Bonzini1-9/+6
No code changes, just making mypy annotations truthful. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-06options: allow setting subproject options in subproject() callPaolo Bonzini1-3/+6
Something like subproject('sub', default_options: ['sub2:from_subp=true']) will cause an assertion failure due to "key.subproject is None" obviously being false. Just support this, since it's easy to do so.
2025-05-06options: set subproject options as augmentsPaolo Bonzini1-2/+4
Fixes: #14528 Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-06dependencies/python: Fix Framework Python when pkg-config is installedDaniele Nicolodi1-1/+3
In this case, self.raw_link_args is None. Fixes #14534.
2025-05-06dependencies/python: Replace non-breakable space with spaceDaniele Nicolodi1-1/+1
2025-05-06Add license keyword to pkgconfig generateCharles Brunet4-4/+18
Fixes #14270.
2025-05-06do not use len to check emptynessCharles Brunet1-7/+7
2025-05-05parser: update position when reporting lexer errors for unrecognized tokenEli Schwartz1-1/+1
By default we point to the start of the most recent token we parsed. This is used when erroring out on parser issues, to print the line that caused the error, with a pointer to where we were when we got the error. In this particular case, the pointer pointed to the start of the last token we successfully parsed (col), but was not updated if we hit a token we didn't understand at all. Instead use a pointer to the unrecognized token itself. Fixes: https://github.com/mesonbuild/meson/issues/14415
2025-05-05more explicit error message for unrecognized lexer tokenCharles Brunet2-2/+2
Fixes #14415
2025-05-05test casees: add test for cmake_proj.include_directoriesPaolo Bonzini2-0/+9
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-05cmake: include_directories() returns an arrayPaolo Bonzini2-4/+5
See the way that it is created: dir_node = assign(dir_var, function(include_directories, tgt.includes)) sys_node = assign(sys_var, function(include_directories, tgt.sys_includes, {is_system: True})) inc_node = assign(inc_var, array([id_node(dir_var), id_node(sys_var)])) Due to incorrect documentation, commit 1f4bb3737 ("modules/cmake: Make fully type safe", 2025-04-02) added an incorrect assertion. Fix both. Fixes: #14530 Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-05docs/users: drop + from GTKDylan Baker1-1/+1
This reflects the upstream project, which dropped the + in 2020
2025-05-05docs/users: Trim down only to highly notable projectsDylan Baker1-127/+4
This removes a lot of projects from our list of users, unless they are very notable.
2025-05-05docs/users: remove "not default" from XserverDylan Baker1-1/+1
2025-05-05docs/users: Split notable organizations from individual projectsDylan Baker1-35/+24
Some of the projects listed are part of larger umbrella organizations, which have many project using Meson. Instead of listing every single project from them, list the organization itself and a couple of major projects (if we have any listed) from those organizations.
2025-05-04Add framework linking for iOS builds.Russell Keith-Magee1-2/+8
2025-05-04Work around the mising RECORD file with homebrew pip.Russell Keith-Magee1-0/+5
2025-05-04templates: add missing space to cpp templateheather72831-1/+1
2025-05-03docs: disambiguate exe_wrapperAndy MacGregor1-0/+16
As of this commit, meson has three different pathways to set an exe_wrapper field. exe_wrapper set through `meson test --wrapper` CLI arg or `add_test_setup()` meson function argument are treated equally. Only one wrapper through either of these routes may be set though. The exe_wrapper field set in the cross file is handled separately internally in mtest.py, and holds a little more consequence over meson test behavior than the other two fields. Perhaps a future version of meson should treat these fields equally and explicitly document how they are combined. For now, I think its a better first step to document current behavior to generate discussion about how exactly the future version should behave.
2025-05-02cpp: fix _LIBCPP_ENABLE_ASSERTIONS warningMartin Dørum1-2/+10
libc++ deprecated _LIBCPP_ENABLE_ASSERTIONS from version 18. However, the libc++ shipped with Apple Clang backported that deprecation in version 17 already, which is the version which Apple currently ships for macOS. This PR changes the _LIBCPP_ENABLE_ASSERTIONS deprecation check to use version ">=17" on Apple Clang.
2025-05-01unittests: smoke test the backend optionsPaolo Bonzini1-1/+2
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-01interpreter: add backend options before validating the command line optionsPaolo Bonzini1-13/+13
Allow specifying e.g. -Dbackend_max_links on the command line. Fixes: #14524 Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-01options: extract validation of command line optionsPaolo Bonzini2-8/+21
Which command line options are valid is not entirely known until the backend option is processed. Split the validation to a separate function so that it can be done later, and while at it mention all unknown options instead of just the first. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-01options: tighten type of cmd_line_optionsPaolo Bonzini1-2/+2
Based on the SharedCMDOptions protocol it is guaranteed to be a dictionary. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-05-01docs: Update link to rust-analyzer docsM Henning1-1/+1
2025-04-30compilers: introduce common helper for sanity checksPaolo Bonzini8-69/+31
Avoid reinventing the wheel and instead use a single helper, taking care of logging and cross compilation. Fixes: #14373 Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-04-30compilers: clike: log output of sanity checkPaolo Bonzini1-2/+1
Particularly if using an exe_wrapper, it can be useful to have output logged for debugging. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2025-04-29unittests: fix overly loose regex in tests for `--slice=` optionPatrick Steinhardt1-1/+1
The unit tests for the `meson test --slice=` option check that the option is working by extracting all tests that have been run from the command output. This is done with a rather loose regular expression "test-[0-9]*", which can easily match other parts of the output, as well. One user for example reported that the test broke because they were executing tests in a directory called "meson-test-1.8.0-build", and given that the "test-1" part of that directory matches the regular expression we have too many matches. Fix the issue by tightening the regex so that is way less likely to match anything from the host's build environment. Reported-by: Dominique Leuenberger <dleuenberger@suse.com> Signed-off-by: Patrick Steinhardt <ps@pks.im>
2025-04-29docs: fix markup in release notesBenjamin Gilbert1-1/+1
2025-04-29Fix meson format with multi line parenthesized expressionsWill Ayd5-2/+59
2025-04-28Add release notes for 1.8 that I forgot.Jussi Pakkanen16-112/+135
2025-04-28Bump version number for new development.Jussi Pakkanen1-1/+1