https://issues.dlang.org/show_bug.cgi?id=7044
--- Comment #48 from Leandro Lucarella <leandro.lucare...@sociomantic.com> --- (In reply to Walter Bright from comment #44) > > How is this then different from just specifying a whole new config file? > > Because multiple sections can be selected, rather than having a separate > config file for each combination of sections, which would be a combinatorial > explosion. I don't see how this could explode, as you only need 2: normal and debug. But maybe I'm just looking at my limited use case... > > The user should be required to just use -debug when he wants to use the > > debug version of the library, > > I agree, but I'd like to try this out first to see what the common usage > patterns will be, and then adding those later. If we add them now, we may > wind up with a bunch of useless clutter that we cannot remove because we > don't want to break legacy makefiles. OK, I can see your concern and conservative approach to the problem. In our particular case, is not something we can test really, to test it you are breaking all our makefiles anyway, as we need to add the new extra flags for the case where we want to build a debug version, so the "do not break the users build system" is not working very well with this approach :) > > getting rid from automatic linker flags inserted by compiler and make it > > fully controllable by packager (preferrably via dmd.conf) instead. This is > > actual issue that needs to be solved > > Linker flags can already be specified with the -L switch. The trouble is the > order of them. I just do not have a good idea for that, and yet still have > the compiler conveniently generate them. It's also good to keep in mind that > all dmd does is generate a command line for gcc - that can always be done by > the user. Again, this is not a satisfactory solution. We are not talking about users code here, we are using about the runtime. You can't ask the user to link manually just because the compiler can't let the runtime pick the right linker flags to compile a simple hello world. > Pull 497 does add a switch to add linker switches in front, but I feel this > is simply doomed - what happens when a linker switch is needed in the middle? Yeah, I agree the current approach suggested here is superior, is just for me the solution is not that useful unless you have a section automatically selected when -debug is used. Let's recap the current problems/facts: * The compiler automatically adds some -llib to the linker command-line, hardcoded with a particular order. This is not good because it highly depends on the runtime implementation, so it shouldn't be done by the compiler. * The compiler links against 2 different libraries depending on whether -debug was specified or not (and according to -defaultlib and -debuglib). So if the runtime uses different libraries in debug and default mode, it might need to pass different linker flags. About the solution, I think the requirements are: * There should be no user intervention to be able to compile a program only depending on the runtime/base library, either using -debug or not (all the linker flags configuration should be set by the runtime developer/packager via configuration files). Do we at least agree on these basic problems and requirements for a solution? --