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. 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. So I don't
see a good reason to support this use case by the compiler
directly.
What you could e.g. do with a dedicated ldc2.conf is specifying
the paths to druntime and Phobos as regular default switches.
Then they'll be merged into all static libraries that you create
with that config file. Compilations are unaffected. [I guess
linking would still work, but note that even with `-defaultlib=`,
druntime and Phobos would be in every generated static lib *and*
additionally in the linker cmdline.]