~ubuntu-branches/ubuntu/trusty/python3.4/trusty-proposed

« back to all changes in this revision

Viewing changes to configure.ac

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2013-11-25 09:44:27 UTC
  • Revision ID: package-import@ubuntu.com-20131125094427-lzxj8ap5w01lmo7f
Tags: upstream-3.4~b1
ImportĀ upstreamĀ versionĀ 3.4~b1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
dnl ***********************************************
 
2
dnl * Please run autoreconf to test your changes! *
 
3
dnl ***********************************************
 
4
 
 
5
# Set VERSION so we only need to edit in one place (i.e., here)
 
6
m4_define(PYTHON_VERSION, 3.4)
 
7
 
 
8
AC_PREREQ(2.65)
 
9
 
 
10
AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
 
11
 
 
12
AC_SUBST(BASECPPFLAGS)
 
13
if test "$abs_srcdir" != "$abs_builddir"; then
 
14
    # If we're building out-of-tree, we need to make sure the following
 
15
    # resources get picked up before their $srcdir counterparts.
 
16
    #   Objects/ -> typeslots.inc
 
17
    #   Include/ -> Python-ast.h, graminit.h
 
18
    #   Python/  -> importlib.h
 
19
    # (A side effect of this is that these resources will automatically be
 
20
    #  regenerated when building out-of-tree, regardless of whether or not
 
21
    #  the $srcdir counterpart is up-to-date.  This is an acceptable trade
 
22
    #  off.)
 
23
    BASECPPFLAGS="-IObjects -IInclude -IPython"
 
24
else
 
25
    BASECPPFLAGS=""
 
26
fi
 
27
 
 
28
AC_SUBST(HGVERSION)
 
29
AC_SUBST(HGTAG)
 
30
AC_SUBST(HGBRANCH)
 
31
 
 
32
if test -e $srcdir/.hg/dirstate
 
33
then
 
34
AC_CHECK_PROG(HAS_HG, hg, found, not-found)
 
35
else
 
36
HAS_HG=no-repository
 
37
fi
 
38
if test $HAS_HG = found
 
39
then
 
40
    HGVERSION="hg id -i \$(srcdir)"
 
41
    HGTAG="hg id -t \$(srcdir)"
 
42
    HGBRANCH="hg id -b \$(srcdir)"
 
43
else
 
44
    HGVERSION=""
 
45
    HGTAG=""
 
46
    HGBRANCH=""
 
47
fi
 
48
 
 
49
AC_CONFIG_SRCDIR([Include/object.h])
 
50
AC_CONFIG_HEADER(pyconfig.h)
 
51
 
 
52
AC_CANONICAL_HOST
 
53
AC_SUBST(build)
 
54
AC_SUBST(host)
 
55
 
 
56
if test "$cross_compiling" = yes; then
 
57
    AC_MSG_CHECKING([for python interpreter for cross build])
 
58
    if test -z "$PYTHON_FOR_BUILD"; then
 
59
        for interp in python$PACKAGE_VERSION python3 python; do
 
60
            which $interp >/dev/null 2>&1 || continue
 
61
            if $interp -c 'import sys;sys.exit(not sys.version_info@<:@:2@:>@ >= (3,3))'; then
 
62
                break
 
63
            fi
 
64
            interp=
 
65
        done
 
66
        if test x$interp = x; then
 
67
            AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
 
68
        fi
 
69
        AC_MSG_RESULT($interp)
 
70
        PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/$(PLATDIR) '$interp
 
71
    fi
 
72
elif test "$cross_compiling" = maybe; then
 
73
    AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])
 
74
else
 
75
    PYTHON_FOR_BUILD='./$(BUILDPYTHON) -E'
 
76
fi
 
77
AC_SUBST(PYTHON_FOR_BUILD)
 
78
 
 
79
dnl Ensure that if prefix is specified, it does not end in a slash. If
 
80
dnl it does, we get path names containing '//' which is both ugly and
 
81
dnl can cause trouble.
 
82
 
 
83
dnl Last slash shouldn't be stripped if prefix=/
 
84
if test "$prefix" != "/"; then
 
85
    prefix=`echo "$prefix" | sed -e 's/\/$//g'`
 
86
fi    
 
87
 
 
88
dnl This is for stuff that absolutely must end up in pyconfig.h.
 
89
dnl Please use pyport.h instead, if possible.
 
90
AH_TOP([
 
91
#ifndef Py_PYCONFIG_H
 
92
#define Py_PYCONFIG_H
 
93
])
 
94
AH_BOTTOM([
 
95
/* Define the macros needed if on a UnixWare 7.x system. */
 
96
#if defined(__USLC__) && defined(__SCO_VERSION__)
 
97
#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
 
98
#endif
 
99
 
 
100
#endif /*Py_PYCONFIG_H*/
 
101
])
 
102
 
 
103
# We don't use PACKAGE_ variables, and they cause conflicts
 
104
# with other autoconf-based packages that include Python.h
 
105
grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
 
106
rm confdefs.h
 
107
mv confdefs.h.new confdefs.h
 
108
 
 
109
AC_SUBST(VERSION)
 
110
VERSION=PYTHON_VERSION
 
111
 
 
112
# Version number of Python's own shared library file.
 
113
AC_SUBST(SOVERSION)
 
114
SOVERSION=1.0
 
115
 
 
116
# The later defininition of _XOPEN_SOURCE disables certain features
 
117
# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
 
118
AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
 
119
 
 
120
# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
 
121
# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
 
122
# them.
 
123
AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
 
124
 
 
125
# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
 
126
# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
 
127
# them.
 
128
AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
 
129
 
 
130
# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
 
131
# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
 
132
AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
 
133
 
 
134
# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
 
135
# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
 
136
# them.
 
137
AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
 
138
 
 
139
 
 
140
define_xopen_source=yes
 
141
 
 
142
# Arguments passed to configure.
 
143
AC_SUBST(CONFIG_ARGS)
 
144
CONFIG_ARGS="$ac_configure_args"
 
145
 
 
146
AC_MSG_CHECKING([for --enable-universalsdk])
 
147
AC_ARG_ENABLE(universalsdk,
 
148
        AS_HELP_STRING([--enable-universalsdk@<:@=SDKDIR@:>@], [Build fat binary against Mac OS X SDK]),
 
149
[
 
150
        case $enableval in
 
151
        yes)
 
152
                # Locate the best usable SDK, see Mac/README.txt for more
 
153
                # information
 
154
                enableval="`/usr/bin/xcodebuild -version -sdk macosx Path 2>/dev/null`"
 
155
                if ! ( echo $enableval | grep -E '\.sdk' 1>/dev/null )
 
156
                then
 
157
                        enableval=/Developer/SDKs/MacOSX10.4u.sdk
 
158
                        if test ! -d "${enableval}"
 
159
                        then
 
160
                                enableval=/
 
161
                        fi
 
162
                fi
 
163
                ;;
 
164
        esac
 
165
        case $enableval in
 
166
        no)
 
167
                UNIVERSALSDK=
 
168
                enable_universalsdk=
 
169
                ;;
 
170
        *)
 
171
                UNIVERSALSDK=$enableval
 
172
                if test ! -d "${UNIVERSALSDK}"
 
173
                then
 
174
                        AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
 
175
                fi
 
176
                ;;
 
177
        esac
 
178
        
 
179
],[
 
180
        UNIVERSALSDK=
 
181
        enable_universalsdk=
 
182
])
 
183
if test -n "${UNIVERSALSDK}"
 
184
then
 
185
        AC_MSG_RESULT(${UNIVERSALSDK})
 
186
else
 
187
        AC_MSG_RESULT(no)
 
188
fi
 
189
AC_SUBST(UNIVERSALSDK)
 
190
 
 
191
AC_SUBST(ARCH_RUN_32BIT)
 
192
ARCH_RUN_32BIT=""
 
193
 
 
194
# For backward compatibility reasons we prefer to select '32-bit' if available,
 
195
# otherwise use 'intel'
 
196
UNIVERSAL_ARCHS="32-bit"
 
197
if test "`uname -s`" = "Darwin"
 
198
then
 
199
        if test -n "${UNIVERSALSDK}"
 
200
        then
 
201
                if test -z "`/usr/bin/file -L "${UNIVERSALSDK}/usr/lib/libSystem.dylib" | grep ppc`"
 
202
                then
 
203
                        UNIVERSAL_ARCHS="intel"
 
204
                fi
 
205
        fi
 
206
fi
 
207
 
 
208
AC_SUBST(LIPO_32BIT_FLAGS)
 
209
AC_MSG_CHECKING(for --with-universal-archs)
 
210
AC_ARG_WITH(universal-archs,
 
211
    AS_HELP_STRING([--with-universal-archs=ARCH], [select architectures for universal build ("32-bit", "64-bit", "3-way", "intel", "intel-32", or "all")]),
 
212
[
 
213
        UNIVERSAL_ARCHS="$withval"
 
214
],
 
215
[])
 
216
if test -n "${UNIVERSALSDK}"
 
217
then
 
218
        AC_MSG_RESULT(${UNIVERSAL_ARCHS})
 
219
else
 
220
        AC_MSG_RESULT(no)
 
221
fi
 
222
 
 
223
AC_ARG_WITH(framework-name,
 
224
              AS_HELP_STRING([--with-framework-name=FRAMEWORK],
 
225
                             [specify an alternate name of the framework built with --enable-framework]),
 
226
[
 
227
    PYTHONFRAMEWORK=${withval}
 
228
    PYTHONFRAMEWORKDIR=${withval}.framework
 
229
    PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
 
230
    ],[
 
231
    PYTHONFRAMEWORK=Python
 
232
    PYTHONFRAMEWORKDIR=Python.framework
 
233
    PYTHONFRAMEWORKIDENTIFIER=org.python.python
 
234
])
 
235
dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
 
236
AC_ARG_ENABLE(framework,
 
237
              AS_HELP_STRING([--enable-framework@<:@=INSTALLDIR@:>@], [Build (MacOSX|Darwin) framework]),
 
238
[
 
239
        case $enableval in
 
240
        yes) 
 
241
                enableval=/Library/Frameworks
 
242
        esac
 
243
        case $enableval in
 
244
        no)
 
245
                PYTHONFRAMEWORK=
 
246
                PYTHONFRAMEWORKDIR=no-framework
 
247
                PYTHONFRAMEWORKPREFIX=
 
248
                PYTHONFRAMEWORKINSTALLDIR=
 
249
                FRAMEWORKINSTALLFIRST=
 
250
                FRAMEWORKINSTALLLAST=
 
251
                FRAMEWORKALTINSTALLFIRST=
 
252
                FRAMEWORKALTINSTALLLAST=
 
253
                FRAMEWORKPYTHONW=
 
254
                if test "x${prefix}" = "xNONE"; then
 
255
                        FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
 
256
                else
 
257
                        FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
 
258
                fi
 
259
                enable_framework=
 
260
                ;;
 
261
        *)
 
262
                PYTHONFRAMEWORKPREFIX="${enableval}"
 
263
                PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
 
264
                FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
 
265
                FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
 
266
                FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
 
267
                FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
 
268
                FRAMEWORKPYTHONW="frameworkpythonw"
 
269
                FRAMEWORKINSTALLAPPSPREFIX="/Applications"
 
270
 
 
271
                if test "x${prefix}" = "xNONE" ; then
 
272
                        FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
 
273
 
 
274
                else
 
275
                        FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
 
276
                fi
 
277
 
 
278
                case "${enableval}" in
 
279
                /System*)
 
280
                        FRAMEWORKINSTALLAPPSPREFIX="/Applications"
 
281
                        if test "${prefix}" = "NONE" ; then
 
282
                                # See below
 
283
                                FRAMEWORKUNIXTOOLSPREFIX="/usr"
 
284
                        fi
 
285
                        ;;
 
286
 
 
287
                /Library*)
 
288
                        FRAMEWORKINSTALLAPPSPREFIX="/Applications"
 
289
                        ;;
 
290
 
 
291
                */Library/Frameworks)
 
292
                        MDIR="`dirname "${enableval}"`"
 
293
                        MDIR="`dirname "${MDIR}"`"
 
294
                        FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications"
 
295
 
 
296
                        if test "${prefix}" = "NONE"; then
 
297
                                # User hasn't specified the 
 
298
                                # --prefix option, but wants to install
 
299
                                # the framework in a non-default location,
 
300
                                # ensure that the compatibility links get
 
301
                                # installed relative to that prefix as well
 
302
                                # instead of in /usr/local.
 
303
                                FRAMEWORKUNIXTOOLSPREFIX="${MDIR}"
 
304
                        fi
 
305
                        ;;
 
306
 
 
307
                *)
 
308
                        FRAMEWORKINSTALLAPPSPREFIX="/Applications"
 
309
                        ;;
 
310
                esac
 
311
 
 
312
                prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
 
313
 
 
314
                # Add files for Mac specific code to the list of output
 
315
                # files:
 
316
                AC_CONFIG_FILES(Mac/Makefile)
 
317
                AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
 
318
                AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
 
319
                AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
 
320
        esac
 
321
        ],[
 
322
        PYTHONFRAMEWORK=
 
323
        PYTHONFRAMEWORKDIR=no-framework
 
324
        PYTHONFRAMEWORKPREFIX=
 
325
        PYTHONFRAMEWORKINSTALLDIR=
 
326
        FRAMEWORKINSTALLFIRST=
 
327
        FRAMEWORKINSTALLLAST=
 
328
        FRAMEWORKALTINSTALLFIRST=
 
329
        FRAMEWORKALTINSTALLLAST=
 
330
        FRAMEWORKPYTHONW=
 
331
        if test "x${prefix}" = "xNONE" ; then
 
332
                FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
 
333
        else
 
334
                FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
 
335
        fi
 
336
        enable_framework=
 
337
 
 
338
])
 
339
AC_SUBST(PYTHONFRAMEWORK)
 
340
AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
 
341
AC_SUBST(PYTHONFRAMEWORKDIR)
 
342
AC_SUBST(PYTHONFRAMEWORKPREFIX)
 
343
AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
 
344
AC_SUBST(FRAMEWORKINSTALLFIRST)
 
345
AC_SUBST(FRAMEWORKINSTALLLAST)
 
346
AC_SUBST(FRAMEWORKALTINSTALLFIRST)
 
347
AC_SUBST(FRAMEWORKALTINSTALLLAST)
 
348
AC_SUBST(FRAMEWORKPYTHONW)
 
349
AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
 
350
AC_SUBST(FRAMEWORKINSTALLAPPSPREFIX)
 
351
 
 
352
##AC_ARG_WITH(dyld,
 
353
##            AS_HELP_STRING([--with-dyld],
 
354
##                           [Use (OpenStep|Rhapsody) dynamic linker]))
 
355
##
 
356
# Set name for machine-dependent library files
 
357
AC_ARG_VAR([MACHDEP], [name for machine-dependent library files])
 
358
AC_MSG_CHECKING(MACHDEP)
 
359
if test -z "$MACHDEP"
 
360
then
 
361
    # avoid using uname for cross builds
 
362
    if test "$cross_compiling" = yes; then
 
363
       # ac_sys_system and ac_sys_release are used for setting
 
364
       # a lot of different things including 'define_xopen_source'
 
365
       # in the case statement below.
 
366
        case "$host" in
 
367
        *-*-linux*)
 
368
                ac_sys_system=Linux
 
369
                ;;
 
370
        *-*-cygwin*)
 
371
                ac_sys_system=Cygwin
 
372
                ;;
 
373
        *)
 
374
                # for now, limit cross builds to known configurations
 
375
                MACHDEP="unknown"
 
376
                AC_MSG_ERROR([cross build not supported for $host])
 
377
        esac
 
378
        ac_sys_release=
 
379
    else
 
380
        ac_sys_system=`uname -s`
 
381
        if test "$ac_sys_system" = "AIX" \
 
382
        -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
 
383
                ac_sys_release=`uname -v`
 
384
        else
 
385
                ac_sys_release=`uname -r`
 
386
        fi
 
387
    fi
 
388
    ac_md_system=`echo $ac_sys_system |
 
389
                        tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
 
390
    ac_md_release=`echo $ac_sys_release |
 
391
                        tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
 
392
    MACHDEP="$ac_md_system$ac_md_release"
 
393
 
 
394
    case $MACHDEP in
 
395
        linux*) MACHDEP="linux";;
 
396
        cygwin*) MACHDEP="cygwin";;
 
397
        darwin*) MACHDEP="darwin";;
 
398
        irix646) MACHDEP="irix6";;
 
399
        '')     MACHDEP="unknown";;
 
400
    esac
 
401
fi
 
402
 
 
403
AC_SUBST(_PYTHON_HOST_PLATFORM)
 
404
if test "$cross_compiling" = yes; then
 
405
        case "$host" in
 
406
        *-*-linux*)
 
407
                case "$host_cpu" in
 
408
                arm*)
 
409
                        _host_cpu=arm
 
410
                        ;;
 
411
                *)
 
412
                        _host_cpu=$host_cpu
 
413
                esac
 
414
                ;;
 
415
        *-*-cygwin*)
 
416
                _host_cpu=
 
417
                ;;
 
418
        *)
 
419
                # for now, limit cross builds to known configurations
 
420
                MACHDEP="unknown"
 
421
                AC_MSG_ERROR([cross build not supported for $host])
 
422
        esac
 
423
        _PYTHON_HOST_PLATFORM="$MACHDEP${_host_cpu:+-$_host_cpu}"
 
424
fi
 
425
        
 
426
# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
 
427
# disable features if it is defined, without any means to access these
 
428
# features as extensions. For these systems, we skip the definition of
 
429
# _XOPEN_SOURCE. Before adding a system to the list to gain access to
 
430
# some feature, make sure there is no alternative way to access this
 
431
# feature. Also, when using wildcards, make sure you have verified the
 
432
# need for not defining _XOPEN_SOURCE on all systems matching the
 
433
# wildcard, and that the wildcard does not include future systems
 
434
# (which may remove their limitations).
 
435
dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
 
436
case $ac_sys_system/$ac_sys_release in
 
437
  # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
 
438
  # even though select is a POSIX function. Reported by J. Ribbens.
 
439
  # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
 
440
  # In addition, Stefan Krah confirms that issue #1244610 exists through
 
441
  # OpenBSD 4.6, but is fixed in 4.7.
 
442
  OpenBSD/2.* | OpenBSD/3.* | OpenBSD/4.@<:@0123456@:>@) 
 
443
    define_xopen_source=no
 
444
    # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
 
445
    # also defined. This can be overridden by defining _BSD_SOURCE
 
446
    # As this has a different meaning on Linux, only define it on OpenBSD
 
447
    AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
 
448
    ;;
 
449
  OpenBSD/*)
 
450
    # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
 
451
    # also defined. This can be overridden by defining _BSD_SOURCE
 
452
    # As this has a different meaning on Linux, only define it on OpenBSD
 
453
    AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
 
454
    ;;
 
455
  # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
 
456
  # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
 
457
  # Marc Recht
 
458
  NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@)
 
459
    define_xopen_source=no;;
 
460
  # From the perspective of Solaris, _XOPEN_SOURCE is not so much a
 
461
  # request to enable features supported by the standard as a request
 
462
  # to disable features not supported by the standard.  The best way
 
463
  # for Python to use Solaris is simply to leave _XOPEN_SOURCE out
 
464
  # entirely and define __EXTENSIONS__ instead.
 
465
  SunOS/*)
 
466
    define_xopen_source=no;;
 
467
  # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
 
468
  # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
 
469
  # Reconfirmed for 7.1.4 by Martin v. Loewis.
 
470
  OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
 
471
    define_xopen_source=no;;
 
472
  # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
 
473
  # but used in struct sockaddr.sa_family. Reported by Tim Rice.
 
474
  SCO_SV/3.2)
 
475
    define_xopen_source=no;;
 
476
  # On FreeBSD 4, the math functions C89 does not cover are never defined
 
477
  # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
 
478
  FreeBSD/4.*)
 
479
    define_xopen_source=no;;
 
480
  # On MacOS X 10.2, a bug in ncurses.h means that it craps out if 
 
481
  # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
 
482
  # identifies itself as Darwin/7.*
 
483
  # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
 
484
  # disables platform specific features beyond repair.
 
485
  # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE 
 
486
  # has no effect, don't bother defining them
 
487
  Darwin/@<:@6789@:>@.*)
 
488
    define_xopen_source=no;;
 
489
  Darwin/1@<:@0-9@:>@.*)
 
490
    define_xopen_source=no;;
 
491
  # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
 
492
  # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
 
493
  # or has another value. By not (re)defining it, the defaults come in place.
 
494
  AIX/4)
 
495
    define_xopen_source=no;;
 
496
  AIX/5)
 
497
    if test `uname -r` -eq 1; then
 
498
      define_xopen_source=no
 
499
    fi
 
500
    ;;
 
501
  # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
 
502
  # defining NI_NUMERICHOST.
 
503
  QNX/6.3.2)
 
504
    define_xopen_source=no
 
505
    ;;
 
506
 
 
507
esac
 
508
 
 
509
if test $define_xopen_source = yes
 
510
then
 
511
  # X/Open 7, incorporating POSIX.1-2008
 
512
  AC_DEFINE(_XOPEN_SOURCE, 700,
 
513
            Define to the level of X/Open that your system supports)
 
514
 
 
515
  # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
 
516
  # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
 
517
  # several APIs are not declared. Since this is also needed in some
 
518
  # cases for HP-UX, we define it globally.
 
519
  AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
 
520
            Define to activate Unix95-and-earlier features)
 
521
 
 
522
  AC_DEFINE(_POSIX_C_SOURCE, 200809L, Define to activate features from IEEE Stds 1003.1-2008)
 
523
fi
 
524
 
 
525
#
 
526
# SGI compilers allow the specification of the both the ABI and the
 
527
# ISA on the command line.  Depending on the values of these switches,
 
528
# different and often incompatable code will be generated.
 
529
#
 
530
# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
 
531
# thus supply support for various ABI/ISA combinations.  The MACHDEP
 
532
# variable is also adjusted.
 
533
#
 
534
AC_SUBST(SGI_ABI)
 
535
if test ! -z "$SGI_ABI"
 
536
then
 
537
        CC="cc $SGI_ABI"
 
538
        LDFLAGS="$SGI_ABI $LDFLAGS"
 
539
        MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
 
540
fi
 
541
AC_MSG_RESULT($MACHDEP)
 
542
 
 
543
# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
 
544
# it may influence the way we can build extensions, so distutils
 
545
# needs to check it
 
546
AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
 
547
AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
 
548
CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
 
549
EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
 
550
 
 
551
# checks for alternative programs
 
552
 
 
553
# compiler flags are generated in two sets, BASECFLAGS and OPT.  OPT is just
 
554
# for debug/optimization stuff.  BASECFLAGS is for flags that are required
 
555
# just to get things to compile and link.  Users are free to override OPT
 
556
# when running configure or make.  The build should not break if they do.
 
557
# BASECFLAGS should generally not be messed with, however.
 
558
 
 
559
# XXX shouldn't some/most/all of this code be merged with the stuff later
 
560
# on that fiddles with OPT and BASECFLAGS?
 
561
AC_MSG_CHECKING(for --without-gcc)
 
562
AC_ARG_WITH(gcc,
 
563
            AS_HELP_STRING([--without-gcc], [never use gcc]),
 
564
[
 
565
        case $withval in
 
566
        no)     CC=${CC:-cc}
 
567
                without_gcc=yes;;
 
568
        yes)    CC=gcc
 
569
                without_gcc=no;;
 
570
        *)      CC=$withval
 
571
                without_gcc=$withval;;
 
572
        esac], [
 
573
        case $ac_sys_system in
 
574
        AIX*)   CC=${CC:-xlc_r}
 
575
                without_gcc=;;
 
576
        *)      without_gcc=no;;
 
577
        esac])
 
578
AC_MSG_RESULT($without_gcc)
 
579
 
 
580
# If the user switches compilers, we can't believe the cache
 
581
if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
 
582
then
 
583
  AC_MSG_ERROR([cached CC is different -- throw away $cache_file
 
584
(it is also a good idea to do 'make clean' before compiling)])
 
585
fi
 
586
 
 
587
# Don't let AC_PROG_CC set the default CFLAGS. It normally sets -g -O2
 
588
# when the compiler supports them, but we don't always want -O2, and
 
589
# we set -g later.
 
590
if test -z "$CFLAGS"; then
 
591
        CFLAGS=
 
592
fi
 
593
 
 
594
if test "$ac_sys_system" = "Darwin"
 
595
then
 
596
        # Compiler selection on MacOSX is more complicated than
 
597
        # AC_PROG_CC can handle, see Mac/README.txt for more
 
598
        # information
 
599
        if test -z "${CC}"
 
600
        then
 
601
                found_gcc=
 
602
                found_clang=
 
603
                as_save_IFS=$IFS; IFS=:
 
604
                for as_dir in $PATH
 
605
                do
 
606
                        IFS=$as_save_IFS
 
607
                        if test -x $as_dir/gcc; then
 
608
                                if test -z "${found_gcc}"; then
 
609
                                        found_gcc=$as_dir/gcc
 
610
                                fi
 
611
                        fi
 
612
                        if test -x $as_dir/clang; then
 
613
                                if test -z "${found_clang}"; then
 
614
                                        found_clang=$as_dir/clang
 
615
                                fi
 
616
                        fi
 
617
                done
 
618
                IFS=$as_save_IFS
 
619
 
 
620
                if test -n "$found_gcc" -a -n "$found_clang"
 
621
                then
 
622
                        if test -n "`"$found_gcc" --version | grep llvm-gcc`"
 
623
                        then
 
624
                                AC_MSG_NOTICE([Detected llvm-gcc, falling back to clang])
 
625
                                CC="$found_clang"
 
626
                                CXX="$found_clang++"
 
627
                        fi
 
628
 
 
629
 
 
630
                elif test -z "$found_gcc" -a -n "$found_clang"
 
631
                then
 
632
                        AC_MSG_NOTICE([No GCC found, use CLANG])
 
633
                        CC="$found_clang"
 
634
                        CXX="$found_clang++"
 
635
 
 
636
                elif test -z "$found_gcc" -a -z "$found_clang"
 
637
                then
 
638
                        found_clang=`/usr/bin/xcrun -find clang 2>/dev/null`
 
639
                        if test -n "${found_clang}"
 
640
                        then
 
641
                                AC_MSG_NOTICE([Using clang from Xcode.app])
 
642
                                CC="${found_clang}"
 
643
                                CXX="`/usr/bin/xcrun -find clang++`"
 
644
 
 
645
                        # else: use default behaviour
 
646
                        fi
 
647
                fi
 
648
        fi
 
649
fi
 
650
AC_PROG_CC
 
651
 
 
652
AC_SUBST(CXX)
 
653
AC_SUBST(MAINCC)
 
654
AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
 
655
AC_ARG_WITH(cxx_main,
 
656
            AS_HELP_STRING([--with-cxx-main=<compiler>],
 
657
                           [compile main() and link python executable with C++ compiler]),
 
658
[
 
659
        
 
660
        case $withval in
 
661
        no)     with_cxx_main=no
 
662
                MAINCC='$(CC)';;
 
663
        yes)    with_cxx_main=yes
 
664
                MAINCC='$(CXX)';;
 
665
        *)      with_cxx_main=yes
 
666
                MAINCC=$withval
 
667
                if test -z "$CXX"
 
668
                then
 
669
                        CXX=$withval
 
670
                fi;;
 
671
        esac], [
 
672
        with_cxx_main=no
 
673
        MAINCC='$(CC)'
 
674
])
 
675
AC_MSG_RESULT($with_cxx_main)
 
676
 
 
677
preset_cxx="$CXX"
 
678
if test -z "$CXX"
 
679
then
 
680
        case "$CC" in
 
681
        gcc)    AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
 
682
        cc)     AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
 
683
        clang|*/clang)     AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;;
 
