Whamcloud - gitweb
Many files:
[tools/e2fsprogs.git] / lib / Makefile.dll-lib
1 #
2 # This is a Makefile stub which handles the creation of Linux DLL-style shared
3 # libraries.
4 #
5 # In order to use this stub, the following makefile variables must be defined.
6
7 # DLL_ADDRESS = 0x80000000
8 # DLL_JUMPSIZE = 0x1000
9 # DLL_GOTSIZE  = 0x1000
10 # DLL_VERSION = 1.0
11 # DLL_IMAGE = libce
12 # DLL_STUB = libcom_err
13 # DLL_MYDIR = et
14 # DLL_INSTALL_DIR = $(SHLIBDIR)
15 #
16
17 all:: jump image stubs
18
19 subdirs:: jump jump/jump.funcs jump/jump.ignore jump/jump.import \
20         jump/jump.params jump/jump.undefs jump/jump.vars
21
22 jump:
23         mkdir jump
24
25 jump/jump.funcs: dll/jump.funcs
26         $(CP) $< $@
27
28 jump/jump.ignore: dll/jump.ignore
29         $(CP) $< $@
30
31 jump/jump.import: dll/jump.import
32         $(CP) $< $@
33
34 jump/jump.params: dll/jump.params
35         $(CP) $< $@
36
37 jump/jump.undefs: dll/jump.undefs
38         $(CP) $< $@
39
40 jump/jump.vars: dll/jump.vars
41         $(CP) $< $@
42
43 #
44 # This is a horrible hack to try to find libgcc.a  --- the DLL documentation
45 # states that you should just be able to do -lgcc, but modern gcc 
46 # installation packages don't install /usr/lib/libgcc.a --- as well they 
47 # shouldn't since libgcc.a can be gcc version dependent.  
48 # If this hack doesn't work, try replacing it with a hardcoded path to 
49 # libgcc.a, or -lgcc.  
50 #
51 #DLL_LIBGCC ="`$(CC) -v 2>&1 | head -1 | \
52 #               sed -e 's;[^/]*;;' -e 's/specs/libgcc.a/'`"
53 DLL_LIBGCC ="`$(CC) --print-libgcc-file-name`"
54
55 image:          $(DLL_IMAGE).so.$(DLL_VERSION)
56
57 stubs:          $(DLL_STUB).sa $(OBJS)
58
59 $(DLL_IMAGE).so.$(DLL_VERSION): $(OBJS)
60         (cd jump; export JUMP_DIR=`pwd`; \
61                 $(DLL_BIN)/mkimage -l $(DLL_IMAGE) -v $(DLL_VERSION) \
62                 -a $(DLL_ADDRESS) -j $(DLL_JUMPSIZE) -g $(DLL_GOTSIZE) -- \
63                 $(OBJS) -lc $(DLL_LIBS) $(DLL_LIBGCC) -lc)
64         $(MV) jump/$(DLL_IMAGE).so.$(DLL_VERSION) .
65         $(LN) -f $(DLL_IMAGE).so.$(DLL_VERSION) \
66                 `echo ../$(DLL_IMAGE).so.$(DLL_VERSION) | \
67                 sed -e 's/\.[0-9]*\$$//'`
68
69 $(DLL_STUB).sa:
70         (cd jump; export JUMP_DIR=`pwd`; \
71                 $(DLL_BIN)/mkstubs -l $(DLL_IMAGE) -v $(DLL_VERSION) \
72                 -a $(DLL_ADDRESS) -j $(DLL_JUMPSIZE) -g $(DLL_GOTSIZE) \
73                 -- $(DLL_STUB))
74         $(MV) jump/$(DLL_STUB).sa .
75         $(RM) -f ../$@
76         $(LN) $@ ../$@
77
78 installdirs::
79         $(top_srcdir)/mkinstalldirs $(DESTDIR)$(DLL_INSTALL_DIR)
80
81 install-shlibs install:: $(DLL_IMAGE).so.$(DLL_VERSION) installdirs
82         $(INSTALL_PROGRAM) $(DLL_IMAGE).so.$(DLL_VERSION) \
83                 $(DESTDIR)$(DLL_INSTALL_DIR)/$(DLL_IMAGE).so.$(DLL_VERSION)
84         $(STRIP) $(DESTDIR)$(DLL_INSTALL_DIR)/$(DLL_IMAGE).so.$(DLL_VERSION)
85         -ldconfig
86
87 uninstall-shlibs unistall::
88         $(RM) $(DESTDIR)$(DLL_INSTALL_DIR)/$(DLL_IMAGE).so.$(DLL_VERSION)
89
90 install:: $(DLL_STUB).sa
91         $(INSTALL_DATA) $(DLL_STUB).sa $(DESTDIR)$(libdir)/$(DLL_STUB).sa
92         $(CHMOD) 644 $(DESTDIR)$(libdir)/$(DLL_STUB).sa
93         $(RANLIB) $(DESTDIR)$(libdir)/$(DLL_STUB).sa
94         $(CHMOD) $(LIBMODE) $(DESTDIR)$(libdir)/$(DLL_STUB).sa
95
96 clean::
97         $(RM) -f ../$(DLL_STUB).sa $(DLL_STUB).sa \
98                 $(DLL_IMAGE).so.$(DLL_VERSION) ../$(DLL_IMAGE).so.*
99         $(RM) -rf jump
100
101