Skip to content
Snippets Groups Projects
Commit 34fa35dc authored by Alexandre Julliard's avatar Alexandre Julliard
Browse files

Added rules for building import libraries in the individual dll

makefiles, and added support for building a .def.a static import
library too.
parent 61d01e6a
No related branches found
No related tags found
No related merge requests found
Showing
with 61 additions and 17 deletions
......@@ -21,6 +21,8 @@ WIN16_FILES = $(SPEC_SRCS16:.spec=.spec.o) $(C_SRCS16:.c=.o) $(EXTRA_OBJS16)
ALL_OBJS = @WIN16_FILES@ $(OBJS) $(MODULE).dbg.o $(RC_SRCS:.rc=.res)
ALL_LIBS = $(LIBWINE) $(EXTRALIBS) $(LIBPORT) $(LDFLAGS) $(LIBS)
ALL_IMPORTS = $(DELAYIMPORTS) $(IMPORTS)
IMPLIB_OBJS = $(IMPLIB_SRCS:.c=.o)
STATICIMPLIB= $(IMPORTLIB:.def=.def.a)
all: $(MODULE)$(DLLEXT) $(SUBDIRS)
......@@ -31,16 +33,31 @@ all: $(MODULE)$(DLLEXT) $(SUBDIRS)
$(MODULE).so: $(MAINSPEC) $(ALL_OBJS) Makefile.in
$(WINEGCC) -B$(TOOLSDIR)/tools/winebuild -shared $(SRCDIR)/$(MAINSPEC) $(ALL_OBJS) $(SUBSYSTEM:%=-Wb,--subsystem,%) -o $@ -L$(DLLDIR) $(ALL_IMPORTS:%=-l%) $(DELAYIMPORTS:%=-Wb,-d%) $(ALL_LIBS)
$(SPEC_DEF): $(MAINSPEC)
$(WINEBUILD) -w --def -o $@ --export $(SRCDIR)/$(MAINSPEC)
# Rules for .dll files
$(MODULE): $(RCOBJS) $(OBJS) $(MODULE).dbg.o $(SPEC_DEF) Makefile.in
$(DLLWRAP) -k --def $(SPEC_DEF) -o $@ $(RCOBJS) $(OBJS) $(MODULE).dbg.o -L$(DLLDIR) $(ALL_IMPORTS:%=-l%) $(ALL_LIBS)
lib$(BASEMODULE).a: $(SPEC_DEF)
# Rules for import libraries
.PHONY: implib static_implib $(IMPLIB_OBJS:%=__static_implib__%)
all implib: $(IMPORTLIB) $(IMPLIB_OBJS:%=__static_implib__%)
$(IMPLIB_OBJS:%=__static_implib__%): $(STATICIMPLIB)
lib$(BASEMODULE).def: $(MAINSPEC)
$(WINEBUILD) -w --def -o $@ --export $(SRCDIR)/$(MAINSPEC)
lib$(BASEMODULE).def.a: $(IMPLIB_OBJS)
$(RM) $@
$(AR) $@ $(IMPLIB_OBJS)
$(RANLIB) $@
lib$(BASEMODULE).a: $(SPEC_DEF) $(IMPLIB_OBJS)
$(DLLTOOL) -k -l $@ -d $(SPEC_DEF)
$(AR) $@ $(IMPLIB_OBJS)
$(RANLIB) $@
# Rules for checking that no imports are missing
......@@ -85,22 +102,34 @@ ALL_SPECS16 = $(DRV_SPECS16:.spec=.dll)
WIN16_INSTALL = $(ALL_SPECS16:%=_install_/%)
.PHONY: install_lib $(ALL_SPECS16:%=_install_/%) $(ALL_SPECS16:%=_uninstall_/%)
.PHONY: install_lib install_static_implib_def install_static_implib_a
.PHONY: $(ALL_SPECS16:%=_install_/%) $(IMPORTLIB:%=_install_/%) $(IMPLIB_OBJS:%=_install_static_implib_/%)
$(ALL_SPECS16:%=_install_/%): install_lib
cd $(dlldir) && $(RM) `basename $@`$(DLLEXT) && $(LN_S) $(MODULE)$(DLLEXT) `basename $@`$(DLLEXT)
$(ALL_SPECS16:%=_uninstall_/%): dummy
$(RM) $(dlldir)/`basename $@`$(DLLEXT)
install_lib: $(MODULE)$(DLLEXT)
$(MKINSTALLDIRS) $(dlldir)
$(INSTALL_PROGRAM) $(MODULE)$(DLLEXT) $(dlldir)/$(MODULE)$(DLLEXT)
install:: install_lib @WIN16_INSTALL@
$(IMPORTLIB:%=_install_/%): $(IMPORTLIB)
$(MKINSTALLDIRS) $(dlldir)
$(INSTALL_DATA) $(IMPORTLIB) $(dlldir)/$(IMPORTLIB)
install_static_implib_def: $(STATICIMPLIB)
$(MKINSTALLDIRS) $(dlldir)
$(INSTALL_DATA) $(STATICIMPLIB) $(dlldir)/$(STATICIMPLIB)
install_static_implib_a:
$(IMPLIB_OBJS:%=_install_static_implib_/%): install_static_implib_$(IMPLIBEXT)
install install-lib:: install_lib @WIN16_INSTALL@
install install-dev:: $(IMPORTLIB:%=_install_/%) $(IMPLIB_OBJS:%=_install_static_implib_/%)
uninstall:: $(ALL_SPECS16:%=_uninstall_/%)
$(RM) $(dlldir)/$(MODULE)$(DLLEXT)
uninstall::
[ ! -d $(dlldir) ] || (cd $(dlldir) && $(RM) $(MODULE)$(DLLEXT) $(IMPORTLIB) $(STATICIMPLIB) $(ALL_SPECS16:%=%$(DLLEXT)))
# Misc. rules
......
......@@ -2508,18 +2508,15 @@ doc-sgml: $(SUBDIRS:%=%/__doc_sgml__)
# Misc rules
install install-dev:: $(IMPORT_LIBS)
$(MKINSTALLDIRS) $(dlldir)
for f in $(IMPORT_LIBS); do $(INSTALL_DATA) $$f $(dlldir)/$$f; done
install-lib:: $(INSTALLSUBDIRS:%=%/__install-lib__)
install install-lib:: $(INSTALLSUBDIRS:%=%/__install__)
install-dev:: $(INSTALLSUBDIRS:%=%/__install-dev__)
uninstall::
-cd $(dlldir) && $(RM) $(IMPORT_LIBS)
-rmdir $(dlldir)
clean::
$(RM) $(IMPORT_LIBS) $(SYMLINKS)
$(RM) $(IMPORT_LIBS)
check test:: $(BUILDSUBDIRS:%=%/__test__)
......
......@@ -4,6 +4,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = advapi32.dll
IMPORTLIB = libadvapi32.$(IMPLIBEXT)
IMPORTS = kernel32 ntdll
EXTRALIBS = $(LIBUNICODE)
......
......@@ -3,6 +3,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = advpack.dll
IMPORTLIB = libadvpack.$(IMPLIBEXT)
IMPORTS = setupapi version user32 kernel32 ntdll
EXTRALIBS = $(LIBUNICODE)
......
......@@ -3,6 +3,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = amstream.dll
IMPORTLIB = libamstream.$(IMPLIBEXT)
IMPORTS = ole32 user32 advapi32 kernel32
EXTRALIBS = -lstrmiids -luuid
......
......@@ -3,6 +3,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = atl.dll
IMPORTLIB = libatl.$(IMPLIBEXT)
IMPORTS = ole32 shlwapi user32 advapi32 kernel32
EXTRALIBS = $(LIBUNICODE) -luuid
......
......@@ -3,6 +3,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = avicap32.dll
IMPORTLIB = libavicap32.$(IMPLIBEXT)
IMPORTS = kernel32 ntdll
C_SRCS = avicap32_main.c
......
......@@ -3,6 +3,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = avifil32.dll
IMPORTLIB = libavifil32.$(IMPLIBEXT)
IMPORTS = msacm32 msvfw32 shell32 winmm ole32 user32 advapi32 kernel32 ntdll
EXTRALIBS = -luuid
......
......@@ -3,6 +3,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = cabinet.dll
IMPORTLIB = libcabinet.$(IMPLIBEXT)
IMPORTS = kernel32
C_SRCS = \
......
......@@ -3,6 +3,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = capi2032.dll
IMPORTLIB = libcapi2032.$(IMPLIBEXT)
IMPORTS = kernel32
C_SRCS = cap20wxx.c
......
......@@ -3,6 +3,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = cards.dll
IMPORTLIB = libcards.$(IMPLIBEXT)
IMPORTS = user32 gdi32 kernel32
C_SRCS = \
......
......@@ -3,6 +3,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = cfgmgr32.dll
IMPORTLIB = libcfgmgr32.$(IMPLIBEXT)
IMPORTS = kernel32
C_SRCS = \
......
......@@ -3,6 +3,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = comcat.dll
IMPORTLIB = libcomcat.$(IMPLIBEXT)
IMPORTS = ole32 user32 advapi32 kernel32
EXTRALIBS = $(LIBUNICODE) -luuid
......
......@@ -4,6 +4,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = comctl32.dll
IMPORTLIB = libcomctl32.$(IMPLIBEXT)
IMPORTS = user32 gdi32 advapi32 kernel32
DELAYIMPORTS = winmm
EXTRALIBS = $(LIBUNICODE)
......
......@@ -3,6 +3,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = comdlg32.dll
IMPORTLIB = libcomdlg32.$(IMPLIBEXT)
IMPORTS = shell32 shlwapi comctl32 winspool user32 gdi32 kernel32 ntdll
EXTRALIBS = -luuid
......
......@@ -3,6 +3,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = crtdll.dll
IMPORTLIB = libcrtdll.$(IMPLIBEXT)
IMPORTS = msvcrt kernel32
EXTRALIBS = $(LIBUNICODE)
EXTRAINCL = -I$(TOPSRCDIR)/include/msvcrt
......
......@@ -4,6 +4,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = crypt32.dll
IMPORTLIB = libcrypt32.$(IMPLIBEXT)
IMPORTS = advapi32 kernel32
C_SRCS = \
......
......@@ -3,6 +3,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = cryptdll.dll
IMPORTLIB = libcryptdll.$(IMPLIBEXT)
IMPORTS = advapi32 kernel32
C_SRCS = \
......
......@@ -3,6 +3,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = ctl3d32.dll
IMPORTLIB = libctl3d32.$(IMPLIBEXT)
IMPORTS = user32 kernel32
C_SRCS = ctl3d32.c
......
......@@ -3,6 +3,7 @@ TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = d3d8.dll
IMPORTLIB = libd3d8.$(IMPLIBEXT)
IMPORTS = wined3d user32 gdi32 advapi32 kernel32
EXTRAINCL = @X_CFLAGS@
EXTRALIBS = -ldxguid -luuid @X_LIBS@ @X_PRE_LIBS@ @XLIB@ @X_EXTRA_LIBS@ @OPENGL_LIBS@
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment