|
Boost-Build : |
From: Klaus Nowikow (e8827661_at_[hidden])
Date: 2006-08-04 04:09:07
Vladimir Prus wrote:
> On 8/3/06, *Klaus Nowikow* <e8827661_at_[hidden]
> <mailto:e8827661_at_[hidden]>> wrote:
>
> > Some time ago, I started a thread about an XPIDL tool, see
> > http://article.gmane.org/gmane.comp.lib.boost.build/13076
>
> Hi Klaus,
> it would be great if you add this patch to our tracker (see link at
> boost.org/boost-build2 <http://boost.org/boost-build2>), so that it does
> not get lost and I look at it in detail when I'm back from vacation
Done -- Ticket #99
> [...]
> > There is only one problem: when used with the MSVC toolset it
> > clashes with midl.jam, because msvc.jam imports midl.jam.
> > Both midl and xpidl register a new type IDL, and both add a
> > generator to create other files from an *.idl file. I can't
> > think of any solution to that besides not importing midl.jam
> > from msvc.jam. Any ideas?
>
> Add a new file in tools/types directory, and remove declaration of IDL
> type from your module and midl.jam.
That's a start, but it solves only the first half of the problem.
There are siill two generators that generate IDL -> OBJ, see the output
of 'bjam -n' below. I used my own project to test it, which is too large
to show here, but I can provide a minimal test case if you need one.
I have to mention here that the xpidl generator produces a dummy C
file which is never used -- I just 'touch $(<[4]:W)' to produce it.
This is to make sure that the generated files go into the dependencies
-- a little clumsy, but I couldn't figure out another way to achieve
that. The generator in my original post generated a dummy CPP file,
but I changed that so that the error messages are clearer.
# bjam -n output:
Error: ambiguity found when searching for best transformation
Trying to produce type 'C' from:
- { IRenderWidget.idl.IDL }
Generators that succeeded:
- msvc.compile.idl
- xpidl.compile.idl
First generator produced:
- { msvc%msvc.compile.idl-IRenderWidget.tlb.MSTYPELIB { IRenderWidget.idl.IDL } }
- { msvc%msvc.compile.idl-IRenderWidget.h.H { IRenderWidget.idl.IDL } }
- { msvc%msvc.compile.idl-IRenderWidget_i.c.C { IRenderWidget.idl.IDL } }
- { msvc%msvc.compile.idl-IRenderWidget_proxy.c.C { IRenderWidget.idl.IDL } }
- { msvc%msvc.compile.idl-IRenderWidget_dlldata.c.C { IRenderWidget.idl.IDL } }
Second generator produced:
- { xpidl%xpidl.compile.idl-IRenderWidget.xpt.XPTYPELIB { IRenderWidget.idl.IDL } }
- { xpidl%xpidl.compile.idl-IRenderWidget.h.H { IRenderWidget.idl.IDL } }
- { xpidl%xpidl.compile.idl-IRenderWidget.java.JAVA { IRenderWidget.idl.IDL } }
- { xpidl%xpidl.compile.idl-IRenderWidget.c.C { IRenderWidget.idl.IDL } }
Enjoy your vacation, this problem can wait!
-- Klaus
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk