xref: /freebsd/contrib/unbound/acx_python.m4 (revision 25039b37d3883b8fdae50475cbea41a255a08ee2)
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])
2565b390aaSDag-Erling Smørgrav        if ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`; then
26b7579f77SDag-Erling Smørgrav                AC_MSG_RESULT([yes])
27b7579f77SDag-Erling Smørgrav        else
28b7579f77SDag-Erling Smørgrav                AC_MSG_RESULT([no])
29b7579f77SDag-Erling Smørgrav                AC_MSG_ERROR([cannot import Python module "distutils".
30b7579f77SDag-Erling SmørgravPlease check your Python installation. The error was:
31b7579f77SDag-Erling Smørgrav$ac_distutils_result])
32b7579f77SDag-Erling Smørgrav                PYTHON_VERSION=""
33b7579f77SDag-Erling Smørgrav        fi
34b7579f77SDag-Erling Smørgrav
35b7579f77SDag-Erling Smørgrav        #
36b7579f77SDag-Erling Smørgrav        # Check for Python include path
37b7579f77SDag-Erling Smørgrav        #
38b7579f77SDag-Erling Smørgrav        AC_MSG_CHECKING([for Python include path])
39b7579f77SDag-Erling Smørgrav        if test -z "$PYTHON_CPPFLAGS"; then
40b7579f77SDag-Erling Smørgrav                python_path=`$PYTHON -c "import distutils.sysconfig; \
41ff825849SDag-Erling Smørgrav                        print(distutils.sysconfig.get_python_inc());"`
42b7579f77SDag-Erling Smørgrav                if test -n "${python_path}"; then
43b7579f77SDag-Erling Smørgrav                        python_path="-I$python_path"
44b7579f77SDag-Erling Smørgrav                fi
45b7579f77SDag-Erling Smørgrav                PYTHON_CPPFLAGS=$python_path
46b7579f77SDag-Erling Smørgrav        fi
47b7579f77SDag-Erling Smørgrav        AC_MSG_RESULT([$PYTHON_CPPFLAGS])
48b7579f77SDag-Erling Smørgrav        AC_SUBST([PYTHON_CPPFLAGS])
49b7579f77SDag-Erling Smørgrav
50b7579f77SDag-Erling Smørgrav        #
51b7579f77SDag-Erling Smørgrav        # Check for Python library path
52b7579f77SDag-Erling Smørgrav        #
53b7579f77SDag-Erling Smørgrav        AC_MSG_CHECKING([for Python library path])
54b7579f77SDag-Erling Smørgrav        if test -z "$PYTHON_LDFLAGS"; then
55b7579f77SDag-Erling Smørgrav                PYTHON_LDFLAGS=`$PYTHON -c "from distutils.sysconfig import *; \
56b5663de9SDag-Erling Smørgrav                        print('-L'+get_config_var('LIBDIR')+' -L'+get_config_var('LIBDEST')+' '+get_config_var('BLDLIBRARY'));"`
57b7579f77SDag-Erling Smørgrav        fi
58b7579f77SDag-Erling Smørgrav        AC_MSG_RESULT([$PYTHON_LDFLAGS])
59b7579f77SDag-Erling Smørgrav        AC_SUBST([PYTHON_LDFLAGS])
60b7579f77SDag-Erling Smørgrav
61*25039b37SCy Schubert        if test -z "$PYTHON_LIBDIR"; then
62*25039b37SCy Schubert                PYTHON_LIBDIR=`$PYTHON -c "from distutils.sysconfig import *; \
63*25039b37SCy Schubert                        print(get_config_var('LIBDIR'));"`
64*25039b37SCy Schubert        fi
65*25039b37SCy Schubert
66b7579f77SDag-Erling Smørgrav        #
67b7579f77SDag-Erling Smørgrav        # Check for site packages
68b7579f77SDag-Erling Smørgrav        #
69b7579f77SDag-Erling Smørgrav        AC_MSG_CHECKING([for Python site-packages path])
70b7579f77SDag-Erling Smørgrav        if test -z "$PYTHON_SITE_PKG"; then
71b7579f77SDag-Erling Smørgrav                PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
72ff825849SDag-Erling Smørgrav                        print(distutils.sysconfig.get_python_lib(1,0));"`
73b7579f77SDag-Erling Smørgrav        fi
74b7579f77SDag-Erling Smørgrav        AC_MSG_RESULT([$PYTHON_SITE_PKG])
75b7579f77SDag-Erling Smørgrav        AC_SUBST([PYTHON_SITE_PKG])
76b7579f77SDag-Erling Smørgrav
77b7579f77SDag-Erling Smørgrav        #
78b7579f77SDag-Erling Smørgrav        # final check to see if everything compiles alright
79b7579f77SDag-Erling Smørgrav        #
80b7579f77SDag-Erling Smørgrav        AC_MSG_CHECKING([consistency of all components of python development environment])
81b7579f77SDag-Erling Smørgrav        AC_LANG_PUSH([C])
82b7579f77SDag-Erling Smørgrav        # save current global flags
838ed2b524SDag-Erling Smørgrav        ac_save_LIBS="$LIBS"
848ed2b524SDag-Erling Smørgrav        ac_save_CPPFLAGS="$CPPFLAGS"
858ed2b524SDag-Erling Smørgrav
868ed2b524SDag-Erling Smørgrav        LIBS="$LIBS $PYTHON_LDFLAGS"
878ed2b524SDag-Erling Smørgrav        CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS"
88b7579f77SDag-Erling Smørgrav        AC_TRY_LINK([
89b7579f77SDag-Erling Smørgrav                #include <Python.h>
90b7579f77SDag-Erling Smørgrav        ],[
91b7579f77SDag-Erling Smørgrav                Py_Initialize();
92b7579f77SDag-Erling Smørgrav        ],[pythonexists=yes],[pythonexists=no])
93b7579f77SDag-Erling Smørgrav
94b7579f77SDag-Erling Smørgrav        AC_MSG_RESULT([$pythonexists])
95b7579f77SDag-Erling Smørgrav
96b7579f77SDag-Erling Smørgrav        if test ! "$pythonexists" = "yes"; then
97b7579f77SDag-Erling Smørgrav           AC_MSG_ERROR([
98b7579f77SDag-Erling Smørgrav  Could not link test program to Python. Maybe the main Python library has been
99b7579f77SDag-Erling Smørgrav  installed in some non-standard library path. If so, pass it to configure,
100b7579f77SDag-Erling Smørgrav  via the LDFLAGS environment variable.
101b7579f77SDag-Erling Smørgrav  Example: ./configure LDFLAGS="-L/usr/non-standard-path/python/lib"
102b7579f77SDag-Erling Smørgrav  ============================================================================
103b7579f77SDag-Erling Smørgrav   ERROR!
104b7579f77SDag-Erling Smørgrav   You probably have to install the development version of the Python package
105b7579f77SDag-Erling Smørgrav   for your distribution.  The exact name of this package varies among them.
106b7579f77SDag-Erling Smørgrav  ============================================================================
107b7579f77SDag-Erling Smørgrav           ])
108b7579f77SDag-Erling Smørgrav          PYTHON_VERSION=""
109b7579f77SDag-Erling Smørgrav        fi
110b7579f77SDag-Erling Smørgrav        AC_LANG_POP
111b7579f77SDag-Erling Smørgrav        # turn back to default flags
112b7579f77SDag-Erling Smørgrav        CPPFLAGS="$ac_save_CPPFLAGS"
113b7579f77SDag-Erling Smørgrav        LIBS="$ac_save_LIBS"
114b7579f77SDag-Erling Smørgrav
115b7579f77SDag-Erling Smørgrav        #
116b7579f77SDag-Erling Smørgrav        # all done!
117b7579f77SDag-Erling Smørgrav        #
118b7579f77SDag-Erling Smørgrav])
119b7579f77SDag-Erling Smørgrav
120