Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
Requires the latest LLVm 9.0 release which implements the `-list`
argument to `llvm-lib` and ships with an implementation of `nm` called
`llvm-nm`.
|
|
Supports both MSVC and MinGW toolchains. Checks for MSVC first, then
falls back to MinGW.
|
|
When a source file for a library is changed without adding new extern
symbols, only that library should be rebuilt. Nothing that uses it
should be relinked.
Along the way, also remove trailing `.` in all Ninja rule
descriptions. It's very confusing to see messages like:
```
Linking target mylib.dll.
```
It's confusing that the period at the end of that is not part of the
filename. Instead of removing that period manually in the tests (which
feels wrong!) just don't print it at all.
|
|
We actually use this while linking on Windows, and hence we need to
extract symbols from this file, and not the DLL.
However, we cannot pass it instead of the DLL because it's an optional
output of the compiler. It will not be written out at all if there are
no symbols in the DLL, and we cannot know that at configure time. This
means we cannot describe it as an output of any ninja target, or the
input of any ninja target. We must pass it as an argument without
semantic meaning.
|
|
|
|
On Windows, the basename is used to determine the name of the PDB
file. So for a project called myproject, we will create myproject.dll
and myproject.exe, both of which will have myproject.pdb. This is
a file collision. Instead, append `_test`, similar to the C# template.
Fixes AllPlatformTest.test_templates on MSVC. This became a hard error
when we started listing PDBs in the implicit outputs list of ninja
targets.
Do the same for a test that was making the same mistake.
|
|
This is more correct, and forces the target(s) to be rebuilt if the
PDB files are missing. Increases the minimum required Ninja to 1.7,
which is available in Ubuntu 16.04 under backports.
We can't do the same for import libraries, because it is impossible
for us to know at configure time whether or not an import library will
be generated for a given DLL.
|
|
A descriptive string had List replaced with T.List on accident.
|
|
Fixes #6520
Fixes #5223
|
|
mesonbuild/nirbheek/strip-more-unused-linkerlike-args
macOS: Remove more unused linkerlike args
|
|
`-L` and `-headerpad_max_install_names` are both linker arguments that
are commonly passed in CFLAGS too.
Closes https://github.com/mesonbuild/meson/issues/6294
|
|
This makes two basic changes, 1 it moves the name of the linker into the
linker class, this should reduce the number of errors and typos, and
ensure that a linker always has one name. This then renames the linkers
to have more consistent names.
Posix/gnu linkers are called ld.<name>: ld.gold, ld.lld, ld.solaris.
Apple linkers are renamed ld64.
|
|
Which could raise an AttributeError when used on languages like Java and
C# that don't have separate compilers and linkers.
|
|
Fixes https://github.com/mesonbuild/meson/issues/6651
|
|
This allows users to disable writing out the inbuilt variables to
the pkg-config file as they might actualy not be required.
One reason to have this is for architecture-independent pkg-config
files in projects which also have architecture-dependent outputs.
For example : https://gitlab.freedesktop.org/wayland/weston/issues/269
Fixes #4011
|
|
This PR significantly improves the handling of the boost library
tags and also ensures that the found libraries are always compatible
(have the same ABI tag). The current setup can also be extended to
filter for additional features (static linking with the runtime, etc.).
Additionally, BOOST_ROOT is better supported (it is now guaranteed
that all found files belong to a single root directory).
Finally, boost.py is now fully annotated (and checked with mypy).
|
|
Do this by tracking CMAKE_CURRENT_{SOURCE,BINARY}_DIR variables.
This is achieved by injecting CMake code with CMAKE_PROJECT_INCLUDE
and overriding some builtin functions with a wrapper that adds
additional trace information.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`meson setup --debug` puts a bool object in cmd_line_options dictionary
that we have to convert to string.
Fixes: #6646
|
|
|
|
|
|
Just like the native meson subproject has.
|
|
|
|
There was a particularly old MR merged, from before the typing -> T
standardization in meson.
|
|
Fixes builds with llvm-mingw
|
|
This is a significant speed-up on Windows because terminals are
slow to print things out.
Speed-up in gst-build on Windows:
```
meson install:
before: 5.1 seconds
after: 4.0 seconds
```
|
|
In `--only-changed` mode, we were spending half our time inside
`makedirs()`, which is a waste in the case when only a few files have
changed.
Speed-up on Windows with gst-build:
```
meson install --only-changed
before: 1.6 seconds
after: 0.9 seconds
```
|
|
Not sure why this wasn't already an error. It's a bad situation to be
in, and we should not ignore it.
|
|
Generated headers, PDB files, import libraries, etc.
Speed-up in gst-build on Windows:
```
meson install
before: 5.4 seconds
after: 5.1 seconds
meson install --only-changed
before: 2.7 seconds
after: 1.6 seconds
```
|
|
This gives a significant speedup in large projects such as gst-build
since now we only search for the tool once. Speed-up on Windows:
```
meson install:
before: 15.3 seconds
after: 5.4 seconds
meson install --only-changed:
before: 11.6 seconds
after: 2.7 seconds
```
|
|
If we preserve the existing file, we did not install anything. In that
case, the output now looks like:
```
ninja: Entering directory `.'
ninja: no work to do.
Nothing to install.
Preserved 1732 unchanged files, see meson-logs\install-log.txt for the full list
```
This also avoids an `isfile` lookup, which shaves off a few seconds in
gst-build install.
|
|
Same purpose as `meson setup`.
|
|
|
|
This is how we parse all env vars for tools in Meson. Do the same here
too for consistency.
|
|
Also write out a dummy symbols file if the tool wasn't found or didn't
work instead of just spewing an exception.
|
|
|
|
Closes https://github.com/mesonbuild/meson/issues/1976
|
|
Also update the documentation.
Fixes https://github.com/mesonbuild/meson/issues/6470
|
|
This leads to better version parsing. An concrete example use case is
llc. When invoking llc with "--version", the output is
```
LLVM (http://llvm.org/):
LLVM version 9.0.1
...
```
The old version parsing recognizes the dot in the first line as version.
This commit also tries to adapt the two regexes to each other.
Reported-by: Björn Fiedler <fiedler@sra.uni-hannover.de>
|
|
|
|
-g is --extern-only and -P is --format=posix. We were missing
--defined-only for some reason, which we pass to `nm` on Linux.
This avoids having to manually filter later.
|
|
So people know why all their binaries are getting relinked. Do this
only once per build-dir by writing a file to meson-private.
|
|
|