Mercurial > libpst
comparison m4/ax_python_devel.m4 @ 380:1e1970f93f94 stable-0-6-72
allow all 7 days in bydays recurring appointment, update for fedora python packaging
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Wed, 01 Aug 2018 08:15:34 -0700 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
379:bbd198da4033 | 380:1e1970f93f94 |
---|---|
1 # =========================================================================== | |
2 # https://www.gnu.org/software/autoconf-archive/ax_python_devel.html | |
3 # =========================================================================== | |
4 # | |
5 # SYNOPSIS | |
6 # | |
7 # AX_PYTHON_DEVEL([version]) | |
8 # | |
9 # DESCRIPTION | |
10 # | |
11 # Note: Defines as a precious variable "PYTHON_VERSION". Don't override it | |
12 # in your configure.ac. | |
13 # | |
14 # This macro checks for Python and tries to get the include path to | |
15 # 'Python.h'. It provides the $(PYTHON_CPPFLAGS) and $(PYTHON_LIBS) output | |
16 # variables. It also exports $(PYTHON_EXTRA_LIBS) and | |
17 # $(PYTHON_EXTRA_LDFLAGS) for embedding Python in your code. | |
18 # | |
19 # You can search for some particular version of Python by passing a | |
20 # parameter to this macro, for example ">= '2.3.1'", or "== '2.4'". Please | |
21 # note that you *have* to pass also an operator along with the version to | |
22 # match, and pay special attention to the single quotes surrounding the | |
23 # version number. Don't use "PYTHON_VERSION" for this: that environment | |
24 # variable is declared as precious and thus reserved for the end-user. | |
25 # | |
26 # This macro should work for all versions of Python >= 2.1.0. As an end | |
27 # user, you can disable the check for the python version by setting the | |
28 # PYTHON_NOVERSIONCHECK environment variable to something else than the | |
29 # empty string. | |
30 # | |
31 # If you need to use this macro for an older Python version, please | |
32 # contact the authors. We're always open for feedback. | |
33 # | |
34 # LICENSE | |
35 # | |
36 # Copyright (c) 2009 Sebastian Huber <sebastian-huber@web.de> | |
37 # Copyright (c) 2009 Alan W. Irwin | |
38 # Copyright (c) 2009 Rafael Laboissiere <rafael@laboissiere.net> | |
39 # Copyright (c) 2009 Andrew Collier | |
40 # Copyright (c) 2009 Matteo Settenvini <matteo@member.fsf.org> | |
41 # Copyright (c) 2009 Horst Knorr <hk_classes@knoda.org> | |
42 # Copyright (c) 2013 Daniel Mullner <muellner@math.stanford.edu> | |
43 # | |
44 # This program is free software: you can redistribute it and/or modify it | |
45 # under the terms of the GNU General Public License as published by the | |
46 # Free Software Foundation, either version 3 of the License, or (at your | |
47 # option) any later version. | |
48 # | |
49 # This program is distributed in the hope that it will be useful, but | |
50 # WITHOUT ANY WARRANTY; without even the implied warranty of | |
51 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General | |
52 # Public License for more details. | |
53 # | |
54 # You should have received a copy of the GNU General Public License along | |
55 # with this program. If not, see <https://www.gnu.org/licenses/>. | |
56 # | |
57 # As a special exception, the respective Autoconf Macro's copyright owner | |
58 # gives unlimited permission to copy, distribute and modify the configure | |
59 # scripts that are the output of Autoconf when processing the Macro. You | |
60 # need not follow the terms of the GNU General Public License when using | |
61 # or distributing such scripts, even though portions of the text of the | |
62 # Macro appear in them. The GNU General Public License (GPL) does govern | |
63 # all other use of the material that constitutes the Autoconf Macro. | |
64 # | |
65 # This special exception to the GPL applies to versions of the Autoconf | |
66 # Macro released by the Autoconf Archive. When you make and distribute a | |
67 # modified version of the Autoconf Macro, you may extend this special | |
68 # exception to the GPL to apply to your modified version as well. | |
69 | |
70 #serial 21 | |
71 | |
72 AU_ALIAS([AC_PYTHON_DEVEL], [AX_PYTHON_DEVEL]) | |
73 AC_DEFUN([AX_PYTHON_DEVEL],[ | |
74 # | |
75 # Allow the use of a (user set) custom python version | |
76 # | |
77 AC_ARG_VAR([PYTHON_VERSION],[The installed Python | |
78 version to use, for example '2.3'. This string | |
79 will be appended to the Python interpreter | |
80 canonical name.]) | |
81 | |
82 AC_PATH_PROG([PYTHON],[python[$PYTHON_VERSION]]) | |
83 if test -z "$PYTHON"; then | |
84 AC_MSG_ERROR([Cannot find python$PYTHON_VERSION in your system path]) | |
85 PYTHON_VERSION="" | |
86 fi | |
87 | |
88 # | |
89 # Check for a version of Python >= 2.1.0 | |
90 # | |
91 AC_MSG_CHECKING([for a version of Python >= '2.1.0']) | |
92 ac_supports_python_ver=`$PYTHON -c "import sys; \ | |
93 ver = sys.version.split ()[[0]]; \ | |
94 print (ver >= '2.1.0')"` | |
95 if test "$ac_supports_python_ver" != "True"; then | |
96 if test -z "$PYTHON_NOVERSIONCHECK"; then | |
97 AC_MSG_RESULT([no]) | |
98 AC_MSG_FAILURE([ | |
99 This version of the AC@&t@_PYTHON_DEVEL macro | |
100 doesn't work properly with versions of Python before | |
101 2.1.0. You may need to re-run configure, setting the | |
102 variables PYTHON_CPPFLAGS, PYTHON_LIBS, PYTHON_SITE_PKG, | |
103 PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand. | |
104 Moreover, to disable this check, set PYTHON_NOVERSIONCHECK | |
105 to something else than an empty string. | |
106 ]) | |
107 else | |
108 AC_MSG_RESULT([skip at user request]) | |
109 fi | |
110 else | |
111 AC_MSG_RESULT([yes]) | |
112 fi | |
113 | |
114 # | |
115 # if the macro parameter ``version'' is set, honour it | |
116 # | |
117 if test -n "$1"; then | |
118 AC_MSG_CHECKING([for a version of Python $1]) | |
119 ac_supports_python_ver=`$PYTHON -c "import sys; \ | |
120 ver = '.'.join(sys.version.split('.')[[:2]]); \ | |
121 print (ver == '$1')"` | |
122 if test "$ac_supports_python_ver" = "True"; then | |
123 AC_MSG_RESULT([yes]) | |
124 else | |
125 AC_MSG_RESULT([no]) | |
126 AC_MSG_ERROR([this package requires Python $1. | |
127 If you have it installed, but it isn't the default Python | |
128 interpreter in your system path, please pass the PYTHON_VERSION | |
129 variable to configure. See ``configure --help'' for reference. | |
130 ]) | |
131 PYTHON_VERSION="" | |
132 fi | |
133 fi | |
134 | |
135 # | |
136 # Check if you have distutils, else fail | |
137 # | |
138 AC_MSG_CHECKING([for the distutils Python package]) | |
139 ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` | |
140 if test $? -eq 0; then | |
141 AC_MSG_RESULT([yes]) | |
142 else | |
143 AC_MSG_RESULT([no]) | |
144 AC_MSG_ERROR([cannot import Python module "distutils". | |
145 Please check your Python installation. The error was: | |
146 $ac_distutils_result]) | |
147 PYTHON_VERSION="" | |
148 fi | |
149 | |
150 # | |
151 # Check for Python include path | |
152 # | |
153 AC_MSG_CHECKING([for Python include path]) | |
154 if test -z "$PYTHON_CPPFLAGS"; then | |
155 python_path=`$PYTHON -c "import distutils.sysconfig; \ | |
156 print (distutils.sysconfig.get_python_inc ());"` | |
157 plat_python_path=`$PYTHON -c "import distutils.sysconfig; \ | |
158 print (distutils.sysconfig.get_python_inc (plat_specific=1));"` | |
159 if test -n "${python_path}"; then | |
160 if test "${plat_python_path}" != "${python_path}"; then | |
161 python_path="-I$python_path -I$plat_python_path" | |
162 else | |
163 python_path="-I$python_path" | |
164 fi | |
165 fi | |
166 PYTHON_CPPFLAGS=$python_path | |
167 fi | |
168 AC_MSG_RESULT([$PYTHON_CPPFLAGS]) | |
169 AC_SUBST([PYTHON_CPPFLAGS]) | |
170 | |
171 # | |
172 # Check for Python library path | |
173 # | |
174 AC_MSG_CHECKING([for Python library path]) | |
175 if test -z "$PYTHON_LIBS"; then | |
176 # (makes two attempts to ensure we've got a version number | |
177 # from the interpreter) | |
178 ac_python_version=`cat<<EOD | $PYTHON - | |
179 | |
180 # join all versioning strings, on some systems | |
181 # major/minor numbers could be in different list elements | |
182 from distutils.sysconfig import * | |
183 e = get_config_var('VERSION') | |
184 if e is not None: | |
185 print(e) | |
186 EOD` | |
187 | |
188 if test -z "$ac_python_version"; then | |
189 if test -n "$PYTHON_VERSION"; then | |
190 ac_python_version=$PYTHON_VERSION | |
191 else | |
192 ac_python_version=`$PYTHON -c "import sys; \ | |
193 print (sys.version[[:3]])"` | |
194 fi | |
195 fi | |
196 | |
197 # Make the versioning information available to the compiler | |
198 AC_DEFINE_UNQUOTED([HAVE_PYTHON], ["$ac_python_version"], | |
199 [If available, contains the Python version number currently in use.]) | |
200 | |
201 # First, the library directory: | |
202 ac_python_libdir=`cat<<EOD | $PYTHON - | |
203 | |
204 # There should be only one | |
205 import distutils.sysconfig | |
206 e = distutils.sysconfig.get_config_var('LIBDIR') | |
207 if e is not None: | |
208 print (e) | |
209 EOD` | |
210 | |
211 # Now, for the library: | |
212 ac_python_library=`cat<<EOD | $PYTHON - | |
213 | |
214 import distutils.sysconfig | |
215 c = distutils.sysconfig.get_config_vars() | |
216 if 'LDVERSION' in c: | |
217 print ('python'+c[['LDVERSION']]) | |
218 else: | |
219 print ('python'+c[['VERSION']]) | |
220 EOD` | |
221 | |
222 # This small piece shamelessly adapted from PostgreSQL python macro; | |
223 # credits goes to momjian, I think. I'd like to put the right name | |
224 # in the credits, if someone can point me in the right direction... ? | |
225 # | |
226 if test -n "$ac_python_libdir" -a -n "$ac_python_library" | |
227 then | |
228 # use the official shared library | |
229 ac_python_library=`echo "$ac_python_library" | sed "s/^lib//"` | |
230 PYTHON_LIBS="-L$ac_python_libdir -l$ac_python_library" | |
231 else | |
232 # old way: use libpython from python_configdir | |
233 ac_python_libdir=`$PYTHON -c \ | |
234 "from distutils.sysconfig import get_python_lib as f; \ | |
235 import os; \ | |
236 print (os.path.join(f(plat_specific=1, standard_lib=1), 'config'));"` | |
237 PYTHON_LIBS="-L$ac_python_libdir -lpython$ac_python_version" | |
238 fi | |
239 | |
240 if test -z "PYTHON_LIBS"; then | |
241 AC_MSG_ERROR([ | |
242 Cannot determine location of your Python DSO. Please check it was installed with | |
243 dynamic libraries enabled, or try setting PYTHON_LIBS by hand. | |
244 ]) | |
245 fi | |
246 fi | |
247 AC_MSG_RESULT([$PYTHON_LIBS]) | |
248 AC_SUBST([PYTHON_LIBS]) | |
249 | |
250 # | |
251 # Check for site packages | |
252 # | |
253 AC_MSG_CHECKING([for Python site-packages path]) | |
254 if test -z "$PYTHON_SITE_PKG"; then | |
255 PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \ | |
256 print (distutils.sysconfig.get_python_lib(0,0));"` | |
257 fi | |
258 AC_MSG_RESULT([$PYTHON_SITE_PKG]) | |
259 AC_SUBST([PYTHON_SITE_PKG]) | |
260 | |
261 # | |
262 # libraries which must be linked in when embedding | |
263 # | |
264 AC_MSG_CHECKING(python extra libraries) | |
265 if test -z "$PYTHON_EXTRA_LIBS"; then | |
266 PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \ | |
267 conf = distutils.sysconfig.get_config_var; \ | |
268 print (conf('LIBS') + ' ' + conf('SYSLIBS'))"` | |
269 fi | |
270 AC_MSG_RESULT([$PYTHON_EXTRA_LIBS]) | |
271 AC_SUBST(PYTHON_EXTRA_LIBS) | |
272 | |
273 # | |
274 # linking flags needed when embedding | |
275 # | |
276 AC_MSG_CHECKING(python extra linking flags) | |
277 if test -z "$PYTHON_EXTRA_LDFLAGS"; then | |
278 PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \ | |
279 conf = distutils.sysconfig.get_config_var; \ | |
280 print (conf('LINKFORSHARED'))"` | |
281 fi | |
282 AC_MSG_RESULT([$PYTHON_EXTRA_LDFLAGS]) | |
283 AC_SUBST(PYTHON_EXTRA_LDFLAGS) | |
284 | |
285 # | |
286 # final check to see if everything compiles alright | |
287 # | |
288 AC_MSG_CHECKING([consistency of all components of python development environment]) | |
289 # save current global flags | |
290 ac_save_LIBS="$LIBS" | |
291 ac_save_LDFLAGS="$LDFLAGS" | |
292 ac_save_CPPFLAGS="$CPPFLAGS" | |
293 LIBS="$ac_save_LIBS $PYTHON_LIBS $PYTHON_EXTRA_LIBS $PYTHON_EXTRA_LIBS" | |
294 LDFLAGS="$ac_save_LDFLAGS $PYTHON_EXTRA_LDFLAGS" | |
295 CPPFLAGS="$ac_save_CPPFLAGS $PYTHON_CPPFLAGS" | |
296 AC_LANG_PUSH([C]) | |
297 AC_LINK_IFELSE([ | |
298 AC_LANG_PROGRAM([[#include <Python.h>]], | |
299 [[Py_Initialize();]]) | |
300 ],[pythonexists=yes],[pythonexists=no]) | |
301 AC_LANG_POP([C]) | |
302 # turn back to default flags | |
303 CPPFLAGS="$ac_save_CPPFLAGS" | |
304 LIBS="$ac_save_LIBS" | |
305 LDFLAGS="$ac_save_LDFLAGS" | |
306 | |
307 AC_MSG_RESULT([$pythonexists]) | |
308 | |
309 if test ! "x$pythonexists" = "xyes"; then | |
310 AC_MSG_FAILURE([ | |
311 Could not link test program to Python. Maybe the main Python library has been | |
312 installed in some non-standard library path. If so, pass it to configure, | |
313 via the LIBS environment variable. | |
314 Example: ./configure LIBS="-L/usr/non-standard-path/python/lib" | |
315 ============================================================================ | |
316 ERROR! | |
317 You probably have to install the development version of the Python package | |
318 for your distribution. The exact name of this package varies among them. | |
319 ============================================================================ | |
320 ]) | |
321 PYTHON_VERSION="" | |
322 fi | |
323 | |
324 # | |
325 # all done! | |
326 # | |
327 ]) |