On 09/04/2016 12:07 AM, dan wrote:
Are there any FOSS tools for doing dependency analysis of (e.g.) all the
d files in a directory, to let you know when a .o file needs to be
regenerated?

This presumably would depend mostly on the import statements (including
import of any file to be used in string construction, as in 'auto
my_string = import("my_file");').

dmd itself has two related switches:

* -deps prints out imports and such.
* -v prints out the same information in different format, and also a lot more other stuff, including which dmd binary is being used and the config file.

rdmd uses -v to figure out the dependencies of the root module. Here's how it parses the output:
https://github.com/dlang/tools/blob/master/rdmd.d#L643-L691

I'm not aware of a standalone tool that does something like this. If you want to write one, you could do like rdmd and use `dmd -deps`/`dmd -v`, or you could use a standalone D parser like libdparse.

http://code.dlang.org/packages/libdparse

[...]
(I'm using gdc, and building with gnumake.)

I'm not sure how similar or different gdc is to dmd with regards to the -deps/-v switches. A quick test suggests that gdc has a --deps switch that behaves like dmd's -deps. It seems to be undocumented. The output of gdc's -v does apparently not include the imports, though.

Reply via email to