684
        esac
 
685
        if test "$CXX" = "notfound"
 
686
        then
 
687
                CXX=""
 
688
        fi
 
689
fi
 
690
if test -z "$CXX"
 
691
then
 
692
        AC_CHECK_TOOLS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
 
693
        if test "$CXX" = "notfound"
 
694
        then
 
695
                CXX=""
 
696
        fi
 
697
fi
 
698
if test "$preset_cxx" != "$CXX"
 
699
then
 
700
        AC_MSG_NOTICE([
 
701
 
 
702
  By default, distutils will build C++ extension modules with "$CXX".
 
703
  If this is not intended, then set CXX on the configure command line.
 
704
  ])
 
705
fi
 
706
 
 
707
 
 
708
AC_MSG_CHECKING([for -Wl,--no-as-needed])
 
709
save_LDFLAGS="$LDFLAGS"
 
710
LDFLAGS="$LDFLAGS -Wl,--no-as-needed"
 
711
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
 
712
  [NO_AS_NEEDED="-Wl,--no-as-needed"
 
713
   AC_MSG_RESULT([yes])],
 
714
  [NO_AS_NEEDED=""
 
715
   AC_MSG_RESULT([no])])
 
716
LDFLAGS="$save_LDFLAGS"
 
717
AC_SUBST(NO_AS_NEEDED)
 
718
 
 
719
 
 
720
# checks for UNIX variants that set C preprocessor variables
 
721
AC_USE_SYSTEM_EXTENSIONS
 
722
 
 
723
# Check for unsupported systems
 
724
case $ac_sys_system/$ac_sys_release in
 
725
atheos*|Linux*/1*)
 
726
   echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
 
727
   echo See README for details.
 
728
   exit 1;;
 
729
esac
 
730
 
 
731
AC_EXEEXT
 
732
AC_MSG_CHECKING(for --with-suffix)
 
733
AC_ARG_WITH(suffix,
 
734
            AS_HELP_STRING([--with-suffix=.exe], [set executable suffix]),
 
735
[
 
736
        case $withval in
 
737
        no)     EXEEXT=;;
 
738
        yes)    EXEEXT=.exe;;
 
739
        *)      EXEEXT=$withval;;
 
740
        esac])
 
741
AC_MSG_RESULT($EXEEXT)
 
742
 
 
743
# Test whether we're running on a non-case-sensitive system, in which
 
744
# case we give a warning if no ext is given
 
745
AC_SUBST(BUILDEXEEXT)
 
746
AC_MSG_CHECKING(for case-insensitive build directory)
 
747
if test ! -d CaseSensitiveTestDir; then
 
748
mkdir CaseSensitiveTestDir
 
749
fi
 
750
 
 
751
if test -d casesensitivetestdir
 
752
then
 
753
    AC_MSG_RESULT(yes)
 
754
    BUILDEXEEXT=.exe
 
755
else
 
756
        AC_MSG_RESULT(no)
 
757
        BUILDEXEEXT=$EXEEXT
 
758
fi
 
759
rmdir CaseSensitiveTestDir
 
760
 
 
761
case $MACHDEP in
 
762
bsdos*)
 
763
    case $CC in
 
764
    gcc) CC="$CC -D_HAVE_BSDI";;
 
765
    esac;;
 
766
esac
 
767
 
 
768
case $ac_sys_system in
 
769
hp*|HP*)
 
770
    case $CC in
 
771
    cc|*/cc) CC="$CC -Ae";;
 
772
    esac;;
 
773
esac
 
774
 
 
775
MULTIARCH=$($CC --print-multiarch 2>/dev/null)
 
776
AC_SUBST(MULTIARCH)
 
777
 
 
778
 
 
779
AC_SUBST(LIBRARY)
 
780
AC_MSG_CHECKING(LIBRARY)
 
781
if test -z "$LIBRARY"
 
782
then
 
783
        LIBRARY='libpython$(VERSION)$(ABIFLAGS).a'
 
784
fi
 
785
AC_MSG_RESULT($LIBRARY)
 
786
 
 
787
# LDLIBRARY is the name of the library to link against (as opposed to the
 
788
# name of the library into which to insert object files). BLDLIBRARY is also
 
789
# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
 
790
# is blank as the main program is not linked directly against LDLIBRARY.
 
791
# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
 
792
# systems without shared libraries, LDLIBRARY is the same as LIBRARY
 
793
# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
 
794
# DLLLIBRARY is the shared (i.e., DLL) library.
 
795
 
796
# RUNSHARED is used to run shared python without installed libraries
 
797
#
 
798
# INSTSONAME is the name of the shared library that will be use to install
 
799
# on the system - some systems like version suffix, others don't
 
800
#
 
801
# LDVERSION is the shared library version number, normally the Python version
 
802
# with the ABI build flags appended.
 
803
AC_SUBST(LDLIBRARY)
 
804
AC_SUBST(DLLLIBRARY)
 
805
AC_SUBST(BLDLIBRARY)
 
806
AC_SUBST(PY3LIBRARY)
 
807
AC_SUBST(LDLIBRARYDIR)
 
808
AC_SUBST(INSTSONAME)
 
809
AC_SUBST(RUNSHARED)
 
810
AC_SUBST(LDVERSION)
 
811
LDLIBRARY="$LIBRARY"
 
812
BLDLIBRARY='$(LDLIBRARY)'
 
813
INSTSONAME='$(LDLIBRARY)'
 
814
DLLLIBRARY=''
 
815
LDLIBRARYDIR=''
 
816
RUNSHARED=''
 
817
LDVERSION="$VERSION"
 
818
 
 
819
# LINKCC is the command that links the python executable -- default is $(CC).
 
820
# If CXX is set, and if it is needed to link a main function that was
 
821
# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
 
822
# python might then depend on the C++ runtime
 
823
# This is altered for AIX in order to build the export list before 
 
824
# linking.
 
825
AC_SUBST(LINKCC)
 
826
AC_MSG_CHECKING(LINKCC)
 
827
if test -z "$LINKCC"
 
828
then
 
829
        LINKCC='$(PURIFY) $(MAINCC)'
 
830
        case $ac_sys_system in
 
831
        AIX*)
 
832
           exp_extra="\"\""
 
833
           if test $ac_sys_release -ge 5 -o \
 
834
                   $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
 
835
               exp_extra="."
 
836
           fi
 
837
           LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
 
838
        QNX*)
 
839
           # qcc must be used because the other compilers do not
 
840
           # support -N.
 
841
           LINKCC=qcc;;
 
842
        esac
 
843
fi
 
844
AC_MSG_RESULT($LINKCC)
 
845
 
 
846
# GNULD is set to "yes" if the GNU linker is used.  If this goes wrong
 
847
# make sure we default having it set to "no": this is used by
 
848
# distutils.unixccompiler to know if it should add --enable-new-dtags
 
849
# to linker command lines, and failing to detect GNU ld simply results
 
850
# in the same bahaviour as before.
 
851
AC_SUBST(GNULD)
 
852
AC_MSG_CHECKING(for GNU ld)
 
853
ac_prog=ld
 
854
if test "$GCC" = yes; then
 
855
       ac_prog=`$CC -print-prog-name=ld`
 
856
fi
 
857
case `"$ac_prog" -V 2>&1 < /dev/null` in
 
858
      *GNU*)
 
859
          GNULD=yes;;
 
860
      *)
 
861
          GNULD=no;;
 
862
esac
 
863
AC_MSG_RESULT($GNULD)
 
864
 
 
865
AC_C_INLINE
 
866
if test "$ac_cv_c_inline" != no ; then
 
867
        AC_DEFINE(USE_INLINE, 1, [Define to use the C99 inline keyword.])
 
868
        AC_SUBST(USE_INLINE)
 
869
fi
 
870
 
 
871
 
 
872
AC_MSG_CHECKING(for --enable-shared)
 
873
AC_ARG_ENABLE(shared,
 
874
              AS_HELP_STRING([--enable-shared], [disable/enable building shared python library]))
 
875
 
 
876
if test -z "$enable_shared"
 
877
then 
 
878
  case $ac_sys_system in
 
879
  CYGWIN*)
 
880
    enable_shared="yes";;
 
881
  *)
 
882
    enable_shared="no";;
 
883
  esac
 
884
fi
 
885
AC_MSG_RESULT($enable_shared)
 
886
 
 
887
AC_MSG_CHECKING(for --enable-profiling)
 
888
AC_ARG_ENABLE(profiling,
 
889
              AS_HELP_STRING([--enable-profiling], [enable C-level code profiling]))
 
890
if test "x$enable_profiling" = xyes; then
 
891
  ac_save_cc="$CC"
 
892
  CC="$CC -pg"
 
893
  AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
 
894
    [],
 
895
    [enable_profiling=no])
 
896
  CC="$ac_save_cc"
 
897
else
 
898
  enable_profiling=no
 
899
fi
 
900
AC_MSG_RESULT($enable_profiling)
 
901
 
 
902
if test "x$enable_profiling" = xyes; then
 
903
  BASECFLAGS="-pg $BASECFLAGS"
 
904
  LDFLAGS="-pg $LDFLAGS"
 
905
fi
 
906
 
 
907
AC_MSG_CHECKING(LDLIBRARY)
 
908
 
 
909
# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
 
910
# library that we build, but we do not want to link against it (we
 
911
# will find it with a -framework option). For this reason there is an
 
912
# extra variable BLDLIBRARY against which Python and the extension
 
913
# modules are linked, BLDLIBRARY. This is normally the same as
 
914
# LDLIBRARY, but empty for MacOSX framework builds.
 
915
if test "$enable_framework"
 
916
then
 
917
  LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
 
918
  RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
 
919
  BLDLIBRARY=''
 
920
else
 
921
  BLDLIBRARY='$(LDLIBRARY)'
 
922
fi  
 
923
 
 
924
# Other platforms follow
 
925
if test $enable_shared = "yes"; then
 
926
  PY_ENABLE_SHARED=1
 
927
  AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
 
928
  case $ac_sys_system in
 
929
    CYGWIN*)
 
930
          LDLIBRARY='libpython$(LDVERSION).dll.a'
 
931
          DLLLIBRARY='libpython$(LDVERSION).dll'
 
932
          ;;
 
933
    SunOS*)
 
934
          LDLIBRARY='libpython$(LDVERSION).so'
 
935
          BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)'
 
936
          RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
 
937
          INSTSONAME="$LDLIBRARY".$SOVERSION
 
938
          if test "$with_pydebug" != yes
 
939
          then
 
940
              PY3LIBRARY=libpython3.so
 
941
          fi
 
942
          ;;
 
943
    Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*)
 
944
          LDLIBRARY='libpython$(LDVERSION).so'
 
945
          BLDLIBRARY='-L. -lpython$(LDVERSION)'
 
946
          RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
 
947
          case $ac_sys_system in
 
948
              FreeBSD*)
 
949
                SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
 
950
                ;;
 
951
          esac
 
952
          INSTSONAME="$LDLIBRARY".$SOVERSION
 
953
          if test "$with_pydebug" != yes
 
954
          then
 
955
              PY3LIBRARY=libpython3.so
 
956
          fi
 
957
          ;;
 
958
    hp*|HP*)
 
959
          case `uname -m` in
 
960
                ia64)
 
961
                        LDLIBRARY='libpython$(LDVERSION).so'
 
962
                        ;;
 
963
                *)
 
964
                        LDLIBRARY='libpython$(LDVERSION).sl'
 
965
                        ;;
 
966
          esac
 
967
          BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)'
 
968
          RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
 
969
          ;;
 
970
    Darwin*)
 
971
        LDLIBRARY='libpython$(LDVERSION).dylib'
 
972
        BLDLIBRARY='-L. -lpython$(LDVERSION)'
 
973
        RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
 
974
        ;;
 
975
    AIX*)
 
976
        LDLIBRARY='libpython$(LDVERSION).so'
 
977
        RUNSHARED=LIBPATH=`pwd`:${LIBPATH}
 
978
        ;;
 
979
 
 
980
  esac
 
981
else # shared is disabled
 
982
  PY_ENABLE_SHARED=0
 
983
  case $ac_sys_system in
 
984
    CYGWIN*)
 
985
          BLDLIBRARY='$(LIBRARY)'
 
986
          LDLIBRARY='libpython$(LDVERSION).dll.a'
 
987
          ;;
 
988
  esac
 
989
fi
 
990
 
 
991
if test "$cross_compiling" = yes; then
 
992
        RUNSHARED=
 
993
fi
 
994
 
 
995
AC_MSG_RESULT($LDLIBRARY)
 
996
 
 
997
AC_PROG_RANLIB
 
998
AC_SUBST(AR)
 
999
AC_CHECK_TOOLS(AR, ar aal, ar)
 
1000
 
 
1001
# tweak ARFLAGS only if the user didn't set it on the command line
 
1002
AC_SUBST(ARFLAGS)
 
1003
if test -z "$ARFLAGS"
 
1004
then
 
1005
        ARFLAGS="rc"
 
1006
fi
 
1007
 
 
1008
AC_CHECK_TOOLS([READELF], [readelf], [:])
 
1009
if test "$cross_compiling" = yes; then
 
1010
    case "$READELF" in
 
1011
        readelf|:)
 
1012
        AC_MSG_ERROR([readelf for the host is required for cross builds])
 
1013
        ;;
 
1014
    esac
 
1015
fi
 
1016
AC_SUBST(READELF)
 
1017
 
 
1018
AC_SUBST(ASDLGEN)
 
1019
AC_CHECK_PROGS(PYTHON, python$PACKAGE_VERSION python3 python, not-found)
 
1020
if test "$PYTHON" = not-found; then
 
1021
    ASDLGEN="@echo python: $PYTHON! cannot run \$(srcdir)/Parser/asdl_c.py #"
 
1022
else
 
1023
    ASDLGEN="$PYTHON"
 
1024
fi
 
1025
 
 
1026
 
 
1027
case $MACHDEP in
 
1028
bsdos*|hp*|HP*)
 
1029
        # install -d does not work on BSDI or HP-UX
 
1030
        if test -z "$INSTALL"
 
1031
        then
 
1032
                INSTALL="${srcdir}/install-sh -c"
 
1033
        fi
 
1034
esac
 
1035
AC_PROG_INSTALL
 
1036
AC_PROG_MKDIR_P
 
1037
 
 
1038
# Not every filesystem supports hard links
 
1039
AC_SUBST(LN)
 
1040
if test -z "$LN" ; then
 
1041
        case $ac_sys_system in
 
1042
                CYGWIN*) LN="ln -s";;
 
1043
                *) LN=ln;;
 
1044
        esac
 
1045
fi
 
1046
 
 
1047
# For calculating the .so ABI tag.
 
1048
AC_SUBST(ABIFLAGS)
 
1049
ABIFLAGS=""
 
1050
 
 
1051
# Check for --with-pydebug
 
1052
AC_MSG_CHECKING(for --with-pydebug)
 
1053
AC_ARG_WITH(pydebug, 
 
1054
            AS_HELP_STRING([--with-pydebug], [build with Py_DEBUG defined]),
 
1055
[
 
1056
if test "$withval" != no
 
1057
then 
 
1058
  AC_DEFINE(Py_DEBUG, 1, 
 
1059
  [Define if you want to build an interpreter with many run-time checks.]) 
 
1060
  AC_MSG_RESULT(yes); 
 
1061
  Py_DEBUG='true'
 
1062
  ABIFLAGS="${ABIFLAGS}d"
 
1063
else AC_MSG_RESULT(no); Py_DEBUG='false'
 
1064
fi],
 
1065
[AC_MSG_RESULT(no)])
 
1066
 
 
1067
# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
 
1068
# merged with this chunk of code?
 
1069
 
 
1070
# Optimizer/debugger flags
 
1071
# ------------------------
 
1072
# (The following bit of code is complicated enough - please keep things
 
1073
# indented properly.  Just pretend you're editing Python code. ;-)
 
1074
 
 
1075
# There are two parallel sets of case statements below, one that checks to
 
1076
# see if OPT was set and one that does BASECFLAGS setting based upon
 
1077
# compiler and platform.  BASECFLAGS tweaks need to be made even if the
 
1078
# user set OPT.
 
1079
 
 
1080
# tweak OPT based on compiler and platform, only if the user didn't set
 
1081
# it on the command line
 
1082
AC_SUBST(OPT)
 
1083
if test "${OPT-unset}" = "unset"
 
1084
then
 
1085
    case $GCC in
 
1086
    yes)
 
1087
        if test "$CC" != 'g++' ; then
 
1088
            STRICT_PROTO="-Wstrict-prototypes"
 
1089
        fi
 
1090
        # For gcc 4.x we need to use -fwrapv so lets check if its supported
 
1091
        if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
 
1092
           WRAP="-fwrapv"
 
1093
        fi
 
1094
 
 
1095
        # Clang also needs -fwrapv
 
1096
        case $CC in
 
1097
            *clang*) WRAP="-fwrapv"
 
1098
            ;;
 
1099
        esac
 
1100
 
 
1101
        case $ac_cv_prog_cc_g in
 
1102
        yes)
 
1103
            if test "$Py_DEBUG" = 'true' ; then
 
1104
                # Optimization messes up debuggers, so turn it off for
 
1105
                # debug builds.
 
1106
                OPT="-g -O0 -Wall $STRICT_PROTO"
 
1107
            else
 
1108
                OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
 
1109
            fi
 
1110
            ;;
 
1111
        *)
 
1112
            OPT="-O3 -Wall $STRICT_PROTO"
 
1113
            ;;
 
1114
        esac
 
1115
        case $ac_sys_system in
 
1116
            SCO_SV*) OPT="$OPT -m486 -DSCO5"
 
1117
            ;;
 
1118
        esac
 
1119
        ;;
 
1120
 
 
1121
    *)
 
1122
        OPT="-O"
 
1123
        ;;
 
1124
    esac
 
1125
fi
 
1126
 
 
1127
AC_SUBST(BASECFLAGS)
 
1128
 
 
1129
# The -arch flags for universal builds on OSX
 
1130
UNIVERSAL_ARCH_FLAGS=
 
1131
AC_SUBST(UNIVERSAL_ARCH_FLAGS)
 
1132
 
 
1133
# tweak BASECFLAGS based on compiler and platform
 
1134
case $GCC in
 
1135
yes)
 
1136
    # Python doesn't violate C99 aliasing rules, but older versions of
 
1137
    # GCC produce warnings for legal Python code.  Enable
 
1138
    # -fno-strict-aliasing on versions of GCC that support but produce
 
1139
    # warnings.  See Issue3326
 
1140
    AC_MSG_CHECKING(whether $CC accepts and needs -fno-strict-aliasing)
 
1141
     ac_save_cc="$CC"
 
1142
     CC="$CC -fno-strict-aliasing"
 
1143
     save_CFLAGS="$CFLAGS"
 
1144
     AC_CACHE_VAL(ac_cv_no_strict_aliasing,
 
1145
       AC_COMPILE_IFELSE(
 
1146
         [
 
1147
           AC_LANG_PROGRAM([[]], [[]])
 
1148
         ],[
 
1149
           CC="$ac_save_cc -fstrict-aliasing"
 
1150
           CFLAGS="$CFLAGS -Werror -Wstrict-aliasing"
 
1151
           AC_COMPILE_IFELSE(
 
1152
             [
 
1153
               AC_LANG_PROGRAM([[void f(int **x) {}]],
 
1154
                 [[double *x; f((int **) &x);]])
 
1155
             ],[
 
1156
               ac_cv_no_strict_aliasing=no
 
1157
             ],[
 
1158
               ac_cv_no_strict_aliasing=yes
 
1159
             ])
 
1160
         ],[
 
1161
           ac_cv_no_strict_aliasing=no
 
1162
         ]))
 
1163
     CFLAGS="$save_CFLAGS"
 
1164
     CC="$ac_save_cc"
 
1165
    AC_MSG_RESULT($ac_cv_no_strict_aliasing)
 
1166
    if test $ac_cv_no_strict_aliasing = yes
 
1167
    then
 
1168
      BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
 
1169
    fi
 
1170
 
 
1171
    AC_MSG_CHECKING(if we can turn off $CC unused result warning)
 
1172
     ac_save_cc="$CC"
 
1173
     CC="$CC -Wunused-result -Werror"
 
1174
     save_CFLAGS="$CFLAGS"
 
1175
     AC_CACHE_VAL(ac_cv_disable_unused_result_warning,
 
1176
       AC_COMPILE_IFELSE(
 
1177
         [
 
1178
           AC_LANG_PROGRAM([[]], [[]])
 
1179
         ],[
 
1180
           ac_cv_disable_unused_result_warning=yes
 
1181
         ],[
 
1182
           ac_cv_disable_unused_result_warning=no
 
1183
         ]))
 
1184
     CFLAGS="$save_CFLAGS"
 
1185
     CC="$ac_save_cc"
 
1186
    AC_MSG_RESULT($ac_cv_disable_unused_result_warning)
 
1187
 
 
1188
    if test $ac_cv_disable_unused_result_warning = yes
 
1189
    then
 
1190
      BASECFLAGS="$BASECFLAGS -Wno-unused-result"
 
1191
    fi
 
1192
 
 
1193
    AC_MSG_CHECKING(for -Werror=declaration-after-statement)
 
1194
     ac_save_cc="$CC"
 
1195
     CC="$CC -Werror=declaration-after-statement"
 
1196
     save_CFLAGS="$CFLAGS"
 
1197
     AC_CACHE_VAL(ac_cv_declaration_after_statement_warning,
 
1198
       AC_COMPILE_IFELSE(
 
1199
         [
 
1200
           AC_LANG_PROGRAM([[]], [[]])
 
1201
         ],[
 
1202
           ac_cv_declaration_after_statement_warning=yes
 
1203
         ],[
 
1204
           ac_cv_declaration_after_statement_warning=no
 
1205
         ]))
 
1206
     CFLAGS="$save_CFLAGS"
 
1207
     CC="$ac_save_cc"
 
1208
    AC_MSG_RESULT($ac_cv_declaration_after_statement_warning)
 
1209
 
 
1210
    if test $ac_cv_declaration_after_statement_warning = yes
 
1211
    then
 
1212
      BASECFLAGS="$BASECFLAGS -Werror=declaration-after-statement"
 
1213
    fi
 
1214
 
 
1215
    # if using gcc on alpha, use -mieee to get (near) full IEEE 754
 
1216
    # support.  Without this, treatment of subnormals doesn't follow
 
1217
    # the standard.
 
1218
    case $host in
 
1219
         alpha*)
 
1220
                BASECFLAGS="$BASECFLAGS -mieee"
 
1221
                ;;
 
1222
    esac
 
1223
 
 
1224
    case $ac_sys_system in
 
1225
        SCO_SV*)
 
1226
            BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
 
1227
            ;;
 
1228
 
 
1229
    # is there any other compiler on Darwin besides gcc?
 
1230
    Darwin*)
 
1231
        # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
 
1232
        # used to be here, but non-Apple gcc doesn't accept them.
 
1233
        if test "${CC}" = gcc
 
1234
        then
 
1235
            AC_MSG_CHECKING(which compiler should be used)
 
1236
            case "${UNIVERSALSDK}" in
 
1237
            */MacOSX10.4u.sdk)
 
1238
                # Build using 10.4 SDK, force usage of gcc when the
 
1239
                # compiler is gcc, otherwise the user will get very
 
1240
                # confusing error messages when building on OSX 10.6
 
1241
                CC=gcc-4.0
 
1242
                CPP=cpp-4.0
 
1243
                ;;
 
1244
            esac
 
