Am 13.03.2013 20:25, schrieb Alex Rønne Petersen:
The way to deal with both libdruntime.so and libdruntime.a existing on
a system is to explicitly ask for libdruntime.a when desired (note the
.a). The linker will prefer the shared library when just -ldruntime is
passed. So no dmd.conf change should be necessary with regards to
linking; DMD just has to do the right thing depending on whether
-shared was passed.

When you say "explicitly ask for libdruntime.a" you mean by using the gcc/ld options "-Wl,-Bstatic" and "-Wl,-Bdynamic" right?

I'd say just ship the release with a libdruntime.so and libruntime.a and make sure dmd calls gcc like this:

"gcc -Wl,-Bstatic -ldruntime -lphobos2 -Wl,-Bdynamic -lpthread -lm -lrt"
This way we don't have to worry about passing the correct .a file to gcc, it should automatically detect the correct file.

For dynamic linking, just drop the "-Wl,-Bstatic" / "-Wl,-Bdynamic". Then add "-static-libphobos -static-libdruntime" flags to select between static and dynamic linking. Make  "-static-libdruntime=true, -static-libphobos=true" the default for one release, then in the next release change the defaults to false. Then linking with a static libdruntime would be as simple as passing "-static-libdruntime" to dmd.
-- 
Johannes Pfau