xref: /freebsd/contrib/unbound/acx_python.m4 (revision a39a5a6905612447def27b66ffe73b9d11efd80c)
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
21*a39a5a69SCy Schubert	# Check if you have sysconfig
22*a39a5a69SCy Schubert	AC_MSG_CHECKING([for the sysconfig Python module])
23*a39a5a69SCy Schubert        if ac_sysconfig_result=`$PYTHON -c "import sysconfig" 2>&1`; then
24*a39a5a69SCy Schubert                AC_MSG_RESULT([yes])
25*a39a5a69SCy Schubert		sysconfig_module="sysconfig"
26*a39a5a69SCy Schubert		# if yes, use sysconfig, because distutils is deprecated.
27*a39a5a69SCy Schubert	else
28*a39a5a69SCy Schubert                AC_MSG_RESULT([no])
29*a39a5a69SCy Schubert		# if no, try to use distutils
30*a39a5a69SCy Schubert
31b7579f77SDag-Erling Smørgrav		#
32b7579f77SDag-Erling Smørgrav		# Check if you have distutils, else fail
33b7579f77SDag-Erling Smørgrav		#
34b7579f77SDag-Erling Smørgrav		AC_MSG_CHECKING([for the distutils Python package])
3565b390aaSDag-Erling Smørgrav		if ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`; then
36b7579f77SDag-Erling Smørgrav			AC_MSG_RESULT([yes])
37b7579f77SDag-Erling Smørgrav		else
38b7579f77SDag-Erling Smørgrav			AC_MSG_RESULT([no])
39b7579f77SDag-Erling Smørgrav			AC_MSG_ERROR([cannot import Python module "distutils".
40b7579f77SDag-Erling Smørgrav	Please check your Python installation. The error was:
41b7579f77SDag-Erling Smørgrav	$ac_distutils_result])
42b7579f77SDag-Erling Smørgrav			PYTHON_VERSION=""
43b7579f77SDag-Erling Smørgrav		fi
44b7579f77SDag-Erling Smørgrav
45*a39a5a69SCy Schubert		sysconfig_module="distutils.sysconfig"
46*a39a5a69SCy Schubert	fi
47*a39a5a69SCy Schubert
48b7579f77SDag-Erling Smørgrav        #
49b7579f77SDag-Erling Smørgrav        # Check for Python include path
50b7579f77SDag-Erling Smørgrav        #
51b7579f77SDag-Erling Smørgrav        AC_MSG_CHECKING([for Python include path])
52b7579f77SDag-Erling Smørgrav        if test -z "$PYTHON_CPPFLAGS"; then
53*a39a5a69SCy Schubert		if test "$sysconfig_module" = "sysconfig"; then
54*a39a5a69SCy Schubert			python_path=`$PYTHON -c 'import sysconfig; \
55*a39a5a69SCy Schubert				print(sysconfig.get_path("include"));'`
56*a39a5a69SCy Schubert		else
57b7579f77SDag-Erling Smørgrav			python_path=`$PYTHON -c "import distutils.sysconfig; \
58ff825849SDag-Erling Smørgrav				print(distutils.sysconfig.get_python_inc());"`
59*a39a5a69SCy Schubert		fi
60b7579f77SDag-Erling Smørgrav                if test -n "${python_path}"; then
61b7579f77SDag-Erling Smørgrav                        python_path="-I$python_path"
62b7579f77SDag-Erling Smørgrav                fi
63b7579f77SDag-Erling Smørgrav                PYTHON_CPPFLAGS=$python_path
64b7579f77SDag-Erling Smørgrav        fi
65b7579f77SDag-Erling Smørgrav        AC_MSG_RESULT([$PYTHON_CPPFLAGS])
66b7579f77SDag-Erling Smørgrav        AC_SUBST([PYTHON_CPPFLAGS])
67b7579f77SDag-Erling Smørgrav
68b7579f77SDag-Erling Smørgrav        #
69b7579f77SDag-Erling Smørgrav        # Check for Python library path
70b7579f77SDag-Erling Smørgrav        #
71b7579f77SDag-Erling Smørgrav        AC_MSG_CHECKING([for Python library path])
72b7579f77SDag-Erling Smørgrav        if test -z "$PYTHON_LDFLAGS"; then
73*a39a5a69SCy Schubert                PYTHON_LDFLAGS=`$PYTHON -c "from $sysconfig_module import *; \
74b5663de9SDag-Erling Smørgrav                        print('-L'+get_config_var('LIBDIR')+' -L'+get_config_var('LIBDEST')+' '+get_config_var('BLDLIBRARY'));"`
75b7579f77SDag-Erling Smørgrav        fi
76b7579f77SDag-Erling Smørgrav        AC_MSG_RESULT([$PYTHON_LDFLAGS])
77b7579f77SDag-Erling Smørgrav        AC_SUBST([PYTHON_LDFLAGS])
78b7579f77SDag-Erling Smørgrav
7925039b37SCy Schubert        if test -z "$PYTHON_LIBDIR"; then
80*a39a5a69SCy Schubert                PYTHON_LIBDIR=`$PYTHON -c "from $sysconfig_module import *; \
8125039b37SCy Schubert                        print(get_config_var('LIBDIR'));"`
8225039b37SCy Schubert        fi
8325039b37SCy Schubert
84b7579f77SDag-Erling Smørgrav        #
85b7579f77SDag-Erling Smørgrav        # Check for site packages
86b7579f77SDag-Erling Smørgrav        #
87b7579f77SDag-Erling Smørgrav        AC_MSG_CHECKING([for Python site-packages path])
88b7579f77SDag-Erling Smørgrav        if test -z "$PYTHON_SITE_PKG"; then
89*a39a5a69SCy Schubert		if test "$sysconfig_module" = "sysconfig"; then
90*a39a5a69SCy Schubert			PYTHON_SITE_PKG=`$PYTHON -c 'import sysconfig; \
91*a39a5a69SCy Schubert				print(sysconfig.get_path("platlib"));'`
92*a39a5a69SCy Schubert		else
93b7579f77SDag-Erling Smørgrav			PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
94ff825849SDag-Erling Smørgrav				print(distutils.sysconfig.get_python_lib(1,0));"`
95b7579f77SDag-Erling Smørgrav		fi
96*a39a5a69SCy Schubert        fi
97b7579f77SDag-Erling Smørgrav        AC_MSG_RESULT([$PYTHON_SITE_PKG])
98b7579f77SDag-Erling Smørgrav        AC_SUBST([PYTHON_SITE_PKG])
99b7579f77SDag-Erling Smørgrav
100b7579f77SDag-Erling Smørgrav        #
101b7579f77SDag-Erling Smørgrav        # final check to see if everything compiles alright
102b7579f77SDag-Erling Smørgrav        #
103b7579f77SDag-Erling Smørgrav        AC_MSG_CHECKING([consistency of all components of python development environment])
104b7579f77SDag-Erling Smørgrav        AC_LANG_PUSH([C])
105b7579f77SDag-Erling Smørgrav        # save current global flags
1068ed2b524SDag-Erling Smørgrav        ac_save_LIBS="$LIBS"
1078ed2b524SDag-Erling Smørgrav        ac_save_CPPFLAGS="$CPPFLAGS"
1088ed2b524SDag-Erling Smørgrav
1098ed2b524SDag-Erling Smørgrav        LIBS="$LIBS $PYTHON_LDFLAGS"
1108ed2b524SDag-Erling Smørgrav        CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS"
111f44e67d1SCy Schubert        AC_LINK_IFELSE([AC_LANG_PROGRAM([[
112b7579f77SDag-Erling Smørgrav                #include <Python.h>
113f44e67d1SCy Schubert        ]],[[
114b7579f77SDag-Erling Smørgrav                Py_Initialize();
115f44e67d1SCy Schubert        ]])],[pythonexists=yes],[pythonexists=no])
116b7579f77SDag-Erling Smørgrav
117b7579f77SDag-Erling Smørgrav        AC_MSG_RESULT([$pythonexists])
118b7579f77SDag-Erling Smørgrav
119b7579f77SDag-Erling Smørgrav        if test ! "$pythonexists" = "yes"; then
120b7579f77SDag-Erling Smørgrav           AC_MSG_ERROR([
121b7579f77SDag-Erling Smørgrav  Could not link test program to Python. Maybe the main Python library has been
122b7579f77SDag-Erling Smørgrav  installed in some non-standard library path. If so, pass it to configure,
123b7579f77SDag-Erling Smørgrav  via the LDFLAGS environment variable.
124b7579f77SDag-Erling Smørgrav  Example: ./configure LDFLAGS="-L/usr/non-standard-path/python/lib"
125b7579f77SDag-Erling Smørgrav  ============================================================================
126b7579f77SDag-Erling Smørgrav   ERROR!
127b7579f77SDag-Erling Smørgrav   You probably have to install the development version of the Python package
128b7579f77SDag-Erling Smørgrav   for your distribution.  The exact name of this package varies among them.
129b7579f77SDag-Erling Smørgrav  ============================================================================
130b7579f77SDag-Erling Smørgrav           ])
131b7579f77SDag-Erling Smørgrav          PYTHON_VERSION=""
132b7579f77SDag-Erling Smørgrav        fi
133b7579f77SDag-Erling Smørgrav        AC_LANG_POP
134b7579f77SDag-Erling Smørgrav        # turn back to default flags
135b7579f77SDag-Erling Smørgrav        CPPFLAGS="$ac_save_CPPFLAGS"
136b7579f77SDag-Erling Smørgrav        LIBS="$ac_save_LIBS"
137b7579f77SDag-Erling Smørgrav
138b7579f77SDag-Erling Smørgrav        #
139b7579f77SDag-Erling Smørgrav        # all done!
140b7579f77SDag-Erling Smørgrav        #
141b7579f77SDag-Erling Smørgrav])
142b7579f77SDag-Erling Smørgrav
143