On 2016-05-17 11:27, Joakim wrote:
It is a runtime option on Windows, when choosing between the Digital
Mars C runtime and the MSVC runtime, which is why those are also
predefined version identifiers. The one for Glibc was added as an
afterthought in that Windows PR, and Bionic was also reserved last fall,
though my PR to actually define it has been in limbo for a year. That's
mostly my fault: I never got back to it when I focused on ldc and
Android/ARM.
There was a lot of debate among the core team when even the Windows
CRuntime support was finalized, with Walter wanting to minimize such
predefined versions and some of the core team arguing against it even
after it was merged. Even the iOS predefined version took 5 months to
get in, because there was debate whether Darwin should be allowed as a
common version for all Apple platforms.
The reason I'm mentioning all this is that adding predefined versions is
a matter of much debate, but that's how you'll likely implement it as a
runtime option. There is no good answer on this right now: I suggest
you just implement it and worry about run-time versus compile-time when
you're done. Since you'll be doing the same work either way, ie adding
or separating out a bunch of version blocks for musl in druntime, do it
any way you like for now and you can worry about merging that last bit
about compile-time vs runtime at the end.
It depends. One approach would be to add an option to the druntime
makefile, which would add -version CRuntime_Musl when compiling. In that
case version(CRuntime_Musl) needs to come before version(CRuntime_Glibc)
when declaring the imports. It doesn't sound like a good idea, to depend
on the order of the version statements, but it's still a possibility.
--
/Jacob Carlborg