On Thu, Jan 08, 2004 at 02:11:28PM +0100, Ove Kaaven wrote:
tor, 08.01.2004 kl. 12.52 skrev Mike Hearn:
On Wed, 2004-01-07 at 23:39, Ove Kaaven wrote:
Well, I've done about as much as I dared do without knowing exactly what plans you have. After all, widl can *not* link to oleaut32 since widl is not a Winelib app (and wasn't meant to be since someday we may want widl to generate some of the .c and .h files used by Wine DLLs such as oleaut32 at build time, instead of putting the generated files into CVS). My original plan was to use stdio to write typelibs straight from widl, not to use ICreateTypeLib.
OK, I thought I'd CC this to Alexander so he realises this, I must admit I had just assumed widl was a winelib app like all the others.
Huh? None of the other programs in tools/ are Winelib either AFAIK.
To be honest, as we might one day have to implement ICreateTypeLib anyway (and i think Alexander mentioned he wanted these for his own project anyway), it seems like a lot of extra work to do this once in widl and again in oleaut32. Is being able take generated files out of CVS really that big a gain? We already ship quite a few (wineserver, build system, idl->h) and it doesn't really cause problems.
I'm just saying that wasn't what it was supposed to be. But nothing a little rewriting can't change if we don't care about circular dependencies I guess, though the common typelib library (which Robert Shearman mentioned) would also be a solution.
Well, here's what I've got for ideas:
We could build widl twice, the second time as a winelib app.
We could set widl up to use an external winelib app to actually create the type libraries when needed.
We could move the implementation of the type library creation out to a separate library.
We could have some way of conditionally-compiling the typelib creation code so that it could be run without using any services other than libc or whatever.
However you slice it, though, if you use the ICreateTypeLib interfaces you're going to get bitten with a circular dependancy, if only because of the wtypes.h thing. And if you use an external library you're going to want to use it in oleaut32.dll as well just to avoid the code duplication. And that external library is going to want to duplicate the same parts from wtypes.h for VARENUM and such.
I hate to say it, but I think the best option might be to use an external winelib app to create the typelibs or to build a second copy of widl as a winelib app once winelib is available.
-- Alastair Bridgewater