initical checkin for casa-yast module
This commit is contained in:
76
casa-yast/pluglib-bindings.ami
Normal file
76
casa-yast/pluglib-bindings.ami
Normal file
@@ -0,0 +1,76 @@
|
||||
# -*- 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.*
|
||||
Reference in New Issue
Block a user