summaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/rust.py
AgeCommit message (Collapse)Author
2023-10-19rust: Always link dll and exe with the correct vscrtXavier Claessens
This fixes missing flags in the link_whole case and link failure for static libraries.
2023-09-19Rust: Use Popen_safe_logged in sanity checksXavier Claessens
2023-08-11treewide: automatic rewriting of all comment-style type annotationsEli Schwartz
Performed using https://github.com/ilevkivskyi/com2ann This has no actual effect on the codebase as type checkers (still) support both and negligible effect on runtime performance since __future__ annotations ameliorates that. Technically, the bytecode would be bigger for non function-local annotations, of which we have many either way. So if it doesn't really matter, why do a large-scale refactor? Simple: because people keep wanting to, but it's getting nickle-and-dimed. If we're going to do this we might as well do it consistently in one shot, using tooling that guarantees repeatability and correctness. Repeat with: ``` com2ann mesonbuild/ ```
2023-07-15rust: disable overflow-checks by defaultDylan Baker
These result in very large binaries when linked, and are not generally useful. A user can turn them back on by passing `-C overflow-checks=yes` manually via `-Drust_args` or the `RUSTFLAGS` environment variable fixes: #11785
2023-06-26linkers: delay implementations import until detect is runEli Schwartz
This saves on a 1500-line import at startup and may be skipped entirely if no compiled languages are used. In exchange, we move the implementation to a new file that is imported instead. Followup to commit ab20eb5bbc21ae855bcd211131132d2778602bcf.
2023-06-07rust: PIC is always enabledXavier Claessens
rustc enables PIC by default and Meson currently has no way to force disabling PIC, it can only force enable or use compiler's default.
2023-05-20rust: Add system libs used by rust std to staticlib external depsXavier Claessens
2023-05-20rust: Use Popen_safe() for sanity checksXavier Claessens
2023-05-16rust compiler: use better sanity check logging comparable to the clike oneEli Schwartz
Don't spew debug-level info. Log the actual command line run.
2023-04-21rust: add support for b_ndebugDylan Baker
Rust has a `debug_assert!()` macro, which is designed to be toggled on the command line. It is on by default in debug builds, and off by default in release builds, in cargo. This matches what meson's b_ndebug option does in `if-release` mode.
2023-04-14rust: Don't pass dependency compile arguments to the compilerSebastian Dröge
Rust doesn't have a concept of dependency compile arguments, i.e. something like headers. Dependencies are linked in and all required metadata is provided by the linker flags.
2023-04-11Change "can not" to "cannot" throughout projectHiPhish
The word "cannot" expresses inability to do something whereas "can not" expresses the ability to refrain from doing something.
2022-10-25compilers: Make sure to not use ccache in compiler checksXavier Claessens
ccache was used in all command lines but disabled using CCACHE_DISABLE in Compiler.compile() method. Wrapping invokations still has a cost, especially on Windows. With sccache things are even worse because CCACHE_DISABLE was not respected at all, making configure *extremely* slow on Windows when sccache is installed.
2022-10-25Compilers: Keep ccache and exelist separatedXavier Claessens
Only combine them in the Compiler base class, this will make easier to run compiler without ccache.
2022-10-09compilers: Add optimization=plain optionJan Tojnar
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`.
2022-09-19pylint: enable use-maxsplit-argDylan Baker
This finds a bunch of places where we can do more efficient string splitting.
2022-06-10treewide: various cleanups to move imports for mypy into typechecking blocksEli Schwartz
Along the way, add __future__ annotations where lacking.
2022-04-30linkers: Add support for mold linkerFini Jastrow
[why] Support for the relatively new mold linker is missing. If someone wants to use mold as linker `LDFLAGS="-B/path/to/mold"` has to be added instead of the usual `CC_LD=mold meson ...` or `CXX_LD=mold meson ...`. [how] Allow `mold' as linker for clang and newer GCC versions (that versions that have support). The error message can be a bit off, because it is generic for all GNU like compilers, but I guess that is ok. (i.e. 'mold' is not listed as possible linker, even if it would be possible for the given compiler.) [note] GCC Version 12.0.1 is not sufficient to say `mold` is supported. The expected release with support will be 12.1.0. On the other hand people that use the un-released 12.0.1 will probably have built it from trunk. Allowing 12.0.1 is helping bleeding edge developers to use mold in Meson already now. Fixes: #9072 Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-03-22OptionOverrideProxy: Make it immutable to avoid copiesXavier Claessens
It is always used as an immutable view so there is no point in doing copies. However, mypy insist it must implement the same APIs as Dict[OptionKey, UserOption[Any]] so keep faking it.
2022-01-10compilers: push the compiler id to a class variableDylan Baker
It really is a per class value, and shouldn't be set per instance. It also allows us to get rid of useless constructors, including those breaking mypy
2021-10-21compilers/rust: fix typo in standard descriptionDylan Baker
2021-10-21compilers/rust: add support for the 2021 editionDylan Baker
2021-09-24compilers/rust: Add support for clippyDylan Baker
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-24rustc: implement pic argsDylan Baker
2021-09-24compilers/rust: Implement warning levelsDylan Baker
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-24rust: Add werror argumentsDylan Baker
2021-06-29fix: Always explicitly set encoding for text files (fixes #8263)Daniel Mensinger
2021-05-19rust: override get_linker_always_argsDylan Baker
instead of opencoding what should be there in the rust compile rule
2021-03-19split program related classes and functions out of dependenciesDylan Baker
Dependencies is already a large and complicated package without adding programs to the list. This also allows us to untangle a bit of spaghetti that we have.
2021-03-04mass rewrite of string formatting to use f-strings everywhereEli Schwartz
performed by running "pyupgrade --py36-plus" and committing the results
2021-01-04use OptionKey for builtin and base optionsDylan Baker
I would have prefered to do these seperatately, but they are combined in some cases, so it was much easier to convert them together. this eliminates the builtins_per_machine dict, as it's duplicated with the OptionKey's machine parameter.
2021-01-04move OptionKey to mesonlibDylan Baker
There's starting to be a lot of things including coredata that coredata needs to itself include. putting it in mesonlib makes more sense
2021-01-04use OptionKey for compiler_optionsDylan Baker
2020-11-13compilers/rust: add and use an implementation of use_linker_argsDylan Baker
2020-11-10compilers/rust: Add color outputDylan Baker
Rust has color output, although it's help doesn't document it. It uses the same values as cargo (and everything else), auto, never, always.
2020-11-10compilers/rust: Add vs_crt supportDylan Baker
As far as I can Tell, rust just handles this for us (it's always worked with no special arguments from us). However, since we're going to add support for base options for rust, we need to add the method.
2020-11-05rust: implement support for --editionDylan Baker
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-10-01compilers/rust: add type annotationsDylan Baker
2020-10-01compilers/cuda: make type safeDylan Baker
2020-09-24compilers: make is_cross part of the base Compiler classDylan Baker
Every class needs to set this, so it should be part of the base. For classes that require is_cross, the positional argument remains in their signature. For those that don't, they just allow the base class to set their value to it's default of False.
2020-09-24compilers: put name_string method in base compilerDylan Baker
Every language had the exact same implementation
2020-09-24compilers/compilers: Fully type annotateDylan Baker
2020-01-08types: import typing as T (fixes #6333)Daniel Mensinger
2019-12-12compilers: move language attribute to the class levelDylan Baker
We know that if a compiler class inherits CCompiler it's language will be C, so doing this at the class level makes more sense.
2019-12-02Allow selecting the dynamic linkerDylan Baker
This uses the normal meson mechanisms, an LD environment variable or via cross/native files. Fixes: #6057
2019-10-07compilers: replace CompilerType with MachineInfoDylan Baker
Now that the linkers are split out of the compilers this enum is only used to know what platform we're compiling for. Which is what the MachineInfo class is for
2019-08-20Merge pull request #5681 from dcbaker/dynamic-linker-splitJussi Pakkanen
split dynamic linker representations from compilers
2019-08-17Pass optimization flags to rustc properly. Closes: #5788.Jussi Pakkanen
2019-08-14compilers: Dispatch to dynamic linker classDylan Baker
Most of the cuda code is from Olexa Bilaniuk. Most of the PGI code is from Michael Hirsc
2019-08-14compilers/rust: Proxy extra kwargs to Compiler.__init__Dylan Baker