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