1245
            AC_MSG_RESULT($CC)
 
1246
        fi
 
1247
 
 
1248
        if test "${enable_universalsdk}"
 
1249
        then
 
1250
            case "$UNIVERSAL_ARCHS" in
 
1251
            32-bit)
 
1252
               UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
 
1253
               LIPO_32BIT_FLAGS=""
 
1254
               ARCH_RUN_32BIT=""
 
1255
               ;;
 
1256
            64-bit)
 
1257
               UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
 
1258
               LIPO_32BIT_FLAGS=""
 
1259
               ARCH_RUN_32BIT="true"
 
1260
               ;;
 
1261
            all)
 
1262
               UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
 
1263
               LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
 
1264
               ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
 
1265
               ;;
 
1266
            intel)
 
1267
               UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
 
1268
               LIPO_32BIT_FLAGS="-extract i386"
 
1269
               ARCH_RUN_32BIT="/usr/bin/arch -i386"
 
1270
               ;;
 
1271
            intel-32)
 
1272
               UNIVERSAL_ARCH_FLAGS="-arch i386"
 
1273
               LIPO_32BIT_FLAGS=""
 
1274
               ARCH_RUN_32BIT=""
 
1275
               ;;
 
1276
            3-way)
 
1277
               UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
 
1278
               LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
 
1279
               ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
 
1280
               ;;
 
1281
            *)
 
1282
               AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
 
1283
               ;;
 
1284
            esac
 
1285
 
 
1286
            CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
 
1287
            LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
 
1288
            if test "${UNIVERSALSDK}" != "/"
 
1289
            then
 
1290
                CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
 
1291
            fi
 
1292
        fi
 
1293
 
 
1294
        # Calculate an appropriate deployment target for this build:
 
1295
        # The deployment target value is used explicitly to enable certain
 
1296
        # features are enabled (such as builtin libedit support for readline)
 
1297
        # through the use of Apple's Availabiliy Macros and is used as a
 
1298
        # component of the string returned by distutils.get_platform().
 
1299
        #
 
1300
        # Use the value from:
 
1301
        # 1. the MACOSX_DEPLOYMENT_TARGET environment variable if specified
 
1302
        # 2. the operating system version of the build machine if >= 10.6
 
1303
        # 3. If running on OS X 10.3 through 10.5, use the legacy tests
 
1304
        #       below to pick either 10.3, 10.4, or 10.5 as the target.
 
1305
        # 4. If we are running on OS X 10.2 or earlier, good luck!
 
1306
 
 
1307
        AC_MSG_CHECKING(which MACOSX_DEPLOYMENT_TARGET to use)
 
1308
        cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
 
1309
        if test ${cur_target} '>' 10.2 && \
 
1310
           test ${cur_target} '<' 10.6
 
1311
        then
 
1312
            cur_target=10.3
 
1313
            if test ${enable_universalsdk}
 
1314
            then
 
1315
                case "$UNIVERSAL_ARCHS" in
 
1316
                all|3-way|intel|64-bit)
 
1317
                    # These configurations were first supported in 10.5
 
1318
                    cur_target='10.5'
 
1319
                    ;;
 
1320
                esac
 
1321
            else
 
1322
                if test `/usr/bin/arch` = "i386"
 
1323
                then
 
1324
                    # 10.4 was the first release to support Intel archs
 
1325
                    cur_target="10.4"
 
1326
                fi
 
1327
            fi
 
1328
        fi
 
1329
        CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
 
1330
 
 
1331
        # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
 
1332
        # environment with a value that is the same as what we'll use
 
1333
        # in the Makefile to ensure that we'll get the same compiler
 
1334
        # environment during configure and build time.
 
1335
        MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
 
1336
        export MACOSX_DEPLOYMENT_TARGET
 
1337
        EXPORT_MACOSX_DEPLOYMENT_TARGET=''
 
1338
        AC_MSG_RESULT($MACOSX_DEPLOYMENT_TARGET)
 
1339
 
 
1340
        # end of Darwin* tests
 
1341
        ;;
 
1342
    esac
 
1343
    ;;
 
1344
 
 
1345
*)
 
1346
    case $ac_sys_system in
 
1347
    OpenUNIX*|UnixWare*)
 
1348
        BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
 
1349
        ;;
 
1350
    SCO_SV*)
 
1351
        BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
 
1352
        ;;
 
1353
    esac
 
1354
    ;;
 
1355
esac
 
1356
 
 
1357
if test "$Py_DEBUG" = 'true'; then
 
1358
  :
 
1359
else
 
1360
  OPT="-DNDEBUG $OPT"
 
1361
fi
 
1362
 
 
1363
if test "$ac_arch_flags"
 
1364
then
 
1365
        BASECFLAGS="$BASECFLAGS $ac_arch_flags"
 
1366
fi
 
1367
 
 
1368
# On some compilers, pthreads are available without further options
 
1369
# (e.g. MacOS X). On some of these systems, the compiler will not
 
1370
# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
 
1371
# So we have to see first whether pthreads are available without
 
1372
# options before we can check whether -Kpthread improves anything.
 
1373
AC_MSG_CHECKING(whether pthreads are available without options)
 
1374
AC_CACHE_VAL(ac_cv_pthread_is_default,
 
1375
[AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
1376
#include <stdio.h>
 
1377
#include <pthread.h>
 
1378
 
 
1379
void* routine(void* p){return NULL;}
 
1380
 
 
1381
int main(){
 
1382
  pthread_t p;
 
1383
  if(pthread_create(&p,NULL,routine,NULL)!=0)
 
1384
    return 1;
 
1385
  (void)pthread_detach(p);
 
1386
  return 0;
 
1387
}
 
1388
]])],[
 
1389
  ac_cv_pthread_is_default=yes
 
1390
  ac_cv_kthread=no
 
1391
  ac_cv_pthread=no
 
1392
],[ac_cv_pthread_is_default=no],[ac_cv_pthread_is_default=no])
 
1393
])
 
1394
AC_MSG_RESULT($ac_cv_pthread_is_default)
 
1395
 
 
1396
 
 
1397
if test $ac_cv_pthread_is_default = yes 
 
1398
then
 
1399
  ac_cv_kpthread=no
 
1400
else
 
1401
# -Kpthread, if available, provides the right #defines
 
1402
# and linker options to make pthread_create available
 
1403
# Some compilers won't report that they do not support -Kpthread,
 
1404
# so we need to run a program to see whether it really made the
 
1405
# function available.
 
1406
AC_MSG_CHECKING(whether $CC accepts -Kpthread)
 
1407
AC_CACHE_VAL(ac_cv_kpthread,
 
1408
[ac_save_cc="$CC"
 
1409
CC="$CC -Kpthread"
 
1410
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
1411
#include <stdio.h>
 
1412
#include <pthread.h>
 
1413
 
 
1414
void* routine(void* p){return NULL;}
 
1415
 
 
1416
int main(){
 
1417
  pthread_t p;
 
1418
  if(pthread_create(&p,NULL,routine,NULL)!=0)
 
1419
    return 1;
 
1420
  (void)pthread_detach(p);
 
1421
  return 0;
 
1422
}
 
1423
]])],[ac_cv_kpthread=yes],[ac_cv_kpthread=no],[ac_cv_kpthread=no])
 
1424
CC="$ac_save_cc"])
 
1425
AC_MSG_RESULT($ac_cv_kpthread)
 
1426
fi
 
1427
 
 
1428
if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
 
1429
then
 
1430
# -Kthread, if available, provides the right #defines
 
1431
# and linker options to make pthread_create available
 
1432
# Some compilers won't report that they do not support -Kthread,
 
1433
# so we need to run a program to see whether it really made the
 
1434
# function available.
 
1435
AC_MSG_CHECKING(whether $CC accepts -Kthread)
 
1436
AC_CACHE_VAL(ac_cv_kthread,
 
1437
[ac_save_cc="$CC"
 
1438
CC="$CC -Kthread"
 
1439
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
1440
#include <stdio.h>
 
1441
#include <pthread.h>
 
1442
 
 
1443
void* routine(void* p){return NULL;}
 
1444
 
 
1445
int main(){
 
1446
  pthread_t p;
 
1447
  if(pthread_create(&p,NULL,routine,NULL)!=0)
 
1448
    return 1;
 
1449
  (void)pthread_detach(p);
 
1450
  return 0;
 
1451
}
 
1452
]])],[ac_cv_kthread=yes],[ac_cv_kthread=no],[ac_cv_kthread=no])
 
1453
CC="$ac_save_cc"])
 
1454
AC_MSG_RESULT($ac_cv_kthread)
 
1455
fi
 
1456
 
 
1457
if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
 
1458
then
 
1459
# -pthread, if available, provides the right #defines
 
1460
# and linker options to make pthread_create available
 
1461
# Some compilers won't report that they do not support -pthread,
 
1462
# so we need to run a program to see whether it really made the
 
1463
# function available.
 
1464
AC_MSG_CHECKING(whether $CC accepts -pthread)
 
1465
AC_CACHE_VAL(ac_cv_pthread,
 
1466
[ac_save_cc="$CC"
 
1467
CC="$CC -pthread"
 
1468
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
1469
#include <stdio.h>
 
1470
#include <pthread.h>
 
1471
 
 
1472
void* routine(void* p){return NULL;}
 
1473
 
 
1474
int main(){
 
1475
  pthread_t p;
 
1476
  if(pthread_create(&p,NULL,routine,NULL)!=0)
 
1477
    return 1;
 
1478
  (void)pthread_detach(p);
 
1479
  return 0;
 
1480
}
 
1481
]])],[ac_cv_pthread=yes],[ac_cv_pthread=no],[ac_cv_pthread=no])
 
1482
CC="$ac_save_cc"])
 
1483
AC_MSG_RESULT($ac_cv_pthread)
 
1484
fi
 
1485
 
 
1486
# If we have set a CC compiler flag for thread support then
 
1487
# check if it works for CXX, too.
 
1488
ac_cv_cxx_thread=no
 
1489
if test ! -z "$CXX"
 
1490
then
 
1491
AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
 
1492
ac_save_cxx="$CXX"
 
1493
 
 
1494
if test "$ac_cv_kpthread" = "yes"
 
1495
then
 
1496
  CXX="$CXX -Kpthread"  
 
1497
  ac_cv_cxx_thread=yes
 
1498
elif test "$ac_cv_kthread" = "yes"
 
1499
then
 
1500
  CXX="$CXX -Kthread"
 
1501
  ac_cv_cxx_thread=yes
 
1502
elif test "$ac_cv_pthread" = "yes"
 
1503
then 
 
1504
  CXX="$CXX -pthread"
 
1505
  ac_cv_cxx_thread=yes
 
1506
fi
 
1507
 
 
1508
if test $ac_cv_cxx_thread = yes
 
1509
then
 
1510
  echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
 
1511
  $CXX -c conftest.$ac_ext 2>&5
 
1512
  if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
 
1513
     && test -s conftest$ac_exeext && ./conftest$ac_exeext
 
1514
  then
 
1515
    ac_cv_cxx_thread=yes
 
1516
  else
 
1517
    ac_cv_cxx_thread=no
 
1518
  fi
 
1519
  rm -fr conftest*
 
1520
fi
 
1521
AC_MSG_RESULT($ac_cv_cxx_thread)
 
1522
fi
 
1523
CXX="$ac_save_cxx"
 
1524
 
 
1525
dnl # check for ANSI or K&R ("traditional") preprocessor
 
1526
dnl AC_MSG_CHECKING(for C preprocessor type)
 
1527
dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
1528
dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
 
1529
dnl int foo;
 
1530
dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
 
1531
dnl ]], [[;]])],[cpp_type=ansi],[AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional])
 
1532
dnl AC_MSG_RESULT($cpp_type)
 
1533
 
 
1534
# checks for header files
 
1535
AC_HEADER_STDC
 
1536
ac_save_cppflags="$CPPFLAGS"
 
1537
CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw"
 
1538
AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
 
1539
fcntl.h grp.h \
 
1540
ieeefp.h io.h langinfo.h libintl.h ncurses.h process.h pthread.h \
 
1541
sched.h shadow.h signal.h stdint.h stropts.h termios.h \
 
1542
unistd.h utime.h \
 
1543
poll.h sys/devpoll.h sys/epoll.h sys/poll.h \
 
1544
sys/audioio.h sys/xattr.h sys/bsdtty.h sys/event.h sys/file.h sys/ioctl.h \
 
1545
sys/kern_control.h sys/loadavg.h sys/lock.h sys/mkdev.h sys/modem.h \
 
1546
sys/param.h sys/select.h sys/sendfile.h sys/socket.h sys/statvfs.h \
 
1547
sys/stat.h sys/syscall.h sys/sys_domain.h sys/termio.h sys/time.h \
 
1548
sys/times.h sys/types.h sys/uio.h sys/un.h sys/utsname.h sys/wait.h pty.h \
 
1549
libutil.h sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
 
1550
bluetooth/bluetooth.h linux/tipc.h spawn.h util.h alloca.h endian.h \
 
1551
sys/endian.h)
 
1552
CPPFLAGS=$ac_save_cppflags
 
1553
AC_HEADER_DIRENT
 
1554
AC_HEADER_MAJOR
 
1555
 
 
1556
# On Darwin (OS X) net/if.h requires sys/socket.h to be imported first.
 
1557
AC_CHECK_HEADERS([net/if.h], [], [],
 
1558
[#include <stdio.h>
 
1559
#ifdef STDC_HEADERS
 
1560
# include <stdlib.h>
 
1561
# include <stddef.h>
 
1562
#else
 
1563
# ifdef HAVE_STDLIB_H
 
1564
#  include <stdlib.h>
 
1565
# endif
 
1566
#endif
 
1567
#ifdef HAVE_SYS_SOCKET_H
 
1568
# include <sys/socket.h>
 
1569
#endif
 
1570
])
 
1571
 
 
1572
 
 
1573
# On Solaris, term.h requires curses.h
 
1574
AC_CHECK_HEADERS(term.h,,,[
 
1575
#ifdef HAVE_CURSES_H
 
1576
#include <curses.h>
 
1577
#endif
 
1578
])
 
1579
 
 
1580
# On Linux, netlink.h requires asm/types.h
 
1581
AC_CHECK_HEADERS(linux/netlink.h,,,[
 
1582
#ifdef HAVE_ASM_TYPES_H
 
1583
#include <asm/types.h>
 
1584
#endif
 
1585
#ifdef HAVE_SYS_SOCKET_H
 
1586
#include <sys/socket.h>
 
1587
#endif
 
1588
])
 
1589
 
 
1590
# On Linux, can.h and can/raw.h require sys/socket.h
 
1591
AC_CHECK_HEADERS(linux/can.h linux/can/raw.h linux/can/bcm.h,,,[
 
1592
#ifdef HAVE_SYS_SOCKET_H
 
1593
#include <sys/socket.h>
 
1594
#endif
 
1595
])
 
1596
 
 
1597
# checks for typedefs
 
1598
was_it_defined=no
 
1599
AC_MSG_CHECKING(for clock_t in time.h)
 
1600
AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
 
1601
    AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
 
1602
])
 
1603
AC_MSG_RESULT($was_it_defined)
 
1604
 
 
1605
AC_MSG_CHECKING(for makedev)
 
1606
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 
1607
#if defined(MAJOR_IN_MKDEV)
 
1608
#include <sys/mkdev.h>
 
1609
#elif defined(MAJOR_IN_SYSMACROS)
 
1610
#include <sys/sysmacros.h>
 
1611
#else
 
1612
#include <sys/types.h>
 
1613
#endif
 
1614
]], [[
 
1615
  makedev(0, 0) ]])
 
1616
],[ac_cv_has_makedev=yes],[ac_cv_has_makedev=no])
 
1617
AC_MSG_RESULT($ac_cv_has_makedev)
 
1618
if test "$ac_cv_has_makedev" = "yes"; then
 
1619
    AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
 
1620
fi
 
1621
 
 
1622
# byte swapping
 
1623
AC_MSG_CHECKING(for le64toh)
 
1624
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 
1625
#ifdef HAVE_ENDIAN_H
 
1626
#include <endian.h>
 
1627
#elif defined(HAVE_SYS_ENDIAN_H)
 
1628
#include <sys/endian.h>
 
1629
#endif
 
1630
]], [[
 
1631
   le64toh(1) ]])
 
1632
],[ac_cv_has_le64toh=yes],[ac_cv_has_le64toh=no])
 
1633
AC_MSG_RESULT($ac_cv_has_le64toh)
 
1634
if test "$ac_cv_has_le64toh" = "yes"; then
 
1635
    AC_DEFINE(HAVE_HTOLE64, 1, [Define this if you have le64toh()])
 
1636
fi
 
1637
 
 
1638
# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
 
1639
# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
 
1640
# defined, but the compiler does not support pragma redefine_extname,
 
1641
# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
 
1642
# structures (such as rlimit64) without declaring them. As a
 
1643
# work-around, disable LFS on such configurations
 
1644
 
 
1645
use_lfs=yes
 
1646
AC_MSG_CHECKING(Solaris LFS bug)
 
1647
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
1648
#define _LARGEFILE_SOURCE 1
 
1649
#define _FILE_OFFSET_BITS 64
 
1650
#include <sys/resource.h>
 
1651
]], [[struct rlimit foo;]])],[sol_lfs_bug=no],[sol_lfs_bug=yes])
 
1652
AC_MSG_RESULT($sol_lfs_bug)
 
1653
if test "$sol_lfs_bug" = "yes"; then
 
1654
  use_lfs=no
 
1655
fi
 
1656
 
 
1657
if test "$use_lfs" = "yes"; then
 
1658
# Two defines needed to enable largefile support on various platforms
 
1659
# These may affect some typedefs
 
1660
case $ac_sys_system/$ac_sys_release in
 
1661
AIX*)
 
1662
    AC_DEFINE(_LARGE_FILES, 1, 
 
1663
    [This must be defined on AIX systems to enable large file support.])
 
1664
    ;;
 
1665
esac
 
1666
AC_DEFINE(_LARGEFILE_SOURCE, 1, 
 
1667
[This must be defined on some systems to enable large file support.])
 
1668
AC_DEFINE(_FILE_OFFSET_BITS, 64,
 
1669
[This must be set to 64 on some systems to enable large file support.])
 
1670
fi
 
1671
 
 
1672
# Add some code to confdefs.h so that the test for off_t works on SCO
 
1673
cat >> confdefs.h <<\EOF
 
1674
#if defined(SCO_DS)
 
1675
#undef _OFF_T
 
1676
#endif
 
1677
EOF
 
1678
 
 
1679
# Type availability checks
 
1680
AC_TYPE_MODE_T
 
1681
AC_TYPE_OFF_T
 
1682
AC_TYPE_PID_T
 
1683
AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[assume C89 semantics that RETSIGTYPE is always void])
 
1684
AC_TYPE_SIZE_T
 
1685
AC_TYPE_UID_T
 
1686
 
 
1687
# There are two separate checks for each of the exact-width integer types we
 
1688
# need.  First we check whether the type is available using the usual
 
1689
# AC_CHECK_TYPE macro with the default includes (which includes <inttypes.h>
 
1690
# and <stdint.h> where available).  We then also use the special type checks of
 
1691
# the form AC_TYPE_UINT32_T, which in the case that uint32_t is not available
 
1692
# directly, #define's uint32_t to be a suitable type.
 
1693
 
 
1694
AC_CHECK_TYPE(uint32_t,
 
1695
  AC_DEFINE(HAVE_UINT32_T, 1, [Define if your compiler provides uint32_t.]),,)
 
1696
AC_TYPE_UINT32_T
 
1697
 
 
1698
AC_CHECK_TYPE(uint64_t,
 
1699
  AC_DEFINE(HAVE_UINT64_T, 1, [Define if your compiler provides uint64_t.]),,)
 
1700
AC_TYPE_UINT64_T
 
1701
 
 
1702
AC_CHECK_TYPE(int32_t,
 
1703
  AC_DEFINE(HAVE_INT32_T, 1, [Define if your compiler provides int32_t.]),,)
 
1704
AC_TYPE_INT32_T
 
1705
 
 
1706
AC_CHECK_TYPE(int64_t,
 
1707
  AC_DEFINE(HAVE_INT64_T, 1, [Define if your compiler provides int64_t.]),,)
 
1708
AC_TYPE_INT64_T
 
1709
 
 
1710
AC_CHECK_TYPE(ssize_t,
 
1711
  AC_DEFINE(HAVE_SSIZE_T, 1, [Define if your compiler provides ssize_t]),,)
 
1712
AC_CHECK_TYPE(__uint128_t,
 
1713
  AC_DEFINE(HAVE_GCC_UINT128_T, 1, [Define if your compiler provides __uint128_t]),,)
 
1714
 
 
1715
# Sizes of various common basic types
 
1716
# ANSI C requires sizeof(char) == 1, so no need to check it
 
1717
AC_CHECK_SIZEOF(int, 4)
 
1718
AC_CHECK_SIZEOF(long, 4)
 
1719
AC_CHECK_SIZEOF(void *, 4)
 
1720
AC_CHECK_SIZEOF(short, 2)
 
1721
AC_CHECK_SIZEOF(float, 4)
 
1722
AC_CHECK_SIZEOF(double, 8)
 
1723
AC_CHECK_SIZEOF(fpos_t, 4)
 
1724
AC_CHECK_SIZEOF(size_t, 4)
 
1725
AC_CHECK_SIZEOF(pid_t, 4)
 
1726
 
 
1727
AC_MSG_CHECKING(for long long support)
 
1728
have_long_long=no
 
1729
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long long x; x = (long long)0;]])],[
 
1730
  AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.]) 
 
1731
  have_long_long=yes
 
1732
],[])
 
1733
AC_MSG_RESULT($have_long_long)
 
1734
if test "$have_long_long" = yes ; then
 
1735
AC_CHECK_SIZEOF(long long, 8)
 
1736
fi
 
1737
 
 
1738
AC_MSG_CHECKING(for long double support)
 
1739
have_long_double=no
 
1740
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long double x; x = (long double)0;]])],[
 
1741
  AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.]) 
 
1742
  have_long_double=yes
 
1743
],[])
 
1744
AC_MSG_RESULT($have_long_double)
 
1745
if test "$have_long_double" = yes ; then
 
1746
AC_CHECK_SIZEOF(long double, 16)
 
1747
fi
 
1748
 
 
1749
 
 
1750
AC_MSG_CHECKING(for _Bool support)
 
1751
have_c99_bool=no
 
1752
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[_Bool x; x = (_Bool)0;]])],[
 
1753
  AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.]) 
 
1754
  have_c99_bool=yes
 
1755
],[])
 
1756
AC_MSG_RESULT($have_c99_bool)
 
1757
if test "$have_c99_bool" = yes ; then
 
1758
AC_CHECK_SIZEOF(_Bool, 1)
 
1759
fi
 
1760
 
 
1761
AC_CHECK_TYPES(uintptr_t, 
 
1762
   [AC_CHECK_SIZEOF(uintptr_t, 4)], 
 
1763
   [], [#ifdef HAVE_STDINT_H
 
1764
        #include <stdint.h>
 
1765
        #endif
 
1766
        #ifdef HAVE_INTTYPES_H
 
1767
        #include <inttypes.h>
 
1768
        #endif])
 
1769
 
 
1770
AC_CHECK_SIZEOF(off_t, [], [
 
1771
#ifdef HAVE_SYS_TYPES_H
 
1772
#include <sys/types.h>
 
1773
#endif
 
1774
])
 
1775
 
 
1776
AC_MSG_CHECKING(whether to enable large file support)
 
1777
if test "$have_long_long" = yes
 
1778
then
 
1779
if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
 
1780
        "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
 
1781
  AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1, 
 
1782
  [Defined to enable large file support when an off_t is bigger than a long
 
1783
   and long long is available and at least as big as an off_t. You may need
 
1784
   to add some flags for configuration and compilation to enable this mode.
 
1785
   (For Solaris and Linux, the necessary defines are already defined.)])
 
1786
  AC_MSG_RESULT(yes)
 
1787
else
 
1788
  AC_MSG_RESULT(no)
 
1789
fi
 
1790
else
 
1791
  AC_MSG_RESULT(no)
 
1792
fi
 
1793
 
 
1794
AC_CHECK_SIZEOF(time_t, [], [
 
1795
#ifdef HAVE_SYS_TYPES_H
 
1796
#include <sys/types.h>
 
1797
#endif
 
1798
#ifdef HAVE_TIME_H
 
1799
#include <time.h>
 
1800
#endif
 
1801
])
 
1802
 
 
1803
# if have pthread_t then define SIZEOF_PTHREAD_T
 
1804
ac_save_cc="$CC"
 
1805
if test "$ac_cv_kpthread" = "yes"
 
1806
then CC="$CC -Kpthread"
 
1807
elif test "$ac_cv_kthread" = "yes"
 
1808
then CC="$CC -Kthread"
 
1809
elif test "$ac_cv_pthread" = "yes"
 
1810
then CC="$CC -pthread"
 
1811
fi
 
1812
 
 
1813
AC_MSG_CHECKING(for pthread_t)
 
1814
have_pthread_t=no
 
1815
AC_COMPILE_IFELSE([
 
1816
  AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t x; x = *(pthread_t*)0;]])
 
1817
],[have_pthread_t=yes],[])
 
1818
AC_MSG_RESULT($have_pthread_t)
 
1819
if test "$have_pthread_t" = yes ; then
 
1820
  AC_CHECK_SIZEOF(pthread_t, [], [
 
1821
#ifdef HAVE_PTHREAD_H
 
1822
#include <pthread.h>
 
1823
#endif
 
1824
  ])
 
1825
fi
 
1826
CC="$ac_save_cc"
 
