blob: 2f3a51de1864f4988f9c323977b0641be05ae6c2 [file] [log] [blame]
Alexandre Julliardd0edc5f2000-03-04 22:31:27 +00001# Global rules for building dlls -*-Makefile-*-
2#
3# Each individual makefile should define the following variables:
4# MODULE : name of the main module being built
Alexandre Julliard82a2b182000-03-05 13:08:24 +00005# ALTNAMES : alternate names for this dll (optional)
Alexandre Julliardd0edc5f2000-03-04 22:31:27 +00006# IMPORTS : dlls to import (optional)
Alexandre Julliarde1e75372000-04-24 17:17:49 +00007# EXTRALIBS : extra libraries to link in (optional)
Alexandre Julliardd0edc5f2000-03-04 22:31:27 +00008#
9# plus all variables required by the global Make.rules.in
10#
11
Francois Gougetb9ca58f2001-04-10 23:22:22 +000012DEFS = @DLLFLAGS@ -D__WINE__ $(EXTRADEFS)
Alexandre Julliardd0edc5f2000-03-04 22:31:27 +000013LIBEXT = @LIBEXT@
Alexandre Julliardd0edc5f2000-03-04 22:31:27 +000014SONAME = lib$(MODULE).so
15IMPORTLIBS = $(IMPORTS:%=$(DLLDIR)/lib%.$(LIBEXT))
Alexandre Julliard82a2b182000-03-05 13:08:24 +000016ALLNAMES = lib$(MODULE).so $(ALTNAMES:%=lib%.so)
Alexandre Julliard64e0ded2000-11-10 20:35:39 +000017SPEC_SRCS = $(ALTNAMES:%=%.spec)
Alexandre Julliard218188c2000-12-02 20:38:47 +000018ALL_OBJS = $(MODULE).spec.o $(OBJS)
Alexandre Julliarde2222fd2000-12-06 00:05:14 +000019ALL_LIBS = $(LIBWINE) $(EXTRALIBS) $(LIBS)
Alexandre Julliardd0edc5f2000-03-04 22:31:27 +000020
Alexandre Julliard82a2b182000-03-05 13:08:24 +000021all: lib$(MODULE).$(LIBEXT) $(ALTNAMES:%=lib%.$(LIBEXT))
Alexandre Julliardd0edc5f2000-03-04 22:31:27 +000022
23@MAKE_RULES@
24
Alexandre Julliard82a2b182000-03-05 13:08:24 +000025# Rules for .so files
26
Alexandre Julliard64e0ded2000-11-10 20:35:39 +000027lib$(MODULE).so: $(ALL_OBJS) Makefile.in
28 $(LDSHARED) $(LDDLLFLAGS) $(ALL_OBJS) -o $@ -L$(DLLDIR) $(IMPORTS:%=-l%) $(ALL_LIBS)
Alexandre Julliardd0edc5f2000-03-04 22:31:27 +000029
Alexandre Julliard64e0ded2000-11-10 20:35:39 +000030$(ALTNAMES:%=lib%.$(LIBEXT)): lib$(MODULE).$(LIBEXT)
31 $(RM) $@ && $(LN_S) lib$(MODULE).$(LIBEXT) $@
Alexandre Julliardd0edc5f2000-03-04 22:31:27 +000032
Alexandre Julliard82a2b182000-03-05 13:08:24 +000033# Rules for .a files
34
Alexandre Julliard64e0ded2000-11-10 20:35:39 +000035lib$(MODULE).a: $(ALL_OBJS) Makefile.in
Alexandre Julliardd0edc5f2000-03-04 22:31:27 +000036 $(RM) $@
Alexandre Julliard64e0ded2000-11-10 20:35:39 +000037 $(AR) $@ $(ALL_OBJS)
Alexandre Julliardd0edc5f2000-03-04 22:31:27 +000038 $(RANLIB) $@
39
Hidenori Takeshimad48ca942000-12-22 22:28:00 +000040# Rules for .dll files
41lib$(MODULE).dll: $(ALL_OBJS) Makefile.in
42 $(DLLWRAP) $(DLLWRAPFLAGS) --implib lib$(MODULE).a -o lib$(MODULE).dll $(ALL_OBJS) -L$(DLLDIR) $(IMPORTS:%=-l%) $(ALL_LIBS)
43
Alexandre Julliardd0edc5f2000-03-04 22:31:27 +000044# Rules for checking that no imports are missing
45
Alexandre Julliard6c9d83a2000-08-03 00:04:24 +000046checklink:: lib$(MODULE).$(LIBEXT)
Alexandre Julliard64e0ded2000-11-10 20:35:39 +000047 $(CC) -o checklink $(TOPSRCDIR)/library/checklink.c -L. -l$(MODULE) $(ALL_LIBS) && $(RM) checklink
Alexandre Julliardd0edc5f2000-03-04 22:31:27 +000048
Alexandre Julliardeb58e1d2000-11-05 04:53:07 +000049# Rules for debug channels
50
51debug_channels: dummy
52 $(TOPSRCDIR)/tools/make_debug $(MODULE).spec $(C_SRCS) $(SUBDIRS:%=%/*.c)
53
Marcus Meissnerb7175df2001-05-07 18:22:43 +000054# Sanity check
55
56Makedll.rules: $(TOPSRCDIR)/Makedll.rules.in $(TOPSRCDIR)/configure
57 @echo $? is newer than 'Makedll.rules', please rerun ./configure!
58 @exit 1
59
Alexandre Julliardd0edc5f2000-03-04 22:31:27 +000060# Rules for installation
61
62.PHONY: install_so install_a
63
Alexandre Julliard64e0ded2000-11-10 20:35:39 +000064$(ALTNAMES:%=_install_/lib%.$(LIBEXT)): $(LIBEXT:%=install_%)
65 cd $(libdir) && $(RM) `basename $@` && $(LN_S) lib$(MODULE).$(LIBEXT) `basename $@`
66
67install_so: lib$(MODULE).so
Alexandre Julliardd0edc5f2000-03-04 22:31:27 +000068 [ -d $(libdir) ] || $(MKDIR) $(libdir)
Alexandre Julliard64e0ded2000-11-10 20:35:39 +000069 $(INSTALL_PROGRAM) lib$(MODULE).so $(libdir)/lib$(MODULE).so
Alexandre Julliardd0edc5f2000-03-04 22:31:27 +000070
71install_a: lib$(MODULE).a
72 [ -d $(libdir) ] || $(MKDIR) $(libdir)
73 $(INSTALL_DATA) lib$(MODULE).a $(libdir)/lib$(MODULE).a
74
Alexandre Julliard64e0ded2000-11-10 20:35:39 +000075install:: $(LIBEXT:%=install_%) $(ALTNAMES:%=_install_/lib%.$(LIBEXT))
Alexandre Julliardd0edc5f2000-03-04 22:31:27 +000076
77uninstall::
Alexandre Julliard64e0ded2000-11-10 20:35:39 +000078 cd $(libdir) && $(RM) lib$(MODULE).$(LIBEXT) $(ALTNAMES:%=lib%.$(LIBEXT))