Jump to page: 1 2
Thread overview
[Issue 767] New: compiler shall print dependencies and pragma(lib)
Dec 29, 2006
d-bugmail
May 22, 2010
Don
May 22, 2010
nfxjfg@gmail.com
May 23, 2010
Rainer Schuetze
May 23, 2010
nfxjfg@gmail.com
May 23, 2010
nfxjfg@gmail.com
May 23, 2010
Rainer Schuetze
Jun 09, 2013
jfanatiker@gmx.at
Jun 10, 2013
jfanatiker@gmx.at
December 29, 2006
http://d.puremagic.com/issues/show_bug.cgi?id=767

           Summary: compiler shall print dependencies and pragma(lib)
           Product: D
           Version: 0.178
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P3
         Component: DMD
        AssignedTo: bugzilla@digitalmars.com
        ReportedBy: benoit@tionex.de


Let the compiler have a new commandline switch:

-bldinfo
-bldinfo=filename
Prints the bldinfo either to the console or into the given file. The bldinfo
contains informations about found dependencies and pragma(lib) statements.

Every bldinfo line has the format:
"bldinfo <recordtype>: <info>"

Every active import from a module will be printed like this:
"bldinfo import: %s(\"%s\") => %s(\"%s\")", moduleFQN, moduleFileName,
importedModuleFQN, importedModuleFileName

Every active pragma(lib) is printed like this:
"bldinfo pragma-lib: %s(\"%s\") => \"%s\"", moduleFQN, moduleFileName,
stringFromPragma

"Active" here means, the statement is relevant for compilation. It is not deactivated through version/debug/static-if conditions.

Filenames are printed as absolute paths.
Filenames and strings are escaped like the D string literals and they are
double  quoted.

If printed to the console, the bldinfo is printed in between the other
messages.
The bldinfo is printed without any special order.
The bldinfo is printed for all modules given on the command line.
The bldinfo is also printed recursively for all modules that are imported.


-- 

May 22, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=767


Don <clugdbug@yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |clugdbug@yahoo.com.au


--- Comment #1 from Don <clugdbug@yahoo.com.au> 2010-05-22 07:07:36 PDT ---
I believe this is mostly implemented in the -deps flag. Is anything left to do?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 22, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=767


nfxjfg@gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |nfxjfg@gmail.com


--- Comment #2 from nfxjfg@gmail.com 2010-05-22 07:24:09 PDT ---
You still can't get the libs requested by pragma(lib ...).

dmd -v will print the libs, but that's not comfortable enough.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 23, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=767


Rainer Schuetze <r.sagitario@gmx.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |r.sagitario@gmx.de


--- Comment #3 from Rainer Schuetze <r.sagitario@gmx.de> 2010-05-22 23:58:12 PDT ---
I would like too see string imports to be shown in the dependencies:

c:\>type test.d
int ver=mixin(import("Version"));

c:\>type version
42

c:\>dmd -c -J. -deps=deps test.d

c:\>type deps
test (test.d) : public : object (m:\\s\\d\\phobos\\druntime\\import\\object.di)

This should show "version", too.

Libraries "imported" by pragma(lib) to be shown would be nice, but this is not complete for a building tool, anyway, because pre-built libraries might force the inclusion of more libraries. I'd like the linker to supply a list of searched libraries.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 23, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=767



--- Comment #4 from nfxjfg@gmail.com 2010-05-23 00:09:23 PDT ---
I figure dmd doesn't report these string imports because it would re

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 23, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=767



--- Comment #5 from nfxjfg@gmail.com 2010-05-23 00:14:12 PDT ---
I figure dmd doesn't report these string imports because it would require full semantic analysis of the code. Which would be much slower, making the -deps mode less useful.

Maybe the compiler should provide an "-a" flag, which automatically builds all imported modules? Incremental building is broken anyway (at least due to bug 3274, other reasons include CTFE, which subverts module dependencies, and some types of out-of-declaration bugs [forward refs]).

Then dmd would need to run semantically analysis only once to build a program. To facilitate building relatively independent packages as libraries, another flag could be added to dmd to exclude certain package paths using glob patterns.

Sorry for the previous comment, I think I accidentally hit soem key combination, that made the browser to submit the form.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 23, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=767



--- Comment #6 from Rainer Schuetze <r.sagitario@gmx.de> 2010-05-23 04:01:44 PDT ---
-deps does not enable a different mode, it just tells dmd to output any file imported to the given dependency file during the normal compilation process.

There is no need for an extra compilation step, just use the info in the dependency file from the last compile to figure out if an update is necessary.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
November 26, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=767


Andrei Alexandrescu <andrei@metalanguage.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
                 CC|                            |andrei@metalanguage.com
         AssignedTo|nobody@puremagic.com        |bugzilla@digitalmars.com


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
June 09, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=767


jfanatiker@gmx.at changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
                 CC|                            |jfanatiker@gmx.at
         Resolution|                            |FIXED


--- Comment #7 from jfanatiker@gmx.at 2013-06-09 13:55:13 PDT ---
Fixed in: https://github.com/D-Programming-Language/dmd/pull/1839

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
June 10, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=767


bearophile_hugs@eml.cc changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bearophile_hugs@eml.cc


--- Comment #8 from bearophile_hugs@eml.cc 2013-06-09 17:24:27 PDT ---
(In reply to comment #7)
> Fixed in: https://github.com/D-Programming-Language/dmd/pull/1839

It generates a quite large output :-)

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
« First   ‹ Prev
1 2