GDC options

Matthias Klumpp via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Mar 22 06:42:21 PDT 2017


On Wednesday, 22 March 2017 at 05:47:59 UTC, Sebastien Alaiwan 
wrote:
> On Monday, 13 March 2017 at 11:06:53 UTC, Russel Winder wrote:
>> It is a shame that dmd and ldc do not just use the standard 
>> GCC option set.
> Totally agreed.
>
> Moreover, funny stuff like "dmd -of<Target>" (instead of 
> standard "-o <target>") breaks automatic Msys path conversion 
> hack (the code translates Unix paths from the command line to 
> Windows paths before the invocation of a non-msys program), 
> which makes it impossible to use dmd under Msys without 
> wrapping it first.
>
> pkg-config also is a real pain to use with dmd (the 
> pkg-config's output needs to be post-processed so it has the 
> form "-L-lstuff" instead of "-lstuff").
>
> This is an issue, because it makes it very hard to use write 
> portable makefiles for programs containing D code. Too bad, 
> because the D code is actually platform-independent, and 
> there's been a lot of work in Phobos to make it easy to write 
> such code.
>
> D was designed to be binary compatible with the C ABI ; 
> however, having a compiler whose command-line behaves so 
> different from gcc makes it harder to actually work with 
> existing C libs.
>
> This is actually the main reason why I almost exclusively use 
> gdc: to have one Makefile, for all platforms, allowing native 
> and cross-compilation with no platform-specific special cases.

This is why most of my work in Meson to get D supported is adding 
weird hacks to translate compiler flags between GNU <-> non-GNU 
<-> DMD. It sucks quite badly, and every now and then I hit a 
weird corner case where things break.
For example: 
https://github.com/mesonbuild/meson/commit/d9cabe9f0ca6fb06808c1d5cf5206a7c5158517e

Would be amazing if all D compilers would support the GCC flags, 
like Clang does for C - that would help in removing a lot of 
hacks (and making Makefiles which work with all compilers).
The reason for not using a dmd wrapper is that one might want to 
use flags specific to a certain compiler.


More information about the Digitalmars-d-learn mailing list