77 lines
2.6 KiB
Plaintext
77 lines
2.6 KiB
Plaintext
|
# -*- 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.*
|