~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to m4/pandora_python3_devel.m4

  • Committer: Jay Pipes
  • Date: 2009-08-25 12:56:22 UTC
  • mfrom: (1093.9.25 pandora-build)
  • mto: This revision was merged to the branch mainline in revision 1125.
  • Revision ID: jpipes@serialcoder-20090825125622-sxxkax9mw5bn98y5
Merging pandora build fixes with support for automake 1.11

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
dnl -*- mode: m4; c-basic-offset: 2; indent-tabs-mode: nil; -*-
 
2
dnl vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
 
3
dnl   
 
4
dnl pandora-build: A pedantic build system
 
5
dnl
 
6
dnl   Copyright (C) 2009 Sun Microsystems, Inc.
 
7
dnl   Copyright (c) 2008 Sebastian Huber <sebastian-huber@web.de>
 
8
dnl   Copyright (c) 2008 Alan W. Irwin <irwin@beluga.phys.uvic.ca>
 
9
dnl   Copyright (c) 2008 Rafael Laboissiere <rafael@laboissiere.net>
 
10
dnl   Copyright (c) 2008 Andrew Collier <colliera@ukzn.ac.za>
 
11
dnl   Copyright (c) 2008 Matteo Settenvini <matteo@member.fsf.org>
 
12
dnl   Copyright (c) 2008 Horst Knorr <hk_classes@knoda.org>
 
13
dnl
 
14
dnl   This program is free software: you can redistribute it and/or modify it
 
15
dnl   under the terms of the GNU General Public License as published by the
 
16
dnl   Free Software Foundation, either version 3 of the License, or (at your
 
17
dnl   option) any later version.
 
18
dnl
 
19
dnl   This program is distributed in the hope that it will be useful, but
 
20
dnl   WITHOUT ANY WARRANTY; without even the implied warranty of
 
21
dnl   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
 
22
dnl   Public License for more details.
 
23
dnl
 
24
dnl   You should have received a copy of the GNU General Public License along
 
25
dnl   with this program. If not, see <http://www.gnu.org/licenses/>.
 
26
dnl
 
27
dnl   As a special exception, the respective Autoconf Macro's copyright owner
 
28
dnl   gives unlimited permission to copy, distribute and modify the configure
 
29
dnl   scripts that are the output of Autoconf when processing the Macro. You
 
30
dnl   need not follow the terms of the GNU General Public License when using
 
31
dnl   or distributing such scripts, even though portions of the text of the
 
32
dnl   Macro appear in them. The GNU General Public License (GPL) does govern
 
33
dnl   all other use of the material that constitutes the Autoconf Macro.
 
34
dnl
 
35
dnl   This special exception to the GPL applies to versions of the Autoconf
 
36
dnl   Macro released by the Autoconf Macro Archive. When you make and
 
37
dnl   distribute a modified version of the Autoconf Macro, you may extend this
 
38
dnl   special exception to the GPL to apply to your modified version as well.
 
39
 
 
40
dnl SYNOPSIS
 
41
dnl
 
42
dnl   PANDORA_PYTHON3_DEVEL([version])
 
43
dnl
 
44
dnl DESCRIPTION
 
45
dnl
 
46
dnl   Note: Defines as a precious variable "PYTHON3_VERSION". Don't override it
 
47
dnl   in your configure.ac.
 
48
dnl
 
49
dnl   This macro checks for Python and tries to get the include path to
 
50
dnl   'Python.h'. It provides the $(PYTHON3_CPPFLAGS) and $(PYTHON3_LDFLAGS)
 
51
dnl   output variables. It also exports $(PYTHON3_EXTRA_LIBS) and
 
52
dnl   $(PYTHON3_EXTRA_LDFLAGS) for embedding Python in your code.
 
53
dnl
 
54
dnl   You can search for some particular version of Python by passing a
 
55
dnl   parameter to this macro, for example ">= '2.3.1'", or "== '2.4'". Please
 
56
dnl   note that you *have* to pass also an operator along with the version to
 
57
dnl   match, and pay special attention to the single quotes surrounding the
 
58
dnl   version number. Don't use "PYTHON3_VERSION" for this: that environment
 
59
dnl   variable is declared as precious and thus reserved for the end-user.
 
60
dnl
 
61
dnl LAST MODIFICATION
 
