On Sunday, 11 August 2024 at 11:40:39 UTC, kinke wrote:
> On Sunday, 11 August 2024 at 11:08:24 UTC, Denis Feklushkin wrote:
> > Similar to how people can avoid explicitly linking GNU's libstdc++ / LLVM's libc++ by using c++
instead of cc
as linker driver, thereby not having to know which implementation of the C++ std library to choose for the particular platform.
Maybe in D case it will be right choice to respect --defaultlib= setting during static linking? So if anyone wants to link static library without stdlibs then just can leave it empty. In other cases druntime and phobos will be linked into static library?
This is NOT static linking, what you are asking for is merging the D-default static libraries into a generated static lib, to make it 'standalone' and thus simplify linking D parts into another project.
Yes, I meant that.
But really I don't understand the fundamental difference with static binary linking: there are "default libraries" and "just libraries". But there is no fundamental difference.
> Merging druntime and Phobos into a static lib is an extremely exotic case, analogous to someone wanting to merge a static libstdc++.a into their static C++ lib.
I don't see anything wrong with that. If everything around was written in some other language, C++ people would have been forced to add their runtime in a same roundabout way.
My opinion is that C/C++ are not a reference point here: they created system as if there was only two languages, C and C++. The very idea of "default libraries" is grist to the same mill.
> So I don't see a good reason to support this use case by the compiler directly.
It helps with cases discussed in this topic. Because world around is written on C and C++, not on D. Build systems also isn't supporting D in most - for example, I can't force cmake to search the D standard library path to link target with it.
> What you could e.g. do with a dedicated ldc2.conf is specifying the paths to druntime and Phobos as regular default switches.
This will break a lot of things, it's easier to manually add a similar hack into the build scripts
Ok, thanks to all! I think my question was completely cleared