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.