1827
 
 
1828
AC_SUBST(OTHER_LIBTOOL_OPT)
 
1829
case $ac_sys_system/$ac_sys_release in
 
1830
  Darwin/@<:@01567@:>@\..*) 
 
1831
    OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
 
1832
    ;;
 
1833
  Darwin/*)
 
1834
    OTHER_LIBTOOL_OPT=""
 
1835
    ;;
 
1836
esac
 
1837
 
 
1838
 
 
1839
AC_SUBST(LIBTOOL_CRUFT)
 
1840
case $ac_sys_system/$ac_sys_release in
 
1841
  Darwin/@<:@01567@:>@\..*) 
 
1842
    LIBTOOL_CRUFT="-framework System -lcc_dynamic"
 
1843
    if test "${enable_universalsdk}"; then
 
1844
            :
 
1845
    else
 
1846
        LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
 
1847
    fi
 
1848
    LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
 
1849
    LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
 
1850
  Darwin/*)
 
1851
    gcc_version=`gcc -dumpversion`
 
1852
    if test ${gcc_version} '<' 4.0
 
1853
        then
 
1854
            LIBTOOL_CRUFT="-lcc_dynamic"
 
1855
        else 
 
1856
            LIBTOOL_CRUFT=""
 
1857
    fi
 
1858
    AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
1859
    #include <unistd.h>
 
1860
    int main(int argc, char*argv[])
 
1861
    {
 
1862
      if (sizeof(long) == 4) {
 
1863
          return 0;
 
1864
      } else {
 
1865
          return 1;
 
1866
      }
 
1867
    }
 
1868
    ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=yes])
 
1869
    
 
1870
    if test "${ac_osx_32bit}" = "yes"; then
 
1871
        case `/usr/bin/arch` in
 
1872
        i386) 
 
1873
                MACOSX_DEFAULT_ARCH="i386" 
 
1874
                ;;
 
1875
        ppc) 
 
1876
                MACOSX_DEFAULT_ARCH="ppc" 
 
1877
                ;;
 
1878
        *)
 
1879
                AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
 
1880
                ;;
 
1881
        esac
 
1882
    else
 
1883
        case `/usr/bin/arch` in
 
1884
        i386) 
 
1885
                MACOSX_DEFAULT_ARCH="x86_64" 
 
1886
                ;;
 
1887
        ppc) 
 
1888
                MACOSX_DEFAULT_ARCH="ppc64" 
 
1889
                ;;
 
1890
        *)
 
1891
                AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
 
1892
                ;;
 
1893
        esac
 
1894
 
 
1895
    fi
 
1896
 
 
1897
    LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
 
1898
    LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
 
1899
    LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
 
1900
esac
 
1901
AC_MSG_CHECKING(for --enable-framework)
 
1902
if test "$enable_framework"
 
1903
then
 
1904
        BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
 
1905
        # -F. is needed to allow linking to the framework while 
 
1906
        # in the build location.
 
1907
        AC_DEFINE(WITH_NEXT_FRAMEWORK, 1, 
 
1908
         [Define if you want to produce an OpenStep/Rhapsody framework
 
1909
         (shared library plus accessory files).])
 
1910
        AC_MSG_RESULT(yes)
 
1911
        if test $enable_shared = "yes"
 
1912
        then
 
1913
                AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
 
1914
        fi
 
1915
else
 
1916
        AC_MSG_RESULT(no)
 
1917
fi
 
1918
 
 
1919
AC_MSG_CHECKING(for dyld)
 
1920
case $ac_sys_system/$ac_sys_release in
 
1921
  Darwin/*)
 
1922
        AC_DEFINE(WITH_DYLD, 1, 
 
1923
        [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
 
1924
         dynamic linker (dyld) instead of the old-style (NextStep) dynamic
 
1925
         linker (rld). Dyld is necessary to support frameworks.])
 
1926
        AC_MSG_RESULT(always on for Darwin)
 
1927
        ;;
 
1928
  *)
 
1929
        AC_MSG_RESULT(no)
 
1930
        ;;
 
1931
esac
 
1932
 
 
1933
# Set info about shared libraries.
 
1934
AC_SUBST(SHLIB_SUFFIX)
 
1935
AC_SUBST(LDSHARED)
 
1936
AC_SUBST(LDCXXSHARED)
 
1937
AC_SUBST(BLDSHARED)
 
1938
AC_SUBST(CCSHARED)
 
1939
AC_SUBST(LINKFORSHARED)
 
1940
 
 
1941
# SHLIB_SUFFIX is the extension of shared libraries `(including the dot!)
 
1942
# -- usually .so, .sl on HP-UX, .dll on Cygwin
 
1943
AC_MSG_CHECKING(the extension of shared libraries)
 
1944
if test -z "$SHLIB_SUFFIX"; then
 
1945
        case $ac_sys_system in
 
1946
        hp*|HP*)
 
1947
                case `uname -m` in
 
1948
                        ia64) SHLIB_SUFFIX=.so;;
 
1949
                        *)    SHLIB_SUFFIX=.sl;;
 
1950
                esac
 
1951
                ;;
 
1952
        CYGWIN*)   SHLIB_SUFFIX=.dll;;
 
1953
        *)         SHLIB_SUFFIX=.so;;
 
1954
        esac
 
1955
fi
 
1956
AC_MSG_RESULT($SHLIB_SUFFIX)
 
1957
 
 
1958
# LDSHARED is the ld *command* used to create shared library
 
1959
# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
 
1960
# (Shared libraries in this instance are shared modules to be loaded into
 
1961
# Python, as opposed to building Python itself as a shared library.)
 
1962
AC_MSG_CHECKING(LDSHARED)
 
1963
if test -z "$LDSHARED"
 
1964
then
 
1965
        case $ac_sys_system/$ac_sys_release in
 
1966
        AIX*)
 
1967
                BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:\$(srcdir)/Modules/python.exp"
 
1968
                LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
 
1969
                ;;
 
1970
        IRIX/5*) LDSHARED="ld -shared";;
 
1971
        IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
 
1972
        SunOS/5*) 
 
1973
                if test "$GCC" = "yes" ; then
 
1974
                        LDSHARED='$(CC) -shared'
 
1975
                        LDCXXSHARED='$(CXX) -shared'
 
1976
                else
 
1977
                        LDSHARED='$(CC) -G'
 
1978
                        LDCXXSHARED='$(CXX) -G'
 
1979
                fi ;;
 
1980
        hp*|HP*)
 
1981
                if test "$GCC" = "yes" ; then
 
1982
                        LDSHARED='$(CC) -shared'
 
1983
                        LDCXXSHARED='$(CXX) -shared'
 
1984
                else
 
1985
                        LDSHARED='ld -b'
 
1986
                fi ;;
 
1987
        Darwin/1.3*)
 
1988
                LDSHARED='$(CC) -bundle'
 
1989
                LDCXXSHARED='$(CXX) -bundle'
 
1990
                if test "$enable_framework" ; then
 
1991
                        # Link against the framework. All externals should be defined.
 
1992
                        BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
 
1993
                        LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
 
1994
                        LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
 
1995
                else
 
1996
                        # No framework. Ignore undefined symbols, assuming they come from Python
 
1997
                        LDSHARED="$LDSHARED -undefined suppress"
 
1998
                        LDCXXSHARED="$LDCXXSHARED -undefined suppress"
 
1999
                fi ;;
 
2000
        Darwin/1.4*|Darwin/5.*|Darwin/6.*)
 
2001
                LDSHARED='$(CC) -bundle'
 
2002
                LDCXXSHARED='$(CXX) -bundle'
 
2003
                if test "$enable_framework" ; then
 
2004
                        # Link against the framework. All externals should be defined.
 
2005
                        BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
 
2006
                        LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
 
2007
                        LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
 
2008
                else
 
2009
                        # No framework, use the Python app as bundle-loader
 
2010
                        BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
 
2011
                        LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
 
2012
                        LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
 
2013
                fi ;;
 
2014
        Darwin/*)
 
2015
                # Use -undefined dynamic_lookup whenever possible (10.3 and later).
 
2016
                # This allows an extension to be used in any Python
 
2017
 
 
2018
                if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
 
2019
                then
 
2020
                        LDSHARED='$(CC) -bundle -undefined dynamic_lookup'
 
2021
                        LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup'
 
2022
                        BLDSHARED="$LDSHARED"
 
2023
                else
 
2024
                        LDSHARED='$(CC) -bundle'
 
2025
                        LDCXXSHARED='$(CXX) -bundle'
 
2026
                        if test "$enable_framework" ; then
 
2027
                                # Link against the framework. All externals should be defined.
 
2028
                                BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
 
2029
                                LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
 
2030
                                LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
 
2031
                        else
 
2032
                                # No framework, use the Python app as bundle-loader
 
2033
                                BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
 
2034
                                LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
 
2035
                                LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
 
2036
                        fi
 
2037
                fi
 
2038
                ;;
 
2039
        Linux*|GNU*|QNX*)
 
2040
                LDSHARED='$(CC) -shared'
 
2041
                LDCXXSHARED='$(CXX) -shared';;
 
2042
        BSD/OS*/4*)
 
2043
                LDSHARED="gcc -shared"
 
2044
                LDCXXSHARED="g++ -shared";;
 
2045
        FreeBSD*)
 
2046
                if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
 
2047
                then
 
2048
                        LDSHARED='$(CC) -shared'
 
2049
                        LDCXXSHARED='$(CXX) -shared'
 
2050
                else
 
2051
                        LDSHARED="ld -Bshareable"
 
2052
                fi;;
 
2053
        OpenBSD*)
 
2054
                if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
 
2055
                then
 
2056
                                LDSHARED='$(CC) -shared $(CCSHARED)'
 
2057
                                LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
 
2058
                else
 
2059
                                case `uname -r` in
 
2060
                                [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
 
2061
                                   LDSHARED="ld -Bshareable ${LDFLAGS}"
 
2062
                                   ;;
 
2063
                                *)
 
2064
                                   LDSHARED='$(CC) -shared $(CCSHARED)'
 
2065
                                   LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
 
2066
                                   ;;
 
2067
                                esac
 
2068
                fi;;
 
2069
        NetBSD*|DragonFly*)
 
2070
                LDSHARED='$(CC) -shared'
 
2071
                LDCXXSHARED='$(CXX) -shared';;
 
2072
        OpenUNIX*|UnixWare*)
 
2073
                if test "$GCC" = "yes" ; then
 
2074
                        LDSHARED='$(CC) -shared'
 
2075
                        LDCXXSHARED='$(CXX) -shared'
 
2076
                else
 
2077
                        LDSHARED='$(CC) -G'
 
2078
                        LDCXXSHARED='$(CXX) -G'
 
2079
                fi;;
 
2080
        SCO_SV*)
 
2081
                LDSHARED='$(CC) -Wl,-G,-Bexport'
 
2082
                LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
 
2083
        CYGWIN*)
 
2084
                LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
 
2085
                LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
 
2086
        *)      LDSHARED="ld";;
 
2087
        esac
 
2088
fi
 
2089
AC_MSG_RESULT($LDSHARED)
 
2090
LDCXXSHARED=${LDCXXSHARED-$LDSHARED}
 
2091
BLDSHARED=${BLDSHARED-$LDSHARED}
 
2092
# CCSHARED are the C *flags* used to create objects to go into a shared
 
2093
# library (module) -- this is only needed for a few systems
 
2094
AC_MSG_CHECKING(CCSHARED)
 
2095
if test -z "$CCSHARED"
 
2096
then
 
2097
        case $ac_sys_system/$ac_sys_release in
 
2098
        SunOS*) if test "$GCC" = yes;
 
2099
                then CCSHARED="-fPIC";
 
2100
                elif test `uname -p` = sparc;
 
2101
                then CCSHARED="-xcode=pic32";
 
2102
                else CCSHARED="-Kpic";
 
2103
                fi;;
 
2104
        hp*|HP*) if test "$GCC" = yes;
 
2105
                 then CCSHARED="-fPIC";
 
2106
                 else CCSHARED="+z";
 
2107
                 fi;;
 
2108
        Linux*|GNU*) CCSHARED="-fPIC";;
 
2109
        BSD/OS*/4*) CCSHARED="-fpic";;
 
2110
        FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
 
2111
        OpenUNIX*|UnixWare*)
 
2112
                if test "$GCC" = "yes"
 
2113
                then CCSHARED="-fPIC"
 
2114
                else CCSHARED="-KPIC"
 
2115
                fi;;
 
2116
        SCO_SV*)
 
2117
                if test "$GCC" = "yes"
 
2118
                then CCSHARED="-fPIC"
 
2119
                else CCSHARED="-Kpic -belf"
 
2120
                fi;;
 
2121
        IRIX*/6*)  case $CC in
 
2122
                   *gcc*) CCSHARED="-shared";;
 
2123
                   *) CCSHARED="";;
 
2124
                   esac;;
 
2125
        esac
 
2126
fi
 
2127
AC_MSG_RESULT($CCSHARED)
 
2128
# LINKFORSHARED are the flags passed to the $(CC) command that links
 
2129
# the python executable -- this is only needed for a few systems
 
2130
AC_MSG_CHECKING(LINKFORSHARED)
 
2131
if test -z "$LINKFORSHARED"
 
2132
then
 
2133
        case $ac_sys_system/$ac_sys_release in
 
2134
        AIX*)   LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
 
2135
        hp*|HP*)
 
2136
            LINKFORSHARED="-Wl,-E -Wl,+s";;
 
2137
#           LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
 
2138
        BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
 
2139
        Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
 
2140
        # -u libsys_s pulls in all symbols in libsys
 
2141
        Darwin/*) 
 
2142
                LINKFORSHARED="$extra_undefs -framework CoreFoundation"
 
2143
 
 
2144
                # Issue #18075: the default maximum stack size (8MBytes) is too
 
2145
                # small for the default recursion limit. Increase the stack size
 
2146
                # to ensure that tests don't crash
 
2147
                LINKFORSHARED="-Wl,-stack_size,1000000 $LINKFORSHARED"
 
2148
 
 
2149
                if test "$enable_framework"
 
2150
                then
 
2151
                        LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
 
2152
                fi
 
2153
                LINKFORSHARED="$LINKFORSHARED";;
 
2154
        OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
 
2155
        SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
 
2156
        ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
 
2157
        FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) 
 
2158
                if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
 
2159
                then
 
2160
                        LINKFORSHARED="-Wl,--export-dynamic"
 
2161
                fi;;
 
2162
        SunOS/5*) case $CC in
 
2163
                  *gcc*)
 
2164
                    if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
 
2165
                    then
 
2166
                        LINKFORSHARED="-Xlinker --export-dynamic"
 
2167
                    fi;;
 
2168
                  esac;;
 
2169
        CYGWIN*)
 
2170
                if test $enable_shared = "no"
 
2171
                then
 
2172
                        LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
 
2173
                fi;;
 
2174
        QNX*)
 
2175
                # -Wl,-E causes the symbols to be added to the dynamic
 
2176
                # symbol table so that they can be found when a module
 
2177
                # is loaded.  -N 2048K causes the stack size to be set
 
2178
                # to 2048 kilobytes so that the stack doesn't overflow
 
2179
                # when running test_compile.py.
 
2180
                LINKFORSHARED='-Wl,-E -N 2048K';;
 
2181
        esac
 
2182
fi
 
2183
AC_MSG_RESULT($LINKFORSHARED)
 
2184
 
 
2185
 
 
2186
AC_SUBST(CFLAGSFORSHARED)
 
2187
AC_MSG_CHECKING(CFLAGSFORSHARED)
 
2188
if test ! "$LIBRARY" = "$LDLIBRARY"
 
2189
then
 
2190
        case $ac_sys_system in
 
2191
        CYGWIN*)
 
2192
                # Cygwin needs CCSHARED when building extension DLLs
 
2193
                # but not when building the interpreter DLL.
 
2194
                CFLAGSFORSHARED='';;
 
2195
        *)
 
2196
                CFLAGSFORSHARED='$(CCSHARED)'
 
2197
        esac
 
2198
fi
 
2199
AC_MSG_RESULT($CFLAGSFORSHARED)
 
2200
 
 
2201
# SHLIBS are libraries (except -lc and -lm) to link to the python shared
 
2202
# library (with --enable-shared).
 
2203
# For platforms on which shared libraries are not allowed to have unresolved
 
2204
# symbols, this must be set to $(LIBS) (expanded by make). We do this even
 
2205
# if it is not required, since it creates a dependency of the shared library
 
2206
# to LIBS. This, in turn, means that applications linking the shared libpython
 
2207
# don't need to link LIBS explicitly. The default should be only changed
 
2208
# on systems where this approach causes problems.
 
2209
AC_SUBST(SHLIBS)
 
2210
AC_MSG_CHECKING(SHLIBS)
 
2211
case "$ac_sys_system" in
 
2212
        *)
 
2213
                SHLIBS='$(LIBS)';;
 
2214
esac
 
2215
AC_MSG_RESULT($SHLIBS)
 
2216
 
 
2217
 
 
2218
# checks for libraries
 
2219
AC_CHECK_LIB(sendfile, sendfile)
 
2220
AC_CHECK_LIB(dl, dlopen)        # Dynamic linking for SunOS/Solaris and SYSV
 
2221
AC_CHECK_LIB(dld, shl_load)     # Dynamic linking for HP-UX
 
2222
 
 
2223
# only check for sem_init if thread support is requested
 
2224
if test "$with_threads" = "yes" -o -z "$with_threads"; then
 
2225
    AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
 
2226
                                                # posix4 on Solaris 2.6
 
2227
                                                # pthread (first!) on Linux
 
2228
fi
 
2229
 
 
2230
# check if we need libintl for locale functions
 
2231
AC_CHECK_LIB(intl, textdomain,
 
2232
        [AC_DEFINE(WITH_LIBINTL, 1,
 
2233
        [Define to 1 if libintl is needed for locale functions.])
 
2234
        LIBS="-lintl $LIBS"])
 
2235
 
 
2236
# checks for system dependent C++ extensions support
 
2237
case "$ac_sys_system" in
 
2238
        AIX*)   AC_MSG_CHECKING(for genuine AIX C++ extensions support)
 
2239
                AC_LINK_IFELSE([
 
2240
                  AC_LANG_PROGRAM([[#include <load.h>]],
 
2241
                                  [[loadAndInit("", 0, "")]])
 
2242
                ],[
 
2243
                  AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
 
2244
                      [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
 
2245
                       and you want support for AIX C++ shared extension modules.])
 
2246
                  AC_MSG_RESULT(yes)
 
2247
                ],[
 
2248
                  AC_MSG_RESULT(no)
 
2249
                ]);;
 
2250
        *) ;;
 
2251
esac
 
2252
 
 
2253
# check for systems that require aligned memory access
 
2254
AC_MSG_CHECKING(aligned memory access is required)
 
2255
AC_TRY_RUN([
 
2256
int main()
 
2257
{
 
2258
    char s[16];
 
2259
    int i, *p1, *p2;
 
2260
    for (i=0; i < 16; i++)
 
2261
        s[i] = i;
 
2262
    p1 = (int*)(s+1);
 
2263
    p2 = (int*)(s+2);
 
2264
    if (*p1 == *p2)
 
2265
        return 1;
 
2266
    return 0;
 
2267
}
 
2268
              ],
 
2269
     [aligned_required=no],
 
2270
     [aligned_required=yes],
 
2271
     [aligned_required=yes])
 
2272
 
 
2273
if test "$aligned_required" = yes ; then
 
2274
  AC_DEFINE([HAVE_ALIGNED_REQUIRED], [1],
 
2275
    [Define if aligned memory access is required])
 
2276
fi
 
2277
AC_MSG_RESULT($aligned_required)
 
2278
 
 
2279
 
 
2280
# str, bytes and memoryview hash algorithm
 
2281
AH_TEMPLATE(Py_HASH_ALGORITHM,
 
2282
  [Define hash algorithm for str, bytes and memoryview.
 
2283
   SipHash24: 1, FNV: 2, externally defined: 0])
 
2284
 
 
2285
AC_MSG_CHECKING(for --with-hash-algorithm)
 
2286
dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
 
2287
AC_ARG_WITH(hash_algorithm,
 
2288
            AS_HELP_STRING([--with-hash-algorithm=@<:@fnv|siphash24@:>@],
 
2289
                           [select hash algorithm]),
 
2290
[
 
2291
AC_MSG_RESULT($withval)
 
2292
case "$withval" in
 
2293
    siphash24)
 
2294
        AC_DEFINE(Py_HASH_ALGORITHM, 1)
 
2295
        ;;
 
2296
    fnv)
 
2297
        AC_DEFINE(Py_HASH_ALGORITHM, 2)
 
2298
        ;;
 
2299
    *)
 
2300
        AC_MSG_ERROR([unknown hash algorithm '$withval'])
 
2301
        ;;
 
2302
esac
 
2303
],
 
2304
[AC_MSG_RESULT(default)])
 
2305
 
 
2306
# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
 
2307
AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
 
2308
AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
 
2309
 
 
2310
AC_MSG_CHECKING(for --with-libs)
 
2311
AC_ARG_WITH(libs,
 
2312
            AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
 
2313
[
 
2314
AC_MSG_RESULT($withval)
 
2315
LIBS="$withval $LIBS"
 
2316
],
 
2317
[AC_MSG_RESULT(no)])
 
2318
 
 
2319
AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
 
2320
 
 
2321
# Check for use of the system expat library
 
2322
AC_MSG_CHECKING(for --with-system-expat)
 
2323
AC_ARG_WITH(system_expat,
 
2324
            AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library]),
 
2325
            [],
 
2326
            [with_system_expat="no"])
 
2327
 
 
2328
AC_MSG_RESULT($with_system_expat)
 
2329
 
 
2330
# Check for use of the system libffi library
 
2331
AC_MSG_CHECKING(for --with-system-ffi)
 
2332
AC_ARG_WITH(system_ffi,
 
2333
            AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]),
 
2334
            [],
 
2335
            [with_system_ffi="no"])
 
2336
 
 
2337
if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
 
2338
    LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
 
2339
else
 
2340
    LIBFFI_INCLUDEDIR=""
 
2341
fi
 
2342
AC_SUBST(LIBFFI_INCLUDEDIR)
 
2343
 
 
2344
AC_MSG_RESULT($with_system_ffi)
 
2345
 
 
2346
# Check for use of the system libmpdec library
 
2347
AC_MSG_CHECKING(for --with-system-libmpdec)
 
2348
AC_ARG_WITH(system_libmpdec,
 
2349
            AS_HELP_STRING([--with-system-libmpdec], [build _decimal module using an installed libmpdec library]),
 
2350
            [],
 
2351
            [with_system_libmpdec="no"])
 
2352
 
 
2353
AC_MSG_RESULT($with_system_libmpdec)
 
2354
 
 
2355
# Check for support for loadable sqlite extensions
 
2356
AC_MSG_CHECKING(for --enable-loadable-sqlite-extensions)
 
2357
AC_ARG_ENABLE(loadable-sqlite-extensions,
 
2358
              AS_HELP_STRING([--enable-loadable-sqlite-extensions], [support loadable extensions in _sqlite module]),
 
2359
              [],
 
2360
              [enable_loadable_sqlite_extensions="no"])
 
2361
 
 
2362
AC_MSG_RESULT($enable_loadable_sqlite_extensions)
 
2363
 
 
2364
# Check for --with-tcltk-includes=path and --with-tcltk-libs=path
 
2365
AC_SUBST(TCLTK_INCLUDES)
 
2366
AC_SUBST(TCLTK_LIBS)
 
2367
AC_MSG_CHECKING(for --with-tcltk-includes)
 
2368
AC_ARG_WITH(tcltk-includes,
 
2369
            AS_HELP_STRING([--with-tcltk-includes='-I...'], [override search for Tcl and Tk include files]),
 
2370
            [],
 
2371
            [with_tcltk_includes="default"])
 
2372
AC_MSG_RESULT($with_tcltk_includes)
 
2373
AC_MSG_CHECKING(for --with-tcltk-libs)
 
2374
AC_ARG_WITH(tcltk-libs,
 
2375
            AS_HELP_STRING([--with-tcltk-libs='-L...'], [override search for Tcl and Tk libs]),
 
2376
            [],
 
2377
            [with_tcltk_libs="default"])
 
2378
AC_MSG_RESULT($with_tcltk_libs)
 
2379
if test "x$with_tcltk_includes" = xdefault || test "x$with_tcltk_libs" = xdefault
 
2380
then
 
2381
  if test "x$with_tcltk_includes" != "x$with_tcltk_libs"
 
2382
  then
 
2383
    AC_MSG_ERROR([use both --with-tcltk-includes='...' and --with-tcltk-libs='...' or neither])
 
2384
  fi
 
2385
  TCLTK_INCLUDES=""
 
2386
  TCLTK_LIBS=""
 
2387
else
 
2388
  TCLTK_INCLUDES="$with_tcltk_includes"
 
2389
  TCLTK_LIBS="$with_tcltk_libs"
 
2390
fi
 
2391
 
 
2392
# Check for --with-dbmliborder
 
2393
AC_MSG_CHECKING(for --with-dbmliborder)
 
2394
AC_ARG_WITH(dbmliborder,
 
2395
            AS_HELP_STRING([--with-dbmliborder=db1:db2:...], [order to check db backends for dbm. Valid value is a colon separated string with the backend names `ndbm', `gdbm' and `bdb'.]),
 
2396
[
 
2397
if test x$with_dbmliborder = xyes
 
2398
then
 
2399
AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
 
2400
else
 
2401
  for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
 
2402
    if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
 
2403
    then
 
2404
      AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
 
2405
    fi
 
2406
  done
 
2407
fi])
 
2408
AC_MSG_RESULT($with_dbmliborder)
 
2409
 
 
2410
# Determine if signalmodule should be used.
 
2411
AC_SUBST(USE_SIGNAL_MODULE)
 
2412
AC_SUBST(SIGNAL_OBJS)
 
2413
AC_MSG_CHECKING(for --with-signal-module)
 
2414
AC_ARG_WITH(signal-module,
 
2415
            AS_HELP_STRING([--with-signal-module], [disable/enable signal module]))
 
2416
 
 
2417
if test -z "$with_signal_module"
 
2418
then with_signal_module="yes"
 
2419
fi
 
2420
AC_MSG_RESULT($with_signal_module)
 
2421
 
 
2422
if test "${with_signal_module}" = "yes"; then
 
2423
        USE_SIGNAL_MODULE=""
 
2424
        SIGNAL_OBJS=""
 
2425
else
 
2426
        USE_SIGNAL_MODULE="#"
 
2427
        SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
 
2428
fi
 
2429
 
 
2430
# This is used to generate Setup.config
 
2431
AC_SUBST(USE_THREAD_MODULE)
 
2432
USE_THREAD_MODULE=""
 
2433
 
 
2434
AC_SUBST(LDLAST)
 
2435
 
 
2436
# Templates for things AC_DEFINEd more than once.
 
2437
# For a single AC_DEFINE, no template is needed.
 
2438
AH_TEMPLATE(_REENTRANT,
 
2439
  [Define to force use of thread-safe errno, h_errno, and other functions])
 
2440
AH_TEMPLATE(WITH_THREAD,
 
2441
  [Define if you want to compile in rudimentary thread support])
 
2442
 
 
2443
AC_MSG_CHECKING(for --with-threads)
 
2444
dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
 
2445
AC_ARG_WITH(threads,
 
2446
            AS_HELP_STRING([--with(out)-threads@<:@=DIRECTORY@:>@], [disable/enable thread support]))
 
2447
 
 
2448
# --with-thread is deprecated, but check for it anyway
 
2449
dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
 
2450
AC_ARG_WITH(thread,
 
2451
            AS_HELP_STRING([--with(out)-thread@<:@=DIRECTORY@:>@], [deprecated; use --with(out)-threads]),
 
2452
            [with_threads=$with_thread])
 
2453
 
 
2454
if test -z "$with_threads"
 
2455
then with_threads="yes"
 
2456
fi
 
2457
AC_MSG_RESULT($with_threads)
 
2458
 
 
2459
AC_SUBST(THREADOBJ)
 
2460
if test "$with_threads" = "no"
 
2461
then
 
2462
    USE_THREAD_MODULE="#"
 
2463
elif test "$ac_cv_pthread_is_default" = yes
 
2464
then
 
2465
    AC_DEFINE(WITH_THREAD)
 
2466
    # Defining _REENTRANT on system with POSIX threads should not hurt.
 
2467
    AC_DEFINE(_REENTRANT)
 
2468
    posix_threads=yes
 
2469
    THREADOBJ="Python/thread.o"    
 
2470
elif test "$ac_cv_kpthread" = "yes"
 
2471
then
 
2472
    CC="$CC -Kpthread"
 
2473
    if test "$ac_cv_cxx_thread" = "yes"; then
 
2474
        CXX="$CXX -Kpthread"
 
2475
    fi
 
2476
    AC_DEFINE(WITH_THREAD)
 
2477
    posix_threads=yes
 
2478
    THREADOBJ="Python/thread.o"
 
2479
elif test "$ac_cv_kthread" = "yes"
 
2480
then
 
2481
    CC="$CC -Kthread"
 
2482
    if test "$ac_cv_cxx_thread" = "yes"; then
 
2483
        CXX="$CXX -Kthread"
 
2484
    fi
 
2485
    AC_DEFINE(WITH_THREAD)
 
2486
    posix_threads=yes
 
2487
    THREADOBJ="Python/thread.o"
 
2488
elif test "$ac_cv_pthread" = "yes"
 
2489
then
 
2490
    CC="$CC -pthread"
 
2491
    if test "$ac_cv_cxx_thread" = "yes"; then
 
2492
        CXX="$CXX -pthread"
 
2493
    fi
 
2494
    AC_DEFINE(WITH_THREAD)
 
2495
    posix_threads=yes
 
2496
    THREADOBJ="Python/thread.o"
 
2497
else
 
2498
    if test ! -z "$with_threads" -a -d "$with_threads"
 
2499
    then LDFLAGS="$LDFLAGS -L$with_threads"
 
2500
    fi
 
2501
    if test ! -z "$withval" -a -d "$withval"
 
2502
    then LDFLAGS="$LDFLAGS -L$withval"
 
2503
    fi
 
2504
 
 
2505
    # According to the POSIX spec, a pthreads implementation must
 
2506
    # define _POSIX_THREADS in unistd.h. Some apparently don't
 
2507
    # (e.g. gnu pth with pthread emulation)
 
2508
    AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
 
2509
    AC_EGREP_CPP(yes,
 
2510
    [
 
2511
#include <unistd.h>
 
2512
#ifdef _POSIX_THREADS
 
2513
yes
 
2514
#endif
 
2515
    ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
 
2516
    AC_MSG_RESULT($unistd_defines_pthreads)
 
2517
 
 
2518
    AC_DEFINE(_REENTRANT)
 
2519
    # Just looking for pthread_create in libpthread is not enough:
 
2520
    # on HP/UX, pthread.h renames pthread_create to a different symbol name.
 
2521
    # So we really have to include pthread.h, and then link.
 
2522
    _libs=$LIBS
 
2523
    LIBS="$LIBS -lpthread"
 
2524
    AC_MSG_CHECKING([for pthread_create in -lpthread])
 
2525
    AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 
2526
#include <stdio.h>
 
2527
#include <pthread.h>
 
2528
 
 
2529
void * start_routine (void *arg) { exit (0); }]], [[
 
2530
pthread_create (NULL, NULL, start_routine, NULL)]])],[
 
2531
    AC_MSG_RESULT(yes)
 
2532
    AC_DEFINE(WITH_THREAD)
 
2533
    posix_threads=yes
 
2534
    THREADOBJ="Python/thread.o"],[
 
2535
    LIBS=$_libs
 
2536
    AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
 
2537
    posix_threads=yes
 
2538
    THREADOBJ="Python/thread.o"],[
 
2539
    AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
 
2540
    posix_threads=yes
 
2541
    LIBS="$LIBS -lpthreads"
 
2542
    THREADOBJ="Python/thread.o"], [
 
2543
    AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
 
2544
    posix_threads=yes
 
2545
    LIBS="$LIBS -lc_r"
 
2546
    THREADOBJ="Python/thread.o"], [
 
2547
    AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
 
2548
    posix_threads=yes
 
2549
    LIBS="$LIBS -lpthread"
 
2550
    THREADOBJ="Python/thread.o"], [
 
2551
    AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
 
2552
    posix_threads=yes
 
2553
    LIBS="$LIBS -lcma"
 
2554
    THREADOBJ="Python/thread.o"],[
 
2555
    USE_THREAD_MODULE="#"])
 
2556
    ])])])])])
 
2557
 
 
2558
    AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
 
2559
    LIBS="$LIBS -lmpc"
 
2560
    THREADOBJ="Python/thread.o"
 
2561
    USE_THREAD_MODULE=""])
 
2562
 
 
2563
    if test "$posix_threads" != "yes"; then     
 
2564
      AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
 
2565
      LIBS="$LIBS -lthread"
 
2566
      THREADOBJ="Python/thread.o"
 
2567
      USE_THREAD_MODULE=""])
 
2568
    fi
 
2569
fi
 
2570
 
 
2571
if test "$posix_threads" = "yes"; then
 
2572
      if test "$unistd_defines_pthreads" = "no"; then
 
2573
         AC_DEFINE(_POSIX_THREADS, 1,
 
2574
         [Define if you have POSIX threads, 
 
2575
          and your system does not define that.])
 
2576
      fi
 
2577
 
 
2578
      # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
 
2579
      case  $ac_sys_system/$ac_sys_release in
 
2580
      SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
 
2581
                       [Defined for Solaris 2.6 bug in pthread header.])
 
2582
                       ;;
 
2583
      SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
 
2584
                       [Define if the Posix semaphores do not work on your system])
 
2585
                       ;;
 
2586
      AIX/*) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
 
2587
                       [Define if the Posix semaphores do not work on your system])
 
2588
                       ;;
 
2589
      esac
 
2590
 
 
2591
      AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
 
2592
      AC_CACHE_VAL(ac_cv_pthread_system_supported,
 
2593
      [AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
2594
      #include <stdio.h>
 
2595
      #include <pthread.h>
 
2596
      void *foo(void *parm) {
 
2597
        return NULL;
 
2598
      }
 
2599
      main() {
 
2600
        pthread_attr_t attr;
 
2601
        pthread_t id;
 
2602
        if (pthread_attr_init(&attr)) exit(-1);
 
2603
        if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
 
2604
        if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
 
2605
        exit(0);
 
2606
      }]])],
 
2607
      [ac_cv_pthread_system_supported=yes],
 
2608
      [ac_cv_pthread_system_supported=no],
 
2609
      [ac_cv_pthread_system_supported=no])
 
2610
      ])
 
2611
      AC_MSG_RESULT($ac_cv_pthread_system_supported)
 
2612
      if test "$ac_cv_pthread_system_supported" = "yes"; then
 
2613
        AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
 
2614
      fi
 
2615
      AC_CHECK_FUNCS(pthread_sigmask,
 
2616
        [case $ac_sys_system in
 
2617
        CYGWIN*)
 
2618
          AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
 
2619
            [Define if pthread_sigmask() does not work on your system.])
 
2620
            ;;
 
2621
        esac])
 
2622
      AC_CHECK_FUNCS(pthread_atfork)
 
2623
fi
 
2624
 
 
2625
 
 
2626
# Check for enable-ipv6
 
2627
AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
 
2628
AC_MSG_CHECKING([if --enable-ipv6 is specified])
 
2629
AC_ARG_ENABLE(ipv6,
 
2630
[  --enable-ipv6           Enable ipv6 (with ipv4) support
 
2631
  --disable-ipv6          Disable ipv6 support],
 
2632
[ case "$enableval" in
 
2633
  no)
 
2634
       AC_MSG_RESULT(no)
 
2635
       ipv6=no
 
2636
       ;;
 
2637
  *)   AC_MSG_RESULT(yes)
 
2638
       AC_DEFINE(ENABLE_IPV6)
 
2639
       ipv6=yes
 
2640
       ;;
 
2641
  esac ],
 
2642
 
 
2643
[
 
2644
dnl the check does not work on cross compilation case...
 
2645
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ /* AF_INET6 available check */
 