62
dnl
 
63
dnl   2009-08-23
 
64
 
 
65
AC_DEFUN([PANDORA_PYTHON3_DEVEL],[
 
66
        #
 
67
        # Allow the use of a (user set) custom python version
 
68
        #
 
69
        AC_ARG_VAR([PYTHON3_VERSION],[The installed Python
 
70
                version to use, for example '3.0'. This string
 
71
                will be appended to the Python interpreter
 
72
                canonical name.])
 
73
 
 
74
 
 
75
  AS_IF([test -z "$PYTHON3"],[
 
76
        AC_PATH_PROG([PYTHON3],[python[$PYTHON3_VERSION]])
 
77
  ])
 
78
        AS_IF([test -z "$PYTHON3"],[
 
79
          AC_MSG_ERROR([Cannot find python$PYTHON3_VERSION in your system path])
 
80
          PYTHON3_VERSION=""
 
81
  ])
 
82
 
 
83
        #
 
84
        # if the macro parameter ``version'' is set, honour it
 
85
        #
 
86
        if test -n "$1"; then
 
87
                AC_MSG_CHECKING([for a version of Python $1])
 
88
                ac_supports_python3_ver=`$PYTHON3 -c "import sys, string; \
 
89
                        ver = string.split(sys.version)[[0]]; \
 
90
                        print(ver $1)"`
 
91
                if test "$ac_supports_python3_ver" = "True"; then
 
92
                   AC_MSG_RESULT([yes])
 
93
                else
 
94
                        AC_MSG_RESULT([no])
 
95
                        AC_MSG_ERROR([this package requires Python $1.
 
96
If you have it installed, but it isn't the default Python
 
97
interpreter in your system path, please pass the PYTHON3_VERSION
 
98
variable to configure. See ``configure --help'' for reference.
 
99
])
 
100
                        PYTHON_VERSION=""
 
101
                fi
 
102
        fi
 
103
 
 
104
        #
 
105
        # Check if you have distutils, else fail
 
106
        #
 
107
        AC_MSG_CHECKING([for Python3 distutils package])
 
108
        ac_python3_distutils_result=`$PYTHON3 -c "import distutils" 2>&1`
 
109
        if test -z "$ac_python3_distutils_result"; then
 
110
                AC_MSG_RESULT([yes])
 
111
        else
 
112
                AC_MSG_RESULT([no])
 
113
                AC_MSG_ERROR([cannot import Python3 module "distutils".
 
114
Please check your Python3 installation. The error was:
 
115
$ac_python3_distutils_result])
 
116
                PYTHON3_VERSION=""
 
117
        fi
 
118
 
 
119
        #
 
120
        # Check for Python include path
 
121
        #
 
122
        AC_MSG_CHECKING([for Python3 include path])
 
123
        if test -z "$PYTHON3_CPPFLAGS"; then
 
124
                python3_path=`$PYTHON3 -c "import distutils.sysconfig; \
 
125
                        print(distutils.sysconfig.get_python_inc());"`
 
126
                if test -n "${python3_path}"; then
 
127
                        python3_path="-I$python3_path"
 
128
                fi
 
129
                PYTHON3_CPPFLAGS=$python3_path
 
130
        fi
 
131
        AC_MSG_RESULT([$PYTHON3_CPPFLAGS])
 
132
        AC_SUBST([PYTHON3_CPPFLAGS])
 
133
 
 
134
        #
 
135
        # Check for Python library path
 
136
        #
 
137
        AC_MSG_CHECKING([for Python3 library path])
 
138
        if test -z "$PYTHON3_LDFLAGS"; then
 
139
                # (makes two attempts to ensure we've got a version number
 
140
                # from the interpreter)
 
141
                py3_version=`$PYTHON3 -c "from distutils.sysconfig import *; \
 
142
                        print(' '.join(get_config_vars('VERSION')))"`
 
143
                if test "$py3_version" == "[None]"; then
 
144
                        if test -n "$PYTHON3_VERSION"; then
 
145
                                py3_version=$PYTHON3_VERSION
 
146
                        else
 
147
                                py3_version=`$PYTHON3 -c "import sys; \
 
148
                                        print(sys.version[[:3]])"`
 
149
                        fi
 
150
                fi
 
151
 
 
152
                PYTHON3_LDFLAGS=`$PYTHON3 -c "from distutils.sysconfig import *; \
 
153
                        print('-L' + get_python_lib(0,1), \
 
154
                        '-lpython');"`$py3_version
 
155
        fi
 
156
        AC_MSG_RESULT([$PYTHON3_LDFLAGS])
 
157
        AC_SUBST([PYTHON3_LDFLAGS])
 
158
 
 
159
        #
 
160
        # Check for site packages
 
161
        #
 
162
        AC_MSG_CHECKING([for Python3 site-packages path])
 
163
        if test -z "$PYTHON3_SITE_PKG"; then
 
164
                PYTHON3_SITE_PKG=`$PYTHON3 -c "import distutils.sysconfig; \
 
165
                        print(distutils.sysconfig.get_python_lib(0,0));"`
 
166
        fi
 
167
        AC_MSG_RESULT([$PYTHON3_SITE_PKG])
 
168
        AC_SUBST([PYTHON3_SITE_PKG])
 
169
 
 
170
        #
 
171
        # libraries which must be linked in when embedding
 
172
        #
 
173
        AC_MSG_CHECKING(for Python3 embedding libraries)
 
174
        if test -z "$PYTHON3_EMBED_LIBS"; then
 
175
           PYTHON3_EMBED_LIBS=`$PYTHON3 -c "import distutils.sysconfig; \
 
176
                conf = distutils.sysconfig.get_config_var; \
 
177
                print(conf('LOCALMODLIBS'), conf('LIBS'))"`
 
178
        fi
 
179
        AC_MSG_RESULT([$PYTHON3_EMBED_LIBS])
 
180
        AC_SUBST(PYTHON3_EMBED_LIBS)
 
181
 
 
182
        #
 
183
        # linking flags needed when embedding
 
184
        #
 
185
        AC_MSG_CHECKING(for Python3 embedding linking flags)
 
186
        if test -z "$PYTHON3_EMBED_LDFLAGS"; then
 
187
                PYTHON3_EMBED_LDFLAGS=`$PYTHON3 -c "import distutils.sysconfig; \
 
188
                        conf = distutils.sysconfig.get_config_var; \
 
189
                        print(conf('LINKFORSHARED'))"`
 
190
        fi
 
191
        AC_MSG_RESULT([$PYTHON3_EMBED_LDFLAGS])
 
192
        AC_SUBST(PYTHON3_EMBED_LDFLAGS)
 
193
 
 
194
        #
 
195
        # final check to see if everything compiles alright
 
196
        #
 
197
        AC_MSG_CHECKING([for Python3 development environment consistency])
 
198
        AC_LANG_PUSH([C])
 
199
        # save current global flags
 
200
  ac_save_LIBS="$LIBS"
 
201
  ac_save_CPPFLAGS="$CPPFLAGS"
 
202
        LIBS="$ac_save_LIBS $PYTHON3_LDFLAGS"
 
203
        CPPFLAGS="$ac_save_CPPFLAGS $PYTHON3_CPPFLAGS"
 
204
        AC_TRY_LINK([
 
205
                #include <Python.h>
 
206
        ],[
 
207
                Py_Initialize();
 
208
        ],[python3exists=yes],[python3exists=no])
 
209
 
 
210
        AC_MSG_RESULT([$python3exists])
 
211
 
 
212
        if test ! "$python3exists" = "yes"; then
 
213
           AC_MSG_WARN([
 
214
  Could not link test program to Python3.
 
215
  Maybe the main Python3 library has been installed in some non-standard
 
216
  library path. If so, pass it to configure, via the LDFLAGS environment
 
217
  variable.
 
218
  Example: ./configure LDFLAGS="-L/usr/non-standard-path/python3/lib"
 
219
  ============================================================================
 
220
   ERROR!
 
221
   You probably have to install the development version of the Python3 package
 
222
   for your distribution.  The exact name of this package varies among them.
 
223
  ============================================================================
 
224
           ])
 
225
          PYTHON3_VERSION=""
 
226
        fi
 
227
        AC_LANG_POP
 
228
        # turn back to default flags
 
229
        CPPFLAGS="$ac_save_CPPFLAGS"
 
230
        LIBS="$ac_save_LIBS"
 
231
 
 
232
        #
 
233
        # all done!
 
234
        #
 
235
])
 
236