Thread overview
[Issue 793] New: OBJ file names conflict => linker error
Jan 04, 2007
d-bugmail
Jan 04, 2007
d-bugmail
Jan 04, 2007
Sean Kelly
Jan 05, 2007
Nick Atamas
January 04, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=793

           Summary: OBJ file names conflict => linker error
           Product: D
           Version: 1.00
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla@digitalmars.com
        ReportedBy: nick.atamas@gmail.com


.obj files conflict when I use the -od flag to redirect
intermediate output to a directory. Shouldn't obj files get the name of their
package? So, sdl.timer.obj instead of just timer.obj.

e.g.

c:\proj> bud -odbin src/main.d
[proj]
  |--[bin]
  \--[src]
      |--[A]
      |  \--Timer.d
      |
      |--[sdl]
      |   \--timer.d
      |
      \--main.d  #imports and uses both timers


This will cause a linker error because bin/Timer.obj will be overwritten by bin/timer.obj.

Problem experienced on Windows. Should exist on all other OSes.


-- 

January 04, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=793


bugzilla@digitalmars.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |INVALID




------- Comment #1 from bugzilla@digitalmars.com  2007-01-04 12:36 -------
This is working as designed. When you specify an output directory, that's where the output files should go.


-- 

January 04, 2007
d-bugmail@puremagic.com wrote:
>
> ..obj files conflict when I use the -od flag to redirect
> intermediate output to a directory. Shouldn't obj files get the name of their
> package? So, sdl.timer.obj instead of just timer.obj.
> 
> e.g.
> 
> c:\proj> bud -odbin src/main.d

Try adding the -op option as well.  This should preserve directory structure in bin.  To link you'll have to perform a recursive search in bin for object files.
January 05, 2007
Adding -op seems to do nothing when used with Bud.
When using dmd directly, using -op does fix the problem.

I guess this issue should be raised with in Bud.