fix pseudo-linking and fix version verification
diff --git a/configure.ac b/configure.ac --- a/configure.ac +++ b/configure.ac @@ -10,15 +10,22 @@ AM_INIT_AUTOMAKE([-Wall -Werror gnu]) AC_PROG_PYTHON() -# check that the Python version is at least python_min_ver (2.7.2, above) -PC_PYTHON_VERIFY_VERSION([$PYTHON], python_min_ver, , - AC_MSG_ERROR(Python interpreter too old)) - # check if we are building for Python 3 -PC_PYTHON_CHECK_VERSION([$PYTHON], [3.0], +PC_PYTHON_VERIFY_VERSION([$PYTHON], 3.0, build_py3k=true, build_py3k=false) +# if building for python 3 make sure we have the minimum version supported +if test "$build_py3k" = "true" ; then + PC_PYTHON_VERIFY_VERSION([$PYTHON], python3_min_ver,, + [AC_MSG_ERROR(Python 3 interpreter too old)]) +else +# otherwise check that the Python 2 version is sufficient + PC_PYTHON_VERIFY_VERSION([$PYTHON], python_min_ver, , + [AC_MSG_ERROR(Python interpreter too old)]) +fi + + PC_PYTHON_CHECK_PREFIX PC_PYTHON_CHECK_EXECPREFIX @@ -45,13 +52,6 @@ PC_PYTHON_CHECK_EXEC_DIR PC_PYTHON_EXEC_PACKAGE_DIR -# # if building for python 3 make sure we have the minimum version supported -# if test $build_py3k = true ; then -# AC_MSG_CHECKING([for $PYTHON >=] python3_min_ver) -# PC_PYTHON_CHECK_VERSION([$PYTHON], python3_min_ver, -# [AC_MSG_RESULT(yes)], -# [AC_MSG_ERROR(too old)]) -# fi # check for python.h #AC_MSG_CHECKING([for python.h]) @@ -59,10 +59,12 @@ PC_PYTHON_EXEC_PACKAGE_DIR #AC_CHECK_HEADER([Python.h], , [AC_MSG_ERROR(could not find Python headers)]) # check if Python library foo exists -PC_PYTHON_CHECK_LIB([dbus],, [AC_MSG_ERROR(missing)]) +PC_PYTHON_CHECK_LIB([dbus]) +PC_PYTHON_CHECK_LIB([foo]) # test if Python library foo can do bar() -PC_PYTHON_CHECK_FUNC([dbus], [get_default_main_loop], , , [AC_MSG_RESULT(no)]) +PC_PYTHON_CHECK_FUNC([dbus], [get_default_main_loop]) +PC_PYTHON_CHECK_FUNC([dbus], [bar]) AC_CONFIG_FILES([]) AC_OUTPUT diff --git a/m4/python.m4 b/m4/python.m4 --- a/m4/python.m4 +++ b/m4/python.m4 @@ -1,7 +1,9 @@ # Python Autoconf macros -# Some of these macros were written by Andrew Dalke and James Henstridge -# and are included with the Automake utility under the following copyright terms: +# Many of these macros were adapted from ones written by Andrew Dalke +# and James Henstridge and are included with the Automake utility +# under the following copyright terms: +# # Copyright (C) 1999-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation @@ -12,7 +14,7 @@ # the Automake namespace and to fit naming conventions for Autoconf # language definitions. -# The remaining macros were written or adapted by Brandon Invergo and distributed +# The remaining macros were written by Brandon Invergo and distributed # under the same terms. @@ -39,7 +41,7 @@ AC_LANG_DEFINE([Python], [py], [PY], [PYTHON], [], [ac_ext=py ac_compile='chmod +x conftest.$ac_ext >&AS_MESSAGE_LOG_FD' -ac_link='chmod +x conftest.$ac_ext && mv conftest.$ac_ext conftest >&AS_MESSAGE_LOG_FD' +ac_link='chmod +x conftest.$ac_ext && cp conftest.$ac_ext conftest >&AS_MESSAGE_LOG_FD' ]) @@ -48,7 +50,6 @@ ac_link='chmod +x conftest.$ac_ext && mv AU_DEFUN([AC_LANG_PYTHON], [AC_LANG(Python)]) - ## ----------------------- ## ## 2. Producing programs. ## ## ----------------------- ## @@ -89,6 +90,7 @@ m4_define([_AC_LANG_CALL(Python)], [AC_LANG_PROGRAM([$1], [$2])]) + ## -------------------------------------------- ## ## 3. Looking for Compilers and Interpreters. ## ## -------------------------------------------- ## @@ -146,8 +148,9 @@ dnl fi # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000). AC_DEFUN([PC_PYTHON_VERIFY_VERSION], [AC_REQUIRE([AC_PROG_PYTHON])[]dnl -AC_CACHE_CHECK([that Python > '$2'], - [pc_cv_python_min_version], +m4_define([pc_python_safe_ver], m4_bpatsubsts($2, [\.], [_])) +AC_CACHE_CHECK([if Python >= '$2'], + [[pc_cv_python_min_version_]pc_python_safe_ver], [AC_LANG_PUSH(Python)[]dnl AC_RUN_IFELSE( [AC_LANG_PROGRAM([dnl @@ -159,15 +162,15 @@ import sys minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator - for i in list(range(0, 4)): + for i in list(range(4)): minverhex = (minverhex << 8) + minver[[i]] sys.exit(sys.hexversion < minverhex) ])], - [pc_cv_python_min_version="yes"], - [pc_cv_python_min_version="no"]) + [[pc_cv_python_min_version_]pc_python_safe_ver="yes"], + [[pc_cv_python_min_version_]pc_python_safe_ver="no"]) AC_LANG_POP(Python)[]dnl ]) -AS_IF([test "$pc_cv_python_min_version" = "no"], [$4], [$3]) +AS_IF([test "$[pc_cv_python_min_version_]pc_python_safe_ver" = "no"], [$4], [$3]) ])# PC_PYTHON_VERIFY_VERSION