2646
#include <sys/types.h>
 
2647
#include <sys/socket.h>]],
 
2648
[[int domain = AF_INET6;]])],[
 
2649
  AC_MSG_RESULT(yes)
 
2650
  ipv6=yes
 
2651
],[
 
2652
  AC_MSG_RESULT(no)
 
2653
  ipv6=no
 
2654
])
 
2655
 
 
2656
if test "$ipv6" = "yes"; then
 
2657
        AC_MSG_CHECKING(if RFC2553 API is available)
 
2658
        AC_COMPILE_IFELSE([
 
2659
          AC_LANG_PROGRAM([[#include <sys/types.h>
 
2660
#include <netinet/in.h>]],
 
2661
                          [[struct sockaddr_in6 x;
 
2662
                            x.sin6_scope_id;]])
 
2663
        ],[
 
2664
          AC_MSG_RESULT(yes)
 
2665
          ipv6=yes
 
2666
        ],[
 
2667
          AC_MSG_RESULT(no, IPv6 disabled)
 
2668
          ipv6=no
 
2669
        ])
 
2670
fi
 
2671
 
 
2672
if test "$ipv6" = "yes"; then
 
2673
        AC_DEFINE(ENABLE_IPV6)
 
2674
fi
 
2675
])
 
2676
 
 
2677
ipv6type=unknown
 
2678
ipv6lib=none
 
2679
ipv6trylibc=no
 
2680
 
 
2681
if test "$ipv6" = "yes"; then
 
2682
        AC_MSG_CHECKING([ipv6 stack type])
 
2683
        for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
 
2684
        do
 
2685
                case $i in
 
2686
                inria)
 
2687
                        dnl http://www.kame.net/
 
2688
                        AC_EGREP_CPP(yes, [
 
2689
#include <netinet/in.h>
 
2690
#ifdef IPV6_INRIA_VERSION
 
2691
yes
 
2692
#endif],
 
2693
                                [ipv6type=$i])
 
2694
                        ;;
 
2695
                kame)
 
2696
                        dnl http://www.kame.net/
 
2697
                        AC_EGREP_CPP(yes, [
 
2698
#include <netinet/in.h>
 
2699
#ifdef __KAME__
 
2700
yes
 
2701
#endif],
 
2702
                                [ipv6type=$i;
 
2703
                                ipv6lib=inet6
 
2704
                                ipv6libdir=/usr/local/v6/lib
 
2705
                                ipv6trylibc=yes])
 
2706
                        ;;
 
2707
                linux-glibc)
 
2708
                        dnl http://www.v6.linux.or.jp/
 
2709
                        AC_EGREP_CPP(yes, [
 
2710
#include <features.h>
 
2711
#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
 
2712
yes
 
2713
#endif],
 
2714
                                [ipv6type=$i;
 
2715
                                ipv6trylibc=yes])
 
2716
                        ;;
 
2717
                linux-inet6)
 
2718
                        dnl http://www.v6.linux.or.jp/
 
2719
                        if test -d /usr/inet6; then
 
2720
                                ipv6type=$i
 
2721
                                ipv6lib=inet6
 
2722
                                ipv6libdir=/usr/inet6/lib
 
2723
                                BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
 
2724
                        fi
 
2725
                        ;;
 
2726
                solaris)
 
2727
                        if test -f /etc/netconfig; then
 
2728
                          if $GREP -q tcp6 /etc/netconfig; then
 
2729
                                ipv6type=$i
 
2730
                                ipv6trylibc=yes
 
2731
                          fi
 
2732
                        fi
 
2733
                        ;;
 
2734
                toshiba)
 
2735
                        AC_EGREP_CPP(yes, [
 
2736
#include <sys/param.h>
 
2737
#ifdef _TOSHIBA_INET6
 
2738
yes
 
2739
#endif],
 
2740
                                [ipv6type=$i;
 
2741
                                ipv6lib=inet6;
 
2742
                                ipv6libdir=/usr/local/v6/lib])
 
2743
                        ;;
 
2744
                v6d)
 
2745
                        AC_EGREP_CPP(yes, [
 
2746
#include </usr/local/v6/include/sys/v6config.h>
 
2747
#ifdef __V6D__
 
2748
yes
 
2749
#endif],
 
2750
                                [ipv6type=$i;
 
2751
                                ipv6lib=v6;
 
2752
                                ipv6libdir=/usr/local/v6/lib;
 
2753
                                BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
 
2754
                        ;;
 
2755
                zeta)
 
2756
                        AC_EGREP_CPP(yes, [
 
2757
#include <sys/param.h>
 
2758
#ifdef _ZETA_MINAMI_INET6
 
2759
yes
 
2760
#endif],
 
2761
                                [ipv6type=$i;
 
2762
                                ipv6lib=inet6;
 
2763
                                ipv6libdir=/usr/local/v6/lib])
 
2764
                        ;;
 
2765
                esac
 
2766
                if test "$ipv6type" != "unknown"; then
 
2767
                        break
 
2768
                fi
 
2769
        done
 
2770
        AC_MSG_RESULT($ipv6type)
 
2771
fi
 
2772
 
 
2773
if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
 
2774
        if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
 
2775
                LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
 
2776
                echo "using lib$ipv6lib"
 
2777
        else
 
2778
                if test $ipv6trylibc = "yes"; then
 
2779
                        echo "using libc"
 
2780
                else
 
2781
                        echo 'Fatal: no $ipv6lib library found.  cannot continue.'
 
2782
                        echo "You need to fetch lib$ipv6lib.a from appropriate"
 
2783
                        echo 'ipv6 kit and compile beforehand.'
 
2784
                        exit 1
 
2785
                fi
 
2786
        fi
 
2787
fi
 
2788
 
 
2789
AC_MSG_CHECKING(for OSX 10.5 SDK or later)
 
2790
AC_COMPILE_IFELSE([
 
2791
  AC_LANG_PROGRAM([[#include <Carbon/Carbon.h>]], [[FSIORefNum fRef = 0]])
 
2792
],[
 
2793
  AC_DEFINE(HAVE_OSX105_SDK, 1, [Define if compiling using MacOS X 10.5 SDK or later.])
 
2794
  AC_MSG_RESULT(yes)
 
2795
],[
 
2796
  AC_MSG_RESULT(no)
 
2797
])
 
2798
 
 
2799
# Check for --with-doc-strings
 
2800
AC_MSG_CHECKING(for --with-doc-strings)
 
2801
AC_ARG_WITH(doc-strings,
 
2802
            AS_HELP_STRING([--with(out)-doc-strings], [disable/enable documentation strings]))
 
2803
 
 
2804
if test -z "$with_doc_strings"
 
2805
then with_doc_strings="yes"
 
2806
fi
 
2807
if test "$with_doc_strings" != "no"
 
2808
then
 
2809
    AC_DEFINE(WITH_DOC_STRINGS, 1,
 
2810
      [Define if you want documentation strings in extension modules])
 
2811
fi
 
2812
AC_MSG_RESULT($with_doc_strings)
 
2813
 
 
2814
# Check if eval loop should use timestamp counter profiling
 
2815
AC_MSG_CHECKING(for --with-tsc)
 
2816
AC_ARG_WITH(tsc,
 
2817
            AS_HELP_STRING([--with(out)-tsc],[enable/disable timestamp counter profile]),[
 
2818
if test "$withval" != no
 
2819
then 
 
2820
  AC_DEFINE(WITH_TSC, 1, 
 
2821
    [Define to profile with the Pentium timestamp counter]) 
 
2822
    AC_MSG_RESULT(yes)
 
2823
else AC_MSG_RESULT(no)
 
2824
fi],
 
2825
[AC_MSG_RESULT(no)])
 
2826
 
 
2827
# Check for Python-specific malloc support
 
2828
AC_MSG_CHECKING(for --with-pymalloc)
 
2829
AC_ARG_WITH(pymalloc,
 
2830
            AS_HELP_STRING([--with(out)-pymalloc], [disable/enable specialized mallocs]))
 
2831
 
 
2832
if test -z "$with_pymalloc"
 
2833
then
 
2834
    with_pymalloc="yes"
 
2835
fi
 
2836
if test "$with_pymalloc" != "no"
 
2837
then
 
2838
    AC_DEFINE(WITH_PYMALLOC, 1, 
 
2839
     [Define if you want to compile in Python-specific mallocs])
 
2840
    ABIFLAGS="${ABIFLAGS}m"
 
2841
fi
 
2842
AC_MSG_RESULT($with_pymalloc)
 
2843
 
 
2844
# Check for Valgrind support
 
2845
AC_MSG_CHECKING([for --with-valgrind])
 
2846
AC_ARG_WITH([valgrind],
 
2847
  AS_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
 
2848
  with_valgrind=no)
 
2849
AC_MSG_RESULT([$with_valgrind])
 
2850
if test "$with_valgrind" != no; then
 
2851
    AC_CHECK_HEADER([valgrind/valgrind.h],
 
2852
      [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
 
2853
      [AC_MSG_ERROR([Valgrind support requested but headers not available])]
 
2854
    )
 
2855
    OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
 
2856
fi
 
2857
 
 
2858
# -I${DLINCLDIR} is added to the compile rule for importdl.o
 
2859
AC_SUBST(DLINCLDIR)
 
2860
DLINCLDIR=.
 
2861
 
 
2862
# the dlopen() function means we might want to use dynload_shlib.o. some
 
2863
# platforms, such as AIX, have dlopen(), but don't want to use it.
 
2864
AC_CHECK_FUNCS(dlopen)
 
2865
 
 
2866
# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
 
2867
# loading of modules.
 
2868
AC_SUBST(DYNLOADFILE)
 
2869
AC_MSG_CHECKING(DYNLOADFILE)
 
2870
if test -z "$DYNLOADFILE"
 
2871
then
 
2872
        case $ac_sys_system/$ac_sys_release in
 
2873
        AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
 
2874
        if test "$ac_cv_func_dlopen" = yes
 
2875
        then DYNLOADFILE="dynload_shlib.o"
 
2876
        else DYNLOADFILE="dynload_aix.o"
 
2877
        fi
 
2878
        ;;
 
2879
        hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
 
2880
        # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
 
2881
        Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
 
2882
        *)
 
2883
        # use dynload_shlib.c and dlopen() if we have it; otherwise stub
 
2884
        # out any dynamic loading
 
2885
        if test "$ac_cv_func_dlopen" = yes
 
2886
        then DYNLOADFILE="dynload_shlib.o"
 
2887
        else DYNLOADFILE="dynload_stub.o"
 
2888
        fi
 
2889
        ;;
 
2890
        esac
 
2891
fi
 
2892
AC_MSG_RESULT($DYNLOADFILE)
 
2893
if test "$DYNLOADFILE" != "dynload_stub.o"
 
2894
then
 
2895
        AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
 
2896
        [Defined when any dynamic module loading is enabled.])
 
2897
fi
 
2898
 
 
2899
# MACHDEP_OBJS can be set to platform-specific object files needed by Python
 
2900
 
 
2901
AC_SUBST(MACHDEP_OBJS)
 
2902
AC_MSG_CHECKING(MACHDEP_OBJS)
 
2903
if test -z "$MACHDEP_OBJS"
 
2904
then
 
2905
        MACHDEP_OBJS=$extra_machdep_objs
 
2906
else
 
2907
        MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
 
2908
fi
 
2909
if test -z "$MACHDEP_OBJS"; then
 
2910
  AC_MSG_RESULT([none])
 
2911
else
 
2912
  AC_MSG_RESULT([$MACHDEP_OBJS])
 
2913
fi
 
2914
 
 
2915
# checks for library functions
 
2916
AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
 
2917
 clock confstr ctermid dup3 execv faccessat fchmod fchmodat fchown fchownat \
 
2918
 fexecve fdopendir fork fpathconf fstatat ftime ftruncate futimesat \
 
2919
 futimens futimes gai_strerror \
 
2920
 getgrouplist getgroups getlogin getloadavg getpeername getpgid getpid \
 
2921
 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
 
2922
 if_nameindex \
 
2923
 initgroups kill killpg lchmod lchown lockf linkat lstat lutimes mmap \
 
2924
 memrchr mbrtowc mkdirat mkfifo \
 
2925
 mkfifoat mknod mknodat mktime mremap nice openat pathconf pause pipe2 plock poll \
 
2926
 posix_fallocate posix_fadvise pread \
 
2927
 pthread_init pthread_kill putenv pwrite readlink readlinkat readv realpath renameat \
 
2928
 select sem_open sem_timedwait sem_getvalue sem_unlink sendfile setegid seteuid \
 
2929
 setgid sethostname \
 
2930
 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setpriority setuid setvbuf \
 
2931
 sched_get_priority_max sched_setaffinity sched_setscheduler sched_setparam \
 
2932
 sched_rr_get_interval \
 
2933
 sigaction sigaltstack siginterrupt sigpending sigrelse \
 
2934
 sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \
 
2935
 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
 
2936
 truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
 
2937
 wcscoll wcsftime wcsxfrm wmemcmp writev _getpty)
 
2938
 
 
2939
AC_CHECK_DECL(dirfd,
 
2940
    AC_DEFINE(HAVE_DIRFD, 1,
 
2941
              Define if you have the 'dirfd' function or macro.), ,
 
2942
      [#include <sys/types.h>
 
2943
       #include <dirent.h>])
 
2944
 
 
2945
# For some functions, having a definition is not sufficient, since
 
2946
# we want to take their address.
 
2947
AC_MSG_CHECKING(for chroot)
 
2948
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=chroot]])],
 
2949
  [AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
 
2950
   AC_MSG_RESULT(yes)],
 
2951
  [AC_MSG_RESULT(no)
 
2952
])
 
2953
AC_MSG_CHECKING(for link)
 
2954
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=link]])],
 
2955
  [AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
 
2956
   AC_MSG_RESULT(yes)],
 
2957
  [AC_MSG_RESULT(no)
 
2958
])
 
2959
AC_MSG_CHECKING(for symlink)
 
2960
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=symlink]])],
 
2961
  [AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
 
2962
   AC_MSG_RESULT(yes)],
 
2963
  [AC_MSG_RESULT(no)
 
2964
])
 
2965
AC_MSG_CHECKING(for fchdir)
 
2966
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fchdir]])],
 
2967
  [AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
 
2968
   AC_MSG_RESULT(yes)],
 
2969
  [AC_MSG_RESULT(no)
 
2970
])
 
2971
AC_MSG_CHECKING(for fsync)
 
2972
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fsync]])],
 
2973
  [AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
 
2974
   AC_MSG_RESULT(yes)],
 
2975
  [AC_MSG_RESULT(no)
 
2976
])
 
2977
AC_MSG_CHECKING(for fdatasync)
 
2978
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fdatasync]])],
 
2979
  [AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
 
2980
   AC_MSG_RESULT(yes)],
 
2981
  [AC_MSG_RESULT(no)
 
2982
])
 
2983
AC_MSG_CHECKING(for epoll)
 
2984
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create]])],
 
2985
  [AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
 
2986
   AC_MSG_RESULT(yes)],
 
2987
  [AC_MSG_RESULT(no)
 
2988
])
 
2989
AC_MSG_CHECKING(for epoll_create1)
 
2990
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create1]])],
 
