xref: /freebsd/contrib/unbound/acx_python.m4 (revision b5663de9eb877cb7ebb54c4ae4eb81007bb17df4)
1b7579f77SDag-Erling SmørgravAC_DEFUN([AC_PYTHON_DEVEL],[
2b7579f77SDag-Erling Smørgrav        #
3b7579f77SDag-Erling Smørgrav        # Allow the use of a (user set) custom python version
4b7579f77SDag-Erling Smørgrav        #
5b7579f77SDag-Erling Smørgrav        AC_ARG_VAR([PYTHON_VERSION],[The installed Python
6b7579f77SDag-Erling Smørgrav                version to use, for example '2.3'. This string
7b7579f77SDag-Erling Smørgrav                will be appended to the Python interpreter
8b7579f77SDag-Erling Smørgrav                canonical name.])
9b7579f77SDag-Erling Smørgrav
10b7579f77SDag-Erling Smørgrav        AC_PATH_PROG([PYTHON],[python[$PYTHON_VERSION]])
11b7579f77SDag-Erling Smørgrav        if test -z "$PYTHON"; then
12b7579f77SDag-Erling Smørgrav           AC_MSG_ERROR([Cannot find python$PYTHON_VERSION in your system path])
13b7579f77SDag-Erling Smørgrav           PYTHON_VERSION=""
14b7579f77SDag-Erling Smørgrav        fi
15b7579f77SDag-Erling Smørgrav
16b7579f77SDag-Erling Smørgrav        if test -z "$PYTHON_VERSION"; then
17ff825849SDag-Erling Smørgrav		PYTHON_VERSION=`$PYTHON -c "import sys; \
18ff825849SDag-Erling Smørgrav			print(sys.version.split()[[0]])"`
19b7579f77SDag-Erling Smørgrav	fi
20b7579f77SDag-Erling Smørgrav
21b7579f77SDag-Erling Smørgrav        #
22b7579f77SDag-Erling Smørgrav        # Check if you have distutils, else fail
23b7579f77SDag-Erling Smørgrav        #
24b7579f77SDag-Erling Smørgrav        AC_MSG_CHECKING([for the distutils Python package])
25b7579f77SDag-Erling Smørgrav        ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`
26b7579f77SDag-Erling Smørgrav        if test -z "$ac_distutils_result"; then
27b7579f77SDag-Erling Smørgrav                AC_MSG_RESULT([yes])
28b7579f77SDag-Erling Smørgrav        else
29b7579f77SDag-Erling Smørgrav                AC_MSG_RESULT([no])
30b7579f77SDag-Erling Smørgrav                AC_MSG_ERROR([cannot import Python module "distutils".
31b7579f77SDag-Erling SmørgravPlease check your Python installation. The error was:
32b7579f77SDag-Erling Smørgrav$ac_distutils_result])
33b7579f77SDag-Erling Smørgrav                PYTHON_VERSION=""
34b7579f77SDag-Erling Smørgrav        fi
35b7579f77SDag-Erling Smørgrav
36b7579f77SDag-Erling Smørgrav        #
37b7579f77SDag-Erling Smørgrav        # Check for Python include path
38b7579f77SDag-Erling Smørgrav        #
39b7579f77SDag-Erling Smørgrav        AC_MSG_CHECKING([for Python include path])
40b7579f77SDag-Erling Smørgrav        if test -z "$PYTHON_CPPFLAGS"; then
41b7579f77SDag-Erling Smørgrav                python_path=`$PYTHON -c "import distutils.sysconfig; \
42ff825849SDag-Erling Smørgrav                        print(distutils.sysconfig.get_python_inc());"`
43b7579f77SDag-Erling Smørgrav                if test -n "${python_path}"; then
44b7579f77SDag-Erling Smørgrav                        python_path="-I$python_path"
45b7579f77SDag-Erling Smørgrav                fi
46b7579f77SDag-Erling Smørgrav                PYTHON_CPPFLAGS=$python_path
47b7579f77SDag-Erling Smørgrav        fi
48b7579f77SDag-Erling Smørgrav        AC_MSG_RESULT([$PYTHON_CPPFLAGS])
49b7579f77SDag-Erling Smørgrav        AC_SUBST([PYTHON_CPPFLAGS])
50b7579f77SDag-Erling Smørgrav
51b7579f77SDag-Erling Smørgrav        #
52b7579f77SDag-Erling Smørgrav        # Check for Python library path
53b7579f77SDag-Erling Smørgrav        #
54b7579f77SDag-Erling Smørgrav        AC_MSG_CHECKING([for Python library path])
55b7579f77SDag-Erling Smørgrav        if test -z "$PYTHON_LDFLAGS"; then
56b7579f77SDag-Erling Smørgrav                PYTHON_LDFLAGS=`$PYTHON -c "from distutils.sysconfig import *; \
57*b5663de9SDag-Erling Smørgrav                        print('-L'+get_config_var('LIBDIR')+' -L'+get_config_var('LIBDEST')+' '+get_config_var('BLDLIBRARY'));"`
58b7579f77SDag-Erling Smørgrav        fi
59b7579f77SDag-Erling Smørgrav        AC_MSG_RESULT([$PYTHON_LDFLAGS])
60b7579f77SDag-Erling Smørgrav        AC_SUBST([PYTHON_LDFLAGS])
61b7579f77SDag-Erling Smørgrav
62b7579f77SDag-Erling Smørgrav        #
63b7579f77SDag-Erling Smørgrav        # Check for site packages
64b7579f77SDag-Erling Smørgrav        #
65b7579f77SDag-Erling Smørgrav        AC_MSG_CHECKING([for Python site-packages path])
66b7579f77SDag-Erling Smørgrav        if test -z "$PYTHON_SITE_PKG"; then
67b7579f77SDag-Erling Smørgrav                PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
68ff825849SDag-Erling Smørgrav                        print(distutils.sysconfig.get_python_lib(1,0));"`
69b7579f77SDag-Erling Smørgrav        fi
70b7579f77SDag-Erling Smørgrav        AC_MSG_RESULT([$PYTHON_SITE_PKG])
71b7579f77SDag-Erling Smørgrav        AC_SUBST([PYTHON_SITE_PKG])
72b7579f77SDag-Erling Smørgrav
73b7579f77SDag-Erling Smørgrav        #
74b7579f77SDag-Erling Smørgrav        # final check to see if everything compiles alright
75b7579f77SDag-Erling Smørgrav        #
76b7579f77SDag-Erling Smørgrav        AC_MSG_CHECKING([consistency of all components of python development environment])
77b7579f77SDag-Erling Smørgrav        AC_LANG_PUSH([C])
78b7579f77SDag-Erling Smørgrav        # save current global flags
798ed2b524SDag-Erling Smørgrav        ac_save_LIBS="$LIBS"
808ed2b524SDag-Erling Smørgrav        ac_save_CPPFLAGS="$CPPFLAGS"
818ed2b524SDag-Erling Smørgrav
828ed2b524SDag-Erling Smørgrav        LIBS="$LIBS $PYTHON_LDFLAGS"
838ed2b524SDag-Erling Smørgrav        CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS"
84b7579f77SDag-Erling Smørgrav        AC_TRY_LINK([
85b7579f77SDag-Erling Smørgrav                #include <Python.h>
86b7579f77SDag-Erling Smørgrav        ],[
87b7579f77SDag-Erling Smørgrav                Py_Initialize();
88b7579f77SDag-Erling Smørgrav        ],[pythonexists=yes],[pythonexists=no])
89b7579f77SDag-Erling Smørgrav
90b7579f77SDag-Erling Smørgrav        AC_MSG_RESULT([$pythonexists])
91b7579f77SDag-Erling Smørgrav
92b7579f77SDag-Erling Smørgrav        if test ! "$pythonexists" = "yes"; then
93b7579f77SDag-Erling Smørgrav           AC_MSG_ERROR([
94b7579f77SDag-Erling Smørgrav  Could not link test program to Python. Maybe the main Python library has been
95b7579f77SDag-Erling Smørgrav  installed in some non-standard library path. If so, pass it to configure,
96b7579f77SDag-Erling Smørgrav  via the LDFLAGS environment variable.
97b7579f77SDag-Erling Smørgrav  Example: ./configure LDFLAGS="-L/usr/non-standard-path/python/lib"
98b7579f77SDag-Erling Smørgrav  ============================================================================
99b7579f77SDag-Erling Smørgrav   ERROR!
100b7579f77SDag-Erling Smørgrav   You probably have to install the development version of the Python package
101b7579f77SDag-Erling Smørgrav   for your distribution.  The exact name of this package varies among them.
102b7579f77SDag-Erling Smørgrav  ============================================================================
103b7579f77SDag-Erling Smørgrav           ])
104b7579f77SDag-Erling Smørgrav          PYTHON_VERSION=""
105b7579f77SDag-Erling Smørgrav        fi
106b7579f77SDag-Erling Smørgrav        AC_LANG_POP
107b7579f77SDag-Erling Smørgrav        # turn back to default flags
108b7579f77SDag-Erling Smørgrav        CPPFLAGS="$ac_save_CPPFLAGS"
109b7579f77SDag-Erling Smørgrav        LIBS="$ac_save_LIBS"
110b7579f77SDag-Erling Smørgrav
111b7579f77SDag-Erling Smørgrav        #
112b7579f77SDag-Erling Smørgrav        # all done!
113b7579f77SDag-Erling Smørgrav        #
114b7579f77SDag-Erling Smørgrav])
115b7579f77SDag-Erling Smørgrav
116