2 # Autoconf macros for configuring the build of Python extension modules
9 # Look for Python and set the output variable 'PYTHON'
10 # to 'python' if found, empty otherwise.
11 AC_DEFUN([PGAC_PATH_PYTHON],
12 [AC_PATH_PROG(PYTHON, python)
13 if test x"$PYTHON" = x""; then
14 AC_MSG_ERROR([Python not found])
19 # _PGAC_CHECK_PYTHON_DIRS
20 # -----------------------
21 # Determine the name of various directories of a given Python installation.
22 AC_DEFUN([_PGAC_CHECK_PYTHON_DIRS],
23 [AC_REQUIRE([PGAC_PATH_PYTHON])
24 AC_MSG_CHECKING([for Python distutils module])
25 if "${PYTHON}" -c 'import distutils' 2>&AS_MESSAGE_LOG_FD
30 AC_MSG_ERROR([distutils module not found])
32 AC_MSG_CHECKING([Python configuration directory])
33 python_majorversion=`${PYTHON} -c "import sys; print(sys.version[[0]])"`
34 python_version=`${PYTHON} -c "import sys; print(sys.version[[:3]])"`
35 python_configdir=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBPL'))))"`
36 AC_MSG_RESULT([$python_configdir])
38 AC_MSG_CHECKING([Python include directories])
39 python_includespec=`${PYTHON} -c "
40 import distutils.sysconfig
41 a = '-I' + distutils.sysconfig.get_python_inc(False)
42 b = '-I' + distutils.sysconfig.get_python_inc(True)
47 AC_MSG_RESULT([$python_includespec])
49 AC_SUBST(python_majorversion)[]dnl
50 AC_SUBST(python_version)[]dnl
51 AC_SUBST(python_includespec)[]dnl
52 ])# _PGAC_CHECK_PYTHON_DIRS
55 # PGAC_CHECK_PYTHON_EMBED_SETUP
56 # -----------------------------
58 # Note: selecting libpython from python_configdir works in all Python
59 # releases, but it generally finds a non-shared library, which means
60 # that we are binding the python interpreter right into libplpython.so.
61 # In Python 2.3 and up there should be a shared library available in
62 # the main library location.
63 AC_DEFUN([PGAC_CHECK_PYTHON_EMBED_SETUP],
64 [AC_REQUIRE([_PGAC_CHECK_PYTHON_DIRS])
65 AC_MSG_CHECKING([how to link an embedded Python application])
67 python_libdir=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBDIR'))))"`
68 python_ldlibrary=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDLIBRARY'))))"`
69 python_so=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('SO'))))"`
70 ldlibrary=`echo "${python_ldlibrary}" | sed "s/${python_so}$//"`
71 python_enable_shared=`${PYTHON} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_vars().get('Py_ENABLE_SHARED',0))"`
73 if test x"${python_libdir}" != x"" -a x"${python_ldlibrary}" != x"" -a x"${python_ldlibrary}" != x"${ldlibrary}"
75 # New way: use the official shared library
76 ldlibrary=`echo "${ldlibrary}" | sed "s/^lib//"`
77 python_libspec="-L${python_libdir} -l${ldlibrary}"
79 # Old way: use libpython from python_configdir
80 python_libdir="${python_configdir}"
81 # LDVERSION was introduced in Python 3.2.
82 python_ldversion=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDVERSION'))))"`
83 if test x"${python_ldversion}" = x""; then
84 python_ldversion=$python_version
86 python_libspec="-L${python_libdir} -lpython${python_ldversion}"
89 python_additional_libs=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBS','LIBC','LIBM','BASEMODLIBS'))))"`
91 AC_MSG_RESULT([${python_libspec} ${python_additional_libs}])
93 AC_SUBST(python_libdir)[]dnl
94 AC_SUBST(python_libspec)[]dnl
95 AC_SUBST(python_additional_libs)[]dnl
96 AC_SUBST(python_enable_shared)[]dnl
98 # threaded python is not supported on OpenBSD
99 AC_MSG_CHECKING(whether Python is compiled with thread support)
100 pythreads=`${PYTHON} -c "import sys; print(int('thread' in sys.builtin_module_names))"`
101 if test "$pythreads" = "1"; then
105 AC_MSG_ERROR([threaded Python not supported on this platform])
112 ])# PGAC_CHECK_PYTHON_EMBED_SETUP