On Friday, 5 April 2013 at 11:29:20 UTC, Andrej Mitrovic wrote:
On 4/5/13, Vladimir Panteleev <vladi...@thecybershadow.net> wrote:
I think -r is redundant, and should be the default action if only
one module is given on DMD's command line. I can't think of
plausible situations where this could be a problem.

$ dmd main.d foo.obj

If main has imports to 'foo', how will DMD know whether or not to
compile foo.d or just link with foo.obj?

-r should be disabled for such cases - thus, enabled only when there's one .d file and no .obj / .lib files. Although specifying library files on the compiler's command line is a valid use case, compatible with recursive compilation, I think we should promote the use of pragma(lib) instead.

You could pass -rxfoo, but you'd still be breaking all existing build
scripts which rely on non-recursive building.

Yes, the goal is to not affect existing scripts.

Considering that you can't have a module with the same name as a
package, the same syntax for excluding both can be used, e.g.
"-rxcrc32 -rxstd".

I guess it could work. But I'm hoping one day we'll be able to lift that restriction, it's quite a pain in the ass when porting C++ code
that uses namespaces to D. So for future-compatibility I thought
separating module and package switches might be nice. It's not a big
deal though.

Another option is wildcards (std.*).

Reply via email to