blob: d5a4401afd6113b875bac22a9bb3cd3181919e81 [file] [log] [blame]
From aa0f7a8d59a9bbd646203d3f14e39e217961f725 Mon Sep 17 00:00:00 2001
From: Gilles Dartiguelongue <eva@gentoo.org>
Date: Wed, 11 Nov 2015 17:49:07 +0100
Subject: [PATCH] Simplify python setup in autoconf
AM_PATH_PYTHON does most of the job without using pkg-config as expected
from the rest of the autoconf script.
---
Makefile.am | 14 +++++--
configure.ac | 119 ++++++++++++++---------------------------------------
python/Makefile.am | 28 ++++---------
3 files changed, 49 insertions(+), 112 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index ff10f574..65decb3c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,9 +2,13 @@ SUBDIRS = \
libxslt \
libexslt \
xsltproc \
- doc \
- $(PYTHON_SUBDIR) \
- tests
+ doc
+
+if WITH_PYTHON
+SUBDIRS += python
+endif
+
+SUBDIRS += tests
DIST_SUBDIRS = libxslt libexslt xsltproc python doc tests
@@ -51,7 +55,9 @@ tests: dummy
@echo '## Running the regression test suite'
@(cd tests ; $(MAKE) -s tests)
@(cd xsltproc ; $(MAKE) -s tests)
- @(if [ "$(PYTHON_SUBDIR)" != "" ] ; then cd python ; $(MAKE) -s tests ; fi)
+if WITH_PYTHON
+ @(cd python ; $(MAKE) -s tests)
+endif
valgrind:
@echo '## Running the regression tests under Valgrind'
diff --git a/configure.ac b/configure.ac
index d6aa3664..0a538944 100644
--- a/configure.ac
+++ b/configure.ac
@@ -293,90 +293,37 @@ dnl
dnl check for python
dnl
-PYTHON_VERSION=
-PYTHON_INCLUDES=
-PYTHON_SITE_PACKAGES=
-pythondir=
-AC_ARG_WITH(python, [ --with-python[=DIR] Build Python bindings if found])
-if test "$with_python" != "no" ; then
- if test -x "$with_python/bin/python"
- then
- echo Found python in $with_python/bin/python
- PYTHON="$with_python/bin/python"
- else
- if test -x "$with_python"
- then
- echo Found python in $with_python
- PYTHON="$with_python"
- else
- if test -x "$PYTHON"
- then
- echo Found python in environment PYTHON=$PYTHON
- with_python=`$PYTHON -c "import sys; print sys.exec_prefix"`
- else
- AC_PATH_PROG(PYTHON, python python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5)
- fi
- fi
- fi
- if test "$PYTHON" != ""
- then
- echo "PYTHON is pointing at $PYTHON"
- PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"`
- echo Found Python version $PYTHON_VERSION
- LIBXML2_PYTHON=`$PYTHON -c "try : import libxml2 ; print 1
-except: print 0"`
- if test "$LIBXML2_PYTHON" = "1"
- then
- echo Found libxml2-python module
- else
- echo Warning: Missing libxml2-python
- fi
- fi
- if test "$PYTHON_VERSION" != ""
- then
- if test -r $with_python/include/python$PYTHON_VERSION/Python.h -a \
- -d $with_python/lib/python$PYTHON_VERSION/site-packages
- then
- PYTHON_INCLUDES=$with_python/include/python$PYTHON_VERSION
- PYTHON_SITE_PACKAGES='$(libdir)/python$(PYTHON_VERSION)/site-packages'
- else
- if test -r $prefix/include/python$PYTHON_VERSION/Python.h
- then
- PYTHON_INCLUDES=$prefix/include/python$PYTHON_VERSION
- PYTHON_SITE_PACKAGES='$(libdir)/python$(PYTHON_VERSION)/site-packages'
- else
- if test -r /usr/include/python$PYTHON_VERSION/Python.h
- then
- PYTHON_INCLUDES=/usr/include/python$PYTHON_VERSION
- PYTHON_SITE_PACKAGES='$(libdir)/python$(PYTHON_VERSION)/site-packages'
- else
- echo could not find python$PYTHON_VERSION/Python.h
- fi
- fi
- if test ! -d "$PYTHON_SITE_PACKAGES"
- then
- PYTHON_SITE_PACKAGES=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib()"`
- fi
- fi
- PYTHON_LIBS=`python$PYTHON_VERSION-config --libs`
- fi
- if test "$with_python" != ""
- then
- pythondir='$(PYTHON_SITE_PACKAGES)'
- else
- pythondir='$(libdir)/python$(PYTHON_VERSION)/site-packages'
- fi
-fi
-AM_CONDITIONAL(WITH_PYTHON, test "$PYTHON_INCLUDES" != "")
-if test "$PYTHON_INCLUDES" != ""
-then
- PYTHON_SUBDIR=python
-else
- PYTHON_SUBDIR=
-fi
-AC_SUBST(pythondir)
-AC_SUBST(PYTHON_SUBDIR)
-AC_SUBST(PYTHON_LIBS)
+AC_ARG_WITH([python],
+ AS_HELP_STRING([--with-python], [Build Python bindings if found])
+)
+
+AS_IF([test "$with_python" = "yes"],
+ [AM_PATH_PYTHON
+ AC_PATH_TOOL([PYTHON_CONFIG], [python$PYTHON_VERSION-config], [no])
+ AS_IF([test "$PYTHON_CONFIG" = "no"],
+ [AC_PATH_TOOL([PYTHON_CONFIG], [python-config], [no])])
+ AS_IF([test "$PYTHON_CONFIG" != "no"],
+ [PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags`
+ PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags`
+ PYTHON_LIBS=`$PYTHON_CONFIG --libs`],
+ [AC_MSG_ERROR([Missing python development files.])])
+ AC_MSG_CHECKING([libxml2 module in $PYTHON])
+ LIBXML2_PYTHON=`$PYTHON -c "import sys;
+try:
+ import libxml2
+ sys.stdout.write('1')
+except:
+ sys.stdout.write('0')"`
+ AS_IF([test "$LIBXML2_PYTHON" = "1"],
+ [AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])
+ AC_MSG_WARN([libxml2 python module not found, expect runtime errors])])
+ ])
+
+AM_CONDITIONAL([WITH_PYTHON], [test "$with_python" = "yes"])
+AC_SUBST([PYTHON_CFLAGS])
+AC_SUBST([PYTHON_LDFLAGS])
+AC_SUBST([PYTHON_LIBS])
AC_ARG_WITH(crypto, [ --with-crypto Add crypto support to exslt (on)])
WITH_CRYPTO=0
@@ -678,10 +625,6 @@ AC_SUBST(PYTHONSODV)
AC_SUBST(XML_CONFIG)
AC_SUBST(LIBXML_LIBS)
AC_SUBST(LIBXML_CFLAGS)
-AC_SUBST(PYTHON)
-AC_SUBST(PYTHON_VERSION)
-AC_SUBST(PYTHON_INCLUDES)
-AC_SUBST(PYTHON_SITE_PACKAGES)
XSLT_LIBDIR='-L${libdir}'
XSLT_INCLUDEDIR='-I${includedir}'
diff --git a/python/Makefile.am b/python/Makefile.am
index fa58b78f..3a5ecd6a 100644
--- a/python/Makefile.am
+++ b/python/Makefile.am
@@ -5,9 +5,9 @@ SUBDIRS= . tests
AM_CFLAGS = $(LIBXML_CFLAGS)
-DOCS_DIR = $(datadir)/doc/libxslt-python-$(LIBXSLT_VERSION)
+docsdir = $(datadir)/doc/libxslt-python-$(LIBXSLT_VERSION)
# libxsltclass.txt is generated
-DOCS = TODO
+dist_docs_DATA = TODO
EXTRA_DIST = \
libxslt.c \
@@ -16,10 +16,7 @@ EXTRA_DIST = \
libxml_wrap.h \
libxslt_wrap.h \
libxsl.py \
- libxslt-python-api.xml \
- $(DOCS)
-
-libxsltmod_la_LDFLAGS = $(WIN32_EXTRA_LDFLAGS) -module -avoid-version
+ libxslt-python-api.xml
if WITH_PYTHON
mylibs = \
@@ -28,31 +25,22 @@ mylibs = \
all-local: libxslt.py
-python_LTLIBRARIES = libxsltmod.la
+python_PYTHON = libxslt.py
+pyexec_LTLIBRARIES = libxsltmod.la
libxsltmod_la_CPPFLAGS = \
- -I$(PYTHON_INCLUDES) \
-I$(top_srcdir)/libxslt \
-I$(top_srcdir) \
- -I../libexslt
+ -I$(top_srcdir)/libexslt \
+ $(PYTHON_CFLAGS)
libxsltmod_la_SOURCES = libxslt.c types.c
nodist_libxsltmod_la_SOURCES = libxslt-py.c
libxsltmod_la_LIBADD = $(mylibs) $(PYTHON_LIBS)
+libxsltmod_la_LDFLAGS = $(WIN32_EXTRA_LDFLAGS) $(PYTHON_LDFLAGS) -module -avoid-version
libxslt.py: $(srcdir)/libxsl.py libxsltclass.py
cat $(srcdir)/libxsl.py libxsltclass.py > $@
-install-data-local:
- $(MKDIR_P) $(DESTDIR)$(pythondir)
- $(INSTALL) -m 0644 libxslt.py $(DESTDIR)$(pythondir)
- $(MKDIR_P) $(DESTDIR)$(DOCS_DIR)
- @(for doc in $(DOCS) ; \
- do $(INSTALL) -m 0644 $(srcdir)/$$doc $(DESTDIR)$(DOCS_DIR) ; done)
-
-uninstall-local:
- rm -f $(DESTDIR)$(pythondir)/libxslt.py
- rm -rf $(DESTDIR)$(DOCS_DIR)
-
GENERATE = generator.py
API_DESC = $(top_srcdir)/doc/libxslt-api.xml $(srcdir)/libxslt-python-api.xml
GENERATED= libxsltclass.py \
--
2.14.1