home *** CD-ROM | disk | FTP | other *** search
- # -*- makefile -*- Automake include file
- # $Id: pluglib-bindings.ami 27327 2006-01-25 14:12:13Z mvidner $
-
- # Wraps a pluglib for use by YaST. Done by using Swig for Perl, adding
- # type information. Compiles, installs.
-
- # expected input:
- # PLUGLIB_MODULE = the name after %module in .i
- # PLUGLIB_LIBRARY = the object file/library that is being wrapped
- # PLUGLIB_DEPEND = dependencies
- # example:
- # PLUGLIB_MODULE = Storage
- # PLUGLIB_LIBRARY = .libs/liby2storage.so
- # PLUGLIB_DEPEND = ../../src/StorageInterface.h
- # include $(top_srcdir)/pluglib-bindings.ami
-
- TARGET_PM = $(PLUGLIB_MODULE).pm
- TARGET_SO = $(PLUGLIB_MODULE).so
-
- # ydatadir or `pkg-config --variable=yast2dir yast2-devtools`/data ?
- # putting files to a directory owned by another package?
- # ok but then they should share prefixes (maybe not really)
- PLGB_BASEDIR = $(ydatadir)/devtools/pluglib-bindings
-
- # TODO configure
- SWIG = swig
- #SWIG = $(HOME)/pfx-swig-1.3.24/bin/swig
- SWIGFLAGS = -I$(PLGB_BASEDIR)/swig -c++
-
- # Process the .i file, creating a wrapper for Perl and a XML parse.
- %_wrap.cc %_wrap.xml: %.i $(PLUGLIB_DEPEND)
- $(SWIG) -perl $(SWIGFLAGS) -o $*_wrap.cc -xmlout $*_wrap.xml $<
-
- PLGB_TYPEINFO_XSL = $(PLGB_BASEDIR)/stylesheets/swigxml2typeinfo.xsl
- PLGB_TYPEINFO_FILTER = $(PLGB_BASEDIR)/stylesheets/filter.pl
-
- # Add typeinfo
- # (sablotron indeed has fewer build dependencies than xsltproc)
- # PLGB_TYPEINFO_FILTER opens all files in append mode
- # which is strange but we can live with it by deleting the
- # appropriate files beforehand.
- $(TARGET_PM): %.pm: %_wrap.xml
- if test -d $(PLUGLIB_MODULE); then \
- rm -f $(PLUGLIB_MODULE)/*.pm; \
- fi
- sabcmd $(PLGB_TYPEINFO_XSL) $< | perl $(PLGB_TYPEINFO_FILTER)
-
- # Install the Perl modules
- PLGB_PMdir = $(moduledir)
- PLGB_PM_DATA = $(TARGET_PM)
- # Copy the directory with additional pm modules
- install-data-local:
- if test -d $(PLUGLIB_MODULE); then \
- cp --recursive $(PLUGLIB_MODULE) $(DESTDIR)$(PLGB_PMdir); \
- fi
- # This is to ensure that automake generates the LTCXXCOMPILE variable.
- # We need to use LTCXXCOMPILE because libtool puts in -fPIC on some
- # architectures and also we get RPM_OPT_FLAGS via CXXCLAGS that way.
- noinst_PROGRAMS = dummy_to_have_cxxcompile
- dummy_to_have_cxxcompile_SOURCES = dummy_to_have_cxxcompile.cc
- dummy_to_have_cxxcompile.cc:
- echo 'int main() {return 0;}' > $@
-
- # Compile the wrapper
- .libs/%_wrap.o: %_wrap.cc
- $(LTCXXCOMPILE) $(PERL_CFLAGS) -c -o $*_wrap.lo $<
-
- # Link the wrapper and the actual library
- $(TARGET_SO): %.so: .libs/%_wrap.o $(PLUGLIB_LIBRARY)
- $(CXXCOMPILE) -shared -o $@ $^
-
- # Install the library
- PLGB_SOdir = $(PERL_VENDORARCH)
- PLGB_SO_DATA = $(TARGET_SO)
-
- CLEANFILES = $(PLUGLIB_MODULE)_wrap.*
-