On Wednesday, 21 February 2018 at 04:07:38 UTC, Mike Franklin wrote:
On Tuesday, 6 February 2018 at 17:49:33 UTC, Jonathan Marler wrote:
What do people think of adding an argument to DMD to add library search paths? Currently the only way I know how to do this would be via linker-specific flags, i.e.

GCC: -L-L/usr/lib
MSVC: -L-libpath:C:\mylibs
OPTLINK: -L+C:\mylibs\

NOTE: the optlink version only works if no .def file is specified. If you have a .def file, then you can't add any library search paths :)

If we added a new "linker-independent" flag to dmd, then you could add paths using the same interface regardless of which linker you are using. I'd expect the argument to be something like:

-libpath=<some-path>

The disadvantage is it would be another command line option added to DMD. If there is general agreement that this is a desirable feature, I'll go ahead and implement it.

Given the current state of things, and the issue described above, I think a linker/platform independent flag would be nice.

However, I'd much rather have the compiler just be a compiler and not have to worry about all the intricacies building. IMO, the compiler should get out of the linking business altogether, and just generate object files. A separate build tool could then call the compiler, linker, and whatever else to do builds.
 But that ship has probably sailed.

Mike

Interesting idea. Actually I don't think it's too late for this. It is too late for DMD to just be a compiler, but that doesn't mean the compiler can't be stripped out as a separate component that DMD interfaces with. This would just make DMD a build tool/compiler/linker wrapper/etc that interfaces with underlying components that could be invoked independently as well.

In any case, DMD has evolved to make development more convenient, adding features in a monolithic fashion that could have otherwise been implemented using independent components as part of a suite of compiler software, not unlike LLVM. However, this requires a lot more effort, creating interfaces between each component that then need to be well-defined and maintained...sometimes you just want to provide a feature without going through all the grunt work to make it robust. I think this is a natural evolution of software. Most of it starts monolithic and components are pulled out as needed, and this can still be done for the D compiler.

Reply via email to