Age | Commit message (Collapse) | Author | Files | Lines |
|
Add cc.preprocess() method
|
|
|
|
Since vs backend only support the C compiler, everything else are custom
targets. Convert CompileTarget into a Generator to reuse existing code.
This will be useful in the future to support transpilers, and
assemblers.
|
|
This introduce a new type of BuildTarget: CompileTarget. From ninja
backend POV it is the same thing as any other build target, except that
it skips the final link step. It could be used in the future for
transpilers too.
|
|
A compiler object can now return a list of "modes", they are new
compiler object specialized for a specific task.
|
|
When using both_libraries(), or library() with default_library=both, we
remove all sources from args and kwargs when building the static
library, and replace them by the objects from the shared library. But
sources could also come from any InternalDependency, in which case we
currently build them twice (not efficient) and link both objects into
the static library.
It also means that when we needlessly build those source for the static
library, it miss order dependency on generated headers that we removed
from args/kwargs, which can cause build errors in the case the source
from static lib is compiled before the header in shared lib gets
generated.
This happened in GLib:
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2917.
|
|
When updating all wraps, it is not an error if some have not been
downloaded or some does not have a wrap file.
|
|
|
|
|
|
|
|
set).
Debugging is broken with clang-cl when FavorSizeOrSpeed is set.
|
|
|
|
|
|
|
|
Make `meson wrap update` command update all wraps in parallel
|
|
This case is identical to the case when there's no dependencies
specified, so it should behave the same way.
|
|
cc.compiles(), and other compiler checks that use cc.compiles() under
the hood, do not use link args at all when doing the compile check, so
messages like this:
```
Checking if "have zlib" with dependency -lz compiles: YES
```
is very misleading. The compiler check command-line for that is:
```
cc [...]/testfile.c -o [...]/output.obj -c -D_FILE_OFFSET_BITS=64 -O0
```
Note the lack of linker args.
|
|
This moves the implementation into msubprojects because it has all the
infrastructure to update wraps in parallel while keeping "meson wrap"
UX.
|
|
|
|
If we update e.g. glib.wrap from wrap-git with directory=glib to
wrap-file with directory=glib-2.70 we could still have the glib
directory that is not referenced by any .wrap file any more. We should
still ignore that directory otherwise it overrides the glib.wrap we
parsed.
|
|
Automatically use WrapDB fallback
|
|
When _subproject_impl() is called the wrap file could not have been
downloaded form wrapdb yet, it is done when fetching the subproject.
Delay getting the variable name to when we actually need it, at that
point we are sure the wrap file has been downloaded.
|
|
Download wrap file from wrapdb automatically when it is not found
locally but we have it in wrapdb.json.
This makes for example `dependency('glib-2.0')` work out of the box
simply by running `meson wrap update-db`, even if the project does not
provide any wraps.
|
|
It downloads releases.json from wrapdb and store it in
subprojects/wrapdb.json. That file will be used by Meson to find
dependency fallbacks offline.
|
|
|
|
Supports all BSDs that Meson currently supports.
Fixes #10883
|
|
First, check if the env program exists. If it does, it is faster than
doing it via a python script `basically-env.py` that maybe imports all
of mesonbuild.* as a side effect of project structure.
We do not, however, use env for setting up PATH additions, since env can
override an environment variable but not extend it. So in that case we
still need to wrap the command via python.
By default, all run_targets (at least) are wrapped and now wrap via the
`env` program as they export e.g.
MESONINTROSPECT='/usr/bin/meson introspect'
|
|
https://github.com/mesonbuild/meson/pull/9287 changed the `optimization=0`
to pass `-O0` to the compiler. This change is reasonable by itself
but unfortunately, it breaks `buildtype=plain`, which promises
that âno extra build flags are usedâ.
`buildtype=plain` is important for distros like NixOS,
which manage compiler flags for optimization and hardening
themselves.
Letâs introduce a new optimization level that does nothing
and set it as the default for `buildtype=plain`.
|
|
- this fixes #10792
- Qt6EntryPoint(d) replaces qtmain(d) from Qt 4 & 5
- uses the same mechanism: `main: true`
- uses a special mixin class for pkg-config and config-tool dependency calculation
|
|
|
|
This catches some optimization problems, mostly in the use of `all()`
and `any()`. Basically writing `any([x == 5 for x in f])` vs `any(x == 5
for x in f)` reduces the performance because the entire concrete list
must first be created, then iterated over, while in the second f is
iterated and checked element by element.
|
|
|
|
|
|
There's only one case of each, in the same function, so I've handled
both in the same commit.
|
|
|
|
|
|
As ld's manpage says:
"The ld command processes all input files in the same manner, whether they are
archives or not"
|
|
|
|
Those classes are used by wrapper scripts and we should not have to
import the rest of mesonlib, build.py, and all their dependencies for
that.
This renames mesonlib/ directory to utils/ and add a mesonlib.py module
that imports everything from utils/ to not have to change `import
mesonlib` everywhere. It allows to import utils.core without importing
the rest of mesonlib.
|
|
Fixes https://github.com/mesonbuild/meson/issues/10865
|
|
We need to support cases where the library might be called "foo.so" and
therefore we check for exact matches too. But this also allows
`cc.find_library('libfoo')` to find libfoo.so, which is strange and
won't work in many cases. Emit a warning when this happens.
Fixes #10838
|
|
|
|
A subproject could have a sub-subproject as a git submodule, or part of
the subproject's release tarball, and still have a wrap file for it
(e.g. needed for [provide] section). In that case we need to use the
source tree for the sub-subproject inplace instead of downloading a new
copy into the main project.
This is the case with GLib 2.74, it has a subproject "gvdb" as git
submodule, and part of release tarball, it ships gvdb.wrap file as well.
|
|
|
|
It can wait until after parsing the wrap file to set it.
|
|
|
|
It is common, at least in GNOME projects, to install tests. Files goes
into various locations, including:
- /usr/lib/x86_64-linux-gnu/installed-tests
- /usr/share/installed-tests
- /usr/libexec/installed-tests
It is safe to assume that everything that goes into a "installed-tests"
subdir should be tagged as "tests" by default.
|
|
itstool detects a language code from the mo fileâs basename,
so when https://github.com/mesonbuild/meson/commit/26c1869a142a952ffa23fe566a255b259304a39b
changed the file name to be prefixed with project name,
values like âmy-project-xxâ ended up in the `xml:lang` attribute
of the generated page files, instead of the expected
IETF BCP 47 language tag.
Letâs fix it by passing a locale code to itstool explicitly.
|
|
|
|
Fixes: #10845
|