From what I understand, multiple output files are always produced from the same result of phase 1 to 5 (parse, translate, optimize). So multiple outputs contain the same object code, just differently linked in phase 6. I.e. they are based on the same sources, same dependencies, even the same object code from the same rustc run, so they can as well use the same deps file. Make requires to specify the deps for every target file, thus the multiple lines. However I think the deps file could be squashed to a single line and specify dependencies for all targets in a single rule (`target1 target2: dep1 dep2 dep3`).

Multiple output files currently only happen if you use more than one of --dylib, --rlib or --staticlib. Even then, all output files are based on the same base filename. So producing a dep-info file for every output by replacing the extension of the output filename with .d would end up in the same dep-info file anyway.

I agree that using `outputs[0]` doesn't look right. It looks like the first output would be handled special. I should probably change it to base the filename on `outputs.out_filename` (`outputs` from function parameters) which makes it more clear what happens.