]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
build-sys: add hooks to build python bindings
authorLucas De Marchi <lucas.demarchi@intel.com>
Mon, 24 Mar 2014 11:27:19 +0000 (08:27 -0300)
committerLucas De Marchi <lucas.demarchi@intel.com>
Thu, 27 Mar 2014 01:30:56 +0000 (22:30 -0300)
Add --enable-python configure switch so we build the python bindings. We
also pass version.py through SED_PROCESS macro, so the version is kept
in sync with kmod.

Acked-by: Andy Grover <agrover@redhat.com>
Makefile.am
configure.ac
libkmod/python/.gitignore
libkmod/python/kmod/version.py.in [moved from libkmod/python/kmod/version.py with 96% similarity]

index 46b7652e6a213abb73d00e0cc34058cf84d02528..e65fdfb0d9ea65089237ce202dc2d751b7643b16 100644 (file)
@@ -6,7 +6,8 @@ endif
 
 DISTCLEAN_LOCAL_HOOKS =
 EXTRA_DIST =
-CLEANFILES =
+CLEANFILES = $(BUILT_FILES)
+BUILT_FILES =
 ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
 AM_MAKEFLAGS = --no-print-directory
 
@@ -124,6 +125,70 @@ ${noinst_SCRIPTS}: tools/kmod
                $(LN_S) $(notdir $<) $@)
 endif
 
+# ------------------------------------------------------------------------------
+# PYTHON BINDINGS
+# ------------------------------------------------------------------------------
+
+CYTHON_FLAGS_VERBOSE_ =
+CYTHON_FLAGS_VERBOSE_0 =
+CYTHON_FLAGS_VERBOSE_1 = -v
+CYTHON_FLAGS = $(CYTHON_FLAGS_VERBOSE_$(V))
+AM_V_CYTHON = $(am__v_CYTHON_$(V))
+am__v_CYTHON_ = $(am__v_CYTHON_$(AM_DEFAULT_VERBOSITY))
+am__v_CYTHON_0 = @echo "  CYTHON " $@;
+
+.pyx.c:
+       $(AM_V_CYTHON)$(CYTHON) -o $@ $<
+
+%.py: %.py.in Makefile
+       $(SED_PROCESS)
+
+# Remove some warnings for generated code
+PYTHON_NOWARN = -Wno-redundant-decls -Wno-shadow -Wno-strict-aliasing
+
+CPYTHON_MODULE_CFLAGS = $(AM_CFLAGS) -DCPYTHON_COMPILING_IN_PYPY=0 \
+                       $(PYTHON_NOWARN) $(PYTHON_CFLAGS) \
+                       -fvisibility=default
+CPYTHON_MODULE_LDFLAGS = $(AM_LDFLAGS) -module -avoid-version -shared
+
+if BUILD_PYTHON
+pkgpyexec_LTLIBRARIES = libkmod/python/kmod/kmod.la \
+                       libkmod/python/kmod/list.la \
+                       libkmod/python/kmod/module.la \
+                       libkmod/python/kmod/_util.la
+
+libkmod_python_kmod_kmod_la_SOURCES = libkmod/python/kmod/kmod.c
+libkmod_python_kmod_kmod_la_CFLAGS = $(CPYTHON_MODULE_CFLAGS)
+libkmod_python_kmod_kmod_la_LDFLAGS = $(CPYTHON_MODULE_LDFLAGS)
+libkmod_python_kmod_kmod_la_LIBADD = $(PYTHON_LIBS) libkmod/libkmod.la
+
+libkmod_python_kmod_list_la_SOURCES = libkmod/python/kmod/list.c
+libkmod_python_kmod_list_la_CFLAGS = $(CPYTHON_MODULE_CFLAGS)
+libkmod_python_kmod_list_la_LDFLAGS = $(CPYTHON_MODULE_LDFLAGS)
+libkmod_python_kmod_list_la_LIBADD = $(PYTHON_LIBS) libkmod/libkmod.la
+
+libkmod_python_kmod_module_la_SOURCES = libkmod/python/kmod/module.c
+libkmod_python_kmod_module_la_CFLAGS = $(CPYTHON_MODULE_CFLAGS)
+libkmod_python_kmod_module_la_LDFLAGS = $(CPYTHON_MODULE_LDFLAGS)
+libkmod_python_kmod_module_la_LIBADD = $(PYTHON_LIBS) libkmod/libkmod.la
+
+libkmod_python_kmod__util_la_SOURCES = libkmod/python/kmod/_util.c
+libkmod_python_kmod__util_la_CFLAGS = $(CPYTHON_MODULE_CFLAGS)
+libkmod_python_kmod__util_la_LDFLAGS = $(CPYTHON_MODULE_LDFLAGS)
+libkmod_python_kmod__util_la_LIBADD = $(PYTHON_LIBS) libkmod/libkmod.la
+
+BUILT_FILES += $(libkmod_python_kmod_kmod_la_SOURCES) \
+              $(libkmod_python_kmod_list_la_SOURCES) \
+              $(libkmod_python_kmod_module_la_SOURCES) \
+              $(libkmod_python_kmod__util_la_SOURCES)
+
+dist_pkgpyexec_PYTHON = libkmod/python/kmod/error.py \
+                       libkmod/python/kmod/__init__.py \
+                       libkmod/python/kmod/version.py
+
+BUILT_FILES += libkmod/python/kmod/version.py
+
+endif
 # ------------------------------------------------------------------------------
 # TESTSUITE
 # ------------------------------------------------------------------------------
