summaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/d.py
Commit message (Collapse)AuthorAgeFilesLines
* ldc2: invoke -Oz instead of -OsDenis Feklushkin2021-11-221-1/+1
|
* Fix typos discovered by codespellChristian Clauss2021-10-101-3/+3
|
* pylint: check for duplicate importsDylan Baker2021-09-241-1/+2
| | | | | | I ran into one of these from LGTM, and it would be nice if pylint could warn me as part of my local development process instead of waiting for the CI to tell me.
* pylint: turn on superflous-parensDylan Baker2021-08-311-2/+2
| | | | | | | | We have a lot of these. Some of them are harmless, if unidiomatic, such as `if (condition)`, others are potentially dangerous `assert(...)`, as `assert(condtion)` works as expected, but `assert(condition, message)` will result in an assertion that never triggers, as what you're actually asserting is `bool(tuple[2])`, which will always be true.
* linkers: remove is_shared_module argument to get_soname_argsPaolo Bonzini2021-07-141-3/+2
| | | | The argument is now unused, drop it.
* fix: Always explicitly set encoding for text files (fixes #8263)Daniel Mensinger2021-06-291-1/+1
|
* split program related classes and functions out of dependenciesDylan Baker2021-03-191-1/+1
| | | | | | 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.
* Fix D lib search path translationRemi Thebault2021-03-171-15/+49
| | | | | | | This requires quite a complex and messy logic. As @dcbaker suggested in #8491, this could be replaced by an abstraction over linker flags instead of having GNU flags translated.
* ninjabackend: Use rsp_file_syntax methodDylan Baker2021-03-141-3/+4
| | | | | This also makes us of the new enum value in the backend, for better type saftey.
* compilers/linkers: Add a methhod for getting the rspfile syntaxDylan Baker2021-03-141-2/+11
|
* mass rewrite of string formatting to use f-strings everywhereEli Schwartz2021-03-041-13/+13
| | | | performed by running "pyupgrade --py36-plus" and committing the results
* various python neatness cleanupsEli Schwartz2021-03-041-12/+12
| | | | | | | | | | | | | | | | All changes were created by running "pyupgrade --py3-only --keep-percent-format" and committing the results. I have not touched string formatting for now. - use set literals - simplify .format() parameter naming - remove __future__ - remove default "r" mode for open() - use OSError rather than compatibility aliases - remove stray parentheses in function(generator) scopes
* fix missing versions with generated sourceRemi Thebault2021-03-021-0/+6
|
* D add build dir to -J switchRemi Thebault2021-03-011-2/+6
|
* use OptionKey for builtin and base optionsDylan Baker2021-01-041-5/+7
| | | | | | | | 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.
* Implement support of dlang -makedeps switch (#8119)Remi Thebault2020-12-291-2/+31
| | | | | | | * Implement support of dlang -makedeps switch Fix #8118 * resolve code review comments
* vs: add static_from_buildtype to b_vscrtPeter Harris2020-10-141-5/+11
|
* compilers/d: add type annotationsDylan Baker2020-10-011-128/+138
|
* compilers/cuda: make type safeDylan Baker2020-10-011-6/+0
|
* compilres: move depfile_for_object to compilerDylan Baker2020-10-011-6/+0
|
* compilers: move get_dependency_gen_args to base CompilerDylan Baker2020-10-011-4/+0
| | | | | | So that every subclass doesn't have to reimplement it. Especially since the Gnu implementation moved out of the CCompiler and into the GnuLikeCompiler mixin
* compilers: make is_cross part of the base Compiler classDylan Baker2020-09-241-12/+14
| | | | | | | 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.
* compilers: put name_string method in base compilerDylan Baker2020-09-241-3/+0
| | | | Every language had the exact same implementation
* D: fix include orderPierrick Bouvier2020-08-301-0/+7
| | | | | Commit 93c3ec7e introduced a new way to handle deduplication with compiler args. This resulted in D includes to be reversed.
* compilers: Return CompilerArgs from compiler instanceDylan Baker2020-06-221-2/+1
| | | | | | | Since the CompileArgs class already needs to know about the compiler, and we really need at least per-lanaguage if not per-compiler CompilerArgs classes, let's get the CompilerArgs instance from the compiler using a method.
* compilers: Split CompilerArgs into a separate moduleDylan Baker2020-06-221-1/+1
| | | | | I've also moved this out of the compilers pacakge because we're soon going to need it in linkers, and that creates some serious spagetti
* compilers/d: Add b_ndebug supportDylan Baker2020-05-201-3/+12
| | | | | | | | D lang compilers have an option -release (or similar) which turns off asserts, contracts, and other runtime type checking. This patch wires that up to the b_ndebug flag. Fixes #7082
* Merge pull request #7103 from dankegel/bug4027-rpath-rememberJussi Pakkanen2020-05-181-4/+5
|\ | | | | Let .pc files and LDFLAGS provide rpaths.
| * Let .pc files specify rpath.Dan Kegel2020-05-161-4/+5
| | | | | | | | Fixes #4027
* | compilers/d: Enable pgo for GDCDylan Baker2020-05-181-1/+2
|/
* compilers/d: Add missing method for dmd and ldcDylan Baker2020-04-101-0/+3
| | | | | This allows coverage to be generated, although we can't yet do anything useful with it.
* compilers/d: Implement coverage for GDCDylan Baker2020-04-101-4/+1
| | | | | | | Since GDC a GNU compiler, we just need to pass the normal GNU options and coverage is generated. Related: ##5669
* compilers: Link D runtime/libphobs dynamically on !WindowsDylan Baker2020-03-191-0/+18
| | | | Fixes: #6786
* compilers/d: Support linker selection with gdcDylan Baker2020-03-121-1/+1
| | | | | | This should have worked before, but the inheritance order was backwards, so we got the DCompiler before the GnuCompiler, and the base Compiler methods overrode the Gnu methods.
* compilers/d: Properly pass -soname argsDylan Baker2020-03-111-4/+17
|
* compilers/d: Fix rpath generation with LDC and DMDDylan Baker2020-03-111-14/+18
|
* Allow invoking the linker directly through dmdDylan Baker2020-03-091-0/+3
| | | | | DMD is awful in a lot of ways. To change the linker you set an environment variable, which is pretty much impossible for us.
* Allow invoking link.exe and lld-link.exe through ldc2Dylan Baker2020-03-091-0/+4
| | | | Like it wants
* compilers/d: Fix get_allow_undefined_link_args on macOSDylan Baker2020-03-061-0/+11
| | | | | | | | | DMD and LDC are a real pain to use as linkers. On Unices they invoke the C compiler as the linker, just like meson does. This means we have to figure out what C compiler they're using and try to pass valid arguments to that compiler if the D compiler doesn't understand the linker arguments we want to pass. In this case that means gcc or clang. We can use-the -Xcc to pass arguments directly to the C compiler without dmd/ldc getting involved, so we'll use that.
* compilers/d: Remove CompilerIsLInkerMixinDylan Baker2020-03-061-16/+6
| | | | | | | This was never really true of the D compilers, it made them more complicated than necessary and was incorrect in many cases. Removing it causes no regressions on Linux, at least in our rather limited test cases).
* types: import typing as T (fixes #6333)Daniel Mensinger2020-01-081-5/+5
|
* compilers: move language attribute to the class levelDylan Baker2019-12-121-1/+2
| | | | | 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.
* lgtm: fix Missing call to __init__ during object initializationDaniel Mensinger2019-12-051-0/+1
| | | | | | Either mark the missing calls as intentional, or explicetly call the right __init__ method and avoid mixing super() and explicit base calss calls.
* Fix cross-compilation of D programsEric Le Bihan2019-11-191-6/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since version 9.1, GCC provides support for the D programming language. Thus it is easy to build a cross-compiler for D, such as aarch64-unknown-linux-gnu-gdc. However to cross-compile a Meson project using D, using a cross build definition such as the following is not enough: ``` [binaries] d = '/path/to/aarch64-unknown-linux-gnu-gdc' exe_wrapper = '/path/to/qemu-aarch64-static' [properties] needs_exe_wrapper = true [host_machine] system = 'linux' cpu_family = 'aarch64' cpu = 'cortex-a53' endian = 'little' ``` Indeed, "exe_wrapper" is not be taken into account. Build will fail with: ``` Executables created by D compiler /path/to/aarch64-uknown-linux-gnu-gdc are not runnable. ``` This patch fixes this by reworking: - detect_d_compiler() to properly get exe_wrapper and D compilers and detect the one available. - Dcompiler to properly handle exe_wrapper.
* Add -L= to soname linker argument, too.Jussi Pakkanen2019-11-061-1/+4
|
* d: Fix various linking issues on WindowsGoaLitiuM2019-10-211-1/+10
|
* Workaround broken get_allow_undefined_link_args in DmdLikeCompilerMixinAndrei Alexeyev2019-10-141-0/+3
| | | | | Previously it worked by accident because BasicLinkerIsCompilerMixin had that method misspelled.
* Revert "Remove BasicLinkerIsCompilerMixin from LDC and DMD"Andrei Alexeyev2019-10-141-2/+2
| | | | This reverts commit 04d6a439457d76b9cf4c4f98fce238219366e241.
* Remove BasicLinkerIsCompilerMixin from LDC and DMDAndrei Alexeyev2019-10-141-2/+2
| | | | | | | | | | | | | | These compilers invoke external linkers and have the appropriate .linker property set. Therefore, BasicLinkerIsCompilerMixin appears to be misplaced. It used to work by chance, because BasicLinkerIsCompilerMixin failed to override the get_allow_undefined_link_args method. The D compilers do not provide their own get_allow_undefined_link_args, because they expect to inherit it from Compiler, which simply delegates it to the linker. Now that BasicLinkerIsCompilerMixin correctly overrides that method with a stub, it broke compilers that relied on the buggy behavior.
* compilers: replace uses of mesonlib.is_<os>() with self.info.is_<os>()Dylan Baker2019-10-071-21/+18
| | | | Since these are cross compilation safe, while the former is not.