2991
  [AC_DEFINE(HAVE_EPOLL_CREATE1, 1, Define if you have the 'epoll_create1' function.)
 
2992
   AC_MSG_RESULT(yes)],
 
2993
  [AC_MSG_RESULT(no)
 
2994
])
 
2995
AC_MSG_CHECKING(for kqueue)
 
2996
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
2997
#include <sys/types.h>
 
2998
#include <sys/event.h>
 
2999
    ]], [[int x=kqueue()]])],
 
3000
  [AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
 
3001
   AC_MSG_RESULT(yes)],
 
3002
  [AC_MSG_RESULT(no)
 
3003
])
 
3004
AC_MSG_CHECKING(for prlimit)
 
3005
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
3006
#include <sys/time.h>
 
3007
#include <sys/resource.h>
 
3008
    ]], [[void *x=prlimit]])],
 
3009
  [AC_DEFINE(HAVE_PRLIMIT, 1, Define if you have the 'prlimit' functions.)
 
3010
   AC_MSG_RESULT(yes)],
 
3011
  [AC_MSG_RESULT(no)
 
3012
])
 
3013
 
 
3014
# On some systems (eg. FreeBSD 5), we would find a definition of the
 
3015
# functions ctermid_r, setgroups in the library, but no prototype
 
3016
# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
 
3017
# address to avoid compiler warnings and potential miscompilations
 
3018
# because of the missing prototypes.
 
3019
 
 
3020
AC_MSG_CHECKING(for ctermid_r)
 
3021
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
3022
#include <stdio.h>
 
3023
]], [[void* p = ctermid_r]])],
 
3024
  [AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
 
3025
   AC_MSG_RESULT(yes)],
 
3026
  [AC_MSG_RESULT(no)
 
3027
])
 
3028
 
 
3029
AC_CACHE_CHECK([for flock declaration], [ac_cv_flock_decl],
 
3030
  [AC_COMPILE_IFELSE(
 
3031
    [AC_LANG_PROGRAM(
 
3032
      [#include <sys/file.h>],
 
3033
      [void* p = flock]
 
3034
    )],
 
3035
    [ac_cv_flock_decl=yes],
 
3036
    [ac_cv_flock_decl=no]
 
3037
  )
 
3038
])
 
3039
if test "x${ac_cv_flock_decl}" = xyes; then
 
3040
  AC_CHECK_FUNCS(flock,,
 
3041
    AC_CHECK_LIB(bsd,flock,
 
3042
      [AC_DEFINE(HAVE_FLOCK)
 
3043
       AC_DEFINE(FLOCK_NEEDS_LIBBSD, 1, Define if flock needs to be linked with bsd library.)
 
3044
    ])
 
3045
  )
 
3046
fi
 
3047
 
 
3048
AC_MSG_CHECKING(for getpagesize)
 
3049
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
3050
#include <unistd.h>
 
3051
]], [[void* p = getpagesize]])],
 
3052
  [AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
 
3053
   AC_MSG_RESULT(yes)],
 
3054
  [AC_MSG_RESULT(no)
 
3055
])
 
3056
 
 
3057
AC_MSG_CHECKING(for broken unsetenv)
 
3058
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
3059
#include <stdlib.h>
 
3060
]], [[int res = unsetenv("DUMMY")]])],
 
3061
  [AC_MSG_RESULT(no)],
 
3062
  [AC_DEFINE(HAVE_BROKEN_UNSETENV, 1, Define if `unsetenv` does not return an int.)
 
3063
   AC_MSG_RESULT(yes)
 
3064
])
 
3065
 
 
3066
dnl check for true
 
3067
AC_CHECK_PROGS(TRUE, true, /bin/true)
 
3068
 
 
3069
dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
 
3070
dnl On others, they are in the C library, so we to take no action
 
3071
AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
 
3072
  AC_CHECK_LIB(resolv, inet_aton)
 
3073
)
 
3074
 
 
3075
# On Tru64, chflags seems to be present, but calling it will
 
3076
# exit Python
 
3077
AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
 
3078
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
3079
#include <sys/stat.h>
 
3080
#include <unistd.h>
 
3081
int main(int argc, char*argv[])
 
3082
{
 
3083
  if(chflags(argv[0], 0) != 0)
 
3084
    return 1;
 
3085
  return 0;
 
3086
}
 
3087
]])],
 
3088
[ac_cv_have_chflags=yes],
 
3089
[ac_cv_have_chflags=no],
 
3090
[ac_cv_have_chflags=cross])
 
3091
])
 
3092
if test "$ac_cv_have_chflags" = cross ; then
 
3093
  AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
 
3094
fi
 
3095
if test "$ac_cv_have_chflags" = yes ; then
 
3096
  AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the 'chflags' function.])
 
3097
fi
 
3098
 
 
3099
AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
 
3100
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
3101
#include <sys/stat.h>
 
3102
#include <unistd.h>
 
3103
int main(int argc, char*argv[])
 
3104
{
 
3105
  if(lchflags(argv[0], 0) != 0)
 
3106
    return 1;
 
3107
  return 0;
 
3108
}
 
3109
]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
 
3110
])
 
3111
if test "$ac_cv_have_lchflags" = cross ; then
 
3112
  AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
 
3113
fi
 
3114
if test "$ac_cv_have_lchflags" = yes ; then
 
3115
  AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the 'lchflags' function.])
 
3116
fi
 
3117
 
 
3118
dnl Check if system zlib has *Copy() functions
 
3119
dnl
 
3120
dnl On MacOSX the linker will search for dylibs on the entire linker path
 
3121
dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
 
3122
dnl to revert to a more traditional unix behaviour and make it possible to
 
3123
dnl override the system libz with a local static library of libz. Temporarily
 
3124
dnl add that flag to our CFLAGS as well to ensure that we check the version
 
3125
dnl of libz that will be used by setup.py. 
 
3126
dnl The -L/usr/local/lib is needed as wel to get the same compilation 
 
3127
dnl environment as setup.py (and leaving it out can cause configure to use the
 
3128
dnl wrong version of the library)
 
3129
case $ac_sys_system/$ac_sys_release in
 
3130
Darwin/*) 
 
3131
        _CUR_CFLAGS="${CFLAGS}"
 
3132
        _CUR_LDFLAGS="${LDFLAGS}"
 
3133
        CFLAGS="${CFLAGS} -Wl,-search_paths_first"
 
3134
        LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
 
3135
        ;;
 
3136
esac
 
3137
 
 
3138
AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, [Define if the zlib library has inflateCopy]))
 
3139
 
 
3140
case $ac_sys_system/$ac_sys_release in
 
3141
Darwin/*) 
 
3142
        CFLAGS="${_CUR_CFLAGS}"
 
3143
        LDFLAGS="${_CUR_LDFLAGS}"
 
3144
        ;;
 
3145
esac
 
3146
 
 
3147
AC_MSG_CHECKING(for hstrerror)
 
3148
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 
3149
#include <netdb.h>
 
3150
]], [[void* p = hstrerror; hstrerror(0)]])],
 
3151
  [AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
 
3152
   AC_MSG_RESULT(yes)],
 
3153
  [AC_MSG_RESULT(no)
 
3154
])
 
3155
 
 
3156
AC_MSG_CHECKING(for inet_aton)
 
3157
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 
3158
#include <sys/types.h>
 
3159
#include <sys/socket.h>
 
3160
#include <netinet/in.h>
 
3161
#include <arpa/inet.h>
 
3162
]], [[void* p = inet_aton;inet_aton(0,0)]])],
 
3163
  [AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
 
3164
   AC_MSG_RESULT(yes)],
 
3165
  [AC_MSG_RESULT(no)
 
3166
])
 
3167
 
 
3168
AC_MSG_CHECKING(for inet_pton)
 
3169
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
3170
#include <sys/types.h>
 
3171
#include <sys/socket.h>
 
3172
#include <netinet/in.h>
 
3173
#include <arpa/inet.h>
 
3174
]], [[void* p = inet_pton]])],
 
3175
  [AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
 
3176
   AC_MSG_RESULT(yes)],
 
3177
  [AC_MSG_RESULT(no)
 
3178
])
 
3179
 
 
3180
# On some systems, setgroups is in unistd.h, on others, in grp.h
 
3181
AC_MSG_CHECKING(for setgroups)
 
3182
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
3183
#include <unistd.h>
 
3184
#ifdef HAVE_GRP_H
 
3185
#include <grp.h>
 
3186
#endif
 
3187
]], [[void* p = setgroups]])],
 
3188
  [AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
 
3189
   AC_MSG_RESULT(yes)],
 
3190
  [AC_MSG_RESULT(no)
 
3191
])
 
3192
 
 
3193
# check for openpty and forkpty
 
3194
 
 
3195
AC_CHECK_FUNCS(openpty,, 
 
3196
   AC_CHECK_LIB(util,openpty,
 
3197
     [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
 
3198
     AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
 
3199
   )
 
3200
)
 
3201
AC_CHECK_FUNCS(forkpty,, 
 
3202
   AC_CHECK_LIB(util,forkpty, 
 
3203
     [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
 
3204
     AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
 
3205
   )
 
3206
)
 
3207
 
 
3208
# Stuff for expat.
 
3209
AC_CHECK_FUNCS(memmove)
 
3210
 
 
3211
# check for long file support functions
 
3212
AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
 
3213
 
 
3214
AC_REPLACE_FUNCS(dup2 strdup)
 
3215
AC_CHECK_FUNCS(getpgrp, 
 
3216
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[getpgrp(0);]])],
 
3217
    [AC_DEFINE(GETPGRP_HAVE_ARG, 1, [Define if getpgrp() must be called as getpgrp(0).])],
 
3218
    [])
 
3219
)
 
3220
AC_CHECK_FUNCS(setpgrp,
 
3221
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[setpgrp(0,0);]])],
 
3222
    [AC_DEFINE(SETPGRP_HAVE_ARG, 1, [Define if setpgrp() must be called as setpgrp(0, 0).])],
 
3223
    [])
 
3224
)
 
3225
AC_CHECK_FUNCS(gettimeofday, 
 
3226
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>]],
 
3227
                                     [[gettimeofday((struct timeval*)0,(struct timezone*)0);]])],
 
3228
    [],
 
3229
    [AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
 
3230
      [Define if gettimeofday() does not have second (timezone) argument
 
3231
       This is the case on Motorola V4 (R40V4.2)])
 
3232
    ])
 
3233
)
 
3234
 
 
3235
AC_CHECK_FUNCS(clock_gettime, [], [
 
3236
    AC_CHECK_LIB(rt, clock_gettime, [
 
3237
        AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
 
3238
        AC_DEFINE(TIMEMODULE_LIB, [rt],
 
3239
                  [Library needed by timemodule.c: librt may be needed for clock_gettime()])
 
3240
    ])
 
3241
])
 
3242
 
 
3243
AC_CHECK_FUNCS(clock_getres, [], [
 
3244
    AC_CHECK_LIB(rt, clock_getres, [
 
3245
        AC_DEFINE(HAVE_CLOCK_GETRES, 1)
 
3246
    ])
 
3247
])
 
3248
 
 
3249
AC_MSG_CHECKING(for major, minor, and makedev)
 
3250
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 
3251
#if defined(MAJOR_IN_MKDEV)
 
3252
#include <sys/mkdev.h>
 
3253
#elif defined(MAJOR_IN_SYSMACROS)
 
3254
#include <sys/sysmacros.h>
 
3255
#else
 
3256
#include <sys/types.h>
 
3257
#endif
 
3258
]], [[
 
3259
  makedev(major(0),minor(0));
 
3260
]])],[
 
3261
  AC_DEFINE(HAVE_DEVICE_MACROS, 1,
 
3262
            [Define to 1 if you have the device macros.])
 
3263
  AC_MSG_RESULT(yes)
 
3264
],[
 
3265
  AC_MSG_RESULT(no)
 
3266
])
 
3267
 
 
3268
# On OSF/1 V5.1, getaddrinfo is available, but a define
 
3269
# for [no]getaddrinfo in netdb.h. 
 
3270
AC_MSG_CHECKING(for getaddrinfo)
 
3271
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 
3272
#include <sys/types.h>
 
3273
#include <sys/socket.h>
 
3274
#include <netdb.h>
 
3275
#include <stdio.h>
 
3276
]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])],
 
3277
[have_getaddrinfo=yes],
 
3278
[have_getaddrinfo=no])
 
3279
AC_MSG_RESULT($have_getaddrinfo)
 
3280
if test $have_getaddrinfo = yes
 
3281
then
 
3282
  AC_MSG_CHECKING(getaddrinfo bug)
 
3283
  AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
 
3284
  AC_RUN_IFELSE([AC_LANG_SOURCE([[[
 
3285
#include <stdio.h>
 
3286
#include <sys/types.h>
 
3287
#include <netdb.h>
 
3288
#include <string.h>
 
3289
#include <sys/socket.h>
 
3290
#include <netinet/in.h>
 
3291
 
 
3292
int main()
 
3293
{
 
3294
  int passive, gaierr, inet4 = 0, inet6 = 0;
 
3295
  struct addrinfo hints, *ai, *aitop;
 
3296
  char straddr[INET6_ADDRSTRLEN], strport[16];
 
3297
 
 
3298
  for (passive = 0; passive <= 1; passive++) {
 
3299
    memset(&hints, 0, sizeof(hints));
 
3300
    hints.ai_family = AF_UNSPEC;
 
3301
    hints.ai_flags = passive ? AI_PASSIVE : 0;
 
3302
    hints.ai_socktype = SOCK_STREAM;
 
3303
    hints.ai_protocol = IPPROTO_TCP;
 
3304
    if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
 
3305
      (void)gai_strerror(gaierr);
 
3306
      goto bad;
 
3307
    }
 
3308
    for (ai = aitop; ai; ai = ai->ai_next) {
 
3309
      if (ai->ai_addr == NULL ||
 
3310
          ai->ai_addrlen == 0 ||
 
3311
          getnameinfo(ai->ai_addr, ai->ai_addrlen,
 
3312
                      straddr, sizeof(straddr), strport, sizeof(strport),
 
3313
                      NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
 
3314
        goto bad;
 
3315
      }
 
3316
      switch (ai->ai_family) {
 
3317
      case AF_INET:
 
3318
        if (strcmp(strport, "54321") != 0) {
 
3319
          goto bad;
 
3320
        }
 
3321
        if (passive) {
 
3322
          if (strcmp(straddr, "0.0.0.0") != 0) {
 
3323
            goto bad;
 
3324
          }
 
3325
        } else {
 
3326
          if (strcmp(straddr, "127.0.0.1") != 0) {
 
3327
            goto bad;
 
3328
          }
 
3329
        }
 
3330
        inet4++;
 
3331
        break;
 
3332
      case AF_INET6:
 
3333
        if (strcmp(strport, "54321") != 0) {
 
3334
          goto bad;
 
3335
        }
 
3336
        if (passive) {
 
3337
          if (strcmp(straddr, "::") != 0) {
 
3338
            goto bad;
 
3339
          }
 
3340
        } else {
 
3341
          if (strcmp(straddr, "::1") != 0) {
 
3342
            goto bad;
 
3343
          }
 
3344
        }
 
3345
        inet6++;
 
3346
        break;
 
3347
      case AF_UNSPEC:
 
3348
        goto bad;
 
3349
        break;
 
3350
      default:
 
3351
        /* another family support? */
 
3352
        break;
 
3353
      }
 
3354
    }
 
3355
  }
 
3356
 
 
3357
  if (!(inet4 == 0 || inet4 == 2))
 
3358
    goto bad;
 
3359
  if (!(inet6 == 0 || inet6 == 2))
 
3360
    goto bad;
 
3361
 
 
3362
  if (aitop)
 
3363
    freeaddrinfo(aitop);
 
3364
  return 0;
 
3365
 
 
3366
 bad:
 
3367
  if (aitop)
 
3368
    freeaddrinfo(aitop);
 
3369
  return 1;
 
3370
}
 
3371
]]])],
 
3372
[ac_cv_buggy_getaddrinfo=no],
 
3373
[ac_cv_buggy_getaddrinfo=yes],
 
3374
[
 
3375
if test "${enable_ipv6+set}" = set; then
 
3376
  ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6"
 
3377
else
 
3378
  ac_cv_buggy_getaddrinfo=yes
 
3379
fi]))
 
3380
fi
 
3381
 
 
3382
AC_MSG_RESULT($ac_cv_buggy_getaddrinfo)
 
3383
 
 
3384
if test $have_getaddrinfo = no || test "$ac_cv_buggy_getaddrinfo" = yes
 
3385
then
 
3386
        if test $ipv6 = yes
 
3387
        then
 
3388
                echo 'Fatal: You must get working getaddrinfo() function.'
 
3389
                echo '       or you can specify "--disable-ipv6"'.
 
3390
                exit 1
 
3391
        fi
 
3392
else
 
3393
        AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
 
3394
fi
 
3395
 
 
3396
AC_CHECK_FUNCS(getnameinfo)
 
3397
 
 
3398
# checks for structures
 
3399
AC_HEADER_TIME
 
3400
AC_STRUCT_TM
 
3401
AC_STRUCT_TIMEZONE
 
3402
AC_CHECK_MEMBERS([struct stat.st_rdev])
 
3403
AC_CHECK_MEMBERS([struct stat.st_blksize])
 
3404
AC_CHECK_MEMBERS([struct stat.st_flags])
 
3405
AC_CHECK_MEMBERS([struct stat.st_gen])
 
3406
AC_CHECK_MEMBERS([struct stat.st_birthtime])
 
3407
AC_STRUCT_ST_BLOCKS
 
3408
 
 
3409
AC_MSG_CHECKING(for time.h that defines altzone)
 
3410
AC_CACHE_VAL(ac_cv_header_time_altzone,[
 
3411
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[return altzone;]])],
 
3412
    [ac_cv_header_time_altzone=yes],
 
3413
    [ac_cv_header_time_altzone=no])
 
3414
  ])
 
3415
AC_MSG_RESULT($ac_cv_header_time_altzone)
 
3416
if test $ac_cv_header_time_altzone = yes; then
 
3417
  AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
 
3418
fi
 
3419
 
 
3420
was_it_defined=no
 
3421
AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
 
3422
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
3423
#include <sys/types.h>
 
3424
#include <sys/select.h>
 
3425
#include <sys/time.h>
 
3426
]], [[;]])],[
 
3427
  AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
 
3428
  [Define if  you can safely include both <sys/select.h> and <sys/time.h>
 
3429
   (which you can't on SCO ODT 3.0).]) 
 
3430
  was_it_defined=yes
 
3431
],[])
 
3432
AC_MSG_RESULT($was_it_defined)
 
3433
 
 
3434
AC_MSG_CHECKING(for addrinfo)
 
3435
AC_CACHE_VAL(ac_cv_struct_addrinfo,
 
3436
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[struct addrinfo a]])],
 
3437
  [ac_cv_struct_addrinfo=yes],
 
3438
  [ac_cv_struct_addrinfo=no]))
 
3439
AC_MSG_RESULT($ac_cv_struct_addrinfo)
 
3440
if test $ac_cv_struct_addrinfo = yes; then
 
3441
        AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
 
3442
fi
 
3443
 
 
3444
AC_MSG_CHECKING(for sockaddr_storage)
 
3445
AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
 
3446
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
3447
#               include <sys/types.h>
 
3448
#               include <sys/socket.h>]], [[struct sockaddr_storage s]])],
 
3449
  [ac_cv_struct_sockaddr_storage=yes],
 
3450
  [ac_cv_struct_sockaddr_storage=no]))
 
3451
AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
 
3452
if test $ac_cv_struct_sockaddr_storage = yes; then
 
3453
        AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
 
3454
fi
 
3455
 
 
3456
# checks for compiler characteristics
 
3457
 
 
3458
AC_C_CHAR_UNSIGNED
 
3459
AC_C_CONST
 
3460
 
 
3461
works=no
 
3462
AC_MSG_CHECKING(for working volatile)
 
3463
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[volatile int x; x = 0;]])],
 
3464
  [works=yes],
 
3465
  [AC_DEFINE(volatile, , [Define to empty if the keyword does not work.])]
 
3466
)
 
3467
AC_MSG_RESULT($works)
 
3468
 
 
3469
works=no
 
3470
AC_MSG_CHECKING(for working signed char)
 
3471
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char c;]])],
 
3472
  [works=yes],
 
3473
  [AC_DEFINE(signed, , [Define to empty if the keyword does not work.])]
 
3474
)
 
3475
AC_MSG_RESULT($works)
 
3476
 
 
3477
have_prototypes=no
 
3478
AC_MSG_CHECKING(for prototypes)
 
3479
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo(int x) { return 0; }]], [[return foo(10);]])],
 
3480
  [AC_DEFINE(HAVE_PROTOTYPES, 1, 
 
3481
     [Define if your compiler supports function prototype]) 
 
3482
   have_prototypes=yes],
 
3483
  []
 
3484
)
 
3485
AC_MSG_RESULT($have_prototypes)
 
3486
 
 
3487
works=no
 
3488
AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
 
3489
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
3490
#include <stdarg.h>
 
3491
int foo(int x, ...) {
 
3492
        va_list va;
 
3493
        va_start(va, x);
 
3494
        va_arg(va, int);
 
3495
        va_arg(va, char *);
 
3496
        va_arg(va, double);
 
3497
        return 0;
 
3498
}
 
3499
]], [[return foo(10, "", 3.14);]])],[
 
3500
  AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
 
3501
   [Define if your compiler supports variable length function prototypes
 
3502
   (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>]) 
 
3503
  works=yes
 
3504
],[])
 
3505
AC_MSG_RESULT($works)
 
3506
 
 
3507
# check for socketpair
 
3508
AC_MSG_CHECKING(for socketpair)
 
3509
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
3510
#include <sys/types.h>
 
3511
#include <sys/socket.h>
 
3512
]], [[void *x=socketpair]])],
 
3513
  [AC_DEFINE(HAVE_SOCKETPAIR, 1, [Define if you have the 'socketpair' function.])
 
3514
   AC_MSG_RESULT(yes)],
 
3515
  [AC_MSG_RESULT(no)]
 
3516
)
 
3517
 
 
3518
# check if sockaddr has sa_len member
 
3519
AC_MSG_CHECKING(if sockaddr has sa_len member)
 
3520
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
 
3521
#include <sys/socket.h>]], [[struct sockaddr x;
 
3522
x.sa_len = 0;]])],
 
3523
  [AC_MSG_RESULT(yes)
 
3524
   AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member])],
 
3525
  [AC_MSG_RESULT(no)]
 
3526
)
 
3527
 
 
3528
va_list_is_array=no
 
3529
AC_MSG_CHECKING(whether va_list is an array)
 
3530
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
3531
#ifdef HAVE_STDARG_PROTOTYPES
 
3532
#include <stdarg.h>
 
3533
#else
 
3534
#include <varargs.h>
 
3535
#endif
 
3536
]], [[va_list list1, list2; list1 = list2;]])],[],[
 
3537
 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind]) 
 
3538
 va_list_is_array=yes
 
3539
])
 
3540
AC_MSG_RESULT($va_list_is_array)
 
3541
 
 
3542
# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
 
3543
AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
 
3544
  [Define this if you have some version of gethostbyname_r()])
 
3545
 
 
3546
AC_CHECK_FUNC(gethostbyname_r, [
 
3547
  AC_DEFINE(HAVE_GETHOSTBYNAME_R)
 
3548
  AC_MSG_CHECKING([gethostbyname_r with 6 args])
 
3549
  OLD_CFLAGS=$CFLAGS
 
3550
  CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
 
3551
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
3552
#   include <netdb.h>
 
3553
  ]], [[
 
3554
    char *name;
 
3555
    struct hostent *he, *res;
 
3556
    char buffer[2048];
 
3557
    int buflen = 2048;
 
3558
    int h_errnop;
 
3559
 
 
3560
    (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
 
3561
  ]])],[
 
3562
    AC_DEFINE(HAVE_GETHOSTBYNAME_R)
 
3563
    AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
 
3564
    [Define this if you have the 6-arg version of gethostbyname_r().])
 
3565
    AC_MSG_RESULT(yes)
 
3566
  ],[
 
3567
    AC_MSG_RESULT(no)
 
3568
    AC_MSG_CHECKING([gethostbyname_r with 5 args])
 
3569
    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
3570
#       include <netdb.h>
 
3571
      ]], [[
 
3572
        char *name;
 
3573
        struct hostent *he;
 
3574
        char buffer[2048];
 
3575
        int buflen = 2048;
 
3576
        int h_errnop;
 
3577
 
 
3578
        (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
 
3579
      ]])],
 
3580
      [
 
3581
        AC_DEFINE(HAVE_GETHOSTBYNAME_R)
 
3582
        AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
 
3583
          [Define this if you have the 5-arg version of gethostbyname_r().])
 
3584
        AC_MSG_RESULT(yes)
 
3585
      ], [
 
3586
        AC_MSG_RESULT(no)
 
3587
        AC_MSG_CHECKING([gethostbyname_r with 3 args])
 
3588
        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
3589
#           include <netdb.h>
 
3590
          ]], [[
 
3591
            char *name;
 
3592
            struct hostent *he;
 
3593
            struct hostent_data data;
 
3594
 
 
3595
            (void) gethostbyname_r(name, he, &data);
 
3596
          ]])],
 
3597
          [
 
3598
            AC_DEFINE(HAVE_GETHOSTBYNAME_R)
 
3599
            AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
 
3600
              [Define this if you have the 3-arg version of gethostbyname_r().])
 
3601
            AC_MSG_RESULT(yes)
 
3602
          ], [
 
3603
           AC_MSG_RESULT(no)
 
3604
        ])
 
3605
    ])
 
3606
  ])
 
3607
  CFLAGS=$OLD_CFLAGS
 
