| # |
| # This is a Makefile stub which handles the creation of Linux DLL-style shared |
| # libraries. |
| # |
| # In order to use this stub, the following makefile variables must be defined. |
| # |
| # DLL_ADDRESS = 0x80000000 |
| # DLL_JUMPSIZE = 0x1000 |
| # DLL_GOTSIZE = 0x1000 |
| # DLL_VERSION = 1.0 |
| # DLL_IMAGE = libce |
| # DLL_STUB = libcom_err |
| # DLL_MYDIR = et |
| # DLL_INSTALL_DIR = $(SHLIBDIR) |
| # |
| |
| all:: jump image stubs |
| |
| subdirs:: jump jump/jump.funcs jump/jump.ignore jump/jump.import \ |
| jump/jump.params jump/jump.undefs jump/jump.vars |
| |
| jump: |
| mkdir jump |
| |
| jump/jump.funcs: dll/jump.funcs |
| $(CP) $< $@ |
| |
| jump/jump.ignore: dll/jump.ignore |
| $(CP) $< $@ |
| |
| jump/jump.import: dll/jump.import |
| $(CP) $< $@ |
| |
| jump/jump.params: dll/jump.params |
| $(CP) $< $@ |
| |
| jump/jump.undefs: dll/jump.undefs |
| $(CP) $< $@ |
| |
| jump/jump.vars: dll/jump.vars |
| $(CP) $< $@ |
| |
| # |
| # This is a horrible hack to try to find libgcc.a --- the DLL documentation |
| # states that you should just be able to do -lgcc, but modern gcc |
| # installation packages don't install /usr/lib/libgcc.a --- as well they |
| # shouldn't since libgcc.a can be gcc version dependent. |
| # If this hack doesn't work, try replacing it with a hardcoded path to |
| # libgcc.a, or -lgcc. |
| # |
| #DLL_LIBGCC ="`$(CC) -v 2>&1 | head -1 | \ |
| # sed -e 's;[^/]*;;' -e 's/specs/libgcc.a/'`" |
| DLL_LIBGCC ="`$(CC) --print-libgcc-file-name`" |
| |
| image: $(DLL_IMAGE).so.$(DLL_VERSION) |
| |
| stubs: $(DLL_STUB).sa $(OBJS) |
| |
| $(DLL_IMAGE).so.$(DLL_VERSION): $(OBJS) |
| (cd jump; export JUMP_DIR=`pwd`; \ |
| $(DLL_BIN)/mkimage -l $(DLL_IMAGE) -v $(DLL_VERSION) \ |
| -a $(DLL_ADDRESS) -j $(DLL_JUMPSIZE) -g $(DLL_GOTSIZE) -- \ |
| $(OBJS) -lc $(DLL_LIBS) $(DLL_LIBGCC) -lc) |
| $(MV) jump/$(DLL_IMAGE).so.$(DLL_VERSION) . |
| $(LN) -f $(DLL_IMAGE).so.$(DLL_VERSION) \ |
| `echo ../$(DLL_IMAGE).so.$(DLL_VERSION) | \ |
| sed -e 's/\.[0-9]*\$$//'` |
| |
| $(DLL_STUB).sa: |
| (cd jump; export JUMP_DIR=`pwd`; \ |
| $(DLL_BIN)/mkstubs -l $(DLL_IMAGE) -v $(DLL_VERSION) \ |
| -a $(DLL_ADDRESS) -j $(DLL_JUMPSIZE) -g $(DLL_GOTSIZE) \ |
| -- $(DLL_STUB)) |
| $(MV) jump/$(DLL_STUB).sa . |
| $(RM) -f ../$@ |
| $(LN) $@ ../$@ |
| |
| installdirs:: |
| $(top_srcdir)/mkinstalldirs $(DESTDIR)$(DLL_INSTALL_DIR) |
| |
| install-shlibs install:: $(DLL_IMAGE).so.$(DLL_VERSION) installdirs |
| $(INSTALL_PROGRAM) $(DLL_IMAGE).so.$(DLL_VERSION) \ |
| $(DESTDIR)$(DLL_INSTALL_DIR)/$(DLL_IMAGE).so.$(DLL_VERSION) |
| $(STRIP) $(DESTDIR)$(DLL_INSTALL_DIR)/$(DLL_IMAGE).so.$(DLL_VERSION) |
| -ldconfig |
| |
| uninstall-shlibs unistall:: |
| $(RM) $(DESTDIR)$(DLL_INSTALL_DIR)/$(DLL_IMAGE).so.$(DLL_VERSION) |
| |
| install:: $(DLL_STUB).sa |
| $(INSTALL_DATA) $(DLL_STUB).sa $(DESTDIR)$(libdir)/$(DLL_STUB).sa |
| $(CHMOD) 644 $(DESTDIR)$(libdir)/$(DLL_STUB).sa |
| $(RANLIB) $(DESTDIR)$(libdir)/$(DLL_STUB).sa |
| $(CHMOD) $(LIBMODE) $(DESTDIR)$(libdir)/$(DLL_STUB).sa |
| |
| clean:: |
| $(RM) -f ../$(DLL_STUB).sa $(DLL_STUB).sa \ |
| $(DLL_IMAGE).so.$(DLL_VERSION) ../$(DLL_IMAGE).so.* |
| $(RM) -rf jump |
| |
| |