On Tuesday, 25 February 2014 at 01:21:03 UTC, Assaf Gordon wrote:
1.
Packaging for source-based distribution (ie a "tarball"):
I couldn't find a working autotools template (only few old discussions), and so far it seems the best way is writing my own makefile (which I have).

My concern is that the parameters are so different between dmd/gdc/ldc that I basically force the users to choose one.

GDC and LDC have gdmd/ldmd respectively, which wrap DMD-style command line arguments over the GCC/Clang-style arguments that `gdc` and `ldc` accept.

I'm also not sure whether it will work on windows or not (I'm developing on linux). For windows users, would a custom,hand-written make file just work?

That depends almost entirely on the shell commands used in the target recipes. Also, it's easy to create reliance on a certain flavour of `make`, such as by using GNU-make-specific features; it's not a big problem though because GNU make is relatively easy to get on Windows through MinGW.

Although "rdmd" is terrific, I would really prefer not to require it (since it is 'dmd' specific and not free in the FOSS sense).

`rdmd` itself should be free software, and supports `gdmd` and `ldmd` through the --compiler flag.

DMD itself is indeed not entirely free software.

2.
How complicated it for potential users of the program to install a D compiler?

Based on my humble experience:
dmd: fine, as long as the downloadable binary version works. I tested only on multiple debians and ubuntus. But it's not free, and it requires root privileges. gdc: only source code available, compiling is a bit tricky. After compilation, it works. ldc: the pre-compiled version doesn't work on old Ubuntu (10.4) or new Debian (7). The source code version is messy to compile and I stopped after couple of tries.

So, it seems, that if a random person (not unix expert) wants to compiler my program, he/she will not have an easy time doing so.

Maybe we should have a generic Linux binary package that statically links all dependencies, which would then be usable on a wide variety of Linux systems without requiring root privileges.

But are there really no packages of `gdc` and `ldc` in various package repositories? I haven't used D on Linux in a while, but I find that hard to believe.

3.
Distributing Binaries:
Since I already assume source distribution is not friendly, I consider also making the pre-compiled binaries available for download. But it looks like it's only possible to compile dynamically-linked binaries.

I'm pretty sure the default still uses static linking, even with recent Linux releases? Either way, I'm sure there's a way to get the old behaviour. Dynamic linking of the runtime is a relatively recent ability.

Reply via email to