3608
], [
 
3609
  AC_CHECK_FUNCS(gethostbyname)
 
3610
])
 
3611
AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
 
3612
AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
 
3613
AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
 
3614
AC_SUBST(HAVE_GETHOSTBYNAME_R)
 
3615
AC_SUBST(HAVE_GETHOSTBYNAME)
 
3616
 
 
3617
# checks for system services
 
3618
# (none yet)
 
3619
 
 
3620
# Linux requires this for correct f.p. operations
 
3621
AC_CHECK_FUNC(__fpu_control,
 
3622
  [],
 
3623
  [AC_CHECK_LIB(ieee, __fpu_control)
 
3624
])
 
3625
 
 
3626
# Check for --with-fpectl
 
3627
AC_MSG_CHECKING(for --with-fpectl)
 
3628
AC_ARG_WITH(fpectl,
 
3629
            AS_HELP_STRING([--with-fpectl], [enable SIGFPE catching]),
 
3630
[
 
3631
if test "$withval" != no
 
3632
then 
 
3633
  AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
 
3634
  [Define if you want SIGFPE handled (see Include/pyfpe.h).]) 
 
3635
  AC_MSG_RESULT(yes)
 
3636
else AC_MSG_RESULT(no)
 
3637
fi],
 
3638
[AC_MSG_RESULT(no)])
 
3639
 
 
3640
# check for --with-libm=...
 
3641
AC_SUBST(LIBM)
 
3642
case $ac_sys_system in
 
3643
Darwin) ;;
 
3644
*) LIBM=-lm
 
3645
esac
 
3646
AC_MSG_CHECKING(for --with-libm=STRING)
 
3647
AC_ARG_WITH(libm,
 
3648
            AS_HELP_STRING([--with-libm=STRING], [math library]),
 
3649
[
 
3650
if test "$withval" = no
 
3651
then LIBM=
 
3652
     AC_MSG_RESULT(force LIBM empty)
 
3653
elif test "$withval" != yes
 
3654
then LIBM=$withval
 
3655
     AC_MSG_RESULT(set LIBM="$withval")
 
3656
else AC_MSG_ERROR([proper usage is --with-libm=STRING])
 
3657
fi],
 
3658
[AC_MSG_RESULT(default LIBM="$LIBM")])
 
3659
 
 
3660
# check for --with-libc=...
 
3661
AC_SUBST(LIBC)
 
3662
AC_MSG_CHECKING(for --with-libc=STRING)
 
3663
AC_ARG_WITH(libc,
 
3664
            AS_HELP_STRING([--with-libc=STRING], [C library]),
 
3665
[
 
3666
if test "$withval" = no
 
3667
then LIBC=
 
3668
     AC_MSG_RESULT(force LIBC empty)
 
3669
elif test "$withval" != yes
 
3670
then LIBC=$withval
 
3671
     AC_MSG_RESULT(set LIBC="$withval")
 
3672
else AC_MSG_ERROR([proper usage is --with-libc=STRING])
 
3673
fi],
 
3674
[AC_MSG_RESULT(default LIBC="$LIBC")])
 
3675
 
 
3676
# **************************************
 
3677
# * Check for gcc x64 inline assembler *
 
3678
# **************************************
 
3679
 
 
3680
AC_MSG_CHECKING(for x64 gcc inline assembler)
 
3681
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
 
3682
  __asm__ __volatile__ ("movq %rcx, %rax");
 
3683
]])],[have_gcc_asm_for_x64=yes],[have_gcc_asm_for_x64=no])
 
3684
AC_MSG_RESULT($have_gcc_asm_for_x64)
 
3685
if test "$have_gcc_asm_for_x64" = yes
 
3686
then
 
3687
    AC_DEFINE(HAVE_GCC_ASM_FOR_X64, 1,
 
3688
    [Define if we can use x64 gcc inline assembler])
 
3689
fi
 
3690
 
 
3691
# **************************************************
 
3692
# * Check for various properties of floating point *
 
3693
# **************************************************
 
3694
 
 
3695
AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
 
3696
AC_CACHE_VAL(ac_cv_little_endian_double, [
 
3697
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
3698
#include <string.h>
 
3699
int main() {
 
3700
    double x = 9006104071832581.0;
 
3701
    if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
 
3702
        return 0;
 
3703
    else
 
3704
        return 1;
 
3705
}
 
3706
]])],
 
3707
[ac_cv_little_endian_double=yes],
 
3708
[ac_cv_little_endian_double=no],
 
3709
[ac_cv_little_endian_double=no])])
 
3710
AC_MSG_RESULT($ac_cv_little_endian_double)
 
3711
if test "$ac_cv_little_endian_double" = yes
 
3712
then
 
3713
  AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
 
3714
  [Define if C doubles are 64-bit IEEE 754 binary format, stored
 
3715
   with the least significant byte first])
 
3716
fi
 
3717
 
 
3718
AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
 
3719
AC_CACHE_VAL(ac_cv_big_endian_double, [
 
3720
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
3721
#include <string.h>
 
3722
int main() {
 
3723
    double x = 9006104071832581.0;
 
3724
    if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
 
3725
        return 0;
 
3726
    else
 
3727
        return 1;
 
3728
}
 
3729
]])],
 
3730
[ac_cv_big_endian_double=yes],
 
3731
[ac_cv_big_endian_double=no],
 
3732
[ac_cv_big_endian_double=no])])
 
3733
AC_MSG_RESULT($ac_cv_big_endian_double)
 
3734
if test "$ac_cv_big_endian_double" = yes
 
3735
then
 
3736
  AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
 
3737
  [Define if C doubles are 64-bit IEEE 754 binary format, stored
 
3738
   with the most significant byte first])
 
3739
fi
 
3740
 
 
3741
# Some ARM platforms use a mixed-endian representation for doubles.
 
3742
# While Python doesn't currently have full support for these platforms
 
3743
# (see e.g., issue 1762561), we can at least make sure that float <-> string
 
3744
# conversions work.
 
3745
AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
 
3746
AC_CACHE_VAL(ac_cv_mixed_endian_double, [
 
3747
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
3748
#include <string.h>
 
3749
int main() {
 
3750
    double x = 9006104071832581.0;
 
3751
    if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
 
3752
        return 0;
 
3753
    else
 
3754
        return 1;
 
3755
}
 
3756
]])],
 
3757
[ac_cv_mixed_endian_double=yes],
 
3758
[ac_cv_mixed_endian_double=no],
 
3759
[ac_cv_mixed_endian_double=no])])
 
3760
AC_MSG_RESULT($ac_cv_mixed_endian_double)
 
3761
if test "$ac_cv_mixed_endian_double" = yes
 
3762
then
 
3763
  AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
 
3764
  [Define if C doubles are 64-bit IEEE 754 binary format, stored
 
3765
   in ARM mixed-endian order (byte order 45670123)])
 
3766
fi
 
3767
 
 
3768
# The short float repr introduced in Python 3.1 requires the
 
3769
# correctly-rounded string <-> double conversion functions from
 
3770
# Python/dtoa.c, which in turn require that the FPU uses 53-bit
 
3771
# rounding; this is a problem on x86, where the x87 FPU has a default
 
3772
# rounding precision of 64 bits.  For gcc/x86, we can fix this by
 
3773
# using inline assembler to get and set the x87 FPU control word.
 
3774
 
 
3775
# This inline assembler syntax may also work for suncc and icc,
 
3776
# so we try it on all platforms.
 
3777
 
 
3778
AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
 
3779
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
 
3780
  unsigned short cw;
 
3781
  __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
 
3782
  __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
 
3783
]])],[have_gcc_asm_for_x87=yes],[have_gcc_asm_for_x87=no])
 
3784
AC_MSG_RESULT($have_gcc_asm_for_x87)
 
3785
if test "$have_gcc_asm_for_x87" = yes
 
3786
then
 
3787
    AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
 
3788
    [Define if we can use gcc inline assembler to get and set x87 control word])
 
3789
fi
 
3790
 
 
3791
# Detect whether system arithmetic is subject to x87-style double
 
3792
# rounding issues.  The result of this test has little meaning on non
 
3793
# IEEE 754 platforms.  On IEEE 754, test should return 1 if rounding
 
3794
# mode is round-to-nearest and double rounding issues are present, and
 
3795
# 0 otherwise.  See http://bugs.python.org/issue2937 for more info.
 
3796
AC_MSG_CHECKING(for x87-style double rounding)
 
3797
# $BASECFLAGS may affect the result
 
3798
ac_save_cc="$CC"
 
3799
CC="$CC $BASECFLAGS"
 
3800
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
3801
#include <stdlib.h>
 
3802
#include <math.h>
 
3803
int main() {
 
3804
    volatile double x, y, z;
 
3805
    /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
 
3806
    x = 0.99999999999999989; /* 1-2**-53 */
 
3807
    y = 1./x;
 
3808
    if (y != 1.)
 
3809
        exit(0);
 
3810
    /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
 
3811
    x = 1e16;
 
3812
    y = 2.99999;
 
3813
    z = x + y;
 
3814
    if (z != 1e16+4.)
 
3815
        exit(0);
 
3816
    /* both tests show evidence of double rounding */
 
3817
    exit(1);
 
3818
}
 
3819
]])],
 
3820
[ac_cv_x87_double_rounding=no],
 
3821
[ac_cv_x87_double_rounding=yes],
 
3822
[ac_cv_x87_double_rounding=no])
 
3823
CC="$ac_save_cc"
 
3824
AC_MSG_RESULT($ac_cv_x87_double_rounding)
 
3825
if test "$ac_cv_x87_double_rounding" = yes
 
3826
then
 
3827
  AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
 
3828
  [Define if arithmetic is subject to x87-style double rounding issue])
 
3829
fi
 
3830
 
 
3831
# ************************************
 
3832
# * Check for mathematical functions *
 
3833
# ************************************
 
3834
 
 
3835
LIBS_SAVE=$LIBS
 
3836
LIBS="$LIBS $LIBM"
 
3837
 
 
3838
AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
 
3839
AC_CHECK_FUNCS([hypot lgamma log1p log2 round tgamma])
 
3840
AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
 
3841
 
 
3842
# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
 
3843
# -0. on some architectures.
 
3844
AC_MSG_CHECKING(whether tanh preserves the sign of zero)
 
3845
AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
 
3846
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
3847
#include <math.h>
 
3848
#include <stdlib.h>
 
3849
int main() {
 
3850
    /* return 0 if either negative zeros don't exist
 
3851
       on this platform or if negative zeros exist
 
3852
       and tanh(-0.) == -0. */
 
3853
  if (atan2(0., -1.) == atan2(-0., -1.) ||
 
3854
      atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
 
3855
  else exit(1);
 
3856
}
 
3857
]])],
 
3858
[ac_cv_tanh_preserves_zero_sign=yes],
 
3859
[ac_cv_tanh_preserves_zero_sign=no],
 
3860
[ac_cv_tanh_preserves_zero_sign=no])])
 
3861
AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
 
3862
if test "$ac_cv_tanh_preserves_zero_sign" = yes
 
3863
then
 
3864
  AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
 
3865
  [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
 
3866
fi
 
3867
 
 
3868
if test "$ac_cv_func_log1p" = yes
 
3869
then
 
3870
    # On some versions of AIX, log1p(-0.) returns 0. instead of
 
3871
    # -0.  See issue #9920.
 
3872
    AC_MSG_CHECKING(whether log1p drops the sign of negative zero)
 
3873
    AC_CACHE_VAL(ac_cv_log1p_drops_zero_sign, [
 
3874
    AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
3875
    #include <math.h>
 
3876
    #include <stdlib.h>
 
3877
    int main() {
 
3878
        /* Fail if the signs of log1p(-0.) and -0. can be
 
3879
           distinguished. */
 
3880
        if (atan2(log1p(-0.), -1.) == atan2(-0., -1.))
 
3881
            return 0;
 
3882
        else
 
3883
            return 1;
 
3884
    }
 
3885
    ]])],
 
3886
    [ac_cv_log1p_drops_zero_sign=no],
 
3887
    [ac_cv_log1p_drops_zero_sign=yes],
 
3888
    [ac_cv_log1p_drops_zero_sign=no])])
 
3889
    AC_MSG_RESULT($ac_cv_log1p_drops_zero_sign)
 
3890
fi
 
3891
if test "$ac_cv_log1p_drops_zero_sign" = yes
 
3892
then
 
3893
  AC_DEFINE(LOG1P_DROPS_ZERO_SIGN, 1,
 
3894
  [Define if log1p(-0.) is 0. rather than -0.])
 
3895
fi
 
3896
 
 
3897
LIBS=$LIBS_SAVE
 
3898
 
 
3899
# For multiprocessing module, check that sem_open
 
3900
# actually works.  For FreeBSD versions <= 7.2,
 
3901
# the kernel module that provides POSIX semaphores
 
3902
# isn't loaded by default, so an attempt to call
 
3903
# sem_open results in a 'Signal 12' error.
 
3904
AC_MSG_CHECKING(whether POSIX semaphores are enabled)
 
3905
AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
 
3906
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
3907
#include <unistd.h>
 
3908
#include <fcntl.h>
 
3909
#include <stdio.h>
 
3910
#include <semaphore.h>
 
3911
#include <sys/stat.h>
 
3912
 
 
3913
int main(void) {
 
3914
  sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
 
3915
  if (a == SEM_FAILED) {
 
3916
    perror("sem_open");
 
3917
    return 1;
 
3918
  }
 
3919
  sem_close(a);
 
3920
  sem_unlink("/autoconf");
 
3921
  return 0;
 
3922
}
 
3923
]])],
 
3924
[ac_cv_posix_semaphores_enabled=yes],
 
3925
[ac_cv_posix_semaphores_enabled=no],
 
3926
[ac_cv_posix_semaphores_enabled=yes])
 
3927
)
 
3928
AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
 
3929
if test $ac_cv_posix_semaphores_enabled = no
 
3930
then
 
3931
  AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
 
3932
            [Define if POSIX semaphores aren't enabled on your system])
 
3933
fi
 
3934
 
 
3935
# Multiprocessing check for broken sem_getvalue
 
3936
AC_MSG_CHECKING(for broken sem_getvalue)
 
3937
AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
 
3938
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
3939
#include <unistd.h>
 
3940
#include <fcntl.h>
 
3941
#include <stdio.h>
 
3942
#include <semaphore.h>
 
3943
#include <sys/stat.h>
 
3944
 
 
3945
int main(void){
 
3946
  sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
 
3947
  int count;
 
3948
  int res;
 
3949
  if(a==SEM_FAILED){
 
3950
    perror("sem_open");
 
3951
    return 1;
 
3952
 
 
3953
  }
 
3954
  res = sem_getvalue(a, &count);
 
3955
  sem_close(a);
 
3956
  sem_unlink("/autocftw");
 
3957
  return res==-1 ? 1 : 0;
 
3958
}
 
3959
]])],
 
3960
[ac_cv_broken_sem_getvalue=no],
 
3961
[ac_cv_broken_sem_getvalue=yes],
 
3962
[ac_cv_broken_sem_getvalue=yes])
 
3963
)
 
3964
AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
 
3965
if test $ac_cv_broken_sem_getvalue = yes
 
3966
then
 
3967
  AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
 
3968
  [define to 1 if your sem_getvalue is broken.])
 
3969
fi
 
3970
 
 
3971
# determine what size digit to use for Python's longs
 
3972
AC_MSG_CHECKING([digit size for Python's longs])
 
3973
AC_ARG_ENABLE(big-digits,
 
3974
AS_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
 
3975
[case $enable_big_digits in
 
3976
yes)
 
3977
  enable_big_digits=30 ;;
 
3978
no)
 
3979
  enable_big_digits=15 ;;
 
3980
[15|30])
 
3981
  ;;
 
3982
*)
 
3983
  AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
 
3984
esac
 
3985
AC_MSG_RESULT($enable_big_digits)
 
3986
AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
 
3987
],
 
3988
[AC_MSG_RESULT(no value specified)])
 
3989
 
 
3990
# check for wchar.h
 
3991
AC_CHECK_HEADER(wchar.h, [
 
3992
  AC_DEFINE(HAVE_WCHAR_H, 1, 
 
3993
  [Define if the compiler provides a wchar.h header file.]) 
 
3994
  wchar_h="yes"
 
3995
],
 
3996
wchar_h="no"
 
3997
)
 
3998
 
 
3999
# determine wchar_t size
 
4000
if test "$wchar_h" = yes
 
4001
then
 
4002
  AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
 
4003
fi
 
4004
 
 
4005
AC_MSG_CHECKING(for UCS-4 tcl)
 
4006
have_ucs4_tcl=no
 
4007
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
4008
#include <tcl.h>
 
4009
#if TCL_UTF_MAX != 6
 
4010
# error "NOT UCS4_TCL"
 
4011
#endif]], [[]])],[
 
4012
  AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
 
4013
  have_ucs4_tcl=yes
 
4014
],[])
 
4015
AC_MSG_RESULT($have_ucs4_tcl)
 
4016
 
 
4017
# check whether wchar_t is signed or not
 
4018
if test "$wchar_h" = yes
 
4019
then
 
4020
  # check whether wchar_t is signed or not
 
4021
  AC_MSG_CHECKING(whether wchar_t is signed)
 
4022
  AC_CACHE_VAL(ac_cv_wchar_t_signed, [
 
4023
  AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
4024
  #include <wchar.h>
 
4025
  int main()
 
4026
  {
 
4027
        /* Success: exit code 0 */
 
4028
        exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
 
4029
  }
 
4030
  ]])],
 
4031
  [ac_cv_wchar_t_signed=yes],
 
4032
  [ac_cv_wchar_t_signed=no],
 
4033
  [ac_cv_wchar_t_signed=yes])])
 
4034
  AC_MSG_RESULT($ac_cv_wchar_t_signed)
 
4035
fi
 
4036
 
 
4037
# wchar_t is only usable if it maps to an unsigned type
 
4038
if test "$ac_cv_sizeof_wchar_t" -ge 2 \
 
4039
          -a "$ac_cv_wchar_t_signed" = "no"
 
4040
then
 
4041
  HAVE_USABLE_WCHAR_T="yes"
 
4042
  AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
 
4043
  [Define if you have a useable wchar_t type defined in wchar.h; useable
 
4044
   means wchar_t must be an unsigned type with at least 16 bits. (see
 
4045
   Include/unicodeobject.h).])
 
4046
else
 
4047
  HAVE_USABLE_WCHAR_T="no usable wchar_t found"
 
4048
fi
 
4049
AC_MSG_RESULT($HAVE_USABLE_WCHAR_T)
 
4050
 
 
4051
# check for endianness
 
4052
AC_C_BIGENDIAN
 
4053
 
 
4054
# ABI version string for Python extension modules.  This appears between the
 
4055
# periods in shared library file names, e.g. foo.<SOABI>.so.  It is calculated
 
4056
# from the following attributes which affect the ABI of this Python build (in
 
4057
# this order):
 
4058
#
 
4059
# * The Python implementation (always 'cpython-' for us)
 
4060
# * The major and minor version numbers
 
4061
# * --with-pydebug (adds a 'd')
 
4062
# * --with-pymalloc (adds a 'm')
 
4063
# * --with-wide-unicode (adds a 'u')
 
4064
#
 
4065
# Thus for example, Python 3.2 built with wide unicode, pydebug, and pymalloc,
 
4066
# would get a shared library ABI version tag of 'cpython-32dmu' and shared
 
4067
# libraries would be named 'foo.cpython-32dmu.so'.
 
4068
AC_SUBST(SOABI)
 
4069
AC_MSG_CHECKING(ABIFLAGS)
 
4070
AC_MSG_RESULT($ABIFLAGS)
 
4071
AC_MSG_CHECKING(SOABI)
 
4072
SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}
 
4073
AC_MSG_RESULT($SOABI)
 
4074
 
 
4075
AC_SUBST(EXT_SUFFIX)
 
4076
case $ac_sys_system in
 
4077
    Linux*|GNU*)
 
4078
        EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX};;
 
4079
    *)
 
4080
        EXT_SUFFIX=${SHLIB_SUFFIX};;
 
4081
esac
 
4082
 
 
4083
AC_MSG_CHECKING(LDVERSION)
 
4084
LDVERSION='$(VERSION)$(ABIFLAGS)'
 
4085
AC_MSG_RESULT($LDVERSION)
 
4086
 
 
4087
dnl define LIBPL after ABIFLAGS and LDVERSION is defined.
 
4088
AC_SUBST(PY_ENABLE_SHARED)
 
4089
LIBPL="${prefix}/lib/python${VERSION}/config-${LDVERSION}"
 
4090
AC_SUBST(LIBPL)
 
4091
 
 
4092
# Check whether right shifting a negative integer extends the sign bit
 
4093
# or fills with zeros (like the Cray J90, according to Tim Peters).
 
4094
AC_MSG_CHECKING(whether right shift extends the sign bit)
 
4095
AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
 
4096
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
4097
int main()
 
4098
{
 
4099
        exit(((-1)>>3 == -1) ? 0 : 1);
 
4100
}
 
4101
]])],
 
4102
[ac_cv_rshift_extends_sign=yes],
 
4103
[ac_cv_rshift_extends_sign=no],
 
4104
[ac_cv_rshift_extends_sign=yes])])
 
4105
AC_MSG_RESULT($ac_cv_rshift_extends_sign)
 
4106
if test "$ac_cv_rshift_extends_sign" = no
 
4107
then
 
4108
  AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
 
4109
  [Define if i>>j for signed int i does not extend the sign bit
 
4110
   when i < 0])
 
4111
fi
 
4112
 
 
4113
# check for getc_unlocked and related locking functions
 
4114
AC_MSG_CHECKING(for getc_unlocked() and friends)
 
4115
AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
 
4116
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[
 
4117
        FILE *f = fopen("/dev/null", "r");
 
4118
        flockfile(f);
 
4119
        getc_unlocked(f);
 
4120
        funlockfile(f);
 
4121
]])],[ac_cv_have_getc_unlocked=yes],[ac_cv_have_getc_unlocked=no])])
 
4122
AC_MSG_RESULT($ac_cv_have_getc_unlocked)
 
4123
if test "$ac_cv_have_getc_unlocked" = yes
 
4124
then
 
4125
  AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
 
4126
  [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
 
4127
fi
 
4128
 
 
4129
# check where readline lives
 
4130
# save the value of LIBS so we don't actually link Python with readline
 
4131
LIBS_no_readline=$LIBS
 
4132
 
 
4133
# On some systems we need to link readline to a termcap compatible
 
4134
# library.  NOTE: Keep the precedence of listed libraries synchronised
 
4135
# with setup.py.
 
4136
py_cv_lib_readline=no
 
4137
AC_MSG_CHECKING([how to link readline libs])
 
4138
for py_libtermcap in "" tinfo ncursesw ncurses curses termcap; do
 
4139
  if test -z "$py_libtermcap"; then
 
4140
    READLINE_LIBS="-lreadline"
 
4141
  else
 
4142
    READLINE_LIBS="-lreadline -l$py_libtermcap"
 
4143
  fi
 
4144
  LIBS="$READLINE_LIBS $LIBS_no_readline"
 
4145
  AC_LINK_IFELSE(
 
4146
    [AC_LANG_CALL([],[readline])],
 
4147
    [py_cv_lib_readline=yes])
 
4148
  if test $py_cv_lib_readline = yes; then
 
4149
    break
 
4150
  fi
 
4151
done
 
4152
# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
 
4153
#AC_SUBST([READLINE_LIBS])
 
4154
if test $py_cv_lib_readline = no; then
 
4155
  AC_MSG_RESULT([none])
 
4156
else
 
4157
  AC_MSG_RESULT([$READLINE_LIBS])
 
4158
  AC_DEFINE(HAVE_LIBREADLINE, 1,
 
4159
    [Define if you have the readline library (-lreadline).])
 
4160
fi
 
4161
 
 
4162
# check for readline 2.1
 
4163
AC_CHECK_LIB(readline, rl_callback_handler_install,
 
4164
        AC_DEFINE(HAVE_RL_CALLBACK, 1,
 
4165
        [Define if you have readline 2.1]), ,$READLINE_LIBS)
 
4166
 
 
4167
# check for readline 2.2
 
4168
AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
 
4169
  [have_readline=yes],
 
4170
  [have_readline=no]
 
4171
)
 
4172
if test $have_readline = yes
 
4173
then
 
4174
  AC_EGREP_HEADER([extern int rl_completion_append_character;],
 
4175
  [readline/readline.h],
 
4176
  AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
 
4177
  [Define if you have readline 2.2]), )
 
4178
  AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
 
4179
  [readline/readline.h],
 
4180
  AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
 
4181
  [Define if you have rl_completion_suppress_append]), )
 
4182
fi
 
4183
 
 
4184
# check for readline 4.0
 
4185
AC_CHECK_LIB(readline, rl_pre_input_hook,
 
4186
        AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
 
4187
        [Define if you have readline 4.0]), ,$READLINE_LIBS)
 
4188
 
 
4189
# also in 4.0
 
4190
AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
 
4191
        AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
 
4192
        [Define if you have readline 4.0]), ,$READLINE_LIBS)
 
4193
 
 
4194
# check for readline 4.2
 
4195
AC_CHECK_LIB(readline, rl_completion_matches,
 
4196
        AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
 
4197
        [Define if you have readline 4.2]), ,$READLINE_LIBS)
 
4198
 
 
4199
# also in readline 4.2
 
4200
AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
 
4201
  [have_readline=yes],
 
4202
  [have_readline=no]
 
4203
)
 
4204
if test $have_readline = yes
 
4205
then
 
