From aa0f7a8d59a9bbd646203d3f14e39e217961f725 Mon Sep 17 00:00:00 2001 From: Gilles Dartiguelongue 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