Commit Graph

2032 Commits

Author SHA1 Message Date
Jussi Pakkanen 251d6f0f5d
Merge pull request #9739 from mathstuf/armclang-support
Armclang support
2022-01-10 19:01:11 +02:00
Jussi Pakkanen 9e1f20728f Prepare release 0.61.0. 2022-01-10 18:27:11 +02:00
Eli Schwartz 09f03a8424 add pending deprecation notice for python 3.6 2022-01-10 01:36:46 +02:00
x-yuri 84ac1b6fbb Running-Meson.md: fix a broken link 2022-01-10 00:45:13 +05:30
Jussi Pakkanen a311364f54 Remove docs for ghwt that got deleted ages ago. 2022-01-09 11:14:21 -05:00
Jussi Pakkanen 8b54ee58ef
Merge pull request #9773 from annacrombie/master
Add a man page backend to refman
2022-01-07 18:55:07 +02:00
Stone Tickle 2c4a98f851
add release notes for refman man page 2022-01-06 20:14:34 -06:00
John Kilpatrick 484a389bbe Fix syntax highlighting Continuous-Integration.md 2022-01-05 18:59:04 -05:00
Ben Boeckel f30e83efd6 armltdclang: add support for ARM Ltd.'s `armclang` toolchain
This is another toolchain also called `armclang`, but it is not a cross
compiler like Keil's `armclang`. It is essentially the same as `clang`
based on its interface and CMake's support of the toolchain.

Use an `armltd` prefix for the compiler ID.

Fixes: #7255
2022-01-03 12:49:04 -05:00
Pablo Correa Gómez 6a5c99b0c7
docs: Update yelp documentation to reflect what it is actually doing 2022-01-02 00:34:58 -05:00
Rafael Silva 26f188fb36 add ft32 cpu family 2021-12-17 17:47:21 +02:00
Celeste Wouters c5148d8c73 rewriter: create {add,rm}_extra_files commands
Add ability to mutate a target's `extra_files` list through the
rewriter.

The logic is copied from sources add/rm, but changes the `extra_files`
kwarg instead of the sources positional argument.
Has additional logic to handle creating the `extra_files` list if it
doesn't exist.
2021-12-15 21:21:29 +01:00
Dylan Baker 2a1c0358f4 gnome/genmarshal: Add missing kwargs to permittedKwargs
There are thee arguments that are passed directly to CustomTarget which
are not in the permittedKwargs: depends, depend_files, and build_always.
The first two are obviously generically useful, as they allow creating
correct ordering. The latter, not so much. Since it was an error to pass
it, we'll just delete it.
2021-12-07 16:12:23 -05:00
Eli Schwartz bed55a902c
gnome module: document and fix install_dir x3, by allowing false *_gir and *_typelib
generate_gir forces building both the typelib and gir, and some people
only want one or the other (probably only the typelib?) which means
flagging the other as install_dir: false in the same way custom_target
supports.

As this always worked, albeit undocumented, make sure it keeps working.
It's pretty reasonable to allow, anyway.

Fixes https://github.com/mesonbuild/meson/pull/9484#issuecomment-980131791
2021-12-06 20:07:43 -05:00
Paolo Bonzini 901f444ea5 interpreter: allow extract_objects to receive generated sources
Fixes: #8333
2021-12-06 13:27:12 -08:00
Eli Schwartz 185c4e3c95
doc: fix missing kwarg in qt5 module
compile_moc accepts "dependencies" for the same reason preprocess does,
but the original documentation never copied this over from the
preprocess docs.

See: https://github.com/mesonbuild/meson/issues/9683#issuecomment-986825041
2021-12-06 09:46:55 -05:00
Eli Schwartz 69e1f5bb9a
gnome module: document that yelp(languages: ...) is deprecated
If you use it, we emit a warning telling you to use LINGUAS instead. So
we should warn people in the documentation as well.