4206
  AC_EGREP_HEADER([extern int rl_catch_signals;],
 
4207
  [readline/readline.h],
 
4208
  AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
 
4209
  [Define if you can turn off readline's signal handling.]), )
 
4210
fi
 
4211
 
 
4212
# End of readline checks: restore LIBS
 
4213
LIBS=$LIBS_no_readline
 
4214
 
 
4215
AC_MSG_CHECKING(for broken nice())
 
4216
AC_CACHE_VAL(ac_cv_broken_nice, [
 
4217
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
4218
int main()
 
4219
{
 
4220
        int val1 = nice(1);
 
4221
        if (val1 != -1 && val1 == nice(2))
 
4222
                exit(0);
 
4223
        exit(1);
 
4224
}
 
4225
]])],
 
4226
[ac_cv_broken_nice=yes],
 
4227
[ac_cv_broken_nice=no],
 
4228
[ac_cv_broken_nice=no])])
 
4229
AC_MSG_RESULT($ac_cv_broken_nice)
 
4230
if test "$ac_cv_broken_nice" = yes
 
4231
then
 
4232
  AC_DEFINE(HAVE_BROKEN_NICE, 1,
 
4233
  [Define if nice() returns success/failure instead of the new priority.])
 
4234
fi
 
4235
 
 
4236
AC_MSG_CHECKING(for broken poll())
 
4237
AC_CACHE_VAL(ac_cv_broken_poll,
 
4238
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
4239
#include <poll.h>
 
4240
 
 
4241
int main()
 
4242
{
 
4243
    struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
 
4244
    int poll_test;
 
4245
 
 
4246
    close (42);
 
4247
 
 
4248
    poll_test = poll(&poll_struct, 1, 0);
 
4249
    if (poll_test < 0)
 
4250
        return 0;
 
4251
    else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
 
4252
        return 0;
 
4253
    else
 
4254
        return 1;
 
4255
}
 
4256
]])],
 
4257
[ac_cv_broken_poll=yes],
 
4258
[ac_cv_broken_poll=no],
 
4259
[ac_cv_broken_poll=no]))
 
4260
AC_MSG_RESULT($ac_cv_broken_poll)
 
4261
if test "$ac_cv_broken_poll" = yes
 
4262
then
 
4263
  AC_DEFINE(HAVE_BROKEN_POLL, 1,
 
4264
      [Define if poll() sets errno on invalid file descriptors.])
 
4265
fi
 
4266
 
 
4267
# Before we can test tzset, we need to check if struct tm has a tm_zone 
 
4268
# (which is not required by ISO C or UNIX spec) and/or if we support
 
4269
# tzname[]
 
4270
AC_STRUCT_TIMEZONE
 
4271
 
 
4272
# check tzset(3) exists and works like we expect it to
 
4273
AC_MSG_CHECKING(for working tzset())
 
4274
AC_CACHE_VAL(ac_cv_working_tzset, [
 
4275
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
4276
#include <stdlib.h>
 
4277
#include <time.h>
 
4278
#include <string.h>
 
4279
 
 
4280
#if HAVE_TZNAME
 
4281
extern char *tzname[];
 
4282
#endif
 
4283
 
 
4284
int main()
 
4285
{
 
4286
        /* Note that we need to ensure that not only does tzset(3)
 
4287
           do 'something' with localtime, but it works as documented
 
4288
           in the library reference and as expected by the test suite.
 
4289
           This includes making sure that tzname is set properly if
 
4290
           tm->tm_zone does not exist since it is the alternative way
 
4291
           of getting timezone info.
 
4292
 
 
4293
           Red Hat 6.2 doesn't understand the southern hemisphere 
 
4294
           after New Year's Day.
 
4295
        */
 
4296
 
 
4297
        time_t groundhogday = 1044144000; /* GMT-based */
 
4298
        time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
 
4299
 
 
4300
        putenv("TZ=UTC+0");
 
4301
        tzset();
 
4302
        if (localtime(&groundhogday)->tm_hour != 0)
 
4303
            exit(1);
 
4304
#if HAVE_TZNAME
 
4305
        /* For UTC, tzname[1] is sometimes "", sometimes "   " */
 
4306
        if (strcmp(tzname[0], "UTC") || 
 
4307
                (tzname[1][0] != 0 && tzname[1][0] != ' '))
 
4308
            exit(1);
 
4309
#endif
 
4310
 
 
4311
        putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
 
4312
        tzset();
 
4313
        if (localtime(&groundhogday)->tm_hour != 19)
 
4314
            exit(1);
 
4315
#if HAVE_TZNAME
 
4316
        if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
 
4317
            exit(1);
 
4318
#endif
 
4319
 
 
4320
        putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
 
4321
        tzset();
 
4322
        if (localtime(&groundhogday)->tm_hour != 11)
 
4323
            exit(1);
 
4324
#if HAVE_TZNAME
 
4325
        if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
 
4326
            exit(1);
 
4327
#endif
 
4328
 
 
4329
#if HAVE_STRUCT_TM_TM_ZONE
 
4330
        if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
 
4331
            exit(1);
 
4332
        if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
 
4333
            exit(1);
 
4334
#endif
 
4335
 
 
4336
        exit(0);
 
4337
}
 
4338
]])],
 
4339
[ac_cv_working_tzset=yes],
 
4340
[ac_cv_working_tzset=no],
 
4341
[ac_cv_working_tzset=no])])
 
4342
AC_MSG_RESULT($ac_cv_working_tzset)
 
4343
if test "$ac_cv_working_tzset" = yes
 
4344
then
 
4345
  AC_DEFINE(HAVE_WORKING_TZSET, 1,
 
4346
  [Define if tzset() actually switches the local timezone in a meaningful way.])
 
4347
fi
 
4348
 
 
4349
# Look for subsecond timestamps in struct stat
 
4350
AC_MSG_CHECKING(for tv_nsec in struct stat)
 
4351
AC_CACHE_VAL(ac_cv_stat_tv_nsec,
 
4352
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
 
4353
struct stat st;
 
4354
st.st_mtim.tv_nsec = 1;
 
4355
]])],
 
4356
[ac_cv_stat_tv_nsec=yes],
 
4357
[ac_cv_stat_tv_nsec=no]))
 
4358
AC_MSG_RESULT($ac_cv_stat_tv_nsec)
 
4359
if test "$ac_cv_stat_tv_nsec" = yes
 
4360
then
 
4361
  AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
 
4362
  [Define if you have struct stat.st_mtim.tv_nsec])
 
4363
fi
 
4364
 
 
4365
# Look for BSD style subsecond timestamps in struct stat
 
4366
AC_MSG_CHECKING(for tv_nsec2 in struct stat)
 
4367
AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
 
4368
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
 
4369
struct stat st;
 
4370
st.st_mtimespec.tv_nsec = 1;
 
4371
]])],
 
4372
[ac_cv_stat_tv_nsec2=yes],
 
4373
[ac_cv_stat_tv_nsec2=no]))
 
4374
AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
 
4375
if test "$ac_cv_stat_tv_nsec2" = yes
 
4376
then
 
4377
  AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
 
4378
  [Define if you have struct stat.st_mtimensec])
 
4379
fi
 
4380
 
 
4381
ac_save_cppflags="$CPPFLAGS"
 
4382
CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw"
 
4383
# On HP/UX 11.0, mvwdelch is a block with a return statement
 
4384
AC_MSG_CHECKING(whether mvwdelch is an expression)
 
4385
AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
 
4386
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
 
4387
  int rtn;
 
4388
  rtn = mvwdelch(0,0,0);
 
4389
]])],
 
4390
[ac_cv_mvwdelch_is_expression=yes],
 
4391
[ac_cv_mvwdelch_is_expression=no]))
 
4392
AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
 
4393
 
 
4394
if test "$ac_cv_mvwdelch_is_expression" = yes
 
4395
then
 
4396
  AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
 
4397
  [Define if mvwdelch in curses.h is an expression.])
 
4398
fi
 
4399
 
 
4400
AC_MSG_CHECKING(whether WINDOW has _flags)
 
4401
AC_CACHE_VAL(ac_cv_window_has_flags,
 
4402
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
 
4403
  WINDOW *w;
 
4404
  w->_flags = 0;
 
4405
]])],
 
4406
[ac_cv_window_has_flags=yes],
 
4407
[ac_cv_window_has_flags=no]))
 
4408
AC_MSG_RESULT($ac_cv_window_has_flags)
 
4409
 
 
4410
 
 
4411
if test "$ac_cv_window_has_flags" = yes
 
4412
then
 
4413
  AC_DEFINE(WINDOW_HAS_FLAGS, 1, 
 
4414
  [Define if WINDOW in curses.h offers a field _flags.])
 
4415
fi
 
4416
 
 
4417
AC_MSG_CHECKING(for is_term_resized)
 
4418
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=is_term_resized]])],
 
4419
  [AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
 
4420
   AC_MSG_RESULT(yes)],
 
4421
  [AC_MSG_RESULT(no)]
 
4422
)
 
4423
 
 
4424
AC_MSG_CHECKING(for resize_term)
 
4425
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resize_term]])],
 
4426
  [AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
 
4427
   AC_MSG_RESULT(yes)],
 
4428
  [AC_MSG_RESULT(no)]
 
4429
)
 
4430
 
 
4431
AC_MSG_CHECKING(for resizeterm)
 
4432
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resizeterm]])],
 
4433
  [AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
 
4434
   AC_MSG_RESULT(yes)],
 
4435
  [AC_MSG_RESULT(no)]
 
4436
)
 
4437
# last curses configure check
 
4438
CPPFLAGS=$ac_save_cppflags
 
4439
 
 
4440
AC_MSG_NOTICE([checking for device files])
 
4441
 
 
4442
dnl NOTE: Inform user how to proceed with files when cross compiling.
 
4443
if test "x$cross_compiling" = xyes; then
 
4444
  if test "${ac_cv_file__dev_ptmx+set}" != set; then
 
4445
    AC_MSG_CHECKING([for /dev/ptmx])
 
4446
    AC_MSG_RESULT([not set])
 
4447
    AC_MSG_ERROR([set ac_cv_file__dev_ptmx to yes/no in your CONFIG_SITE file when cross compiling])
 
4448
  fi
 
4449
  if test "${ac_cv_file__dev_ptc+set}" != set; then
 
4450
    AC_MSG_CHECKING([for /dev/ptc])
 
4451
    AC_MSG_RESULT([not set])
 
4452
    AC_MSG_ERROR([set ac_cv_file__dev_ptc to yes/no in your CONFIG_SITE file when cross compiling])
 
4453
  fi
 
4454
fi
 
4455
 
 
4456
AC_CHECK_FILE(/dev/ptmx, [], [])
 
4457
if test "x$ac_cv_file__dev_ptmx" = xyes; then
 
4458
  AC_DEFINE(HAVE_DEV_PTMX, 1,
 
4459
  [Define to 1 if you have the /dev/ptmx device file.])
 
4460
fi
 
4461
AC_CHECK_FILE(/dev/ptc, [], [])
 
4462
if test "x$ac_cv_file__dev_ptc" = xyes; then
 
4463
  AC_DEFINE(HAVE_DEV_PTC, 1,
 
4464
  [Define to 1 if you have the /dev/ptc device file.])
 
4465
fi
 
4466
 
 
4467
if test "$have_long_long" = yes
 
4468
then
 
4469
  AC_MSG_CHECKING(for %lld and %llu printf() format support)
 
4470
  AC_CACHE_VAL(ac_cv_have_long_long_format,
 
4471
  AC_RUN_IFELSE([AC_LANG_SOURCE([[[
 
4472
  #include <stdio.h>
 
4473
  #include <stddef.h>
 
4474
  #include <string.h>
 
4475
 
 
4476
  #ifdef HAVE_SYS_TYPES_H
 
4477
  #include <sys/types.h>
 
4478
  #endif
 
4479
 
 
4480
  int main()
 
4481
  {
 
4482
      char buffer[256];
 
4483
 
 
4484
      if (sprintf(buffer, "%lld", (long long)123) < 0)
 
4485
          return 1;
 
4486
      if (strcmp(buffer, "123"))
 
4487
          return 1;
 
4488
 
 
4489
      if (sprintf(buffer, "%lld", (long long)-123) < 0)
 
4490
          return 1;
 
4491
      if (strcmp(buffer, "-123"))
 
4492
          return 1;
 
4493
 
 
4494
      if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
 
4495
          return 1;
 
4496
      if (strcmp(buffer, "123"))
 
4497
          return 1;
 
4498
 
 
4499
      return 0;
 
4500
  }
 
4501
  ]]])],
 
4502
  [ac_cv_have_long_long_format=yes],
 
4503
  [ac_cv_have_long_long_format=no],
 
4504
  [ac_cv_have_long_long_format="cross -- assuming no"
 
4505
   if test x$GCC = xyes; then
 
4506
    save_CFLAGS=$CFLAGS
 
4507
    CFLAGS="$CFLAGS -Werror -Wformat"
 
4508
    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 
4509
        #include <stdio.h>
 
4510
        #include <stddef.h>
 
4511
      ]], [[
 
4512
      char *buffer;
 
4513
      sprintf(buffer, "%lld", (long long)123);
 
4514
      sprintf(buffer, "%lld", (long long)-123);
 
4515
      sprintf(buffer, "%llu", (unsigned long long)123);
 
4516
      ]])],
 
4517
      ac_cv_have_long_long_format=yes
 
4518
    )
 
4519
    CFLAGS=$save_CFLAGS
 
4520
   fi])
 
4521
  )
 
4522
  AC_MSG_RESULT($ac_cv_have_long_long_format)
 
4523
fi
 
4524
 
 
4525
if test "$ac_cv_have_long_long_format" = yes
 
4526
then
 
4527
  AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
 
4528
  [Define to printf format modifier for long long type])
 
4529
fi
 
4530
 
 
4531
if test $ac_sys_system = Darwin
 
4532
then
 
4533
        LIBS="$LIBS -framework CoreFoundation"
 
4534
fi
 
4535
 
 
4536
AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
 
4537
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
4538
#include <stdio.h>
 
4539
#include <stddef.h>
 
4540
#include <string.h>
 
4541
 
 
4542
#ifdef HAVE_SYS_TYPES_H
 
4543
#include <sys/types.h>
 
4544
#endif
 
4545
 
 
4546
#ifdef HAVE_SSIZE_T
 
4547
typedef ssize_t Py_ssize_t;
 
4548
#elif SIZEOF_VOID_P == SIZEOF_LONG
 
4549
typedef long Py_ssize_t;
 
4550
#else
 
4551
typedef int Py_ssize_t;
 
4552
#endif
 
4553
 
 
4554
int main()
 
4555
{
 
4556
    char buffer[256];
 
4557
 
 
4558
    if(sprintf(buffer, "%zd", (size_t)123) < 0)
 
4559
        return 1;
 
4560
 
 
4561
    if (strcmp(buffer, "123"))
 
4562
        return 1;
 
4563
 
 
4564
    if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
 
4565
        return 1;
 
4566
 
 
4567
    if (strcmp(buffer, "-123"))
 
4568
        return 1;
 
4569
 
 
4570
    return 0;
 
4571
}
 
4572
]])],
 
4573
  [ac_cv_have_size_t_format=yes],
 
4574
  [ac_cv_have_size_t_format=no],
 
4575
  [ac_cv_have_size_t_format="cross -- assuming yes"
 
4576
])])
 
4577
if test "$ac_cv_have_size_t_format" != no ; then
 
4578
  AC_DEFINE(PY_FORMAT_SIZE_T, "z",
 
4579
  [Define to printf format modifier for Py_ssize_t])
 
4580
fi
 
4581
 
 
4582
AC_CHECK_TYPE(socklen_t,,
 
4583
  AC_DEFINE(socklen_t,int,
 
4584
            [Define to `int' if <sys/socket.h> does not define.]),[
 
4585
#ifdef HAVE_SYS_TYPES_H
 
4586
#include <sys/types.h>
 
4587
#endif
 
4588
#ifdef HAVE_SYS_SOCKET_H
 
4589
#include <sys/socket.h>
 
4590
#endif
 
4591
])
 
4592
 
 
4593
AC_MSG_CHECKING(for broken mbstowcs)
 
4594
AC_CACHE_VAL(ac_cv_broken_mbstowcs,
 
4595
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
4596
#include <stdio.h>
 
4597
#include<stdlib.h>
 
4598
int main() {
 
4599
    size_t len = -1;
 
4600
    const char *str = "text";
 
4601
    len = mbstowcs(NULL, str, 0);
 
4602
    return (len != 4);
 
4603
}
 
4604
]])],
 
4605
[ac_cv_broken_mbstowcs=no],
 
4606
[ac_cv_broken_mbstowcs=yes],
 
4607
[ac_cv_broken_mbstowcs=no]))
 
4608
AC_MSG_RESULT($ac_cv_broken_mbstowcs)
 
4609
if test "$ac_cv_broken_mbstowcs" = yes
 
4610
then
 
4611
  AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
 
4612
  [Define if mbstowcs(NULL, "text", 0) does not return the number of 
 
4613
   wide chars that would be converted.])
 
4614
fi
 
4615
 
 
4616
# Check for --with-computed-gotos
 
4617
AC_MSG_CHECKING(for --with-computed-gotos)
 
4618
AC_ARG_WITH(computed-gotos,
 
4619
            AS_HELP_STRING([--with(out)-computed-gotos],
 
4620
                           [Use computed gotos in evaluation loop (enabled by default on supported compilers)]),
 
4621
[
 
4622
if test "$withval" = yes
 
4623
then 
 
4624
  AC_DEFINE(USE_COMPUTED_GOTOS, 1,
 
4625
  [Define if you want to use computed gotos in ceval.c.]) 
 
4626
  AC_MSG_RESULT(yes)
 
4627
fi
 
4628
if test "$withval" = no
 
4629
then 
 
4630
  AC_DEFINE(USE_COMPUTED_GOTOS, 0,
 
4631
  [Define if you want to use computed gotos in ceval.c.]) 
 
4632
  AC_MSG_RESULT(no)
 
4633
fi
 
4634
],
 
4635
[AC_MSG_RESULT(no value specified)])
 
4636
 
 
4637
AC_MSG_CHECKING(whether $CC supports computed gotos)
 
4638
AC_CACHE_VAL(ac_cv_computed_gotos,
 
4639
AC_RUN_IFELSE([AC_LANG_SOURCE([[[
 
4640
int main(int argc, char **argv)
 
4641
{
 
4642
    static void *targets[1] = { &&LABEL1 };
 
4643
    goto LABEL2;
 
4644
LABEL1:
 
4645
    return 0;
 
4646
LABEL2:
 
4647
    goto *targets[0];
 
4648
    return 1;
 
4649
}
 
4650
]]])],
 
4651
[ac_cv_computed_gotos=yes],
 
4652
[ac_cv_computed_gotos=no],
 
4653
[if test "${with_computed_gotos+set}" = set; then
 
4654
   ac_cv_computed_gotos="$with_computed_gotos -- configured --with(out)-computed-gotos"
 
4655
 else
 
4656
   ac_cv_computed_gotos=no
 
4657
 fi]))
 
4658
AC_MSG_RESULT($ac_cv_computed_gotos)
 
4659
case "$ac_cv_computed_gotos" in yes*)
 
4660
  AC_DEFINE(HAVE_COMPUTED_GOTOS, 1,
 
4661
  [Define if the C compiler supports computed gotos.])
 
4662
esac
 
4663
 
 
4664
case $ac_sys_system in
 
4665
AIX*)   
 
4666
  AC_DEFINE(HAVE_BROKEN_PIPE_BUF, 1, [Define if the system reports an invalid PIPE_BUF value.]) ;;
 
4667
esac
 
4668
 
 
4669
 
 
4670
AC_SUBST(THREADHEADERS)
 
4671
 
 
4672
for h in `(cd $srcdir;echo Python/thread_*.h)`
 
4673
do
 
4674
  THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
 
4675
done
 
4676
 
 
4677
AC_SUBST(SRCDIRS)
 
4678
SRCDIRS="Parser Grammar Objects Python Modules Mac"
 
4679
AC_MSG_CHECKING(for build directories)
 
4680
for dir in $SRCDIRS; do
 
4681
    if test ! -d $dir; then
 
4682
        mkdir $dir
 
4683
    fi
 
4684
done
 
4685
AC_MSG_RESULT(done)
 
4686
 
 
4687
# Availability of -O2:
 
4688
AC_MSG_CHECKING(for -O2)
 
4689
saved_cflags="$CFLAGS"
 
4690
CFLAGS="-O2"
 
4691
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
 
4692
]])],[have_O2=yes],[have_O2=no])
 
4693
AC_MSG_RESULT($have_O2)
 
4694
CFLAGS="$saved_cflags"
 
4695
 
 
4696
# _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect:
 
4697
# http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html
 
4698
AC_MSG_CHECKING(for glibc _FORTIFY_SOURCE/memmove bug)
 
4699
saved_cflags="$CFLAGS"
 
4700
CFLAGS="-O2 -D_FORTIFY_SOURCE=2"
 
4701
if test "$have_O2" = no; then
 
4702
    CFLAGS=""
 
4703
fi
 
4704
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
4705
#include <stdio.h>
 
4706
#include <stdlib.h>
 
4707
#include <string.h>
 
4708
void foo(void *p, void *q) { memmove(p, q, 19); }
 
4709
int main() {
 
4710
  char a[32] = "123456789000000000";
 
4711
  foo(&a[9], a);
 
4712
  if (strcmp(a, "123456789123456789000000000") != 0)
 
4713
    return 1;
 
4714
  foo(a, &a[9]);
 
4715
  if (strcmp(a, "123456789000000000") != 0)
 
4716
    return 1;
 
4717
  return 0;
 
4718
}
 
4719
]])],
 
4720
[have_glibc_memmove_bug=no],
 
4721
[have_glibc_memmove_bug=yes],
 
4722
[have_glibc_memmove_bug=undefined])
 
4723
CFLAGS="$saved_cflags"
 
4724
AC_MSG_RESULT($have_glibc_memmove_bug)
 
4725
if test "$have_glibc_memmove_bug" = yes; then
 
4726
    AC_DEFINE(HAVE_GLIBC_MEMMOVE_BUG, 1,
 
4727
    [Define if glibc has incorrect _FORTIFY_SOURCE wrappers
 
4728
     for memmove and bcopy.])
 
4729
fi
 
4730
 
 
4731
if test "$have_gcc_asm_for_x87" = yes; then
 
4732
    # Some versions of gcc miscompile inline asm:
 
4733
    # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491
 
4734
    # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html
 
4735
    case $CC in
 
4736
        *gcc*)
 
4737
            AC_MSG_CHECKING(for gcc ipa-pure-const bug)
 
4738
            saved_cflags="$CFLAGS"
 
4739
            CFLAGS="-O2"
 
4740
            AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
4741
            __attribute__((noinline)) int
 
4742
            foo(int *p) {
 
4743
              int r;
 
4744
              asm ( "movl \$6, (%1)\n\t"
 
4745
                    "xorl %0, %0\n\t"
 
4746
                    : "=r" (r) : "r" (p) : "memory"
 
4747
              );
 
4748
              return r;
 
4749
            }
 
4750
            int main() {
 
4751
              int p = 8;
 
4752
              if ((foo(&p) ? : p) != 6)
 
4753
                return 1;
 
4754
              return 0;
 
4755
            }
 
4756
            ]])],
 
4757
            [have_ipa_pure_const_bug=no],
 
4758
            [have_ipa_pure_const_bug=yes],
 
4759
            [have_ipa_pure_const_bug=undefined])
 
4760
            CFLAGS="$saved_cflags"
 
4761
            AC_MSG_RESULT($have_ipa_pure_const_bug)
 
4762
            if test "$have_ipa_pure_const_bug" = yes; then
 
4763
                AC_DEFINE(HAVE_IPA_PURE_CONST_BUG, 1,
 
4764
                          [Define if gcc has the ipa-pure-const bug.])
 
4765
            fi
 
4766
        ;;
 
4767
    esac
 
4768
fi
 
4769
 
 
4770
# ensurepip option
 
4771
AC_MSG_CHECKING(for ensurepip)
 
4772
AC_ARG_WITH(ensurepip,
 
4773
    [AS_HELP_STRING([--with(out)-ensurepip=@<:@=upgrade@:>@],
 
4774
        ["install" or "upgrade" using bundled pip])],
 
4775
    [],
 
4776
    [with_ensurepip=upgrade])
 
4777
AS_CASE($with_ensurepip,
 
4778
    [yes|upgrade],[ENSUREPIP=upgrade],
 
4779
    [install],[ENSUREPIP=install],
 
4780
    [no],[ENSUREPIP=no],
 
4781
    [AC_MSG_ERROR([--with-ensurepip=upgrade|install|no])])
 
4782
AC_MSG_RESULT($ENSUREPIP)
 
4783
AC_SUBST(ENSUREPIP)
 
4784
 
 
4785
# generate output files
 
4786
AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc Misc/python-config.sh)
 
4787
AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])
 
4788
AC_OUTPUT
 
4789
 
 
4790
echo "creating Modules/Setup" >&AS_MESSAGE_FD
 
4791
if test ! -f Modules/Setup
 
4792
then
 
4793
        cp $srcdir/Modules/Setup.dist Modules/Setup
 
4794
fi
 
4795
 
 
4796
echo "creating Modules/Setup.local" >&AS_MESSAGE_FD
 
4797
if test ! -f Modules/Setup.local
 
4798
then
 
4799
        echo "# Edit this file for local setup changes" >Modules/Setup.local
 
4800
fi
 
4801
 
 
4802
echo "creating Makefile" >&AS_MESSAGE_FD
 
4803
$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
 
4804
                        -s Modules Modules/Setup.config \
 
4805
                        Modules/Setup.local Modules/Setup
 
4806
mv config.c Modules