"Steven Edwards" Steven_Ed4153@yahoo.com wrote:
In the ReactOS tree we have a "make implib" rule to generate all of the import Libs for our shared libs. This way we are not dependant on the mingw win32api. I think the wine tree needs to do something similer. Once this is done we can go ahead and build the import libs for ntdll, msvcrt and User32 that are needed for the wine dlls.
The command line is something like this dlltool --as=as --dllname user32.dll --def user32.spec.def --output-lib libuser32.a
I would recommend the following command lines to build both import library and dll with *correct* import/export tables:
DLLWRAPFLAGS = -mno-windows -k --def $(MODULE).spec.def -Wl,--kill-at,--enable-stdcall-fixup
(probably --enable-stdcall-fixup is now obsoleted by recent winebuild changes)
$(RM) $(TOPOBJDIR)/dlls/lib$(MODULE).a $(DLLWRAP) $(DLLWRAPFLAGS) $(ALL_OBJS) -o $@ $(IMPORTS:%=-L$(DLLDIR) -l%) $(ALL_LIBS) $(DLLTOOL) --kill-at --input-def $(MODULE).spec.def --output-lib lib$(MODULE).a $(CP) lib$(MODULE).a $(TOPOBJDIR)/dlls/lib$(MODULE).a
You need dlltool from binutils CVS because my fix regarding decorated/non-decorated imports/exports haven't found its way to 2.12 yet. This fix allows to not require to have *two* .def file sets (with decorated and non-decorated exports as in ReactOS).
Also, since $(MODULE) has an extension included now, you need some workaround for this.