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

