From fac4d091b1bc2f941ce83df865752d3d0ec990e3 Mon Sep 17 00:00:00 2001 From: Lucas De Marchi Date: Mon, 24 Mar 2014 08:27:19 -0300 Subject: build-sys: add hooks to build python bindings 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. --- Makefile.am | 68 +++++++++++++++++++++++++++++++++++++-- configure.ac | 19 +++++++++++ libkmod/python/.gitignore | 1 + libkmod/python/kmod/version.py | 17 ---------- libkmod/python/kmod/version.py.in | 17 ++++++++++ 5 files changed, 103 insertions(+), 19 deletions(-) delete mode 100644 libkmod/python/kmod/version.py create mode 100644 libkmod/python/kmod/version.py.in diff --git a/Makefile.am b/Makefile.am index 46b7652..4dffbbc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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,68 @@ ${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) + +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 = $(AM_LDFLAGS) -shared -module -avoid-version +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 = $(AM_LDFLAGS) -shared -module -avoid-version +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 = $(AM_LDFLAGS) -shared -module -avoid-version +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 = $(AM_LDFLAGS) -shared -module -avoid-version +libkmod_python_kmod__util_la_LIBADD = $(PYTHON_LIBS) libkmod/libkmod.la + +BUILT_FILES += $(kmod_la_SOURCES) \ + $(list_la_SOURCES) \ + $(module_la_SOURCES) \ + $(_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 +274,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) diff --git a/configure.ac b/configure.ac index e95942a..18d6e5f 100644 --- a/configure.ac +++ b/configure.ac @@ -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} diff --git a/libkmod/python/.gitignore b/libkmod/python/.gitignore index 46ec2ea..69af451 100644 --- a/libkmod/python/.gitignore +++ b/libkmod/python/.gitignore @@ -3,3 +3,4 @@ dist *.c *.pyc *.so +kmod/version.py diff --git a/libkmod/python/kmod/version.py b/libkmod/python/kmod/version.py deleted file mode 100644 index 1ef04eb..0000000 --- a/libkmod/python/kmod/version.py +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (C) 2012 W. Trevor King -# -# This file is part of python-kmod. -# -# python-kmod is free software: you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License version 2.1 as published -# by the Free Software Foundation. -# -# python-kmod is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more -# details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with python-kmod. If not, see . - -__version__ = '0.9.1' diff --git a/libkmod/python/kmod/version.py.in b/libkmod/python/kmod/version.py.in new file mode 100644 index 0000000..4daa94d --- /dev/null +++ b/libkmod/python/kmod/version.py.in @@ -0,0 +1,17 @@ +# Copyright (C) 2012 W. Trevor King +# +# This file is part of python-kmod. +# +# python-kmod is free software: you can redistribute it and/or modify it under +# the terms of the GNU Lesser General Public License version 2.1 as published +# by the Free Software Foundation. +# +# python-kmod is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with python-kmod. If not, see . + +__version__ = '@VERSION@' -- cgit v1.2.1