Fixes #9495
2021-12-01 18:33:06 -05:00
Daniel Mensinger 3f1519f2e7
cmake: Deprecate CMake <3.14 and warn for <3.17 (#9677)
* cmake: Deprecate CMake <3.14 and warn for <3.17

See:

- #7832
- #9676

* cmake: Add deprecation release note snippet
2021-12-02 00:41:48 +02:00
Pablo Correa Gómez 4f882ff8ec add install_symlink function
Allows installing symlinks directly from meson, which can
become useful in multiple scenarios. Current main use is to
help moving forward #9557
2021-12-01 13:59:54 -05:00
Luke Elliott 39856daf9a Stop backend_startup_project from erasing the last project in a VS solution
if it is not the specified project.
2021-11-25 18:14:54 +02:00
Crend King 809792c223 Support Visual Studio 2022 backend 2021-11-21 08:08:11 -05:00
Jussi Pakkanen cad109607d
Merge pull request #9520 from dcbaker/submit/gnome-first-typed-kwargs
Add typed_kwargs to some of the gnome module functions
2021-11-15 22:07:03 +02:00
Dudemanguy a4b4b21908 dependencies/zlib: Add system zlib method for android
The same method that the BSDs use should also work for android. Also
update the tests and docs where appropriate.
2021-11-15 12:40:00 -05:00
Dudemanguy f873b9ae2f Users.md: add mpv 2021-11-14 23:01:26 -05:00
Dylan Baker 6137c21eb6 modules/gnome: use typed_kwargs for compile_resources 2021-11-08 12:29:01 -08:00
Jussi Pakkanen 53febd08cd Add tutorial for building an SDL app from scratch. 2021-11-02 21:07:38 +02:00
Dylan Baker 98a9cc079c FAQ: Add entry about `add_project_link_arguments` and multiple languages
This seems to come up fairly often, so having an FAQ entry seems useful.
2021-11-02 14:03:18 -04:00
Volker Weißmann 2c079d855e Added warning if run_command is called without the check kwarg 2021-10-30 22:26:28 -04:00
rusty-snake 3c103fe49c Typo fixes (CustomTaget -> CustomTarget) 2021-10-30 14:29:17 -04:00
Jussi Pakkanen af85738daf
Merge pull request #9375 from dcbaker/submit/windows-module-typing
Typing for the Windows module
2021-10-29 22:45:04 +03:00
Xavier Claessens 5e2c251eda Add note in release notes that thin archives has been reverted 2021-10-29 11:12:02 -04:00
Matthieu Gautier 135b3bc0fd Fix markdown list in Bultin-options.md [skip ci]
The broken list was introduce by commit f72ee8e7 which fix too long lines.
2021-10-27 10:07:25 -04:00
Jussi Pakkanen 4840c86ec9 Add sccache support. 2021-10-25 19:59:49 -04:00
Nirbheek Chauhan 6ea4e21b6d Fix typos in release notes for 0.60.0 2021-10-25 00:35:11 -04:00
Jussi Pakkanen 39c268ce0d Create release notes page for 0.60. 2021-10-24 18:45:35 +03:00
Jussi Pakkanen 475b8b1ad8
Merge pull request #9377 from mensinda/jsonDocs
docs: Add a JSON documentation backend
2021-10-24 17:46:05 +03:00
Xavier Claessens 437745b028 Add missing release snippet for option() deprecated kwarg 2021-10-10 16:18:08 -04:00
Xavier Claessens 928078982c Add --vsenv command line option and active VS only when needed 2021-10-10 23:15:18 +03:00
Daniel Jacobs 31bea202c9 improve wraptool search 2021-10-10 16:12:57 -04:00
Christian Clauss a5020857f3 Fix typos discovered by codespell 2021-10-10 16:12:25 -04:00
Xavier Claessens 32b7cbd4a7 clangformat: Only format files tracked by git by default 2021-10-10 14:13:35 -04:00
Eli Schwartz 0a3a9fa0c3
ar linker: generate thin archives for uninstalled static libraries
Since they will never be used outside of the build directory, they do
not need to literally contain the .o files, and references will be
sufficient.

This covers a major use of object libraries, which is that the static
library would potentially take up a lot of space by including another
copy of every .o file.

Fixes #9292
Fixes #8057
Fixes #2129
2021-10-10 13:32:22 -04:00
Eli Schwartz 4d9cc9ceab Add release notes for `subprojects packagefiles`. 2021-10-10 10:17:55 -04:00
Eli Schwartz 2a2c246df2
Zipapp docs (#9356)
* Revert "README: Don't recommend using as a standalone script"

This reverts commit 9763bf65c6.

zipapps work fine now that we have a single entry point. Time to
recommend them again.

* update zipapp documentation to recommend the current packaging script

Also update the website documentation to mention this at all.
2021-10-10 14:20:17 +03:00
Dylan Baker 6849baa476 modules/windows: allow CustomTargets with more than one output for compile_resources 2021-10-09 21:34:54 -07:00
Xavier Claessens 77ef437cc4 optinterpreter: Add deprecated kwarg
It can be either:
- boolean: the option is completely deprecated.
- list: some choices are deprecated.
- dict: some choices are deprecated and replaced by another.

Fixes: #7444
2021-10-09 18:13:34 -04:00
Daniel Mensinger 88db532bf9
docs: Update docs 2021-10-09 23:07:24 +02:00
Xavier Claessens 329d111709 python: Add platlibdir and purelibdir options 2021-10-08 17:47:35 -04:00
Eli Schwartz 108bd996ee
add install_emptydir function
This replaces the absolute hack of using

```
install_subdir('nonexisting', install_dir: 'share')
```

which requires you to make sure you don't accidentally or deliberately
have a completely different directory with the same name in your source
tree that is full of files you don't want installed. It also avoids
splitting the name in two and listing them in the wrong order.

You can also set the install mode of each directory component by listing
them one at a time in order, and in fact create nested structures at
all.

Fixes #1604
Properly fixes #2904
2021-10-08 14:35:00 -04:00
Ismayil Mirzali 54e17ad597 Add Mac installation instructions for Homebrew 2021-10-08 14:34:15 -04:00
Dylan Baker bcfbfbb343 modules/gnome: deprecate yelp variadic sources
Yelp currently can take sources two different ways, the first is via
variadic arguments, the second is by a keyword argument. If the keyword
is passed then the variadic arguments are silently ignored, which is
obviously not ideal. Fortunately the variadic form was never documented,
and is likely not in wide use.

This patch fixes it by deprecating the variadic form, and warning if
both are passed. It does not change behavior as someone may be relying
on it.
2021-10-07 09:26:35 -07:00
Daniel Mensinger a8189d0c70 docs: Temporarily disable modules and move RefMan --> Reference-manual 2021-10-04 23:11:48 +02:00
Daniel Mensinger 1da7a0e29a
docs: Document documenting Meson 2021-10-03 12:19:45 +02:00
Daniel Mensinger 2327cb5eb3
docs: Fix broken links 2021-10-03 12:19:45 +02:00
Daniel Mensinger 30435e5197
docs: Remove the old Reference manual 2021-10-03 12:19:41 +02:00
Daniel Mensinger c10e228371
docs: Fixes found during the YAML conversion process 2021-10-03 11:51:37 +02:00
Xavier Claessens 4deeb907b6 dependency: Allow searching for multiple names 2021-09-30 17:49:15 -04:00
Xavier Claessens d2fa6d5080 Make custom_target() name argument optional 2021-09-30 12:26:19 -04:00
Stone Tickle fbc2e9b0ef doc: document string.strip() optional argument [skip ci] 2021-09-30 00:27:48 +03:00
Jussi Pakkanen fa47d8dab0
Merge pull request #9014 from bonzini/mixed-language-link
Use appropriate compiler for the source file for "links" tests with file argument
2021-09-28 17:32:44 +03:00
Jussi Pakkanen f6ae82169c
Merge pull request #8773 from dcbaker/submit/rustc-enhancements-clippy
More enhancements for Rust + clippy support
2021-09-25 14:42:12 +03:00
Daniel Mensinger 6b00c7dc81 Remove helpers.check_stringlist() 2021-09-25 12:44:11 +02:00
Daniel Mensinger d93d01b6c5 interpreter: Introduce StringHolder
Another commit in my quest to rid InterpreterBase from all higher
level object processing logic.

Additionally, there is a a logic change here, since `str.join` now
uses varargs and can now accept more than one argument (and supports
list flattening).
2021-09-25 12:44:11 +02:00
Dylan Baker 30202a2402 compilers/rust: Add support for clippy
Clippy is a compiler wrapper for rust that provides an extra layer of
linting. It's quite popular, but unfortunately doesn't provide the
output of the compiler that it's wrapping in it's output, so we don't
detect that clippy is rustc. This small patch adds a new compiler class
(that is the Rustc class with a different id) and the necessary logic to
detect that clippy is in fact rustc)

Fixes: #8767
2021-09-24 18:48:48 -07:00
Dylan Baker 6514abf681 rustc: implement pic args 2021-09-24 18:48:48 -07:00
Dylan Baker d32fc0563d compilers/rust: Implement warning levels
Currently this implements 3 warning levels, 1 and 2 are just the
"default" set by rustc, 3, is "everything is a warning", and 0 is
"nothign is a warning".
2021-09-24 18:48:48 -07:00
Dylan Baker e2260650a0 rust: Add werror arguments 2021-09-24 18:48:48 -07:00
Dylan Baker 68c23a6120 Add option to to transpile Cython to C++
This patch adds a new meson built-in option for cython, allowing it to
target C++ instead of C as the intermediate language. This can, of
course, be done on a per-target basis using the `override_options`
keyword argument, or for the entire project in the project function.

There are some things in this patch that are less than ideal. One of
them is that we have to add compilers in the build layer, but there
isn't a better place to do it because of per target override_options.
There's also some design differences between Meson and setuptools, in
that Meson only allows options on a per-target rather than a per-file
granularity.

Fixes #9015
2021-09-24 22:56:46 +03:00
Eli Schwartz 214d03568f
new custom dependency lookup for iconv
Also internally needed by intl, so add that as a proxied dependency
instead of coding it manually.
2021-09-12 13:45:43 -04:00
ePirat 6c908a04d7 docs: add note about built-in options support
Older meson versions would not honor the `<lang>_args` and `<lang>_link_args` in the built-in
options section, add a note about this to the relevant section as it can cause quite some surprises
when using a crossfile with an older meson version.
2021-09-10 23:59:30 +03:00
Paolo Bonzini 32dbdff3b2 docs: document new behavior with respect to mixed language link tests 2021-09-07 14:18:37 +02:00
Filipe Laíns af8b55d49b mintro: add installed_plan
Signed-off-by: Filipe Laíns <lains@riseup.net>
2021-09-06 18:10:55 +02:00
Eli Schwartz dc51740e2c
add release note formally allowing run_target in an alias
We've now fixed it so it works, and it provides useful functionality,
e.g. creating a custom target that builds multiple gettext domains in
one action.
2021-09-01 15:42:40 -04:00
Xavier Claessens ea02c1c48a msvc: Assume UTF8 source by default
Currently every project that uses UTF8 for its source files must add
'/utf-8' argument otherwise they don't work non-English locale MSVC.

Since meson.build itself is assumed to be UTF8 by default, seems better
to assume it for source files by default too.

For example:
- https://gitlab.freedesktop.org/gstreamer/gst-build/-/blob/master/meson.build#L62
- https://gitlab.gnome.org/GNOME/glib/-/blob/main/meson.build#L29
2021-09-01 19:26:36 +03:00
Eli Schwartz 2fc7592e13
i18n module: provide targets as return value for gettext()
Users may wish to make use of these files for their own purposes.

For example, the -pot and -update-po pseudo targets could be reused in
an alias_target(), and at least one person wanted to reuse the built .mo
files as custom_target input.

Fixes #6227
2021-08-31 23:37:33 -04:00
Daniel Mensinger a6c9a151d3 interpreter: Make comparisons of different types a hard error 2021-08-31 23:01:21 +02:00
jimman2003 10151d8738
Make assignment a statement in Syntax.md (#9188) [skip-ci]
* Make assignment a statement in Syntax

force to change line 709 to something kind of non sensical

* Applied code review changes
2021-08-31 08:57:03 -07:00
Xavier Claessens 276063a1d2 Add missing "disabler" kwarg to python.dependency()
There is a unit test using it and now fails because the warning about
unknown kwarg became fatal.
2021-08-30 14:00:54 -04:00
Andrea Pappacoda 64ea8dce7a docs: update LD docs link in FAQ.md 2021-08-28 11:25:52 -07:00
Eli Schwartz 16a162d10a
FAQ: document some community work toward implementing Meson in C/C++
This is useful information for solving the OS bootstrapping problem.
Give it some visibility.

Also, I don't want to forget where I found any of these. :D

ref. #2335
2021-08-27 13:20:54 -04:00
Xavier Claessens e646130ef1 interpreter: Fix dependency(..., static: true) fallback
It should build the fallback subprject with default_library=static and
override the dependency for both static=True and static kwarg not given.

Fixes: #8050.
2021-08-23 10:52:18 -04:00
Tristan Partin be92e37837 Add Java module
The Java module will serve as a source for easing Java development
within Meson. Currently it only supports generating native header files.
2021-08-22 07:57:29 -07:00
Jussi Pakkanen e69b9c982c Update instructions on installing with Pip. Closes #9034. 2021-08-21 22:34:40 +03:00
Jussi Pakkanen 3d98d54fc5
Merge pull request #9012 from dcbaker/submit/qt-custom-targets
Qt module generated sources
2021-08-20 21:09:49 +03:00
Xavier Claessens 12e5bfbc1c external-project: Add support for WAF build system
Fixes: #7638
2021-08-20 09:12:20 -04:00
Dylan Baker 42d27f05c6 docs: add snippet for qt compile_ method generated inputs 2021-08-18 19:47:10 -07:00
Dylan Baker a7f3703440 modules/qt: Allow using generated sources for compile_translations ts_files 2021-08-18 19:47:07 -07:00
Dylan Baker a16335a958 modules/qt: Allow Generated sources in compile_resources 2021-08-18 19:46:47 -07:00
Dylan Baker ff573620b0 modules/qt: allow passing generated targets to compile_ui 2021-08-18 19:46:47 -07:00
Dylan Baker 965fcf2883 modules/qt: Allow generated sources for arguemnts to compile_moc 2021-08-18 19:46:47 -07:00
Eli Schwartz 44e123dd90
test runner: add the ability to configure test.json for python paths
Adds new installed file types with @VAR@ substitution.
2021-08-18 17:58:30 -04:00
Daniel Mensinger a216de4898 docs: Remove the deleted function find_library 2021-08-18 21:56:45 +03:00
Xavier Claessens 8c5aa031b5 Add install tags
Fixes: #7007.
2021-08-17 15:19:18 -04:00
Dylan Baker 7dda90f1bf interpreter/compiler: remove unittest_args method
It's not documented, and it's been marked deprecated for who knows how
long.
2021-08-16 16:21:51 -07:00
Jussi Pakkanen aa68440ba6 Document new rules for green CI. 2021-08-16 21:38:05 +03:00
Tristan Partin 1dc13e9951 Add unset_variable()
This should be useful for helping to control variable scope within
Meson. CMake has something similar for controlling scope.
2021-08-16 14:05:13 -04:00
Eli Schwartz 59d4f771d2
editorconfig: add setting to trim trailing whitespace
and clean up all outstanding issues

Skip 'test cases/common/141 special characters/meson.build' since it
intentionally uses trailing newlines.
2021-08-15 09:36:18 -04:00
Jussi Pakkanen a90d2925dd Revert "compilers/c++: Add MSVC option to make the __cplusplus define accurate"
This reverts commit 0b97d58548.
2021-08-15 13:18:35 +03:00
Xavier Claessens b74db1dda2 Document that custom_target() install_dir can be a list 2021-08-13 08:18:38 -04:00
Eli Schwartz bf1ae2c7f9
Update wrap documentation to describe new submission process 2021-08-12 12:18:58 -04:00
Dylan Baker 0b97d58548 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
2021-08-11 21:54:16 +03:00
Jussi Pakkanen f2fe271198 Add support for finding Javascript source libraries with Emscripten. 2021-08-08 15:25:48 +03:00
Xavier Claessens 9da99e7a59 destdir: Allow relative to build directory
Meson already works like that, except in do_copydir() that requires
absolute destdir. Better explicitly support that instead of leaving it
undefined and unconsistent.
2021-08-04 09:43:41 -04:00
David Seifert 46380b5b1e doc: mention CUDA_PATH in dependency('cuda') [skip ci] 2021-07-27 13:21:51 +03:00
Florian Schmaus dbf2ace6ca
coredata: throw a MesonException on unknown options
Fixes #7288.
2021-07-26 01:10:58 +03:00
miebka e665864660 Added release snippet 2021-07-25 09:07:12 -07:00
Weston Schmidt 2e30b5a1e2 Add support for gcovr --sonarqube report
Sonarcloud.io only can read the sonarqube based report that gcovr can
produce.  This change enables support for this output in meson and
ninja.

Signed-off-by: Weston Schmidt <Weston_Schmidt@alumni.purdue.edu>
2021-07-23 22:15:00 +03:00
Dylan Baker 5583e44826 qt: Allow CustomTargets for qt.preprocess source arguments
This works for `moc_*` and `ui_files`, but it never could have worked
for `qresources` due to the implementation assuming a `str` or `File`.
To restore previous compatibility I've added `CustomTarget` where it
would have worked, but not where it would have failed, the former would
raised an exception along the lines anyway.

Fixes #9007
2021-07-23 00:46:22 +05:30
Jussi Pakkanen 4703f4c244
Merge pull request #8992 from dcbaker/submit/modernize-python-module-dependency
Cleanup the python module
2021-07-22 01:16:24 +03:00
Jussi Pakkanen 116e4d4850 Set up the 0.59.0 release. 2021-07-18 13:39:53 +03:00
Dylan Baker 1f7ab2f010 modules/python: Add type annotations
There's still a number of things that don't properly type check, that's
expected though as the input is often unvalidated and assumed good.
2021-07-13 16:43:14 -07:00
Andrea Pappacoda c8c7c56897 docs: fix minor typos in Machine-files.md 2021-07-08 14:05:17 -04:00
Jon Turney c78e6cac80 Allow `skip_*` test.json keys at top-level or in `matrix:` 2021-07-07 20:08:12 +02:00
Jon Turney a2e44296c9 Add `skip_on_os` to test.json 2021-07-07 20:08:12 +02:00
Jon Turney 7126fbaf81 Add `skip_on_jobname` to test.json
Plan to replace the hard-coded list of 'may be skipped' framework tests in
skippable() with annotations in test.json which record 'will be skipped
in these specific CI jobs'.

If the value of the MESON_CI_JOBNAME env var (an arbitrary string
expected to be unique for each CI configuration) contains any of the
strings in the `skip_on_jobname` key in test.json, the test is expected
to output MESON_SKIP_TEST.

Unexpected skips or runs are treated as an error.

Future work: Maybe we should add additional count categories 'unexpected
skip' and 'unexpected not skipped', rather than counting those as 'skipped'
and 'failed', respectively.
2021-07-07 20:08:12 +02:00
Connor Abbott 62702005eb windows: Support wrc resource compiler
It has a similar interface to windres, but it produces ELF instead of
COFF binaries. It uses its own preprocessor which doesn't support
creating depfiles, but we can convince it to use the system preprocessor
instead and pass those arguments using the --preprocessor option.

Together with some hacks to override the shared library/executable
suffix and some wine patches [1] this is enough to compile dxvk when
ripping out the hand-rolled rc support.

[1] https://www.winehq.org/pipermail/wine-devel/2021-July/190100.html
https://www.winehq.org/pipermail/wine-devel/2021-July/190098.html
https://www.winehq.org/pipermail/wine-devel/2021-July/190099.html
https://www.winehq.org/pipermail/wine-devel/2021-July/190101.html
2021-07-07 18:54:45 +03:00
Jussi Pakkanen 50f870e361
Merge pull request #8957 from jon-turney/dependency-doc-improve
Improvements to dependency doc
2021-07-05 02:54:29 +03:00
Jon Turney 746f00e69e Users: Update URL for pacman
git.archlinux.org has been decomissioned [1]

[1] https://lists.archlinux.org/pipermail/arch-dev-public/2021-June/030466.html
2021-07-04 12:05:49 -04:00
Jon Turney 77f0820a8e
Consistently capitialize 'Meson' in Dependencies.md
Consistently capitialize 'Meson' where used as a proper name in
Dependencies.md.
2021-07-04 15:18:16 +01:00
Jon Turney bfafb83069
Improve text for dependency detection methods
Make it clear that search order for 'auto' there only applies to generic
dependency names.  Drop 'system' from that list, as it's not actually
used for generic dependencies (nor is it defined what it would do).
2021-07-03 13:03:12 +01:00
Jussi Pakkanen ee46c0242f Fix image link names. 2021-07-03 14:46:15 +03:00
Dylan Baker bc4201a7f1 interpreter: add required and disabled to import
This is useful both from the perspective of optional functionality that
requires a module, and also as I continue to progress with Meson++,
which will probably not implement all of the modules that Meson itself
does.
2021-06-30 16:28:14 -07:00
Jon Turney 5968a05adb
Alphabetize dependency names with special lookup 2021-06-30 15:16:51 +01:00
Jon Turney e047a1f622
Move 'builtin', 'config-tool' and 'system' methods to discussion of methods 2021-06-30 15:16:03 +01:00
Jussi Pakkanen 6337e40115
Merge pull request #8882 from xclaesse/msubprojects-parallel
msubprojects: Run action on all subprojects in parallel
2021-06-29 21:13:25 +03:00
Simon Ser 1f3adc4dbe Add feed arg to custom_target() 2021-06-29 20:54:13 +03:00
andy5995 81ca0ec7ae Users.md:add rmw 2021-06-29 20:51:04 +03:00
Xavier Claessens 2b6fe00e3d msubprojects: Run action on all subprojects in parallel
This moves all the code into a class and call its run() method in a
thread. The class queues all logs to print them at the end to avoid
mixing output of multiple actions.
2021-06-25 15:16:55 -04:00
Xavier Claessens d3d95d39be gnome: add update_desktop_database to post_install() 2021-06-23 15:48:32 -04:00
Xavier Claessens 39c6571a46 gnome: Set GSETTINGS_SCHEMA_DIR in devenv 2021-06-23 15:48:32 -04:00
fanc999 edfe24178d
Add Visual Studio 2012/2013 backends (#8803)
* backends: Add a Visual Studio 2013 backend

This is more-or-less a quick port from the VS2015 backend, except that
we update the Visual Studio version strings and toolset versions
accordingly.  Also correct the generator string for Visual Studio 2015
in mesonbuild/cmake/common.py.

* backend: Add VS2012 backend

Similar to what we did for Visual Studio 2013, add a Visual Studio 2012
backend.

* vs2010backend.py: Implement `link_whole:` if needed

We actually need Visual Studio 2015 Update 2 to use `/WHOLEARCHIVE:`,
which is what we are currently using for `link_whole:` on Visual Studio.
For Visual Studio versions before that, we need to expand from the
static targets that were indicated by `link_whole:`, and any of the
sub-dependent targets that were pulled in via the dependent target's
`link_whole:`.  This wil ensure `link_whole:` would actually work in
such cases.

* vs2010backend.py: Handle objects from generated sources

Unforunately, we can't use backends.determine_ext_objs() reliably, as
the Visual Studio backends handle this differently.

* vs2010backend.py: Fix generating VS2010 projects

Visual Studio 2010 (at least the Express Edition) does not set the envvar
%VisualStudioVersion% in its command prompt, so fix generating VS2010
projects by taking account into this, so that we can determine the location
of vcvarsall.bat correctly.

* whole archive test: Disable on vs2012/2013 backends too

The Visual Studio 2012/2013 IDE has problems handling the items that would be
generated from this test case, so skip this test when using
--backend=vs[2012|2013].  This test does work for the Ninja backend when
VS2012 or VS2013 is used, though.

Consolidate this error message with XCode along with the vs2010 backend.

* docs: Add the new vs2012 and vs2013 backends

Let people know that we have backends for vs2012 and 2013.  Also let
people know that generating Visual Studio 2010 projects have been fixed
and the pre-vs2015 backends now handle the `link_whole:` project option.
2021-06-22 21:00:23 +03:00
Jussi Pakkanen 7588dbc587
Merge pull request #8900 from bonzini/extract-objects-docs
extract_objects: fixes, tests and documentation for using the result in a custom_target
2021-06-22 20:39:58 +03:00
Dylan Baker a44c1d18c1
Merge pull request #8898 from e820/interpreter-required-arguments
interpreter: Add checked kwarg to compiler.get_supported_arguments
2021-06-22 09:50:24 -07:00
Paolo Bonzini a656febccf extract_objects: test and document using the result in a custom_target
QEMU would like to use the result of extract_objects in a custom_target;
examples are using objcopy, or using the object files as the key to look
up command line arguments in compile_commands.json.  This is slightly
peculiar and not covered by the test suite, but it works; in order to avoid
regressions, add a test case and document it.
2021-06-22 10:40:38 +02:00
Daniel Mensinger 5cd9f88d6c fix: Ensure that build targets have all methods from ExternalProgram
As a side-effect from #8885 `find_program()` returns now `Executable`
objects when `meson.override_find_program` is called with an
executable target. To resolve this conflict the missing methods
from `ExternalProgram` are added to `BuildTarget`.
2021-06-21 20:19:06 +03:00
Laurin-Luis Lehning d5ed8f61a5 interpreter: Move argument checks from add_*_arguments to compiler.get_supported_arguments 2021-06-21 09:15:13 +02:00
Laurin-Luis Lehning 377adfb6fb docs: Fix snippet heading for required project arguments 2021-06-21 09:15:13 +02:00
Laurin-Luis Lehning c9ad98ef5e interprter: Add required kwarg to add_(project|global)_arguments
To avoid manual compiler support checks add_project_arguments and
add_global_arguments receive a new keyword argument to perform
them automatically.
2021-06-21 09:15:13 +02:00
Orta Therox 2e8729a7e6 Update Quick-guide.md 2021-06-19 15:41:54 +03:00
Dylan Baker f7eda0e822 modules/qt: allow string values for include_directories
This should have been supported before, but wasn't.
2021-06-18 09:52:23 -07:00
Xavier Claessens 5f3b73beb5 dependency: Empty fallback is the same as allow_fallback: false 2021-06-18 12:47:41 -04:00
Eli Schwartz d729ea3f69
Revert "Add Chicken-Libraries to Users.md (#8180)"
This reverts commit 72365e6856.

This is a vanity project that no longer exists.

See discussion at #8890, which still requires further thought but we can
at least start off by removing something clearly invalid.
2021-06-17 17:06:53 -04:00
Eli Schwartz 2c6ccfe4c4
intl custom dependency
Checking how to aquire the *gettext family of symbols portably is
annoyingly complex, and may come from the libc, or standalone.

builtin dependency:

    This detects if libintl is unneeded, because the *gettext family of
    symbols is available in the libc.

system dependency:

    This detects if libintl is installed as separate software, linkable via
    -lintl; unfortunately, GNU gettext does not ship pkg-config files for
    it.

Fixes #3929
2021-06-17 13:22:25 -04:00
Jussi Pakkanen 6fb2f86379
Merge pull request #8822 from dcbaker/submit/annotate-and-check-qt-module
Rewrite the Qt module for type safety!
2021-06-16 20:11:46 +03:00
andy5995 537adce5d8 Users.md: add canfigger library 2021-06-15 14:47:52 -07:00
Dylan Baker 0f5e55a749 docs: Add a page for qt6
Which has been missing since the module was added in 0.57.0.
This also uses the include syntax
2021-06-15 14:15:13 -07:00
Dylan Baker 7535736108 docs: Use an include for the qt modules
Insteadf of qt4 referencing the Qt5 page, include the same content in
both.
2021-06-15 14:15:13 -07:00
Dylan Baker cf6e8d6834 docs: update qt module documentation with types and new files 2021-06-15 12:48:52 -07:00
Dylan Baker 4575ed3d31 modules/qt: Deprecated the preprocess sources keyword argument 2021-06-15 12:35:15 -07:00
Dylan Baker f559e56d0a docs/qt: document all of the arguments of the preprocess function 2021-06-15 12:35:15 -07:00
Dylan Baker 0fe3dc6571 modules/qt: Deprecated the *sources variadic argument to preproccess
It's confusing, and it's a duplicate of the `sources` keyword argument,
which has always existed.
2021-06-15 12:35:15 -07:00
Jussi Pakkanen f69962a4f7 Update macOS installation instructions. 2021-06-15 19:45:09 +03:00
Eli Schwartz 1086305715
doc: fix typo preventing correct page generation
This originally worked but was erroneously reported as wrong and thereby
regressed in commit a7357887c7
2021-06-14 19:24:54 -04:00
andy5995 07e6e0ca8c markdown/Dependencies:remove tabs
Remove tabs introduced by https://github.com/mesonbuild/meson/pull/8866
2021-06-10 21:15:41 -04:00
Andy Alt 53e4ca2456 add example for defining curses preprocessor symbols 2021-06-11 01:03:34 +03:00
Xavier Claessens 8255100485
doc: Add direct link to matrix channel (#8859) [skip ci] 2021-06-09 10:15:04 -07:00
Dylan Baker a7357887c7 docs: fix issues with the cython docs 2021-06-08 20:21:48 -07:00
Eli Schwartz ed19eb2443
document the enhancement to the Fs module permitting File arguments
Add a release notes snippet too!
2021-06-08 16:52:48 -04:00
Xavier Claessens f2b678ef68
doc: Fix link to Commands.md 2021-06-08 11:02:56 -04:00
Jussi Pakkanen a4a61b6bf8
Merge pull request #8512 from bonzini/feature-methods
Utility methods for feature objects
2021-06-08 12:37:25 +03:00
Paolo Bonzini a87e32d181 interpreter: add feature.disable_auto_if()
Add a method to downgrade an option to disabled if it is not used.
This is useful to avoid unnecessary search for dependencies;
for example

    dep = dependency('dep', required: get_option('feature').disable_auto_if(not foo))

can be used instead of the more verbose and complex

    if get_option('feature').auto() and not foo then
      dep = dependency('', required: false)
    else
      dep = dependency('dep', required: get_option('feature'))
    endif

or to avoid unnecessary dependency searches:

  dep1 = dependency('dep1', required: get_option('foo'))
  # dep2 is only used together with dep1
  dep2 = dependency('dep2', required: get_option('foo').disable_auto_if(not dep1.found()))
 ```

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2021-06-08 10:18:12 +02:00
Paolo Bonzini 2f2d99e1d8 interpreter: add feature.require()
Add a method to perform a logical AND on a feature object.  The method
also takes care of raising an error if 'enabled' is ANDed with false.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2021-06-08 10:18:12 +02:00
Dylan Baker 0cb05004ca docs: Add cython docs 2021-06-07 09:25:32 -07:00
Xavier Claessens 769fd50373 docs: Generate a table of all wrapdb releases
wrapdb CI will trigger Meson's CI to regenerate the list when
releases.json is updated.
2021-06-05 17:01:34 -04:00
Paolo Bonzini 08a8043f19 interpreter: add feature.allowed()
This method simplifies the conversion of Feature objects to booleans.
Often, one has to use the "not" operator in order to treat "auto"
and "enabled" the same way.

"allowed()" also works well in conjunction with the require method that
is introduced in the next patch.  For example,

  if get_option('foo').require(host_machine.system() == 'windows').allowed() then
    src += ['foo.c']
    config.set10('HAVE_FOO', 1)
  endif

can be used instead of

  if host_machine.system() != 'windows'
    if get_option('foo').enabled()
      error('...')
    endif
  endif
  if not get_option('foo').disabled() then
    src += ['foo.c']
    config.set10('HAVE_FOO', 1)
  endif

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2021-05-31 16:01:57 +02:00
Jussi Pakkanen b9b73b65a7 Update chat info. [skip ci] 2021-05-26 12:39:34 +03:00
Dylan Baker 17eb224aa7 interpreter: Automatically add 'c' to languages when 'vala' is used
This is so dumb, we can just insert C for you without you having to know
that you're using C under the hood. This is nicer because:
1) Meson doesn't make the user add a language they're not explicitly
   using
2) If there was ever an implementaiton of Vala that didn't use C as
   it's assembly language, this wouldn't make any sense.
2021-05-19 23:28:17 +03:00
Tim McNamara a6e9b54b1d doc: Fix array syntax [skip ci]
Adds a square bracket to create a valid array.
2021-05-18 19:12:17 -07:00
Xavier Claessens 69a5c950a3 pkgconfig: Do not escape custom variables
We need to escape space in variables that gets into cflags or libs
because otherwise we cannot split compiler args when paths contains
spaces. But custom variables are unlikely to be path that gets used in
cflags/libs, and escaping them cause regression in GStreamer that use
space as separator in a list variable.
2021-05-18 18:03:37 -04:00
Randy Yates d7cb58e57d add cpu family csky 2021-05-18 23:17:12 +03:00
Jussi Pakkanen 0b2a7300c0 Set up VS environment automatically when run. 2021-05-13 11:03:10 +03:00
Mehmet Ali Baykara 204abd0e85
little punctuation and add a phrase [skip ci]
Add the `second` to improve readability.
2021-05-13 10:56:50 +03:00
Xavier Claessens 44acefd836 doc: Add example how to use devenv
Fixes: #8758
2021-05-12 10:44:13 -04:00
Jussi Pakkanen c54dd63547 Make objective C use C standard version. Closes #5495. 2021-05-11 22:47:17 +03:00
Jussi Pakkanen 1ca8fa31ea Document how to run the wrap valídator. [skip ci] 2021-05-02 14:22:27 +03:00
Jussi Pakkanen 753954be86 Release 0.58.0. 2021-05-02 12:42:42 +03:00
Alexander Lyashuk cdc6c866ca
doc: update syntax description of immutability
"Stored by value" is more correct way to explain that example.

Mutable vs immutable means that you cannot mutate the value (e.g. list vs tuple in Python), and the example shows that `var2` is actually mutable.

Copying/storing a reference vs value is what what matters in the assignment, in Python `a=b` means `a` and `b` are references to the same list, while in meson `a=b` copies the value of `b` into `a`.
2021-04-28 00:39:56 -04:00
Jussi Pakkanen 959aac5a02 Add snippet about Xcode. [skip ci] 2021-04-26 23:39:15 +01:00
Xavier Claessens 3af39a463b Interpreter: Fallback when required is false but forcefallback is true 2021-04-26 17:04:57 +01:00
Tristan Partin b6d277c140 Add 'subprojects purge' command
This will help facilitate cache busting in certain situations, and
replaces hand-rolled solutions of writing a length command to remove
various files/folders within the subprojects directory.
2021-04-26 16:42:29 +03:00
Xavier Claessens 3c64ecaf86 pkgconfig: Add support for CustomTarget objects in generator
Fixes: #8618.
2021-04-19 17:57:34 +03:00
Peter Hutterer f6cd54cc40 docs: add the 'since' tag to string.replace 2021-04-15 08:21:53 -04:00
Simon Ser c1a8f00d78 docs: document default version for declare_dependency()
By default, the project version is picked.
2021-04-15 08:19:57 -04:00
Mateus Coutinho Marim a9d075aaf9
Adding translation to ptbr for getting meson. [skip ci] 2021-04-13 22:33:27 +03:00
Mateus Coutinho Marim ffdb0dfe6b
Update Users.md [skip ci] 2021-04-12 23:03:37 +03:00
Tristan Partin 4c13aa30a1 dependency: Add JDK system dependency
The JDK system dependency is important for detecting JDK include paths
that may be useful when developing a JNI interface.
2021-04-12 10:43:11 -07:00
Adam Jackson f67b8cb8f2
docs: Fix the description of static_library's additional arguments [skip ci] 2021-04-09 22:27:44 +03:00
Xavier Claessens 5440ce003b Add global_source/build_root() 2021-04-09 09:29:12 -07:00
Simon Ser 974e49fe0e docs: document bool to_int and to_string methods
This documents the bool methods to_int and to_string implemented in
[1].

[1]: a9e9b7c750/mesonbuild/interpreterbase.py (L1109)
2021-04-06 08:15:03 -04:00
Jussi Pakkanen 247d425a40 Add Chinese page to sitemap. [skip ci] 2021-04-06 00:11:39 +03:00
Chippy e67268d520
Add Chinese translation of the getting Meson page [skip ci]
* add zh

* I am learning Meson and there is not Meson Chinese manual.so I want to write a Chinese manual.
This is Getting-meson_zh.
2021-04-06 00:09:20 +03:00
Guilherme Janczak d1628b8bed docs: change duplicate "**.h" path to "**.c" [skip ci] 2021-03-30 10:58:09 -04:00
Jussi Pakkanen e80ff985fb Do not add custom target dir automatically when implicit false. 2021-03-29 18:57:34 +03:00
Xavier Claessens 1ad469342b msubprojects: wrap-file should be re-extracted with --reset
When using --reset we should guarantee that next reconfigure will pick
the latest code. For wrap-file we have no way to know if the revision
changed, so we have to delete the source tree and extract again.

It is unlikely that user has local changes in non-git subprojects, and
--reset is known to be dangerous.
2021-03-28 23:24:01 +03:00
Patryk Obara 1db49240c6
docs: Provide working instructions for scan-build [skip ci]
Replace `meson compile scan-build` with `ninja -C dir scan-build`,
because scan-build target does not work with `meson compile`.

Note about SCANBUILD env variable was not precise enough to describe how
to pass arguments to scan-build - provide an example to make it clear.

Fixes: #7644.
2021-03-28 21:16:08 +03:00
Jussi Pakkanen 268a78f0f4 Added some wrap review docs. [skip ci] 2021-03-27 15:12:28 +02:00
Diego Elio Pettenò 56c03e1517 docs: correct log upload paths.
SInce the build directory is `builddir/` it should be
`builddir/meson-logs/testlog.txt` to be uploaded.
2021-03-25 13:50:12 -04:00
Jussi Pakkanen 54767ab482
Merge pull request #8568 from dcbaker/submit/qt-dependency-factory
QT: use a proper dependency factory
2021-03-24 22:52:15 +02:00
Dylan Baker c211fea513 Refactor Qt Dependency into proper split classes with factories
Currently the Qt Dependencies still use the old "combined" method for
dependencies with multiple ways to be found. This is problematic as it
means that `get_variable()` and friends don't work, as the dependency
can't implement any of those methods. The correct solution is to make
use of multiple Dependency instances, and a factory to tie them
together. This does that.

To handle QMake, I've leveraged the existing config-tool mechanism,
which allows us to save a good deal of code, and use well tested code
instead of rolling more of our own code.

The one thing this doesn't do, but we probably should, is expose the
macOS ExtraFrameworks directly, instead of forcing them to be found
through QMake. That is a problem for another series, and someone who
cares more about macOS than I do.
2021-03-23 15:28:08 -07:00
Xavier Claessens a9e9b7c750
devenv: Set GI_TYPELIB_PATH and LD_LIBRARY_PATH (#8548) 2021-03-23 23:35:05 +02:00
Xavier Claessens 1be13710ad
environment(): Allow stacking append() and prepend() (#8547)
* environment(): Allow stacking append() and prepend()

* Update docs/markdown/Reference-manual.md

Co-authored-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>

Co-authored-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
2021-03-23 17:48:17 +02:00
Jussi Pakkanen 9ab4dadef9 Remove -pipe from default list of args. Closes #8508. 2021-03-23 17:26:08 +02:00
HRXN 9dc7abe697 Docs: Fix small typo 2021-03-21 12:26:54 -04:00
Xavier Claessens 3990754bf5 Allow add_dist_script() in subprojects
Fixes: #8440.
2021-03-18 08:41:21 -04:00
Xavier Claessens 848e360450 interpreter: Add varname as positional arg in dep.get_variable() 2021-03-18 08:37:44 -04:00
Xavier Claessens 0638e38bfc clangformat: Add clang-format-check target 2021-03-16 21:01:54 -04:00
Xavier Claessens f558689277 clangformat: Add include and ignore files 2021-03-16 21:01:54 -04:00
Xavier Claessens a45f939092 Add range() function
Fixes: #5026.
2021-03-16 20:50:16 -04:00
Jussi Pakkanen cb96e79c15 Remove mention of Meson manual. [skip ci] 2021-03-16 20:54:54 +00:00
Xavier Claessens 598e968993 Add `meson devenv` command and meson.add_devenv() 2021-03-16 09:00:50 -04:00
Laurin-Luis Lehning f7dd111333 Some documentation language adjustments & improved error messages 2021-03-10 08:55:22 -05:00
Laurin-Luis Lehning aa71452f1a Yet another documentation update 2021-03-10 08:55:22 -05:00
Laurin-Luis Lehning e124afa409 Fix release snippet still using the old fstring syntax 2021-03-10 08:55:22 -05:00
Laurin-Luis Lehning 3739780b0e Add syntax documentation with tentative version target 2021-03-10 08:55:22 -05:00
Laurin-Luis Lehning 2607510b18 Add failing test cases & release snippet 2021-03-10 08:55:22 -05:00
Dylan Baker 39bb7aa31f docs: add a couple words about system dependencies 2021-03-09 22:55:04 -08:00
Jussi Pakkanen d76345b4be Add address sanitizer support for Visual Studio. 2021-03-09 13:52:15 -08:00
Tristan Partin c83106ee38 Add str.replace() method 2021-03-09 06:27:58 -05:00
Peter Kjellerstedt 6226ac26ef minstall: Correctly set uid/gid of installed files
In commit caab4d3d, the uid and gid arguments passed to os.chown() by
set_chown() were accidentally swapped, causing files to end up with
incorrect owner/group if the owner and group are not the same.

Also update the documentation to better indicate which argument to
install_mode is which.

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
2021-03-06 13:29:29 +02:00
Michael Brockus fb59529458
Fix release notes typo [skip ci] 2021-03-04 15:49:37 -05:00
Chris Mayo 91e30fadc7
docs: Clarify compiler.cmd_array() (#8454)
Make it easier to understand that this array contains the compiler
command, not arguments to it, and may only have one element.
2021-03-04 20:09:08 +02:00
Amr Ojjeh 5ca2aa7ec0
Improved a paragraph [skip ci]
Made it easier to understand
2021-03-04 20:08:09 +02:00
Dylan Baker 1ac4358eae docs/faq: Add a section on user defined functions and macros [skip ci]
Fixes #3234
2021-03-01 15:10:51 -08:00
Jason Woodward 50af09de03 install_man locale support
Rather than having to manually build the locale aware man paths with

`install_data('foo.fr.1', install_dir: join_paths(get_option('mandir'), 'fr', 'man1'), rename: 'foo.1')`

Support doing

`install_man('foo.fr.1', locale: 'fr')`
2021-02-27 14:35:23 +02:00
Stephen Gregoratto ec5fe58e6d Allow printing UserOptions in the summary 2021-02-26 10:28:00 -05:00
Tim-Philipp Müller ace22f21a7 meson: add .has_external_property() methods
Useful in case of boolean values to distinguish between a boolean
value having been set in the native/cross file and not having been
provided, which can't be achieved by passing a fallback parameter
to .get_external_property().
2021-02-26 10:15:17 -05:00
Riccardo Schirone c5aee36fa2 Add Rizin to the list of meson users 2021-02-26 07:06:28 -05:00
Dylan Baker aa4efc709e deprecated `meson.get_cross_property`
It's a pure subset of `get_external_property`, and has odd behavior in
host == build configurations. `get_external_property` is clear, and uses
the standard `native : bool` syntax to control host vs build properties
2021-02-25 15:18:39 -08:00
Xavier Claessens cef5cab23c Support multiple args in error()
Seems it got forgotten when that was added to warnings() and message().

Fixes: #8414.
2021-02-25 22:58:45 +02:00
Matthias Klumpp 4e5efd3897
Allow custom target output to be processed by generators 2021-02-25 20:53:41 +02:00
Jussi Pakkanen 74ebb1ba59 Clarify that wrap requests are for user submission. [skip ci] 2021-02-25 00:40:20 +02:00
Jussi Pakkanen 671647188c Add note about using Ninja on old Meson versions. [skip ci] 2021-02-23 22:00:19 +02:00
Xavier Claessens 2fabd4c7dc minstall: Add --skip-subprojects option
By default all subprojects are installed. If --skip-subprojects is given
with no value only the main project is installed. If --skip-subprojects
is given with a value, it should be a coma separated list of subprojects
to skip and all others will be installed.

Fixes: #2550.
2021-02-22 23:03:55 +02:00
Patryk Obara 36d9d7a96f docs/users: Add DOSBox Staging 2021-02-21 19:53:37 -05:00
Xavier Claessens b6804bf49c Substitute @CURRENT_SOURCE_DIR@ in run_target() and custom_target()
run_target() does some variable substitutions since 0.57.0. This is a
new behavior, and undocumented, caused by sharing more code with
custom_target(). More consistency is better, so document it now.

custom_target() was doing variable substitution in the past, because it
shared some code with generator(), but that was undocumented. Some
refactoring in 0.57.0 caused it to not replace @CURRENT_SOURCE_DIR@,
@SOURCE_DIR@, and @BUILD_DIR@ anymore. This patch adds back
@CURRENT_SOURCE_DIR@ and document it. It does not add back @SOURCE_DIR@
because it is duplicate with @SOURCE_ROOT@ that has a better name. Also
do not add back @BUILD_DIR@ which is duplicate of @PRIVATE_DIR@, and
not @BUILD_ROOT@ surprisingly, adding to the confusion.
2021-02-17 14:48:04 +02:00
Olexa Bilaniuk d1e945f442 Add optional -Dcuda_ccbindir= option and -ccbin flag to CUDA compiler.
Closes #8110.
2021-02-16 15:10:21 -05:00
Jussi Pakkanen 110457543d Add missing apostrophes. [skip ci] 2021-02-16 01:04:20 +02:00
Sam Thursfield f5bc0f33da
docs: Fix typo in release notes [skip ci]
Mismatched \` symbol was messing up the formatting.
2021-02-14 23:04:15 +02:00
Jussi Pakkanen 7d1b11d67b Add a release note entry for C++ modules which was missing. [skip ci] 2021-02-14 22:12:18 +02:00
Jussi Pakkanen 5d651e76b5 Set up release 0.57. 2021-02-14 21:28:44 +02:00
Luca Weiss 398df56298 Add Qt6 module 2021-02-07 22:43:00 +02:00
Jussi Pakkanen a855bcab1c
Merge pull request #8162 from dcbaker/wip/2021-01/rust-module-bindgen
Add a wrapper to the rust module for bindgen
2021-02-07 16:57:39 +00:00
Peter Hutterer 3f8585676b Make installing non-existing subdirs a supported feature
install_subdir() with a non-existing subdir creates the directory in the
target directory. This seems like an implementation detail but is quite useful
to create new directories for e.g. configuration or plugins in the installed
locations.

git bisect says this started with 8fe8161014.
Let's add a test for it and document it to make this behavior official.

Limitation: it can only create at the install_dir location, trying to create
nested subdirectories does not work and indeed creates the wrong directory
structure. That is a bug that should be fixed separately:

        install_subdir('blah',
                        install_dir: get_option('prefix'))
        install_subdir('sub/foobar',
                        install_dir: get_option('prefix'))
        install_subdir('foo/baz',
                        install_dir: get_option('prefix'))

        $ tree ../_inst
        ../_inst
        ├── baz
        ├── blah
        └── foobar

Fixes #2904
2021-02-07 12:38:31 +00:00
Jussi Pakkanen 034b81a09f
Merge pull request #8288 from bonzini/test-setup-exclude-suites
introduce add_test_setup(exclude suites: ...) keyword argument
2021-02-07 12:03:10 +00:00
Jussi Pakkanen 8b82ffa9e4
Merge pull request #8305 from xclaesse/run-target-env
run_target: Add env kwarg
2021-02-07 11:46:41 +00:00
Dylan Baker b28235428d rust: Add a module wrapper for bindgen
This has a couple of advantages over rolling it by hand:
1. it correctly handles include_directories objects, which is always
   handy
2. it correctly generates a depfile for you, which makes it more
   reliable
3. it requires less typing
2021-02-06 10:27:04 -08:00
Xiaotian Wu 233afde4cc add loongarch support 2021-02-06 15:16:04 +00:00
Dylan Baker 456844a4f3 vala: Disable unity builds
Our approach to unity builds with vala is broken, you cannot unify the
generated C files, as they contain duplicate symbols. We would need to
instead combine the files while they are still in their vala form, then
convert that to C and compile the unified C file.

This does not fix the linked issue, as this removed the ability to do
vala unity builds, but it does allow running vala with `--unity=on`.

Related: #5280
2021-02-05 16:31:33 -08:00
Xavier Claessens 522392e755 run_target: Add env kwarg
Re-implement it in backend using the same code path as for
custom_target(). This for example handle setting PATH on Windows when
command is an executable.
2021-02-05 17:53:09 -05:00
Xavier Claessens b5100fe86a gnome: Add post_install() method
Various GNOME projects have scripts that does similar task, better do it
directly in meson. This ensures it's done correctly regarding usage of
subprojects and pkg-config. See for example this gtk bug:
https://gitlab.gnome.org/GNOME/gtk/-/issues/3626.

Fixes: #8268
2021-02-05 15:08:47 -05:00
Luke Drummond 46e3480f7c Introduce `fs.read` to read a file as a string
Following #7890, this patch introduces the ability to read the contents
of a file to the fs module.

This patch introduces the ability to read files at configure time, but
has some restrictions:
    - binary files are not supported (I don't think this will prove a
    problem, and if people are wanting to do something with binary
    files, they should probably be shelling out to their own script).
    - Only files outside the build directory allowed. This limitation
      should prevent build loops.
Given that reading an arbitrary file at configure time can affect the
configuration in almost arbitrary ways, meson should force a reconfigure
when the given file changes. This is non-configurable, but this can
easily be changed with a future keyword argument.
2021-02-04 17:34:11 +00:00
Xavier Claessens 95c0790711 minstall: Add --dry-run option
Closes: #1281
2021-02-04 16:24:38 +00:00
Luca Weiss 673aff3595 Fix some typos in the release notes snippets 2021-02-03 11:15:14 -08:00
Jussi Pakkanen cd94cf8995
Merge pull request #8087 from dcbaker/submit/lto-extensions
Add option for thinLTO
2021-02-02 22:17:13 +00:00
Eli Schwartz 65b3d67c7e
doc: fix typos 2021-02-02 16:15:48 -05:00
Dylan Baker 6f532b72c8 Add support for LLVM's thinLTO
This uses a separate option, b_lto_mode. It works in conjunction with
b_lto_threads.

Fixes #7493
2021-02-02 12:42:48 -08:00
Dylan Baker bffc94b08f compilers: Add support for using multiple threads with lto
Both Clang and GCC support using multiple threads for preforming link
time optimizaions, and they can now be configured using the
`-Db_lto_threads` option.

Fixes #7820
2021-02-02 12:42:48 -08:00
Paolo Bonzini c7c2bc8db1 interpreter, mtest: introduce add_test_setup(exclude_suites: ...)
This new keyword argument makes it possible to run specific
test setups only on a subset of the tests.  For example, to
mark some tests as slow and avoid running them by default:

    add_test_setup('quick', exclude_suites: ['slow'], is_default: true)
    add_test_setup('slow')

It will then be possible to run the slow tests with either
`meson test --setup slow` or `meson test --suite slow`.
2021-02-02 11:23:33 +01:00
Jussi Pakkanen 474f4813c4 Capitalize "Meson" consistently as it is a proper name. [skip ci] 2021-01-31 19:49:20 +00:00
Paolo Bonzini 4bde7f31ae copy editing for 0.57 release notes [skip ci] 2021-01-31 15:11:30 +00:00
Xavier Claessens 6c6b5d77d6 add_install_script: add skip_if_destdir kwarg
It is common, at least in GNOME projects, to have scripts that must be
run only in the final destination, to update system icon cache, etc.
Skipping them from Meson ensures we can properly log that they have not
been run instead of relying on such scripts to to it (they don't
always).
2021-01-30 21:28:21 +00:00
Jussi Pakkanen f72ee8e742 Rewrap long text lines in docs. [skip ci] 2021-01-30 16:19:59 +00:00
Jussi Pakkanen c67e0a8a67
Merge pull request #8264 from xclaesse/ep-misc
external_project: misc improvements
2021-01-30 11:30:16 +00:00
Jussi Pakkanen f0fbb31ccf
Merge pull request #8200 from bonzini/mtest-asyncio-logs
mtest: improvements to logging
2021-01-30 09:52:43 +00:00
Xavier Claessens ef7dfa97fc external_project: Add release snippet 2021-01-29 19:02:48 -05:00
Jussi Pakkanen 3f0a0c1582 Can read project version from a file. 2021-01-29 16:42:59 +00:00
Xavier Claessens 11cfc258fc external_project: Add default configure options 2021-01-29 11:01:00 -05:00
Dylan Baker f808c955ea intepreter: Allow using file objects for the script_name of add_*_script
It's a bit silly and conveluted to have to call find_program on the
output of configure_file, so let's just allow passing files as the
script name.
2021-01-27 21:59:55 +00:00
Xavier Claessens 633264984b custom_target: Add env kwarg 2021-01-27 09:00:54 -05:00
Xavier Claessens e4137ae3ec test: Make timeout <= 0 infinite duraction 2021-01-27 08:26:20 -05:00
Xavier Claessens baa9eeebe4 dist: Allow packaging subproject in same git repo as main project 2021-01-26 21:32:03 -05:00
Florian Schmaus 0f5a136c40
docs: Fix sentence in Machine-files.md [skip ci]
Fixes: 1ca17dc853 ("docs/machine-files: Add a section on data types")
2021-01-26 08:09:53 -05:00
Evgeny Ermakov a24546d7da docs: Fix typo in Syntax.md [skip ci] 2021-01-23 17:25:51 +00:00
Paolo Bonzini ec02753fbf docs: add documentation snippet for meson test console output changes 2021-01-22 12:18:59 +01:00
Paolo Bonzini adb1b2f3f6 interpreter: accept external programs and dependencies for summary 2021-01-21 08:54:35 -05:00
Marios Staikopoulos f8681b12e1 MSVC and Clang-Cl Compiler Argument Cleanup
This commit performs some cleanup for the msvc and clang-cl arguments.

* "Disable Debug" (`/Od`) is no longer manually specified for optimization levels {`0`,`g`} (it is already the default for MSVC).
* "Run Time Checking" (`/RTC1`) removed from `debug` buildtype by default
* Clang-CL `debug` buildtype arguments now match MSVC arguments
* There is now no difference between `buildtype` flags and `debug` + `optimization` flags
2021-01-20 14:11:16 -05:00
Volker Weißmann 2e48d13fa2 Added "How do I use a library before declaring it?" in the FAQ. 2021-01-20 19:07:04 +00:00
Jussi Pakkanen 8133a7b9a4 Keep buildtype the same even if user changes debug and/or optimization. 2021-01-19 20:25:55 +00:00
Marios Staikopoulos a3d8dc546c Removal of /ZI on MSVC Debug
The /ZI flag adds in "Edit and Continue" debug information, which will
cause massive slowdown. It is not a flag that we should be adding by
default to debug builds.

/Zi will still be added.
2021-01-17 21:03:35 +00:00
Paolo Bonzini ea2f34e286 mtest: allow quickly interrupting the test run
The new behavior of interrupting the longest running test with Ctrl-C is useful
when tests hang, but not when the run is completely broken for some reason.
Psychology tells us that the user will compulsively spam Ctrl-C in this case,
so exit if three Ctrl-C's are detected within a second.
2021-01-14 22:00:51 +00:00
gaal-dev e3bd45c7c3
Add qtcreator to IDE-integration.md 2021-01-14 08:40:07 -05:00
Antonin Décimo 39ede12aa5 Fix misspells
Signed-off-by: Antonin Décimo <antonin.decimo@gmail.com>
2021-01-13 12:53:10 -05:00
Eli Schwartz adfcf77109
summary: align left, not align middle
aligning along the left is, I think, what most projects want to do.
Aligning along the middle looks subjectively ugly, and objectively
prevents me from further indenting an element, e.g.

  Build information:
    prefix                : /usr
    sysconfdir            : /etc
        conf file         : /etc/myprogram.conf
2021-01-12 19:19:00 -05:00
Luke Elliott 9efcdba0d5 Allow '//' as project function id due to git bash path conversion.
See https://stackoverflow.com/questions/54258996/git-bash-string-parameter-with-at-start-is-being-expanded-to-a-file-path
2021-01-12 17:42:57 +00:00
Eli Schwartz a0d54d0441
doc: fix invalid Commands.md example for introspect [skip ci]
It requires at least one option argument, and the one that provides
"basic information" about the project is --projectinfo, so let's use
that to demo the command.

Fixes #8182
2021-01-11 14:12:29 -05:00
Michael Brockus 72365e6856
Add Chicken-Libraries to Users.md (#8180) 2021-01-11 10:33:59 -05:00
Daniel Mensinger 8f1d9bb7b0 cmake: add PATH logic to preliminary dep check (fixes #8133) 2021-01-10 21:48:23 +00:00
Eli Schwartz c18a9715b8
Hotdoc: use template for Commands.md instead of generating the entire file (#8154)
* doc: fix hotdoc misuse for dynamically generated content

hotdoc has a native include feature for including files inline. Use this
to generate one file for each dynamically generated code block, and
include that file in Commands.md; see:
https://hotdoc.github.io/syntax-extensions.html#smart-file-inclusion-syntax

This permits us to move back to using the in-tree version of the hotdoc
*.md sources, thus fixing the incorrect inclusion of "builddir/" in the
"Edit on github" links which resulted from using copies as the source.

Fixes #8061

* doc: call the dummy file a "stamp" as it is a better known term
2021-01-10 14:48:34 +02:00
Jussi Pakkanen c9d9dacdbc
Merge pull request #7860 from dcbaker/wip/2020-10/rust-module
Add a rust module
2021-01-06 00:05:48 +00:00
Dylan Baker 3d80a88bd3 modules: Add an unstable-rust module
Like other language specific modules this module is module for holding
rust specific helpers. This commit adds a test() function, which
simplifies using rust's internal unittest mechanism.

Rust tests are generally placed in the same code files as they are
testing, in contrast to languages like C/C++ and python which generally
place the tests in separate translation units. For meson this is
somewhat problematic from a repetition point of view, as the only
changes are generally adding --test, and possibly some dependencies.

The rustmod.test() method provides a mechanism to remove the repatition:
it takes a rust target, copies it, and then addes the `--test` option,
then creates a Test() target with the `rust` protocol. You can pass
additional dependencies via the `dependencies` keyword. This all makes
for a nice, DRY, test definition.
2021-01-05 15:10:50 -08:00
Jussi Pakkanen f9dd75f213 Fix last mention of Python 3.5. [skip ci] 2021-01-05 11:48:58 -08:00
Dylan Baker d89ec98b47 mtest: Add support for rust unit tests
Rust has it's own built in unit test format, which is invoked by
compiling a rust executable with the `--test` flag to rustc. The tests
are then run by simply invoking that binary. They output a custom test
format, which this patch adds parsing support for. This means that we
can report each subtest in the junit we generate correctly, which should
be helpful for orchestration systems like gitlab and jenkins which can
parse junit XML.
2021-01-05 10:23:41 -08:00
Eli Schwartz 67ee65f47e
doc: restore accidentally removed images used in Getting-meson.md [skip ci]
Broken in commit 8a11cf357e

Fixes #8148
2021-01-03 20:41:35 -05:00
Jussi Pakkanen 8a11cf357e Add simple start page for beginners. [skip ci] 2020-12-22 18:08:47 +00:00
Eli Schwartz 55a3458d7b
Revert "add owl chess in Users.md [skip ci]"
This reverts commit 7092efabb5.

No longer exists. See:
https://github.com/mesonbuild/meson/pull/7592#issuecomment-747817950
2020-12-17 21:06:34 -05:00
Jussi Pakkanen d32d0d6b53
Merge pull request #7902 from bonzini/mtest-build-depends-only
mtest: only build what is needed for the tests
2020-12-15 21:21:50 +00:00
Jean-Michel Gorius 521a1b9921 docs: Update link to libspng [skip ci]
libspng moved from Gitlab to Github. Update the link to point to the new location.
2020-12-15 17:49:05 +00:00
Eli Schwartz 9a42779521
doc: fix typos for doubled words [skip ci]
"more more" is one place where we don't need more.

Fixes #8097
2020-12-14 21:24:34 -05:00
Paolo Bonzini 79e2c52a15 mtest: only build what is needed for the tests
It is a usual workflow to fix something and retest to see if it is fixed using a
particular test.  When tests start to become numerous, it becomes time consuming
for "meson test" to relink all of them (and in fact rebuild the whole project)
where the user has already specified the tests they want to run, as well as
the tests' dependencies.

Teach meson to be smart and only build what is needed for the test (or suite)
that were specified.

Fixes: #7473
Related: #7830
2020-12-14 10:53:36 +01:00
Christoph Reiter 8d04b3ce74 CI: Move all remaining jobs from travis-ci to GHA
Some changes:

* Set HOME to /root, since github mounts its own HOME and 'wine'
  (because of permissions) and 'dub' (can't find packages) don't
  like that.
* Remove the seccomp option, doesn't seem to be needed.
2020-12-11 13:45:11 -08:00
Florian Schmaus a7aba905a0 compilers: add support for c++20/gnu++20
Fixes #8084.
2020-12-10 00:30:48 +02:00
Xavier Claessens 0efcb0be5f pkgconfig: Respect variable ordering when passed as list
This fix a regression introduced in Meson 0.56.0 when using python 3.5.
Also mention in documentation that using a meson dict does not guarantee
ordering.

Fixes: #8074.
2020-12-10 00:28:34 +02:00
Jussi Pakkanen c21b04ba08 Add prelinking support for static libraries. 2020-12-03 22:58:07 +02:00
Jerry Casiano 6e39dcad2f
Update Vala Preprocessor section in documentation. Closes: #8040 [skip ci] 2020-11-29 23:51:47 +02:00
Paolo Bonzini 0deab2ee9e
compiler: allow non-built internal dependencies as arguments
Allow methods on the compiler object to receive internal dependencies,
as long as they only specify compiler/linker arguments or other
dependencies that satisfy the same requirements.

This is useful if you're using internal dependencies to add special
"-D" flags such as -DNCURSES_WIDECHAR, -D_XOPEN_SOURCE_EXTENDED or
-DGLIB_STATIC_COMPILATION.
2020-11-24 00:03:35 +02:00
Michael Brockus 9d651fe61e
add dependency recommendation [skip ci]
Co-authored-by: Eli Schwartz <eschwartz@archlinux.org>
2020-11-23 13:51:16 -05:00
Eli Schwartz 1db800bf67 doc: fix confusing use of "build" as a directory argument [skip ci]
In most places, we now refer to "builddir/" which is a lot less likely
to make people think it is a subcommand which needs to be used
literally.

This is a regression since commit 276d342eba
due to the existence of new docs which were added later on, using the
wrong form.
2020-11-22 18:29:55 -08:00
Jason Ekstrand 15bbf1ea75 Handle cmake dependencies which require a specified version
Some CMake packages fail to find at all if no version is specified.
This commit adds a cmake_version parameter to dependency() to allow you
to specify the requested version.
2020-11-21 07:55:10 -08:00
Jussi Pakkanen 913374834c
Merge pull request #7894 from obilaniu/cudaupdates
Update unstable CUDA Module to support newest toolkits and drivers.
2020-11-18 23:12:15 +02:00
Michael Brockus 188695f202
Update Tutorial.md [skip ci] 2020-11-18 23:02:28 +02:00
Jussi Pakkanen c8af3c8d29 Revert "Add thinlto support. Closes #7493."
This reverts commit 3e6fbde94c.
2020-11-17 17:51:23 +02:00
Eli Schwartz 98ddd472ed doc: add much-needed accuracy to pip installation instructions [skip ci]
- mention installing from local sources, not PyPI
- warn against --user installs, which too often screw up users that then
  cannot install projects because ~/.local won't be in sudo's PYTHONPATH
- advise installing with sudo -- current versions of pip assume --user
  for you rather than failing with permission errors, which is great
  unless, like meson, there are compelling reasons to need to install as
  root
2020-11-17 17:49:18 +02:00
Jussi Pakkanen 59cacbbfc1 Add doc on how to add the [provide] entry to wrapdb entries. [skip ci] 2020-11-14 13:47:55 +02:00
Eli Schwartz 8992729ade doc: fix typo [skip ci] 2020-11-12 12:46:29 -08:00
Jones 8351e85bbd
interpreter: Add get_keys function for configuration_data (#7887) 2020-11-12 20:43:17 +02:00
Jussi Pakkanen 3e6fbde94c Add thinlto support. Closes #7493. 2020-11-08 16:00:05 +02:00
Olexa Bilaniuk ea5dd189c5 Update documentation for CUDA module. 2020-11-05 14:50:23 -05:00
Michael Weiss cc033e5476
docs: Recommend to use SPDX license identifiers [skip ci]
Some license identifiers are ambiguous (e.g. "GPL3"). The SPDX license
identifiers avoid this by providing standardized and unique identifiers
(e.g. "GPL-3.0-only" or "GPL-3.0-or-later" for the previous example).

Because SPDX short-form identifiers are also both human- and
machine-readable we should recommend them in the documentation.

More information (advantages, details, etc.) can be found here:
- https://spdx.dev/resources/use/#identifiers
- https://spdx.dev/ids/

Fix #7905.
2020-11-05 21:28:12 +02:00
Dylan Baker 7860a6aeab rust: implement support for --edition
Using the std option, so now `rust_std=..` will work. I've chosen to use
"std" even though rust calls these "editions", as meson refers to
language versions as "standards", which makes meson feel more uniform,
and be less surprising.

Fixes: #5100
2020-11-05 21:24:20 +02:00
Johan Bjäreholt d58dcf26e7
docs: Fix broken anchor links [skip ci]
Apparently anchor links are case-sensitive and needs to be lowercase in hotdoc.
Prior to this change the anchor links were uppercase so the link did not refer to the anchor tag.

Likely that there are more occurrences around the docs than this, have not looked.
2020-11-05 21:10:57 +02:00
Eli Schwartz 478feb39ed qt module: fix error message typo, translation qresource accepts qm not ts
Fixes #7925
2020-11-04 17:23:34 +02:00
Jussi Pakkanen bca90722ec Bump minimum supported Python version to 3.6. Closes #6297. 2020-10-30 11:18:11 +02:00
Jussi Pakkanen f16d31607e Bump version number for release. This is the 10 000th commit! 2020-10-30 10:25:24 +02:00
Danilo Spinella e7009d439c Syntax.md: Fix variable used in substring example 2020-10-22 08:47:24 -04:00
Paolo Bonzini e36b1923e2 fix markdown issue 2020-10-19 09:40:31 -07:00
Xavier Claessens bcf369ea3c Fix consistency in variables kwarg
Share common code to extract the `variables` kwarg in
declare_dependency() and pkg.generate().
2020-10-16 18:09:56 +03:00
Daniel Mensinger 7c377e5a5d intro: Add extra_files key to intro output (fixes #7310) 2020-10-15 01:56:59 +03:00
Jussi Pakkanen 30d78f3981
Merge pull request #6968 from xclaesse/auto-promote
Merge wraps from subprojects into wraps from main project
2020-10-14 19:40:34 +03:00
Peter Harris 8b8a610ea4 vs: add static_from_buildtype to b_vscrt 2020-10-14 19:35:28 +03:00
Xavier Claessens 173c115834 Add wrap mode to disable auto promote 2020-10-13 17:55:16 -04:00
Xavier Claessens 6333ee88c1 Merge wraps from subprojects into wraps from main project
wraps from subprojects are now merged into the list of wraps from main
project, so they can be used to download dependencies of dependencies
instead of having to promote wraps manually. If multiple projects
provides the same wrap file, the first one to be configured wins.

This also fix usage of sub-subproject that don't have wrap files. We can
now configure B when its source tree is at
`subprojects/A/subprojects/B/`. This has the implication that we cannot
assume that subproject "foo" is at `self.subproject_dir / 'foo'` any
more.
2020-10-13 17:55:16 -04:00
Daniel Mensinger e36f713a7f include_type: Add CMake subporject dependency method (fixes #6879) 2020-10-13 23:51:25 +03:00
Jussi Pakkanen 3372c58ca6
Merge pull request #7816 from mensinda/cmCross
cmake: Cross compilation support
2020-10-13 23:38:51 +03:00
Nirbheek Chauhan 55cf399ff8 mtest: Allow filtering tests by subproject
You could always specify a list of tests to run by passing the names as
arguments to `meson test`. If there were multiple tests with that name (in the
same project or different subprojects), all of them would be run. Now you can:

1. Run all tests with the specified name from a specific subproject: `meson test subprojname:testname`
1. Run all tests defined in a specific subproject: `meson test subprojectname:`

Also forbid ':' in test names. We already forbid this elsewhere, so
should not be a big deal.
2020-10-13 19:01:15 +03:00
Daniel Mensinger f5c9bf96b3
cmake: Add cross docs 2020-10-13 17:04:20 +02:00
Xavier Claessens dccff1f2bc msubprojects: Handle wrap-file to wrap-git case 2020-10-13 11:12:49 +00:00
Xavier Claessens 3ade5bbd92 msubprojects: Handle change of URL in wrap-git 2020-10-13 11:12:49 +00:00
Jussi Pakkanen aae23dfff3
Merge pull request #7740 from bonzini/fallback-false
Allow blocking/forcing automatic subproject search
2020-10-12 17:50:14 +03:00
Jussi Pakkanen 7b1cc95c7f Update wrap maintenance documentation. [skip ci] 2020-10-10 22:14:34 +02:00
Paolo Bonzini 726b822054 dependency: support boolean argument "allow_fallback"
Sometimes, distros want to configure a project so that it does not
use any bundled library.  In this case, meson.build might want
to do something like this, where slirp is a combo option
with values auto/system/internal:

  slirp = dependency('', required: false)
  if get_option('slirp') != 'internal'
    slirp = dependency('slirp',
                       required: get_option('slirp') == 'system')
  endif
  if not slirp.found()
    slirp = subproject('libslirp', ...) .variable('...')
  endif

and we cannot use "fallback" because the "system" value should never
look for a subproject.

This worked until 0.54.x, but in 0.55.x this breaks because of the
automatic subproject search.  Note that the desired effect here is
backwards compared to the policy of doing an automatic search on
"required: true"; we only want to do the search if "required" is false!

It would be possible to look for the dependency with  `required: false`
and issue the error manually, but it's ugly and it may produce an error
message that looks "different" from Meson's.

Instead, with this change it is possible to achieve this effect in an
even simpler way:

  slirp = dependency('slirp',
                     required: get_option('slirp') != 'auto',
                     allow_fallback: get_option('slirp') == 'system' ? false : ['slirp', 'libslirp_dep'])

The patch also adds support for "allow_fallback: true", which is
simple and enables automatic fallback to a wrap even for non-required
dependencies.
2020-10-08 12:24:07 +02:00
Paolo Bonzini a4f1caa405 docs: improve documentation of subproject fallback
Automatic fallback to subprojects is complicated and should be
pointed out outside the "fallback" keyword argument.  It is also
surprising that fallback to a subproject will not happen if
override_dependency has already been used with the request
dependency.  Document all this.
2020-10-08 11:11:15 +02:00
Jussi Pakkanen 1a0603835e Add win_subsystem kwarg. Closes #7765. 2020-10-07 18:55:25 +03:00
Dylan Baker 4b1c1d83c8 machinefiles: Allow keys to be stored case insensitive
This is required to make the various keys in the [user options] section
work the same as they do in the meson_options.txt file, where we don't
have any rules about case sensitivity.

There is some risk here. Someone may be relying on this lower by default
behavior, and this could break their machine files.

Fixes #7731
2020-10-05 08:59:45 -04:00
Nirbheek Chauhan 264939963f docs: Fixup find_program search path documentation [skip ci]
It was slightly wrong, and also make it a bullet point for easier
parsing.
2020-10-02 09:38:35 +00:00
Dylan Baker 20663564bd deprecated get_configtool_variable and get_pkgconfig_variable
The get_variable method is able to do everything they do and more,
making it generally more useful. Let's tell people to stop using the old
ones.
2020-10-01 12:35:42 -07:00
Rasmus Thomsen 1d04caff29 Document search order of find_program 2020-10-01 13:42:56 -04:00
Alexandros Theodotou a65fffd127 document keys() method of dictionary object [skip ci] 2020-10-01 09:21:46 -04:00
Dylan Baker 5aee8567b8 dependencies/curses: Add a system dependency
That calls find_library and has_header in conjunction to look for curses
implementations that are baked into the system without any other find
method.
2020-09-29 14:58:32 -07:00
Dylan Baker 7d11d7cf68 dependencies/curses: Add support for using the ncurses config tools
These are mostly duplicated with pkg-config, but maybe someone has one
but not another, and they're easy to turn on with the
ConfigToolDependency.
2020-09-29 14:58:32 -07:00
Dylan Baker 16d3513df6 docs/Dependencies Add missing curses documentation 2020-09-29 14:58:32 -07:00