@@ -211,7 +276,8 @@ testsuite-distclean:
 DISTCLEAN_LOCAL_HOOKS += testsuite-distclean
 EXTRA_DIST += testsuite/rootfs-pristine
 
-DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc --sysconfdir=/etc --with-zlib \
+DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc --enable-python --sysconfdir=/etc \
+       --with-zlib \
        --with-bashcompletiondir=$$dc_install_base/$(bashcompletiondir)
 
 distclean-local: $(DISTCLEAN_LOCAL_HOOKS)
index f2070c61edbe1f5b1c8c7e9c2be8cc0e70f80b35..b19529619b361657f71a87c7b10e919333596364 100644 (file)
@@ -127,6 +127,24 @@ AS_IF([test "x$enable_debug" = "xyes"], [
        AC_DEFINE(ENABLE_DEBUG, [1], [Debug messages.])
 ])
 
+AC_ARG_ENABLE([python],
+       AS_HELP_STRING([--enable-python], [enable Python libkmod bindings @<:@default=disabled@:>@]),
+       [], [enable_python=no])
+AS_IF([test "x$enable_python" = "xyes"], [
+       AM_PATH_PYTHON(,,[:])
+       AC_PATH_PROG([CYTHON], [cython], [:])
+
+       PKG_CHECK_MODULES([PYTHON], [python-${PYTHON_VERSION}],
+                         [have_python=yes],
+                         [PKG_CHECK_MODULES([PYTHON], [python],
+                                            [have_python=yes],
+                                            [have_python=no])])
+
+       AS_IF([test "x$have_python" = xno],
+             [AC_MSG_ERROR([*** python support requested but libraries not found])])
+])
+AM_CONDITIONAL([BUILD_PYTHON], [test "x$enable_python" = "xyes"])
+
 m4_ifdef([GTK_DOC_CHECK], [
 GTK_DOC_CHECK([1.14],[--flavour no-tmpl-flat])
 ], [
@@ -222,6 +240,7 @@ AC_MSG_RESULT([
        ldflags:                ${with_ldflags} ${LDFLAGS}
 
        tools:                  ${enable_tools}
+       python bindings:        ${enable_python}
        logging:                ${enable_logging}
        compression:            xz=${with_xz}  zlib=${with_zlib}
        debug:                  ${enable_debug}
index 46ec2eae190c356bcdbfb2e4a339a6e02aae0562..69af45134768cd53ef165b46378e057bc4d7bc65 100644 (file)
@@ -3,3 +3,4 @@ dist
 *.c
 *.pyc
 *.so
+kmod/version.py
similarity index 96%
rename from libkmod/python/kmod/version.py
rename to libkmod/python/kmod/version.py.in
index 1ef04ebd841de4f431a189603d85839d520c7454..4daa94d4c9d96f44ec0776b3d1d54d9261ba4368 100644 (file)
@@ -14,4 +14,4 @@
 # You should have received a copy of the GNU Lesser General Public License
 # along with python-kmod.  If not, see <http://www.gnu.org/licenses/>.
 
-__version__ = '0.9.1'
+__version__ = '@VERSION@'