blob: 2aaec844c4a28b1154ff98585f9b6d59f48c35da [file] [log] [blame]
Benjamin Petersonfbeb6b62008-05-26 16:04:49 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Martin v. Löwis88afe662002-10-26 13:47:44 +00004
5# Set VERSION so we only need to edit in one place (i.e., here)
Georg Brandl3ebb6b32011-02-20 10:37:07 +00006m4_define(PYTHON_VERSION, 3.3)
Martin v. Löwis88afe662002-10-26 13:47:44 +00007
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00008AC_PREREQ(2.65)
Alexandre Vassalottib89910f2009-07-18 00:33:23 +00009
Georg Brandle2e15612009-05-20 18:25:10 +000010AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050011
12AC_SUBST(HGVERSION)
13AC_SUBST(HGTAG)
14AC_SUBST(HGBRANCH)
15
Antoine Pitroud3b2aef2011-07-27 01:22:41 +020016if test -e $srcdir/.hg/dirstate
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050017then
18AC_CHECK_PROG(HAS_HG, hg, found, not-found)
19else
20HAS_HG=no-repository
21fi
22if test $HAS_HG = found
23then
24 HGVERSION="hg id -i \$(srcdir)"
25 HGTAG="hg id -t \$(srcdir)"
26 HGBRANCH="hg id -b \$(srcdir)"
27else
28 HGVERSION=""
29 HGTAG=""
30 HGBRANCH=""
31fi
32
Martin v. Löwis88afe662002-10-26 13:47:44 +000033AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000034AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000035
Matthias Kloseca2f6ec2012-03-15 21:30:11 +010036AC_CANONICAL_HOST
37
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +020038if test "$cross_compiling" = yes; then
39 AC_MSG_CHECKING([for python interpreter for cross build])
40 if test -z "$PYTHON_FOR_BUILD"; then
41 for interp in python$PACKAGE_VERSION python3 python; do
42 which $interp >/dev/null 2>&1 || continue
43 if $interp -c 'import sys;sys.exit(not sys.version_info@<:@:2@:>@ >= (3,3))'; then
44 break
45 fi
46 interp=
47 done
48 if test x$interp = x; then
49 AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
50 fi
51 AC_MSG_RESULT($interp)
doko@ubuntu.com7e6c2e22012-06-30 22:35:00 +020052 PYTHON_FOR_BUILD="_PYTHON_PROJECT_BASE=$srcdir"' _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(srcdir)/Lib:$(srcdir)/Lib/plat-$(MACHDEP) '$interp
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +020053 fi
54else
55 PYTHON_FOR_BUILD='./$(BUILDPYTHON) -E'
56fi
57AC_SUBST(PYTHON_FOR_BUILD)
58
Benjamin Petersond23f8222009-04-05 19:13:16 +000059dnl Ensure that if prefix is specified, it does not end in a slash. If
60dnl it does, we get path names containing '//' which is both ugly and
61dnl can cause trouble.
62
63dnl Last slash shouldn't be stripped if prefix=/
64if test "$prefix" != "/"; then
65 prefix=`echo "$prefix" | sed -e 's/\/$//g'`
66fi
67
Martin v. Löwis8316feb2003-06-14 07:48:07 +000068dnl This is for stuff that absolutely must end up in pyconfig.h.
69dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000070AH_TOP([
71#ifndef Py_PYCONFIG_H
72#define Py_PYCONFIG_H
73])
Martin v. Löwis11437992002-04-12 09:54:03 +000074AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000075/* Define the macros needed if on a UnixWare 7.x system. */
76#if defined(__USLC__) && defined(__SCO_VERSION__)
77#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
78#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000079
80#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000081])
82
Martin v. Löwis8316feb2003-06-14 07:48:07 +000083# We don't use PACKAGE_ variables, and they cause conflicts
84# with other autoconf-based packages that include Python.h
85grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
86rm confdefs.h
87mv confdefs.h.new confdefs.h
88
Guido van Rossum642b6781997-07-19 19:35:41 +000089AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000090VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000091
Georg Brandlde7d8342010-09-03 22:19:07 +000092# Version number of Python's own shared library file.
Martin v. Löwis1142de32002-03-29 16:28:31 +000093AC_SUBST(SOVERSION)
94SOVERSION=1.0
95
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000096# The later defininition of _XOPEN_SOURCE disables certain features
97# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
98AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
99
Martin v. Löwisbcd93962003-05-03 10:32:18 +0000100# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
101# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
102# them.
103AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
104
Andrew MacIntyreabccf412003-07-02 13:53:25 +0000105# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
106# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
107# them.
108AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
109
Martin v. Löwisd6320502004-08-12 13:45:08 +0000110# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
111# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
112AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
113
Georg Brandlfcaf9102008-07-16 02:17:56 +0000114# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
115# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
116# them.
117AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
118
119
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000120define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +0000121
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +0000122# Arguments passed to configure.
123AC_SUBST(CONFIG_ARGS)
124CONFIG_ARGS="$ac_configure_args"
125
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000126AC_MSG_CHECKING([for --enable-universalsdk])
Thomas Wouters477c8d52006-05-27 19:21:47 +0000127AC_ARG_ENABLE(universalsdk,
Ned Deilycbfb9a52012-06-23 16:02:19 -0700128 AS_HELP_STRING([--enable-universalsdk@<:@=SDKDIR@:>@], [Build fat binary against Mac OS X SDK]),
Thomas Wouters477c8d52006-05-27 19:21:47 +0000129[
130 case $enableval in
131 yes)
Ned Deilycbfb9a52012-06-23 16:02:19 -0700132 # Locate the best usable SDK, see Mac/README.txt for more
133 # information
134 enableval="`/usr/bin/xcodebuild -version -sdk macosx Path 2>/dev/null`"
135 if test -z "${enableval}"
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000136 then
Ned Deilycbfb9a52012-06-23 16:02:19 -0700137 enableval=/Developer/SDKs/MacOSX10.4u.sdk
138 if test ! -d "${enableval}"
139 then
140 enableval=/
141 fi
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000142 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000143 ;;
144 esac
145 case $enableval in
146 no)
147 UNIVERSALSDK=
148 enable_universalsdk=
149 ;;
150 *)
151 UNIVERSALSDK=$enableval
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000152 if test ! -d "${UNIVERSALSDK}"
153 then
154 AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
155 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000156 ;;
157 esac
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000158
Thomas Wouters477c8d52006-05-27 19:21:47 +0000159],[
160 UNIVERSALSDK=
161 enable_universalsdk=
162])
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000163if test -n "${UNIVERSALSDK}"
164then
165 AC_MSG_RESULT(${UNIVERSALSDK})
166else
167 AC_MSG_RESULT(no)
168fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000169AC_SUBST(UNIVERSALSDK)
170
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000171AC_SUBST(ARCH_RUN_32BIT)
172
Ned Deilycbfb9a52012-06-23 16:02:19 -0700173# For backward compatibility reasons we prefer to select '32-bit' if available,
174# otherwise use 'intel'
Georg Brandlfcaf9102008-07-16 02:17:56 +0000175UNIVERSAL_ARCHS="32-bit"
Ned Deilycbfb9a52012-06-23 16:02:19 -0700176if test "`uname -s`" = "Darwin"
177then
178 if test -n "${UNIVERSALSDK}"
179 then
180 if test -z "`/usr/bin/file "${UNIVERSALSDK}/usr/lib/libSystem.dylib" | grep ppc`"
181 then
182 UNIVERSAL_ARCHS="intel"
183 fi
184 fi
185fi
186
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000187AC_SUBST(LIPO_32BIT_FLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000188AC_MSG_CHECKING(for --with-universal-archs)
189AC_ARG_WITH(universal-archs,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000190 AS_HELP_STRING([--with-universal-archs=ARCH], [select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")]),
Georg Brandlfcaf9102008-07-16 02:17:56 +0000191[
192 AC_MSG_RESULT($withval)
193 UNIVERSAL_ARCHS="$withval"
194],
195[
Ned Deilycbfb9a52012-06-23 16:02:19 -0700196 AC_MSG_RESULT(${UNIVERSAL_ARCHS})
Georg Brandlfcaf9102008-07-16 02:17:56 +0000197])
198
199
200
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000201AC_ARG_WITH(framework-name,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000202 AS_HELP_STRING([--with-framework-name=FRAMEWORK],
Matthias Klosec80c93f2010-04-24 17:04:35 +0000203 [specify an alternate name of the framework built with --enable-framework]),
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000204[
205 PYTHONFRAMEWORK=${withval}
206 PYTHONFRAMEWORKDIR=${withval}.framework
207 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
208 ],[
209 PYTHONFRAMEWORK=Python
210 PYTHONFRAMEWORKDIR=Python.framework
211 PYTHONFRAMEWORKIDENTIFIER=org.python.python
212])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000213dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000214AC_ARG_ENABLE(framework,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000215 AS_HELP_STRING([--enable-framework@<:@=INSTALLDIR@:>@], [Build (MacOSX|Darwin) framework]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000216[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000217 case $enableval in
218 yes)
219 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000220 esac
221 case $enableval in
222 no)
223 PYTHONFRAMEWORK=
224 PYTHONFRAMEWORKDIR=no-framework
225 PYTHONFRAMEWORKPREFIX=
226 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000227 FRAMEWORKINSTALLFIRST=
228 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000229 FRAMEWORKALTINSTALLFIRST=
230 FRAMEWORKALTINSTALLLAST=
231 if test "x${prefix}" = "xNONE"; then
232 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
233 else
234 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
235 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000236 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000237 ;;
238 *)
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000239 PYTHONFRAMEWORKPREFIX="${enableval}"
Jack Jansen127e56e2001-09-11 14:41:54 +0000240 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000241 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussorenf6ccbf62009-06-02 10:55:56 +0000242 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000243 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
244 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000245 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000246
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000247 if test "x${prefix}" = "xNONE" ; then
248 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000249
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000250 else
251 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
252 fi
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000253
254 case "${enableval}" in
255 /System*)
256 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
257 if test "${prefix}" = "NONE" ; then
258 # See below
259 FRAMEWORKUNIXTOOLSPREFIX="/usr"
260 fi
261 ;;
262
263 /Library*)
264 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
265 ;;
266
267 */Library/Frameworks)
268 MDIR="`dirname "${enableval}"`"
269 MDIR="`dirname "${MDIR}"`"
270 FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications"
271
272 if test "${prefix}" = "NONE"; then
273 # User hasn't specified the
274 # --prefix option, but wants to install
275 # the framework in a non-default location,
276 # ensure that the compatibility links get
277 # installed relative to that prefix as well
278 # instead of in /usr/local.
279 FRAMEWORKUNIXTOOLSPREFIX="${MDIR}"
280 fi
281 ;;
282
283 *)
284 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
285 ;;
286 esac
287
Jack Jansen127e56e2001-09-11 14:41:54 +0000288 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000289
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000290 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000291 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000292 AC_CONFIG_FILES(Mac/Makefile)
293 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000294 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
295 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000296 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000297 ],[
298 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000299 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000300 PYTHONFRAMEWORKPREFIX=
301 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000302 FRAMEWORKINSTALLFIRST=
303 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000304 FRAMEWORKALTINSTALLFIRST=
305 FRAMEWORKALTINSTALLLAST=
306 if test "x${prefix}" = "xNONE" ; then
307 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
308 else
309 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
310 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000311 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000312
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000313])
314AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000315AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000316AC_SUBST(PYTHONFRAMEWORKDIR)
317AC_SUBST(PYTHONFRAMEWORKPREFIX)
318AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000319AC_SUBST(FRAMEWORKINSTALLFIRST)
320AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000321AC_SUBST(FRAMEWORKALTINSTALLFIRST)
322AC_SUBST(FRAMEWORKALTINSTALLLAST)
323AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000324AC_SUBST(FRAMEWORKINSTALLAPPSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000325
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000326##AC_ARG_WITH(dyld,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000327## AS_HELP_STRING([--with-dyld],
Matthias Klosec80c93f2010-04-24 17:04:35 +0000328## [Use (OpenStep|Rhapsody) dynamic linker]))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000329##
Guido van Rossumb418f891996-07-30 18:06:02 +0000330# Set name for machine-dependent library files
331AC_SUBST(MACHDEP)
332AC_MSG_CHECKING(MACHDEP)
333if test -z "$MACHDEP"
334then
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100335 # avoid using uname for cross builds
336 if test "$cross_compiling" = yes; then
337 # ac_sys_system and ac_sys_release are only used for setting
338 # `define_xopen_source' in the case statement below. For the
339 # current supported cross builds, this macro is not adjusted.
340 case "$host" in
341 *-*-linux*)
342 ac_sys_system=Linux
343 ;;
344 *-*-cygwin*)
345 ac_sys_system=Cygwin
346 ;;
347 *)
348 # for now, limit cross builds to known configurations
349 MACHDEP="unknown"
350 AC_MSG_ERROR([cross build not supported for $host])
351 esac
352 ac_sys_release=
353 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000354 ac_sys_system=`uname -s`
Benjamin Peterson8719ad52009-09-11 22:24:02 +0000355 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000356 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000357 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000358 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000359 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000360 fi
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100361 fi
362 ac_md_system=`echo $ac_sys_system |
363 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
364 ac_md_release=`echo $ac_sys_release |
365 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
366 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000367
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100368 case $MACHDEP in
Victor Stinner7209ff22011-08-21 00:00:16 +0200369 linux*) MACHDEP="linux";;
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000370 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000371 darwin*) MACHDEP="darwin";;
doko@ubuntu.comba015832012-06-30 16:52:05 +0200372 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000373 '') MACHDEP="unknown";;
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100374 esac
Guido van Rossumb418f891996-07-30 18:06:02 +0000375fi
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +0200376
377AC_SUBST(_PYTHON_HOST_PLATFORM)
378if test "$cross_compiling" = yes; then
379 case "$host" in
380 *-*-linux*)
381 case "$host_cpu" in
382 arm*)
383 _host_cpu=arm
384 ;;
385 *)
386 _host_cpu=$host_cpu
387 esac
388 ;;
389 *-*-cygwin*)
390 _host_cpu=
391 ;;
392 *)
393 # for now, limit cross builds to known configurations
394 MACHDEP="unknown"
395 AC_MSG_ERROR([cross build not supported for $host])
396 esac
397 _PYTHON_HOST_PLATFORM="$MACHDEP${_host_cpu:+-$_host_cpu}"
398fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000399
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000400# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
401# disable features if it is defined, without any means to access these
402# features as extensions. For these systems, we skip the definition of
403# _XOPEN_SOURCE. Before adding a system to the list to gain access to
404# some feature, make sure there is no alternative way to access this
405# feature. Also, when using wildcards, make sure you have verified the
406# need for not defining _XOPEN_SOURCE on all systems matching the
407# wildcard, and that the wildcard does not include future systems
408# (which may remove their limitations).
409dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
410case $ac_sys_system/$ac_sys_release in
411 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
412 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000413 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Martin v. Löwis19ed3c82010-02-15 21:45:06 +0000414 # In addition, Stefan Krah confirms that issue #1244610 exists through
415 # OpenBSD 4.6, but is fixed in 4.7.
Charles-François Natali54ef40b2011-07-22 23:52:02 +0200416 OpenBSD/2.* | OpenBSD/3.* | OpenBSD/4.@<:@0123456@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000417 define_xopen_source=no
418 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
419 # also defined. This can be overridden by defining _BSD_SOURCE
420 # As this has a different meaning on Linux, only define it on OpenBSD
421 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
422 ;;
Charles-François Natali54ef40b2011-07-22 23:52:02 +0200423 OpenBSD/*)
Martin v. Löwis7671efc2010-02-15 08:35:16 +0000424 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
425 # also defined. This can be overridden by defining _BSD_SOURCE
426 # As this has a different meaning on Linux, only define it on OpenBSD
427 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
428 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000429 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
430 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
431 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000432 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000433 define_xopen_source=no;;
Martin v. Löwis1a415762010-05-28 15:44:20 +0000434 # From the perspective of Solaris, _XOPEN_SOURCE is not so much a
435 # request to enable features supported by the standard as a request
436 # to disable features not supported by the standard. The best way
437 # for Python to use Solaris is simply to leave _XOPEN_SOURCE out
438 # entirely and define __EXTENSIONS__ instead.
439 SunOS/*)
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000440 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000441 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
442 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000443 # Reconfirmed for 7.1.4 by Martin v. Loewis.
444 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000445 define_xopen_source=no;;
446 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000447 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000448 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000449 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000450 # On FreeBSD 4, the math functions C89 does not cover are never defined
451 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
452 FreeBSD/4.*)
453 define_xopen_source=no;;
454 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
455 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
456 # identifies itself as Darwin/7.*
457 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
458 # disables platform specific features beyond repair.
459 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
460 # has no effect, don't bother defining them
461 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000462 define_xopen_source=no;;
Ronald Oussoren92fb9412010-03-09 06:40:19 +0000463 Darwin/1@<:@0-9@:>@.*)
Ronald Oussorenb8f11a62010-03-08 07:02:03 +0000464 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000465 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
466 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
467 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000468 AIX/4)
469 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000470 AIX/5)
471 if test `uname -r` -eq 1; then
472 define_xopen_source=no
473 fi
474 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000475 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
476 # defining NI_NUMERICHOST.
477 QNX/6.3.2)
478 define_xopen_source=no
479 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000480
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000481esac
482
483if test $define_xopen_source = yes
484then
Victor Stinner14d098d2011-09-07 22:29:43 +0200485 # X/Open 7, incorporating POSIX.1-2008
486 AC_DEFINE(_XOPEN_SOURCE, 700,
Martin v. Löwis1a415762010-05-28 15:44:20 +0000487 Define to the level of X/Open that your system supports)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000488
489 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
490 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
491 # several APIs are not declared. Since this is also needed in some
492 # cases for HP-UX, we define it globally.
Martin v. Löwis1a415762010-05-28 15:44:20 +0000493 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
494 Define to activate Unix95-and-earlier features)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000495
Victor Stinnerd169fdc2011-09-08 00:56:17 +0200496 AC_DEFINE(_POSIX_C_SOURCE, 200809L, Define to activate features from IEEE Stds 1003.1-2008)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000497fi
498
Guido van Rossum91922671997-10-09 20:24:13 +0000499#
500# SGI compilers allow the specification of the both the ABI and the
501# ISA on the command line. Depending on the values of these switches,
502# different and often incompatable code will be generated.
503#
504# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
505# thus supply support for various ABI/ISA combinations. The MACHDEP
506# variable is also adjusted.
507#
508AC_SUBST(SGI_ABI)
509if test ! -z "$SGI_ABI"
510then
511 CC="cc $SGI_ABI"
512 LDFLAGS="$SGI_ABI $LDFLAGS"
513 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
514fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000515AC_MSG_RESULT($MACHDEP)
516
Jack Jansen6b08a402004-06-03 12:41:45 +0000517# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
518# it may influence the way we can build extensions, so distutils
519# needs to check it
520AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000521AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000522CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000523EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000524
Guido van Rossum627b2d71993-12-24 10:39:16 +0000525# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000526
527# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
528# for debug/optimization stuff. BASECFLAGS is for flags that are required
529# just to get things to compile and link. Users are free to override OPT
530# when running configure or make. The build should not break if they do.
531# BASECFLAGS should generally not be messed with, however.
532
533# XXX shouldn't some/most/all of this code be merged with the stuff later
534# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000535AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000536AC_ARG_WITH(gcc,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000537 AS_HELP_STRING([--without-gcc], [never use gcc]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000538[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000539 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000540 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000541 without_gcc=yes;;
542 yes) CC=gcc
543 without_gcc=no;;
544 *) CC=$withval
545 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000546 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000547 case $ac_sys_system in
Antoine Pitrouf6350d22010-09-21 15:19:14 +0000548 AIX*) CC=${CC:-xlc_r}
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000549 without_gcc=;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000550 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000551 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000552AC_MSG_RESULT($without_gcc)
553
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000554# If the user switches compilers, we can't believe the cache
555if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
556then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000557 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
558(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000559fi
560
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000561# Don't let AC_PROG_CC set the default CFLAGS. It normally sets -g -O2
562# when the compiler supports them, but we don't always want -O2, and
563# we set -g later.
564if test -z "$CFLAGS"; then
565 CFLAGS=
Marc-André Lemburgdf700f02010-04-30 17:29:56 +0000566fi
Ned Deilycbfb9a52012-06-23 16:02:19 -0700567
568if test "$ac_sys_system" = "Darwin"
569then
570 # Compiler selection on MacOSX is more complicated than
571 # AC_PROG_CC can handle, see Mac/README.txt for more
572 # information
573 if test -z "${CC}"
574 then
575 found_gcc=
576 found_clang=
577 as_save_IFS=$IFS; IFS=:
578 for as_dir in $PATH
579 do
580 IFS=$as_save_IFS
581 if test -x $as_dir/gcc; then
582 if test -z "${found_gcc}"; then
583 found_gcc=$as_dir/gcc
584 fi
585 fi
586 if test -x $as_dir/clang; then
587 if test -z "${found_clang}"; then
588 found_clang=$as_dir/clang
589 fi
590 fi
591 done
592 IFS=$as_save_IFS
593
594 if test -n "$found_gcc" -a -n "$found_clang"
595 then
596 if test -n "`"$found_gcc" --version | grep llvm-gcc`"
597 then
598 AC_MSG_NOTICE([Detected llvm-gcc, falling back to clang])
599 CC="$found_clang"
600 CXX="$found_clang++"
601 fi
602
603
604 elif test -z "$found_gcc" -a -n "$found_clang"
605 then
606 AC_MSG_NOTICE([No GCC found, use CLANG])
607 CC="$found_clang"
608 CXX="$found_clang++"
609
610 elif test -z "$found_gcc" -a -z "$found_clang"
611 then
612 found_clang=`/usr/bin/xcrun -find clang 2>/dev/null`
613 if test -n "${found_clang}"
614 then
615 AC_MSG_NOTICE([Using clang from Xcode.app])
616 CC="${found_clang}"
617 CXX="`/usr/bin/xcrun -find clang++`"
618
619 # else: use default behaviour
620 fi
621 fi
622 fi
623fi
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000624AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000625
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000626AC_SUBST(CXX)
627AC_SUBST(MAINCC)
628AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
629AC_ARG_WITH(cxx_main,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000630 AS_HELP_STRING([--with-cxx-main=<compiler>],
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000631 [compile main() and link python executable with C++ compiler]),
632[
633
634 case $withval in
635 no) with_cxx_main=no
636 MAINCC='$(CC)';;
637 yes) with_cxx_main=yes
638 MAINCC='$(CXX)';;
639 *) with_cxx_main=yes
640 MAINCC=$withval
641 if test -z "$CXX"
642 then
643 CXX=$withval
644 fi;;
645 esac], [
646 with_cxx_main=no
647 MAINCC='$(CC)'
648])
649AC_MSG_RESULT($with_cxx_main)
650
651preset_cxx="$CXX"
652if test -z "$CXX"
653then
654 case "$CC" in
doko@ubuntu.com51f65942012-06-30 14:42:46 +0200655 gcc) AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
656 cc) AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
657 clang|*/clang) AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000658 esac
659 if test "$CXX" = "notfound"
660 then
661 CXX=""
662 fi
663fi
664if test -z "$CXX"
665then
doko@ubuntu.com51f65942012-06-30 14:42:46 +0200666 AC_CHECK_TOOLS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000667 if test "$CXX" = "notfound"
668 then
669 CXX=""
670 fi
671fi
672if test "$preset_cxx" != "$CXX"
673then
674 AC_MSG_WARN([
675
676 By default, distutils will build C++ extension modules with "$CXX".
677 If this is not intended, then set CXX on the configure command line.
678 ])
679fi
680
681
Martin v. Löwis48e14d32011-05-09 07:37:45 +0200682AC_MSG_CHECKING([for -Wl,--no-as-needed])
683save_LDFLAGS="$LDFLAGS"
684LDFLAGS="$LDFLAGS -Wl,--no-as-needed"
685AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
686 [NO_AS_NEEDED="-Wl,--no-as-needed"
687 AC_MSG_RESULT([yes])],
688 [NO_AS_NEEDED=""
689 AC_MSG_RESULT([no])])
690LDFLAGS="$save_LDFLAGS"
691AC_SUBST(NO_AS_NEEDED)
692
693
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000694# checks for UNIX variants that set C preprocessor variables
Matthias Kloseaf30c5d2010-04-25 18:43:42 +0000695AC_USE_SYSTEM_EXTENSIONS
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000696
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000697# Check for unsupported systems
698case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000699atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000700 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
701 echo See README for details.
702 exit 1;;
703esac
704
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000705AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000706AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000707AC_ARG_WITH(suffix,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000708 AS_HELP_STRING([--with-suffix=.exe], [set executable suffix]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000709[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000710 case $withval in
711 no) EXEEXT=;;
712 yes) EXEEXT=.exe;;
713 *) EXEEXT=$withval;;
714 esac])
715AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000716
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000717# Test whether we're running on a non-case-sensitive system, in which
718# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000719AC_SUBST(BUILDEXEEXT)
720AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000721if test ! -d CaseSensitiveTestDir; then
722mkdir CaseSensitiveTestDir
723fi
724
725if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000726then
Jack Jansen1999ef42001-12-06 21:47:20 +0000727 AC_MSG_RESULT(yes)
728 BUILDEXEEXT=.exe
729else
730 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000731 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000732fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000733rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000734
Guido van Rossumdd997f71998-10-07 19:58:26 +0000735case $MACHDEP in
736bsdos*)
737 case $CC in
738 gcc) CC="$CC -D_HAVE_BSDI";;
739 esac;;
740esac
741
Guido van Rossum84561611997-08-21 00:08:11 +0000742case $ac_sys_system in
743hp*|HP*)
744 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000745 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000746 esac;;
747esac
748
Martin v. Löwise8964d42001-03-06 12:09:07 +0000749
Neil Schemenauer61c51152001-01-26 16:18:16 +0000750AC_SUBST(LIBRARY)
751AC_MSG_CHECKING(LIBRARY)
752if test -z "$LIBRARY"
753then
Barry Warsawf040d7d2010-10-18 17:09:07 +0000754 LIBRARY='libpython$(VERSION)$(ABIFLAGS).a'
Neil Schemenauer61c51152001-01-26 16:18:16 +0000755fi
756AC_MSG_RESULT($LIBRARY)
757
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000758# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000759# name of the library into which to insert object files). BLDLIBRARY is also
760# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
761# is blank as the main program is not linked directly against LDLIBRARY.
762# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
763# systems without shared libraries, LDLIBRARY is the same as LIBRARY
764# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
765# DLLLIBRARY is the shared (i.e., DLL) library.
766#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000767# RUNSHARED is used to run shared python without installed libraries
768#
769# INSTSONAME is the name of the shared library that will be use to install
770# on the system - some systems like version suffix, others don't
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000771#
772# LDVERSION is the shared library version number, normally the Python version
773# with the ABI build flags appended.
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000774AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000775AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000776AC_SUBST(BLDLIBRARY)
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000777AC_SUBST(PY3LIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000778AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000779AC_SUBST(INSTSONAME)
780AC_SUBST(RUNSHARED)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000781AC_SUBST(LDVERSION)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000782LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000783BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000784INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000785DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000786LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000787RUNSHARED=''
Barry Warsaw14d98ac2010-11-24 19:43:47 +0000788LDVERSION="$VERSION"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000789
Guido van Rossumfb842551997-08-06 23:42:07 +0000790# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000791# If CXX is set, and if it is needed to link a main function that was
792# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
793# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000794# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000795# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000796AC_SUBST(LINKCC)
797AC_MSG_CHECKING(LINKCC)
798if test -z "$LINKCC"
799then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000800 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000801 case $ac_sys_system in
802 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000803 exp_extra="\"\""
804 if test $ac_sys_release -ge 5 -o \
805 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
806 exp_extra="."
807 fi
808 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000809 QNX*)
810 # qcc must be used because the other compilers do not
811 # support -N.
812 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000813 esac
814fi
815AC_MSG_RESULT($LINKCC)
816
Tarek Ziadébe720e02009-05-09 11:55:12 +0000817# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
818# make sure we default having it set to "no": this is used by
819# distutils.unixccompiler to know if it should add --enable-new-dtags
820# to linker command lines, and failing to detect GNU ld simply results
821# in the same bahaviour as before.
822AC_SUBST(GNULD)
823AC_MSG_CHECKING(for GNU ld)
824ac_prog=ld
825if test "$GCC" = yes; then
826 ac_prog=`$CC -print-prog-name=ld`
827fi
828case `"$ac_prog" -V 2>&1 < /dev/null` in
829 *GNU*)
830 GNULD=yes;;
831 *)
832 GNULD=no;;
833esac
834AC_MSG_RESULT($GNULD)
835
Daniel Stutzbacha606faa2010-08-31 19:51:07 +0000836AC_C_INLINE
837if test "$ac_cv_c_inline" != no ; then
Benjamin Petersond7f73e92010-09-05 00:09:07 +0000838 AC_DEFINE(USE_INLINE, 1, [Define to use the C99 inline keyword.])
Daniel Stutzbacha606faa2010-08-31 19:51:07 +0000839 AC_SUBST(USE_INLINE)
840fi
841
842
Martin v. Löwis1142de32002-03-29 16:28:31 +0000843AC_MSG_CHECKING(for --enable-shared)
844AC_ARG_ENABLE(shared,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000845 AS_HELP_STRING([--enable-shared], [disable/enable building shared python library]))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000846
Martin v. Löwis1142de32002-03-29 16:28:31 +0000847if test -z "$enable_shared"
848then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000849 case $ac_sys_system in
Antoine Pitrou6103ab12009-10-24 20:11:21 +0000850 CYGWIN*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000851 enable_shared="yes";;
852 *)
853 enable_shared="no";;
854 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000855fi
856AC_MSG_RESULT($enable_shared)
857
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000858AC_MSG_CHECKING(for --enable-profiling)
859AC_ARG_ENABLE(profiling,
doko@ubuntu.comba015832012-06-30 16:52:05 +0200860 AS_HELP_STRING([--enable-profiling], [enable C-level code profiling]))
861if test "x$enable_profiling" = xyes; then
862 ac_save_cc="$CC"
863 CC="$(CC) -pg"
864 AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
865 [],
866 [enable_profiling=no])
867 CC="$ac_save_cc"
868else
869 enable_profiling=no
870fi
871AC_MSG_RESULT($enable_profiling)
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000872
doko@ubuntu.comba015832012-06-30 16:52:05 +0200873if test "x$enable_profiling" = xyes; then
874 BASECFLAGS="-pg $BASECFLAGS"
875 LDFLAGS="-pg $LDFLAGS"
876fi
Martin v. Löwis1142de32002-03-29 16:28:31 +0000877
878AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000879
Guido van Rossumb8552162001-09-05 14:58:11 +0000880# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
881# library that we build, but we do not want to link against it (we
882# will find it with a -framework option). For this reason there is an
883# extra variable BLDLIBRARY against which Python and the extension
884# modules are linked, BLDLIBRARY. This is normally the same as
885# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000886if test "$enable_framework"
887then
888 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000889 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000890 BLDLIBRARY=''
891else
892 BLDLIBRARY='$(LDLIBRARY)'
893fi
894
Martin v. Löwis1142de32002-03-29 16:28:31 +0000895# Other platforms follow
896if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000897 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000898 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000899 CYGWIN*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000900 LDLIBRARY='libpython$(LDVERSION).dll.a'
901 DLLLIBRARY='libpython$(LDVERSION).dll'
Martin v. Löwis1142de32002-03-29 16:28:31 +0000902 ;;
903 SunOS*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000904 LDLIBRARY='libpython$(LDVERSION).so'
905 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000906 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000907 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis9b142aa2011-02-05 20:26:52 +0000908 if test "$with_pydebug" != yes
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000909 then
910 PY3LIBRARY=libpython3.so
911 fi
Martin v. Löwis1142de32002-03-29 16:28:31 +0000912 ;;
Charles-François Natali749400a2011-07-24 22:41:18 +0200913 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000914 LDLIBRARY='libpython$(LDVERSION).so'
915 BLDLIBRARY='-L. -lpython$(LDVERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000916 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000917 case $ac_sys_system in
918 FreeBSD*)
919 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
920 ;;
921 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000922 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis9b142aa2011-02-05 20:26:52 +0000923 if test "$with_pydebug" != yes
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000924 then
925 PY3LIBRARY=libpython3.so
926 fi
Martin v. Löwis1142de32002-03-29 16:28:31 +0000927 ;;
928 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000929 case `uname -m` in
930 ia64)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000931 LDLIBRARY='libpython$(LDVERSION).so'
Thomas Wouters477c8d52006-05-27 19:21:47 +0000932 ;;
933 *)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000934 LDLIBRARY='libpython$(LDVERSION).sl'
Thomas Wouters477c8d52006-05-27 19:21:47 +0000935 ;;
936 esac
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000937 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000938 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000939 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000940 Darwin*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000941 LDLIBRARY='libpython$(LDVERSION).dylib'
942 BLDLIBRARY='-L. -lpython$(LDVERSION)'
Georg Brandlb1441c72009-01-03 22:33:39 +0000943 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
944 ;;
Antoine Pitrou8e6b4072010-09-10 19:44:44 +0000945 AIX*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000946 LDLIBRARY='libpython$(LDVERSION).so'
Antoine Pitrou8e6b4072010-09-10 19:44:44 +0000947 RUNSHARED=LIBPATH=`pwd`:${LIBPATH}
948 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000949
Martin v. Löwis1142de32002-03-29 16:28:31 +0000950 esac
Jason Tishler30765592003-09-04 11:04:06 +0000951else # shared is disabled
952 case $ac_sys_system in
953 CYGWIN*)
954 BLDLIBRARY='$(LIBRARY)'
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000955 LDLIBRARY='libpython$(LDVERSION).dll.a'
Jason Tishler30765592003-09-04 11:04:06 +0000956 ;;
957 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000958fi
959
doko@ubuntu.com1abe1c52012-06-30 20:42:45 +0200960if test "$cross_compiling" = yes; then
961 RUNSHARED=
962fi
963
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000964AC_MSG_RESULT($LDLIBRARY)
965
Guido van Rossum627b2d71993-12-24 10:39:16 +0000966AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000967AC_SUBST(AR)
doko@ubuntu.com51f65942012-06-30 14:42:46 +0200968AC_CHECK_TOOLS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000969
Tarek Ziadé5662d3e2009-05-07 21:24:43 +0000970# tweak ARFLAGS only if the user didn't set it on the command line
971AC_SUBST(ARFLAGS)
972if test -z "$ARFLAGS"
973then
974 ARFLAGS="rc"
975fi
976
doko@ubuntu.com58844492012-06-30 18:25:32 +0200977AC_CHECK_TOOLS([READELF], [readelf], [:])
978if test "$cross_compiling" = yes; then
979 case "$READELF" in
980 readelf|:)
981 AC_MSG_ERROR([readelf for the host is required for cross builds])
982 ;;
983 esac
984fi
985AC_SUBST(READELF)
986
Ralf Schmitt023f3a72011-05-31 17:10:03 -0500987AC_SUBST(DISABLE_ASDLGEN)
988DISABLE_ASDLGEN=""
989AC_CHECK_PROG(HAS_PYTHON, python, found, not-found)
990if test $HAS_HG != found -o $HAS_PYTHON != found
991then
992 DISABLE_ASDLGEN="@echo hg: $HAS_HG, python: $HAS_PYTHON! cannot run \$(srcdir)/Parser/asdl_c.py #"
993fi
994
995
Neil Schemenauera42c8272001-03-31 00:01:55 +0000996case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000997bsdos*|hp*|HP*)
998 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000999 if test -z "$INSTALL"
1000 then
1001 INSTALL="${srcdir}/install-sh -c"
1002 fi
1003esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001004AC_PROG_INSTALL
Matthias Klose93a0ef12012-03-15 18:08:34 +01001005AC_PROG_MKDIR_P
Guido van Rossumb418f891996-07-30 18:06:02 +00001006
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001007# Not every filesystem supports hard links
1008AC_SUBST(LN)
1009if test -z "$LN" ; then
1010 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +00001011 CYGWIN*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001012 *) LN=ln;;
1013 esac
1014fi
1015
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00001016# For calculating the .so ABI tag.
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001017AC_SUBST(ABIFLAGS)
1018ABIFLAGS=""
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00001019
Fred Drake9f715822001-07-11 06:27:00 +00001020# Check for --with-pydebug
1021AC_MSG_CHECKING(for --with-pydebug)
1022AC_ARG_WITH(pydebug,
Matthias Klose2b8733f2010-04-25 18:34:36 +00001023 AS_HELP_STRING([--with-pydebug], [build with Py_DEBUG defined]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001024[
Fred Drake9f715822001-07-11 06:27:00 +00001025if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001026then
1027 AC_DEFINE(Py_DEBUG, 1,
1028 [Define if you want to build an interpreter with many run-time checks.])
1029 AC_MSG_RESULT(yes);
1030 Py_DEBUG='true'
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00001031 ABIFLAGS="${ABIFLAGS}d"
Fred Drake9f715822001-07-11 06:27:00 +00001032else AC_MSG_RESULT(no); Py_DEBUG='false'
1033fi],
1034[AC_MSG_RESULT(no)])
1035
Skip Montanarodecc6a42003-01-01 20:07:49 +00001036# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
1037# merged with this chunk of code?
1038
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001039# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +00001040# ------------------------
1041# (The following bit of code is complicated enough - please keep things
1042# indented properly. Just pretend you're editing Python code. ;-)
1043
1044# There are two parallel sets of case statements below, one that checks to
1045# see if OPT was set and one that does BASECFLAGS setting based upon
1046# compiler and platform. BASECFLAGS tweaks need to be made even if the
1047# user set OPT.
1048
1049# tweak OPT based on compiler and platform, only if the user didn't set
1050# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +00001051AC_SUBST(OPT)
Benjamin Peterson65b4ec52010-03-23 21:02:34 +00001052if test "${OPT-unset}" = "unset"
Guido van Rossumb418f891996-07-30 18:06:02 +00001053then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001054 case $GCC in
1055 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001056 if test "$CC" != 'g++' ; then
1057 STRICT_PROTO="-Wstrict-prototypes"
1058 fi
Christian Heimes38053212007-12-14 01:24:44 +00001059 # For gcc 4.x we need to use -fwrapv so lets check if its supported
1060 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
1061 WRAP="-fwrapv"
1062 fi
Stefan Krah962055d2011-09-14 15:14:08 +02001063
1064 # Clang also needs -fwrapv
Stefan Krahaf04ff22011-12-08 22:20:31 +01001065 case $CC in
1066 *clang*) WRAP="-fwrapv"
1067 ;;
1068 esac
Stefan Krah962055d2011-09-14 15:14:08 +02001069
Skip Montanarodecc6a42003-01-01 20:07:49 +00001070 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001071 yes)
Fred Drake9f715822001-07-11 06:27:00 +00001072 if test "$Py_DEBUG" = 'true' ; then
1073 # Optimization messes up debuggers, so turn it off for
1074 # debug builds.
Mark Dickinsonb2153e92010-05-05 22:31:36 +00001075 OPT="-g -O0 -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +00001076 else
Christian Heimes38053212007-12-14 01:24:44 +00001077 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +00001078 fi
1079 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001080 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001081 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +00001082 ;;
Fred Drake9f715822001-07-11 06:27:00 +00001083 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001084 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001085 SCO_SV*) OPT="$OPT -m486 -DSCO5"
1086 ;;
1087 esac
Fred Drake9f715822001-07-11 06:27:00 +00001088 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001089
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001090 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +00001091 OPT="-O"
1092 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001093 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +00001094fi
Guido van Rossum627b2d71993-12-24 10:39:16 +00001095
Skip Montanarodecc6a42003-01-01 20:07:49 +00001096AC_SUBST(BASECFLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +00001097
1098# The -arch flags for universal builds on OSX
1099UNIVERSAL_ARCH_FLAGS=
1100AC_SUBST(UNIVERSAL_ARCH_FLAGS)
1101
Skip Montanarodecc6a42003-01-01 20:07:49 +00001102# tweak BASECFLAGS based on compiler and platform
1103case $GCC in
1104yes)
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001105 # Python doesn't violate C99 aliasing rules, but older versions of
1106 # GCC produce warnings for legal Python code. Enable
1107 # -fno-strict-aliasing on versions of GCC that support but produce
1108 # warnings. See Issue3326
1109 AC_MSG_CHECKING(whether $CC accepts and needs -fno-strict-aliasing)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001110 ac_save_cc="$CC"
1111 CC="$CC -fno-strict-aliasing"
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001112 save_CFLAGS="$CFLAGS"
1113 AC_CACHE_VAL(ac_cv_no_strict_aliasing,
Matthias Kloseb159a552010-04-25 21:00:44 +00001114 AC_COMPILE_IFELSE(
1115 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001116 AC_LANG_PROGRAM([[]], [[]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001117 ],[
1118 CC="$ac_save_cc -fstrict-aliasing"
1119 CFLAGS="$CFLAGS -Werror -Wstrict-aliasing"
1120 AC_COMPILE_IFELSE(
1121 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001122 AC_LANG_PROGRAM([[void f(int **x) {}]],
1123 [[double *x; f((int **) &x);]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001124 ],[
1125 ac_cv_no_strict_aliasing=no
1126 ],[
1127 ac_cv_no_strict_aliasing=yes
1128 ])
1129 ],[
1130 ac_cv_no_strict_aliasing=no
1131 ]))
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001132 CFLAGS="$save_CFLAGS"
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001133 CC="$ac_save_cc"
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001134 AC_MSG_RESULT($ac_cv_no_strict_aliasing)
1135 if test $ac_cv_no_strict_aliasing = yes
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001136 then
1137 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
1138 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001139
Benjamin Peterson7ddbf102011-09-23 13:23:22 -04001140 AC_MSG_CHECKING(if we can turn off $CC unused result warning)
1141 ac_save_cc="$CC"
1142 CC="$CC -Wunused-result -Werror"
1143 save_CFLAGS="$CFLAGS"
1144 AC_CACHE_VAL(ac_cv_disable_unused_result_warning,
1145 AC_COMPILE_IFELSE(
1146 [
1147 AC_LANG_PROGRAM([[]], [[]])
1148 ],[
1149 ac_cv_disable_unused_result_warning=yes
1150 ],[
1151 ac_cv_disable_unused_result_warning=no
1152 ]))
1153 CFLAGS="$save_CFLAGS"
1154 CC="$ac_save_cc"
1155 AC_MSG_RESULT($ac_cv_disable_unused_result_warning)
1156
1157 if test $ac_cv_disable_unused_result_warning = yes
1158 then
1159 BASECFLAGS="$BASECFLAGS -Wno-unused-result"
1160 fi
1161
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001162 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
1163 # support. Without this, treatment of subnormals doesn't follow
1164 # the standard.
Matthias Klosedf2aecb2012-03-15 22:19:28 +01001165 case $host in
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001166 alpha*)
1167 BASECFLAGS="$BASECFLAGS -mieee"
1168 ;;
1169 esac
1170
Skip Montanarodecc6a42003-01-01 20:07:49 +00001171 case $ac_sys_system in
1172 SCO_SV*)
1173 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
1174 ;;
1175 # is there any other compiler on Darwin besides gcc?
1176 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +00001177 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
1178 # used to be here, but non-Apple gcc doesn't accept them.
Ronald Oussoren666028b2010-04-18 19:07:43 +00001179 if test "${CC}" = gcc
1180 then
1181 AC_MSG_CHECKING(which compiler should be used)
1182 case "${UNIVERSALSDK}" in
1183 */MacOSX10.4u.sdk)
1184 # Build using 10.4 SDK, force usage of gcc when the
1185 # compiler is gcc, otherwise the user will get very
1186 # confusing error messages when building on OSX 10.6
1187 CC=gcc-4.0
1188 CPP=cpp-4.0
1189 ;;
1190 esac
1191 AC_MSG_RESULT($CC)
1192 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001193
1194
Thomas Wouters477c8d52006-05-27 19:21:47 +00001195 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001196 UNIVERSAL_ARCH_FLAGS=""
1197 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
1198 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson6794aa32008-07-16 20:33:37 +00001199 ARCH_RUN_32BIT=""
Benjamin Peterson051858e2010-04-11 22:14:02 +00001200 LIPO_32BIT_FLAGS=""
Georg Brandlfcaf9102008-07-16 02:17:56 +00001201 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
1202 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +00001203 LIPO_32BIT_FLAGS=""
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001204 ARCH_RUN_32BIT="true"
Georg Brandlfcaf9102008-07-16 02:17:56 +00001205
1206 elif test "$UNIVERSAL_ARCHS" = "all" ; then
1207 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +00001208 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +00001209 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Georg Brandlfcaf9102008-07-16 02:17:56 +00001210
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001211 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
1212 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +00001213 LIPO_32BIT_FLAGS="-extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +00001214 ARCH_RUN_32BIT="/usr/bin/arch -i386"
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001215
1216 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
1217 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +00001218 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +00001219 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001220
Georg Brandlfcaf9102008-07-16 02:17:56 +00001221 else
Ronald Oussoren74f29b42009-09-20 20:09:26 +00001222 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Georg Brandlfcaf9102008-07-16 02:17:56 +00001223
1224 fi
1225
1226
Ronald Oussoren666028b2010-04-18 19:07:43 +00001227 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
1228 if test "${UNIVERSALSDK}" != "/"
1229 then
1230 CFLAGS="-isysroot ${UNIVERSALSDK} ${CFLAGS}"
1231 LDFLAGS="-isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren712979d2010-04-20 19:51:33 +00001232 CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001233 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00001234 fi
1235
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001236 # Calculate the right deployment target for this build.
1237 #
1238 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Ned Deily3784ff92012-06-25 05:04:28 -07001239 if test ${cur_target} '>' 10.2 && \
1240 test ${cur_target} '<' 10.6
1241 then
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001242 cur_target=10.3
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001243 if test ${enable_universalsdk}; then
1244 if test "${UNIVERSAL_ARCHS}" = "all"; then
1245 # Ensure that the default platform for a
1246 # 4-way universal build is OSX 10.5,
1247 # that's the first OS release where
1248 # 4-way builds make sense.
1249 cur_target='10.5'
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001250
1251 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
1252 cur_target='10.5'
1253
1254 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
1255 cur_target='10.5'
1256
1257 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
1258 cur_target='10.5'
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001259 fi
1260 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001261 if test `/usr/bin/arch` = "i386"; then
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001262 # On Intel macs default to a deployment
1263 # target of 10.4, that's the first OSX
1264 # release with Intel support.
1265 cur_target="10.4"
1266 fi
1267 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001268 fi
1269 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1270
1271 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1272 # environment with a value that is the same as what we'll use
1273 # in the Makefile to ensure that we'll get the same compiler
1274 # environment during configure and build time.
1275 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1276 export MACOSX_DEPLOYMENT_TARGET
1277 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1278
Skip Montanarodecc6a42003-01-01 20:07:49 +00001279 ;;
1280 esac
1281 ;;
1282
1283*)
1284 case $ac_sys_system in
1285 OpenUNIX*|UnixWare*)
1286 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1287 ;;
1288 SCO_SV*)
1289 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1290 ;;
1291 esac
1292 ;;
1293esac
1294
Fred Drakee1ceaa02001-12-04 20:55:47 +00001295if test "$Py_DEBUG" = 'true'; then
1296 :
1297else
1298 OPT="-DNDEBUG $OPT"
1299fi
1300
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001301if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001302then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001303 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001304fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001305
Thomas Wouters89f507f2006-12-13 04:49:30 +00001306# Check whether GCC supports PyArg_ParseTuple format
1307if test "$GCC" = "yes"
1308then
1309 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1310 save_CFLAGS=$CFLAGS
1311 CFLAGS="$CFLAGS -Werror"
Matthias Kloseb159a552010-04-25 21:00:44 +00001312 AC_COMPILE_IFELSE([
1313 AC_LANG_PROGRAM([[void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));]], [[]])
1314 ],[
1315 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1,
1316 [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1317 AC_MSG_RESULT(yes)
1318 ],[
1319 AC_MSG_RESULT(no)
1320 ])
Thomas Wouters89f507f2006-12-13 04:49:30 +00001321 CFLAGS=$save_CFLAGS
1322fi
1323
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001324# On some compilers, pthreads are available without further options
1325# (e.g. MacOS X). On some of these systems, the compiler will not
1326# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1327# So we have to see first whether pthreads are available without
1328# options before we can check whether -Kpthread improves anything.
1329AC_MSG_CHECKING(whether pthreads are available without options)
1330AC_CACHE_VAL(ac_cv_pthread_is_default,
Matthias Kloseb159a552010-04-25 21:00:44 +00001331[AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001332#include <pthread.h>
1333
1334void* routine(void* p){return NULL;}
1335
1336int main(){
1337 pthread_t p;
1338 if(pthread_create(&p,NULL,routine,NULL)!=0)
1339 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001340 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001341 return 0;
1342}
Matthias Kloseb159a552010-04-25 21:00:44 +00001343]])],[
Skip Montanarod8d39a02003-07-10 20:44:10 +00001344 ac_cv_pthread_is_default=yes
1345 ac_cv_kthread=no
1346 ac_cv_pthread=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001347],[ac_cv_pthread_is_default=no],[ac_cv_pthread_is_default=no])
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001348])
1349AC_MSG_RESULT($ac_cv_pthread_is_default)
1350
1351
1352if test $ac_cv_pthread_is_default = yes
1353then
1354 ac_cv_kpthread=no
1355else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001356# -Kpthread, if available, provides the right #defines
1357# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001358# Some compilers won't report that they do not support -Kpthread,
1359# so we need to run a program to see whether it really made the
1360# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001361AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1362AC_CACHE_VAL(ac_cv_kpthread,
1363[ac_save_cc="$CC"
1364CC="$CC -Kpthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001365AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001366#include <pthread.h>
1367
1368void* routine(void* p){return NULL;}
1369
1370int main(){
1371 pthread_t p;
1372 if(pthread_create(&p,NULL,routine,NULL)!=0)
1373 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001374 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001375 return 0;
1376}
Matthias Kloseb159a552010-04-25 21:00:44 +00001377]])],[ac_cv_kpthread=yes],[ac_cv_kpthread=no],[ac_cv_kpthread=no])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001378CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001379AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001380fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001381
Skip Montanarod8d39a02003-07-10 20:44:10 +00001382if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001383then
1384# -Kthread, if available, provides the right #defines
1385# and linker options to make pthread_create available
1386# Some compilers won't report that they do not support -Kthread,
1387# so we need to run a program to see whether it really made the
1388# function available.
1389AC_MSG_CHECKING(whether $CC accepts -Kthread)
1390AC_CACHE_VAL(ac_cv_kthread,
1391[ac_save_cc="$CC"
1392CC="$CC -Kthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001393AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001394#include <pthread.h>
1395
1396void* routine(void* p){return NULL;}
1397
1398int main(){
1399 pthread_t p;
1400 if(pthread_create(&p,NULL,routine,NULL)!=0)
1401 return 1;
1402 (void)pthread_detach(p);
1403 return 0;
1404}
Matthias Kloseb159a552010-04-25 21:00:44 +00001405]])],[ac_cv_kthread=yes],[ac_cv_kthread=no],[ac_cv_kthread=no])
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001406CC="$ac_save_cc"])
1407AC_MSG_RESULT($ac_cv_kthread)
1408fi
1409
Skip Montanarod8d39a02003-07-10 20:44:10 +00001410if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001411then
1412# -pthread, if available, provides the right #defines
1413# and linker options to make pthread_create available
1414# Some compilers won't report that they do not support -pthread,
1415# so we need to run a program to see whether it really made the
1416# function available.
1417AC_MSG_CHECKING(whether $CC accepts -pthread)
1418AC_CACHE_VAL(ac_cv_thread,
1419[ac_save_cc="$CC"
1420CC="$CC -pthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001421AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001422#include <pthread.h>
1423
1424void* routine(void* p){return NULL;}
1425
1426int main(){
1427 pthread_t p;
1428 if(pthread_create(&p,NULL,routine,NULL)!=0)
1429 return 1;
1430 (void)pthread_detach(p);
1431 return 0;
1432}
Matthias Kloseb159a552010-04-25 21:00:44 +00001433]])],[ac_cv_pthread=yes],[ac_cv_pthread=no],[ac_cv_pthread=no])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001434CC="$ac_save_cc"])
1435AC_MSG_RESULT($ac_cv_pthread)
1436fi
1437
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001438# If we have set a CC compiler flag for thread support then
1439# check if it works for CXX, too.
1440ac_cv_cxx_thread=no
1441if test ! -z "$CXX"
1442then
1443AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1444ac_save_cxx="$CXX"
1445
1446if test "$ac_cv_kpthread" = "yes"
1447then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001448 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001449 ac_cv_cxx_thread=yes
1450elif test "$ac_cv_kthread" = "yes"
1451then
1452 CXX="$CXX -Kthread"
1453 ac_cv_cxx_thread=yes
1454elif test "$ac_cv_pthread" = "yes"
1455then
1456 CXX="$CXX -pthread"
1457 ac_cv_cxx_thread=yes
1458fi
1459
1460if test $ac_cv_cxx_thread = yes
1461then
1462 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1463 $CXX -c conftest.$ac_ext 2>&5
1464 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1465 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1466 then
1467 ac_cv_cxx_thread=yes
1468 else
1469 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001470 fi
1471 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001472fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001473AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001474fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001475CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001476
Fred Drakece81d592000-07-09 14:39:29 +00001477dnl # check for ANSI or K&R ("traditional") preprocessor
1478dnl AC_MSG_CHECKING(for C preprocessor type)
Matthias Kloseb159a552010-04-25 21:00:44 +00001479dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Fred Drakece81d592000-07-09 14:39:29 +00001480dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1481dnl int foo;
1482dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
Matthias Kloseb159a552010-04-25 21:00:44 +00001483dnl ]], [[;]])],[cpp_type=ansi],[AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional])
Fred Drakece81d592000-07-09 14:39:29 +00001484dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001485
Guido van Rossum627b2d71993-12-24 10:39:16 +00001486# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001487AC_HEADER_STDC
Benjamin Petersonb77fe172011-09-13 17:20:47 -04001488AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001489fcntl.h grp.h \
Jesus Cead8b9ae62011-11-14 19:07:41 +01001490ieeefp.h io.h langinfo.h libintl.h ncurses.h process.h pthread.h \
Benjamin Peterson94b580d2011-08-02 17:30:04 -05001491sched.h shadow.h signal.h stdint.h stropts.h termios.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001492unistd.h utime.h \
Jesus Cead8b9ae62011-11-14 19:07:41 +01001493poll.h sys/devpoll.h sys/epoll.h sys/poll.h \
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001494sys/audioio.h sys/xattr.h sys/bsdtty.h sys/event.h sys/file.h sys/ioctl.h \
Martin v. Löwis9d6c6692012-02-03 17:44:58 +01001495sys/kern_control.h sys/loadavg.h sys/lock.h sys/mkdev.h sys/modem.h \
Jesus Cead8b9ae62011-11-14 19:07:41 +01001496sys/param.h sys/select.h sys/sendfile.h sys/socket.h sys/statvfs.h \
Martin v. Löwis9d6c6692012-02-03 17:44:58 +01001497sys/stat.h sys/syscall.h sys/sys_domain.h sys/termio.h sys/time.h \
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001498sys/times.h sys/types.h sys/uio.h sys/un.h sys/utsname.h sys/wait.h pty.h \
Gregory P. Smith3b1f2c32011-05-15 12:18:23 -07001499libutil.h sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Ronald Oussoren755740f2010-02-07 19:56:39 +00001500bluetooth/bluetooth.h linux/tipc.h spawn.h util.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001501AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001502AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001503
Gregory P. Smith3b1f2c32011-05-15 12:18:23 -07001504# On Darwin (OS X) net/if.h requires sys/socket.h to be imported first.
1505AC_CHECK_HEADERS([net/if.h], [], [],
1506[#include <stdio.h>
1507#ifdef STDC_HEADERS
1508# include <stdlib.h>
1509# include <stddef.h>
1510#else
1511# ifdef HAVE_STDLIB_H
1512# include <stdlib.h>
1513# endif
1514#endif
1515#ifdef HAVE_SYS_SOCKET_H
1516# include <sys/socket.h>
1517#endif
1518])
1519
1520
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001521# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001522AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001523#ifdef HAVE_CURSES_H
1524#include <curses.h>
1525#endif
1526])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001527
Martin v. Löwis11017b12006-01-14 18:12:57 +00001528# On Linux, netlink.h requires asm/types.h
1529AC_CHECK_HEADERS(linux/netlink.h,,,[
1530#ifdef HAVE_ASM_TYPES_H
1531#include <asm/types.h>
1532#endif
1533#ifdef HAVE_SYS_SOCKET_H
1534#include <sys/socket.h>
1535#endif
1536])
1537
Charles-François Natali47413c12011-10-06 19:47:44 +02001538# On Linux, can.h and can/raw.h require sys/socket.h
1539AC_CHECK_HEADERS(linux/can.h linux/can/raw.h,,,[
1540#ifdef HAVE_SYS_SOCKET_H
1541#include <sys/socket.h>
1542#endif
1543])
1544
Guido van Rossum627b2d71993-12-24 10:39:16 +00001545# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001546was_it_defined=no
1547AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001548AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1549 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1550])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001551AC_MSG_RESULT($was_it_defined)
1552
Neal Norwitz11690112002-07-30 01:08:28 +00001553AC_MSG_CHECKING(for makedev)
Jesus Cea740f53a2010-04-28 11:35:30 +00001554AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1555#if defined(MAJOR_IN_MKDEV)
1556#include <sys/mkdev.h>
1557#elif defined(MAJOR_IN_SYSMACROS)
1558#include <sys/sysmacros.h>
1559#else
1560#include <sys/types.h>
1561#endif
1562]], [[
1563 makedev(0, 0) ]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001564],[ac_cv_has_makedev=yes],[ac_cv_has_makedev=no])
Neal Norwitz11690112002-07-30 01:08:28 +00001565AC_MSG_RESULT($ac_cv_has_makedev)
1566if test "$ac_cv_has_makedev" = "yes"; then
1567 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1568fi
1569
Martin v. Löwis399a6892002-10-04 10:22:02 +00001570# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1571# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1572# defined, but the compiler does not support pragma redefine_extname,
1573# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1574# structures (such as rlimit64) without declaring them. As a
1575# work-around, disable LFS on such configurations
1576
1577use_lfs=yes
1578AC_MSG_CHECKING(Solaris LFS bug)
Matthias Kloseb159a552010-04-25 21:00:44 +00001579AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis399a6892002-10-04 10:22:02 +00001580#define _LARGEFILE_SOURCE 1
1581#define _FILE_OFFSET_BITS 64
1582#include <sys/resource.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00001583]], [[struct rlimit foo;]])],[sol_lfs_bug=no],[sol_lfs_bug=yes])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001584AC_MSG_RESULT($sol_lfs_bug)
1585if test "$sol_lfs_bug" = "yes"; then
1586 use_lfs=no
1587fi
1588
1589if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001590# Two defines needed to enable largefile support on various platforms
1591# These may affect some typedefs
Georg Brandl216e4042011-02-19 08:58:23 +00001592case $ac_sys_system/$ac_sys_release in
1593AIX*)
1594 AC_DEFINE(_LARGE_FILES, 1,
1595 [This must be defined on AIX systems to enable large file support.])
1596 ;;
1597esac
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001598AC_DEFINE(_LARGEFILE_SOURCE, 1,
1599[This must be defined on some systems to enable large file support.])
1600AC_DEFINE(_FILE_OFFSET_BITS, 64,
1601[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001602fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001603
Guido van Rossum300fda71996-08-19 21:58:16 +00001604# Add some code to confdefs.h so that the test for off_t works on SCO
1605cat >> confdefs.h <<\EOF
1606#if defined(SCO_DS)
1607#undef _OFF_T
1608#endif
1609EOF
1610
Guido van Rossumef2255b2000-03-10 22:30:29 +00001611# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001612AC_TYPE_MODE_T
1613AC_TYPE_OFF_T
1614AC_TYPE_PID_T
Matthias Klosebada4c32010-04-25 21:18:48 +00001615AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[assume C89 semantics that RETSIGTYPE is always void])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001616AC_TYPE_SIZE_T
1617AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001618AC_TYPE_UINT32_T
1619AC_TYPE_UINT64_T
1620AC_TYPE_INT32_T
1621AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001622AC_CHECK_TYPE(ssize_t,
Matthias Klosec80c93f2010-04-24 17:04:35 +00001623 AC_DEFINE(HAVE_SSIZE_T, 1, [Define if your compiler provides ssize_t]),,)
Stefan Krah1919b7e2012-03-21 18:25:23 +01001624AC_CHECK_TYPE(__uint128_t,
1625 AC_DEFINE(HAVE_GCC_UINT128_T, 1, [Define if your compiler provides __uint128_t]),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001626
Guido van Rossumef2255b2000-03-10 22:30:29 +00001627# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001628# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001629AC_CHECK_SIZEOF(int, 4)
1630AC_CHECK_SIZEOF(long, 4)
1631AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001632AC_CHECK_SIZEOF(short, 2)
1633AC_CHECK_SIZEOF(float, 4)
1634AC_CHECK_SIZEOF(double, 8)
1635AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001636AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001637AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001638
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001639AC_MSG_CHECKING(for long long support)
1640have_long_long=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001641AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long long x; x = (long long)0;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001642 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1643 have_long_long=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001644],[])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001645AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001646if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001647AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001648fi
1649
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001650AC_MSG_CHECKING(for long double support)
1651have_long_double=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001652AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long double x; x = (long double)0;]])],[
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001653 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1654 have_long_double=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001655],[])
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001656AC_MSG_RESULT($have_long_double)
1657if test "$have_long_double" = yes ; then
1658AC_CHECK_SIZEOF(long double, 16)
1659fi
1660
1661
Thomas Woutersb2137042007-02-01 18:02:27 +00001662AC_MSG_CHECKING(for _Bool support)
1663have_c99_bool=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001664AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[_Bool x; x = (_Bool)0;]])],[
Thomas Woutersb2137042007-02-01 18:02:27 +00001665 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1666 have_c99_bool=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001667],[])
Thomas Woutersb2137042007-02-01 18:02:27 +00001668AC_MSG_RESULT($have_c99_bool)
1669if test "$have_c99_bool" = yes ; then
1670AC_CHECK_SIZEOF(_Bool, 1)
1671fi
1672
Thomas Wouters89f507f2006-12-13 04:49:30 +00001673AC_CHECK_TYPES(uintptr_t,
1674 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1675 [], [#ifdef HAVE_STDINT_H
1676 #include <stdint.h>
Antoine Pitrou1bf29b72010-10-10 08:10:16 +00001677 #endif
1678 #ifdef HAVE_INTTYPES_H
1679 #include <inttypes.h>
Thomas Wouters89f507f2006-12-13 04:49:30 +00001680 #endif])
1681
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001682AC_CHECK_SIZEOF(off_t, [], [
1683#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001684#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001685#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001686])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001687
1688AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson2df5d282009-12-31 21:22:50 +00001689if test "$have_long_long" = yes
1690then
1691if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001692 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001693 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1694 [Defined to enable large file support when an off_t is bigger than a long
1695 and long long is available and at least as big as an off_t. You may need
1696 to add some flags for configuration and compilation to enable this mode.
1697 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001698 AC_MSG_RESULT(yes)
1699else
1700 AC_MSG_RESULT(no)
1701fi
Mark Dickinson2df5d282009-12-31 21:22:50 +00001702else
1703 AC_MSG_RESULT(no)
1704fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001705
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001706AC_CHECK_SIZEOF(time_t, [], [
1707#ifdef HAVE_SYS_TYPES_H
1708#include <sys/types.h>
1709#endif
1710#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00001711#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001712#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001713])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001714
Trent Mick635f6fb2000-08-23 21:33:05 +00001715# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001716ac_save_cc="$CC"
1717if test "$ac_cv_kpthread" = "yes"
1718then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001719elif test "$ac_cv_kthread" = "yes"
1720then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001721elif test "$ac_cv_pthread" = "yes"
1722then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001723fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001724
Trent Mick635f6fb2000-08-23 21:33:05 +00001725AC_MSG_CHECKING(for pthread_t)
1726have_pthread_t=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001727AC_COMPILE_IFELSE([
1728 AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t x; x = *(pthread_t*)0;]])
1729],[have_pthread_t=yes],[])
Trent Mick635f6fb2000-08-23 21:33:05 +00001730AC_MSG_RESULT($have_pthread_t)
1731if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001732 AC_CHECK_SIZEOF(pthread_t, [], [
1733#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001734#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001735#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001736 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001737fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001738CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001739
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001740AC_SUBST(OTHER_LIBTOOL_OPT)
1741case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001742 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001743 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1744 ;;
1745 Darwin/*)
1746 OTHER_LIBTOOL_OPT=""
1747 ;;
1748esac
1749
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001750
1751ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001752AC_SUBST(LIBTOOL_CRUFT)
1753case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001754 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001755 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1756 if test "${enable_universalsdk}"; then
1757 :
1758 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001759 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001760 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001761 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001762 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001763 Darwin/*)
Ronald Oussoren9812a6c2010-02-07 11:53:18 +00001764 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001765 if test ${gcc_version} '<' 4.0
1766 then
1767 LIBTOOL_CRUFT="-lcc_dynamic"
1768 else
1769 LIBTOOL_CRUFT=""
1770 fi
Matthias Kloseb159a552010-04-25 21:00:44 +00001771 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001772 #include <unistd.h>
1773 int main(int argc, char*argv[])
1774 {
1775 if (sizeof(long) == 4) {
1776 return 0;
1777 } else {
1778 return 1;
1779 }
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001780 }
Matthias Kloseb159a552010-04-25 21:00:44 +00001781 ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=yes])
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001782
1783 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001784 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001785 i386)
1786 MACOSX_DEFAULT_ARCH="i386"
1787 ;;
1788 ppc)
1789 MACOSX_DEFAULT_ARCH="ppc"
1790 ;;
1791 *)
1792 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1793 ;;
1794 esac
1795 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001796 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001797 i386)
1798 MACOSX_DEFAULT_ARCH="x86_64"
1799 ;;
1800 ppc)
1801 MACOSX_DEFAULT_ARCH="ppc64"
1802 ;;
1803 *)
1804 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1805 ;;
1806 esac
1807
1808 #ARCH_RUN_32BIT="true"
1809 fi
1810
1811 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001812 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001813 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001814esac
1815
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001816AC_MSG_CHECKING(for --enable-framework)
1817if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001818then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001819 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001820 # -F. is needed to allow linking to the framework while
1821 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001822 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1823 [Define if you want to produce an OpenStep/Rhapsody framework
1824 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001825 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001826 if test $enable_shared = "yes"
1827 then
1828 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1829 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001830else
1831 AC_MSG_RESULT(no)
1832fi
1833
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001834AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001835case $ac_sys_system/$ac_sys_release in
1836 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001837 AC_DEFINE(WITH_DYLD, 1,
1838 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1839 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1840 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001841 AC_MSG_RESULT(always on for Darwin)
1842 ;;
1843 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001844 AC_MSG_RESULT(no)
1845 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001846esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001847
Guido van Rossumac405f61994-09-12 10:56:06 +00001848# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001849AC_SUBST(SO)
1850AC_SUBST(LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001851AC_SUBST(LDCXXSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001852AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001853AC_SUBST(CCSHARED)
1854AC_SUBST(LINKFORSHARED)
Georg Brandlb1441c72009-01-03 22:33:39 +00001855
Thomas Wouters477c8d52006-05-27 19:21:47 +00001856AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001857# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001858# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001859# (Shared libraries in this instance are shared modules to be loaded into
1860# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001861AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001862if test -z "$LDSHARED"
1863then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001864 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001865 AIX*)
Georg Brandl9a829be2011-02-15 15:44:51 +00001866 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:\$(srcdir)/Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001867 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001868 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001869 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001870 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001871 SunOS/5*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001872 if test "$GCC" = "yes" ; then
1873 LDSHARED='$(CC) -shared'
1874 LDCXXSHARED='$(CXX) -shared'
1875 else
1876 LDSHARED='$(CC) -G'
1877 LDCXXSHARED='$(CXX) -G'
Greg Ward57c9a6632000-05-26 12:22:54 +00001878 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001879 hp*|HP*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001880 if test "$GCC" = "yes" ; then
1881 LDSHARED='$(CC) -shared'
1882 LDCXXSHARED='$(CXX) -shared'
1883 else
1884 LDSHARED='ld -b'
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001885 fi ;;
Jack Jansen418c3b12001-11-14 10:59:57 +00001886 Darwin/1.3*)
Antoine Pitroud4958c22010-10-13 17:01:10 +00001887 LDSHARED='$(CC) -bundle'
1888 LDCXXSHARED='$(CXX) -bundle'
Jack Jansena3891ea2001-09-07 14:25:12 +00001889 if test "$enable_framework" ; then
1890 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001891 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1892 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001893 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001894 else
1895 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001896 LDSHARED="$LDSHARED -undefined suppress"
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001897 LDCXXSHARED="$LDCXXSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001898 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001899 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Antoine Pitroud4958c22010-10-13 17:01:10 +00001900 LDSHARED='$(CC) -bundle'
1901 LDCXXSHARED='$(CXX) -bundle'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001902 if test "$enable_framework" ; then
1903 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001904 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1905 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001906 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001907 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001908 # No framework, use the Python app as bundle-loader
1909 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001910 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001911 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001912 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001913 Darwin/*)
1914 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1915 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001916
Georg Brandlfcaf9102008-07-16 02:17:56 +00001917 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001918 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001919 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001920 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001921 fi
Antoine Pitroud4958c22010-10-13 17:01:10 +00001922 LDSHARED='$(CC) -bundle -undefined dynamic_lookup'
1923 LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup'
Jack Jansen6b08a402004-06-03 12:41:45 +00001924 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001925 else
Antoine Pitroud4958c22010-10-13 17:01:10 +00001926 LDSHARED='$(CC) -bundle'
1927 LDCXXSHARED='$(CXX) -bundle'
Jack Jansen6b08a402004-06-03 12:41:45 +00001928 if test "$enable_framework" ; then
1929 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001930 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1931 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001932 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001933 else
1934 # No framework, use the Python app as bundle-loader
1935 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1936 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001937 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001938 fi
1939 fi
1940 ;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001941 Linux*|GNU*|QNX*)
1942 LDSHARED='$(CC) -shared'
1943 LDCXXSHARED='$(CXX) -shared';;
1944 BSD/OS*/4*)
1945 LDSHARED="gcc -shared"
1946 LDCXXSHARED="g++ -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001947 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001948 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001949 then
Antoine Pitroud4958c22010-10-13 17:01:10 +00001950 LDSHARED='$(CC) -shared'
1951 LDCXXSHARED='$(CXX) -shared'
Guido van Rossum0286ae82000-08-29 15:06:49 +00001952 else
Antoine Pitroud4958c22010-10-13 17:01:10 +00001953 LDSHARED="ld -Bshareable"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001954 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001955 OpenBSD*)
1956 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1957 then
Antoine Pitroud4958c22010-10-13 17:01:10 +00001958 LDSHARED='$(CC) -shared $(CCSHARED)'
1959 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001960 else
1961 case `uname -r` in
1962 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1963 LDSHARED="ld -Bshareable ${LDFLAGS}"
1964 ;;
1965 *)
Antoine Pitroud4958c22010-10-13 17:01:10 +00001966 LDSHARED='$(CC) -shared $(CCSHARED)'
1967 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001968 ;;
1969 esac
1970 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001971 NetBSD*|DragonFly*)
Antoine Pitrouece919e2011-01-02 20:45:21 +00001972 LDSHARED='$(CC) -shared'
1973 LDCXXSHARED='$(CXX) -shared';;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001974 OpenUNIX*|UnixWare*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001975 if test "$GCC" = "yes" ; then
1976 LDSHARED='$(CC) -shared'
1977 LDCXXSHARED='$(CXX) -shared'
1978 else
1979 LDSHARED='$(CC) -G'
1980 LDCXXSHARED='$(CXX) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001981 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001982 SCO_SV*)
1983 LDSHARED='$(CC) -Wl,-G,-Bexport'
1984 LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
1985 CYGWIN*)
1986 LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
1987 LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001988 *) LDSHARED="ld";;
1989 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001990fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001991AC_MSG_RESULT($LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001992LDCXXSHARED=${LDCXXSHARED-$LDSHARED}
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001993BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001994# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001995# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001996AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001997if test -z "$CCSHARED"
1998then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001999 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00002000 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00002001 then CCSHARED="-fPIC";
2002 elif test `uname -p` = sparc;
2003 then CCSHARED="-xcode=pic32";
2004 else CCSHARED="-Kpic";
2005 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00002006 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00002007 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00002008 else CCSHARED="+z";
2009 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002010 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00002011 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00002012 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002013 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00002014 if test "$GCC" = "yes"
2015 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002016 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00002017 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00002018 SCO_SV*)
2019 if test "$GCC" = "yes"
2020 then CCSHARED="-fPIC"
2021 else CCSHARED="-Kpic -belf"
2022 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002023 IRIX*/6*) case $CC in
2024 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00002025 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002026 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00002027 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002028fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002029AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002030# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00002031# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002032AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002033if test -z "$LINKFORSHARED"
2034then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00002035 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00002036 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00002037 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00002038 LINKFORSHARED="-Wl,-E -Wl,+s";;
2039# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00002040 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002041 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00002042 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002043 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00002044 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002045 if test "$enable_framework"
2046 then
Jack Jansenda49e192005-01-07 13:08:22 +00002047 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002048 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00002049 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002050 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00002051 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00002052 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00002053 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00002054 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
2055 then
2056 LINKFORSHARED="-Wl,--export-dynamic"
2057 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002058 SunOS/5*) case $CC in
2059 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00002060 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00002061 then
2062 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002063 fi;;
2064 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00002065 CYGWIN*)
2066 if test $enable_shared = "no"
2067 then
2068 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
2069 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00002070 QNX*)
2071 # -Wl,-E causes the symbols to be added to the dynamic
2072 # symbol table so that they can be found when a module
2073 # is loaded. -N 2048K causes the stack size to be set
2074 # to 2048 kilobytes so that the stack doesn't overflow
2075 # when running test_compile.py.
2076 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00002077 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002078fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002079AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002080
Georg Brandl93de2162008-07-16 02:21:06 +00002081
Neil Schemenauer61c51152001-01-26 16:18:16 +00002082AC_SUBST(CFLAGSFORSHARED)
2083AC_MSG_CHECKING(CFLAGSFORSHARED)
2084if test ! "$LIBRARY" = "$LDLIBRARY"
2085then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00002086 case $ac_sys_system in
2087 CYGWIN*)
2088 # Cygwin needs CCSHARED when building extension DLLs
2089 # but not when building the interpreter DLL.
2090 CFLAGSFORSHARED='';;
2091 *)
2092 CFLAGSFORSHARED='$(CCSHARED)'
2093 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00002094fi
2095AC_MSG_RESULT($CFLAGSFORSHARED)
2096
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002097# SHLIBS are libraries (except -lc and -lm) to link to the python shared
2098# library (with --enable-shared).
2099# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00002100# symbols, this must be set to $(LIBS) (expanded by make). We do this even
2101# if it is not required, since it creates a dependency of the shared library
2102# to LIBS. This, in turn, means that applications linking the shared libpython
2103# don't need to link LIBS explicitly. The default should be only changed
2104# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002105AC_SUBST(SHLIBS)
2106AC_MSG_CHECKING(SHLIBS)
2107case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002108 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00002109 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002110esac
2111AC_MSG_RESULT($SHLIBS)
2112
2113
Guido van Rossum627b2d71993-12-24 10:39:16 +00002114# checks for libraries
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00002115AC_CHECK_LIB(sendfile, sendfile)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002116AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
2117AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00002118
Georg Brandleee31162008-12-07 15:15:22 +00002119# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00002120if test "$with_threads" = "yes" -o -z "$with_threads"; then
2121 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
2122 # posix4 on Solaris 2.6
2123 # pthread (first!) on Linux
2124fi
2125
Martin v. Löwis19d17342003-06-14 21:03:05 +00002126# check if we need libintl for locale functions
2127AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00002128 [AC_DEFINE(WITH_LIBINTL, 1,
2129 [Define to 1 if libintl is needed for locale functions.])
2130 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002131
2132# checks for system dependent C++ extensions support
2133case "$ac_sys_system" in
2134 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
Matthias Kloseb159a552010-04-25 21:00:44 +00002135 AC_LINK_IFELSE([
Georg Brandl59e87bd2011-02-15 19:48:59 +00002136 AC_LANG_PROGRAM([[#include <load.h>]],
Matthias Kloseb159a552010-04-25 21:00:44 +00002137 [[loadAndInit("", 0, "")]])
2138 ],[
2139 AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002140 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
2141 and you want support for AIX C++ shared extension modules.])
Matthias Kloseb159a552010-04-25 21:00:44 +00002142 AC_MSG_RESULT(yes)
2143 ],[
2144 AC_MSG_RESULT(no)
2145 ]);;
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002146 *) ;;
2147esac
2148
Guido van Rossum70c7f481998-03-26 18:44:10 +00002149# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002150AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002151AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00002152
Guido van Rossumc5a39031996-07-31 17:35:03 +00002153AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002154AC_ARG_WITH(libs,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002155 AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002156[
Guido van Rossumc5a39031996-07-31 17:35:03 +00002157AC_MSG_RESULT($withval)
2158LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002159],
2160[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002161
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00002162AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
2163
Benjamin Petersonb2d90462009-12-31 03:23:10 +00002164# Check for use of the system expat library
2165AC_MSG_CHECKING(for --with-system-expat)
2166AC_ARG_WITH(system_expat,
Benjamin Peterson79263252010-10-31 16:50:44 +00002167 AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library]),
2168 [],
2169 [with_system_expat="no"])
Benjamin Petersonb2d90462009-12-31 03:23:10 +00002170
2171AC_MSG_RESULT($with_system_expat)
2172
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002173# Check for use of the system libffi library
2174AC_MSG_CHECKING(for --with-system-ffi)
2175AC_ARG_WITH(system_ffi,
Benjamin Peterson79263252010-10-31 16:50:44 +00002176 AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]),
2177 [],
2178 [with_system_ffi="no"])
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002179
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00002180if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
Benjamin Petersond78735d2010-01-01 16:04:23 +00002181 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
2182else
2183 LIBFFI_INCLUDEDIR=""
2184fi
2185AC_SUBST(LIBFFI_INCLUDEDIR)
2186
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002187AC_MSG_RESULT($with_system_ffi)
2188
Stefan Krah60187b52012-03-23 19:06:27 +01002189# Check for use of the system libmpdec library
2190AC_MSG_CHECKING(for --with-system-libmpdec)
2191AC_ARG_WITH(system_libmpdec,
2192 AS_HELP_STRING([--with-system-libmpdec], [build _decimal module using an installed libmpdec library]),
2193 [],
2194 [with_system_libmpdec="no"])
2195
2196AC_MSG_RESULT($with_system_libmpdec)
2197
Benjamin Peterson076ed002010-10-31 17:11:02 +00002198# Check for support for loadable sqlite extensions
2199AC_MSG_CHECKING(for --enable-loadable-sqlite-extensions)
2200AC_ARG_ENABLE(loadable-sqlite-extensions,
2201 AS_HELP_STRING([--enable-loadable-sqlite-extensions], [support loadable extensions in _sqlite module]),
2202 [],
2203 [enable_loadable_sqlite_extensions="no"])
2204
2205AC_MSG_RESULT($enable_loadable_sqlite_extensions)
2206
Matthias Klose55708cc2009-04-30 08:06:49 +00002207# Check for --with-dbmliborder
2208AC_MSG_CHECKING(for --with-dbmliborder)
2209AC_ARG_WITH(dbmliborder,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002210 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'.]),
Matthias Klose55708cc2009-04-30 08:06:49 +00002211[
2212if test x$with_dbmliborder = xyes
2213then
2214AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2215else
2216 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
2217 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
2218 then
2219 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2220 fi
2221 done
2222fi])
2223AC_MSG_RESULT($with_dbmliborder)
2224
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002225# Determine if signalmodule should be used.
2226AC_SUBST(USE_SIGNAL_MODULE)
2227AC_SUBST(SIGNAL_OBJS)
2228AC_MSG_CHECKING(for --with-signal-module)
2229AC_ARG_WITH(signal-module,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002230 AS_HELP_STRING([--with-signal-module], [disable/enable signal module]))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002231
2232if test -z "$with_signal_module"
2233then with_signal_module="yes"
2234fi
2235AC_MSG_RESULT($with_signal_module)
2236
2237if test "${with_signal_module}" = "yes"; then
2238 USE_SIGNAL_MODULE=""
2239 SIGNAL_OBJS=""
2240else
2241 USE_SIGNAL_MODULE="#"
2242 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2243fi
2244
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002245# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002246AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002247USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002248
Guido van Rossum54d93d41997-01-22 20:51:58 +00002249AC_SUBST(LDLAST)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002250
Martin v. Löwis11437992002-04-12 09:54:03 +00002251# Templates for things AC_DEFINEd more than once.
2252# For a single AC_DEFINE, no template is needed.
Martin v. Löwis11437992002-04-12 09:54:03 +00002253AH_TEMPLATE(_REENTRANT,
2254 [Define to force use of thread-safe errno, h_errno, and other functions])
2255AH_TEMPLATE(WITH_THREAD,
2256 [Define if you want to compile in rudimentary thread support])
2257
Guido van Rossum54d93d41997-01-22 20:51:58 +00002258AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002259dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002260AC_ARG_WITH(threads,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002261 AS_HELP_STRING([--with(out)-threads@<:@=DIRECTORY@:>@], [disable/enable thread support]))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002262
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002263# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002264dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002265AC_ARG_WITH(thread,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002266 AS_HELP_STRING([--with(out)-thread@<:@=DIRECTORY@:>@], [deprecated; use --with(out)-threads]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002267 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002268
2269if test -z "$with_threads"
2270then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002271fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002272AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002273
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002274AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002275if test "$with_threads" = "no"
2276then
2277 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002278elif test "$ac_cv_pthread_is_default" = yes
2279then
2280 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002281 # Defining _REENTRANT on system with POSIX threads should not hurt.
2282 AC_DEFINE(_REENTRANT)
2283 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002284 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002285elif test "$ac_cv_kpthread" = "yes"
2286then
2287 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002288 if test "$ac_cv_cxx_thread" = "yes"; then
2289 CXX="$CXX -Kpthread"
2290 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002291 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002292 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002293 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002294elif test "$ac_cv_kthread" = "yes"
2295then
2296 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002297 if test "$ac_cv_cxx_thread" = "yes"; then
2298 CXX="$CXX -Kthread"
2299 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002300 AC_DEFINE(WITH_THREAD)
2301 posix_threads=yes
2302 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002303elif test "$ac_cv_pthread" = "yes"
2304then
2305 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002306 if test "$ac_cv_cxx_thread" = "yes"; then
2307 CXX="$CXX -pthread"
2308 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002309 AC_DEFINE(WITH_THREAD)
2310 posix_threads=yes
2311 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002312else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002313 if test ! -z "$with_threads" -a -d "$with_threads"
2314 then LDFLAGS="$LDFLAGS -L$with_threads"
2315 fi
2316 if test ! -z "$withval" -a -d "$withval"
2317 then LDFLAGS="$LDFLAGS -L$withval"
2318 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002319
2320 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002321 # define _POSIX_THREADS in unistd.h. Some apparently don't
2322 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002323 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2324 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002325 [
2326#include <unistd.h>
2327#ifdef _POSIX_THREADS
2328yes
2329#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002330 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2331 AC_MSG_RESULT($unistd_defines_pthreads)
2332
Martin v. Löwis130fb172001-07-19 11:00:41 +00002333 AC_DEFINE(_REENTRANT)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002334 # Just looking for pthread_create in libpthread is not enough:
2335 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2336 # So we really have to include pthread.h, and then link.
2337 _libs=$LIBS
2338 LIBS="$LIBS -lpthread"
2339 AC_MSG_CHECKING([for pthread_create in -lpthread])
Matthias Kloseb159a552010-04-25 21:00:44 +00002340 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002341
Matthias Kloseb159a552010-04-25 21:00:44 +00002342void * start_routine (void *arg) { exit (0); }]], [[
2343pthread_create (NULL, NULL, start_routine, NULL)]])],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002344 AC_MSG_RESULT(yes)
2345 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002346 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002347 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002348 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002349 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002350 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002351 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002352 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002353 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002354 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002355 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002356 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002357 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002358 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002359 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002360 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002361 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002362 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002363 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002364 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002365 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002366 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002367 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002368 USE_THREAD_MODULE="#"])
Antoine Pitrou37009202011-07-08 23:47:50 +02002369 ])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002370
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002371 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2372 LIBS="$LIBS -lmpc"
2373 THREADOBJ="Python/thread.o"
2374 USE_THREAD_MODULE=""])
2375
2376 if test "$posix_threads" != "yes"; then
2377 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2378 LIBS="$LIBS -lthread"
2379 THREADOBJ="Python/thread.o"
2380 USE_THREAD_MODULE=""])
2381 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002382fi
2383
2384if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002385 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002386 AC_DEFINE(_POSIX_THREADS, 1,
2387 [Define if you have POSIX threads,
2388 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002389 fi
2390
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002391 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2392 case $ac_sys_system/$ac_sys_release in
Charles-François Natali996f6062011-07-21 19:45:31 +02002393 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002394 [Defined for Solaris 2.6 bug in pthread header.])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002395 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002396 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002397 [Define if the Posix semaphores do not work on your system])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002398 ;;
Charles-François Natali996f6062011-07-21 19:45:31 +02002399 AIX/*) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002400 [Define if the Posix semaphores do not work on your system])
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002401 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002402 esac
2403
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002404 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2405 AC_CACHE_VAL(ac_cv_pthread_system_supported,
Matthias Kloseb159a552010-04-25 21:00:44 +00002406 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <pthread.h>
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002407 void *foo(void *parm) {
2408 return NULL;
2409 }
2410 main() {
2411 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002412 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002413 if (pthread_attr_init(&attr)) exit(-1);
2414 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002415 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002416 exit(0);
Matthias Kloseb159a552010-04-25 21:00:44 +00002417 }]])],
2418 [ac_cv_pthread_system_supported=yes],
2419 [ac_cv_pthread_system_supported=no],
2420 [ac_cv_pthread_system_supported=no])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002421 ])
2422 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2423 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002424 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002425 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002426 AC_CHECK_FUNCS(pthread_sigmask,
2427 [case $ac_sys_system in
2428 CYGWIN*)
2429 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2430 [Define if pthread_sigmask() does not work on your system.])
2431 ;;
2432 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002433fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002434
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002435
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002436# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002437AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002438AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002439AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002440[ --enable-ipv6 Enable ipv6 (with ipv4) support
2441 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002442[ case "$enableval" in
2443 no)
2444 AC_MSG_RESULT(no)
2445 ipv6=no
2446 ;;
2447 *) AC_MSG_RESULT(yes)
2448 AC_DEFINE(ENABLE_IPV6)
2449 ipv6=yes
2450 ;;
2451 esac ],
2452
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002453[
2454dnl the check does not work on cross compilation case...
Matthias Kloseb159a552010-04-25 21:00:44 +00002455 AC_RUN_IFELSE([AC_LANG_SOURCE([[ /* AF_INET6 available check */
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002456#include <sys/types.h>
2457#include <sys/socket.h>
2458main()
2459{
2460 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2461 exit(1);
2462 else
2463 exit(0);
2464}
Matthias Kloseb159a552010-04-25 21:00:44 +00002465]])],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002466 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00002467 ipv6=yes
2468],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002469 AC_MSG_RESULT(no)
2470 ipv6=no
Matthias Kloseb159a552010-04-25 21:00:44 +00002471],[
2472 AC_MSG_RESULT(no)
2473 ipv6=no
2474])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002475
2476if test "$ipv6" = "yes"; then
2477 AC_MSG_CHECKING(if RFC2553 API is available)
Matthias Kloseb159a552010-04-25 21:00:44 +00002478 AC_COMPILE_IFELSE([
2479 AC_LANG_PROGRAM([[#include <sys/types.h>
2480#include <netinet/in.h>]],
2481 [[struct sockaddr_in6 x;
2482 x.sin6_scope_id;]])
2483 ],[
2484 AC_MSG_RESULT(yes)
2485 ipv6=yes
2486 ],[
2487 AC_MSG_RESULT(no, IPv6 disabled)
2488 ipv6=no
2489 ])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002490fi
2491
2492if test "$ipv6" = "yes"; then
2493 AC_DEFINE(ENABLE_IPV6)
2494fi
2495])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002496
2497ipv6type=unknown
2498ipv6lib=none
2499ipv6trylibc=no
2500
2501if test "$ipv6" = "yes"; then
2502 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002503 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2504 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002505 case $i in
2506 inria)
2507 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002508 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002509#include <netinet/in.h>
2510#ifdef IPV6_INRIA_VERSION
2511yes
2512#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002513 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002514 ;;
2515 kame)
2516 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002517 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002518#include <netinet/in.h>
2519#ifdef __KAME__
2520yes
2521#endif],
2522 [ipv6type=$i;
2523 ipv6lib=inet6
2524 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002525 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002526 ;;
2527 linux-glibc)
2528 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002529 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002530#include <features.h>
2531#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2532yes
2533#endif],
2534 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002535 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002536 ;;
2537 linux-inet6)
2538 dnl http://www.v6.linux.or.jp/
2539 if test -d /usr/inet6; then
2540 ipv6type=$i
2541 ipv6lib=inet6
2542 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002543 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002544 fi
2545 ;;
2546 solaris)
2547 if test -f /etc/netconfig; then
Antoine Pitrouf3fcd9f2011-01-03 18:53:50 +00002548 if $GREP -q tcp6 /etc/netconfig; then
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002549 ipv6type=$i
2550 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002551 fi
2552 fi
2553 ;;
2554 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002555 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002556#include <sys/param.h>
2557#ifdef _TOSHIBA_INET6
2558yes
2559#endif],
2560 [ipv6type=$i;
2561 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002562 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002563 ;;
2564 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002565 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002566#include </usr/local/v6/include/sys/v6config.h>
2567#ifdef __V6D__
2568yes
2569#endif],
2570 [ipv6type=$i;
2571 ipv6lib=v6;
2572 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002573 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002574 ;;
2575 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002576 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002577#include <sys/param.h>
2578#ifdef _ZETA_MINAMI_INET6
2579yes
2580#endif],
2581 [ipv6type=$i;
2582 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002583 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002584 ;;
2585 esac
2586 if test "$ipv6type" != "unknown"; then
2587 break
2588 fi
2589 done
2590 AC_MSG_RESULT($ipv6type)
2591fi
2592
2593if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2594 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2595 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2596 echo "using lib$ipv6lib"
2597 else
2598 if test $ipv6trylibc = "yes"; then
2599 echo "using libc"
2600 else
2601 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2602 echo "You need to fetch lib$ipv6lib.a from appropriate"
2603 echo 'ipv6 kit and compile beforehand.'
2604 exit 1
2605 fi
2606 fi
2607fi
2608
Georg Brandl93de2162008-07-16 02:21:06 +00002609AC_MSG_CHECKING(for OSX 10.5 SDK or later)
Matthias Kloseb159a552010-04-25 21:00:44 +00002610AC_COMPILE_IFELSE([
2611 AC_LANG_PROGRAM([[#include <Carbon/Carbon.h>]], [[FSIORefNum fRef = 0]])
2612],[
Matthias Klosec80c93f2010-04-24 17:04:35 +00002613 AC_DEFINE(HAVE_OSX105_SDK, 1, [Define if compiling using MacOS X 10.5 SDK or later.])
Matthias Kloseb159a552010-04-25 21:00:44 +00002614 AC_MSG_RESULT(yes)
2615],[
Georg Brandl93de2162008-07-16 02:21:06 +00002616 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00002617])
Georg Brandl93de2162008-07-16 02:21:06 +00002618
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002619# Check for --with-doc-strings
2620AC_MSG_CHECKING(for --with-doc-strings)
2621AC_ARG_WITH(doc-strings,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002622 AS_HELP_STRING([--with(out)-doc-strings], [disable/enable documentation strings]))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002623
2624if test -z "$with_doc_strings"
2625then with_doc_strings="yes"
2626fi
2627if test "$with_doc_strings" != "no"
2628then
2629 AC_DEFINE(WITH_DOC_STRINGS, 1,
2630 [Define if you want documentation strings in extension modules])
2631fi
2632AC_MSG_RESULT($with_doc_strings)
2633
Georg Brandl9976a512010-08-02 21:02:36 +00002634# Check if eval loop should use timestamp counter profiling
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002635AC_MSG_CHECKING(for --with-tsc)
2636AC_ARG_WITH(tsc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002637 AS_HELP_STRING([--with(out)-tsc],[enable/disable timestamp counter profile]),[
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002638if test "$withval" != no
2639then
2640 AC_DEFINE(WITH_TSC, 1,
2641 [Define to profile with the Pentium timestamp counter])
2642 AC_MSG_RESULT(yes)
2643else AC_MSG_RESULT(no)
2644fi],
2645[AC_MSG_RESULT(no)])
2646
2647# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002648AC_MSG_CHECKING(for --with-pymalloc)
2649AC_ARG_WITH(pymalloc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002650 AS_HELP_STRING([--with(out)-pymalloc], [disable/enable specialized mallocs]))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002651
2652if test -z "$with_pymalloc"
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00002653then
2654 with_pymalloc="yes"
Neil Schemenauer16c22972002-03-22 15:34:49 +00002655fi
2656if test "$with_pymalloc" != "no"
2657then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002658 AC_DEFINE(WITH_PYMALLOC, 1,
2659 [Define if you want to compile in Python-specific mallocs])
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02002660 ABIFLAGS="${ABIFLAGS}m"
Neil Schemenauer16c22972002-03-22 15:34:49 +00002661fi
2662AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002663
Benjamin Peterson05159c42009-12-03 03:01:27 +00002664# Check for Valgrind support
2665AC_MSG_CHECKING([for --with-valgrind])
2666AC_ARG_WITH([valgrind],
Matthias Klose2b8733f2010-04-25 18:34:36 +00002667 AS_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
Benjamin Peterson05159c42009-12-03 03:01:27 +00002668 with_valgrind=no)
2669AC_MSG_RESULT([$with_valgrind])
2670if test "$with_valgrind" != no; then
2671 AC_CHECK_HEADER([valgrind/valgrind.h],
2672 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
2673 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
2674 )
Jeffrey Yasskin39370832010-05-03 19:29:34 +00002675 OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
Benjamin Peterson05159c42009-12-03 03:01:27 +00002676fi
2677
Guido van Rossum68242b51996-05-28 22:53:03 +00002678# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002679AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002680DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002681
Guido van Rossume97ee181999-12-20 21:27:22 +00002682# the dlopen() function means we might want to use dynload_shlib.o. some
2683# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002684AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002685
2686# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2687# loading of modules.
2688AC_SUBST(DYNLOADFILE)
2689AC_MSG_CHECKING(DYNLOADFILE)
2690if test -z "$DYNLOADFILE"
2691then
2692 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002693 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2694 if test "$ac_cv_func_dlopen" = yes
2695 then DYNLOADFILE="dynload_shlib.o"
2696 else DYNLOADFILE="dynload_aix.o"
2697 fi
2698 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002699 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002700 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2701 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002702 *)
2703 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2704 # out any dynamic loading
2705 if test "$ac_cv_func_dlopen" = yes
2706 then DYNLOADFILE="dynload_shlib.o"
2707 else DYNLOADFILE="dynload_stub.o"
2708 fi
2709 ;;
2710 esac
2711fi
2712AC_MSG_RESULT($DYNLOADFILE)
2713if test "$DYNLOADFILE" != "dynload_stub.o"
2714then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002715 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2716 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002717fi
2718
Jack Jansenc49e5b72001-06-19 15:00:23 +00002719# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2720
2721AC_SUBST(MACHDEP_OBJS)
2722AC_MSG_CHECKING(MACHDEP_OBJS)
2723if test -z "$MACHDEP_OBJS"
2724then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002725 MACHDEP_OBJS=$extra_machdep_objs
2726else
2727 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002728fi
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02002729if test -z "$MACHDEP_OBJS"; then
2730 AC_MSG_RESULT([none])
2731else
2732 AC_MSG_RESULT([$MACHDEP_OBJS])
2733fi
Jack Jansenc49e5b72001-06-19 15:00:23 +00002734
Guido van Rossum627b2d71993-12-24 10:39:16 +00002735# checks for library functions
Antoine Pitroub1c54962010-10-14 15:05:38 +00002736AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
Gregory P. Smith1577cf72012-01-21 18:21:56 -08002737 clock confstr ctermid execv faccessat fchmod fchmodat fchown fchownat \
Ross Lagerwall7807c352011-03-17 20:20:30 +02002738 fexecve fdopendir fork fpathconf fstatat ftime ftruncate futimesat \
Ross Lagerwallb0ae53d2011-06-10 07:30:30 +02002739 futimens futimes gai_strerror \
2740 getgrouplist getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002741 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Gregory P. Smith5ed2e772011-05-15 00:26:45 -07002742 if_nameindex \
Antoine Pitrouf0effe62011-11-26 01:11:02 +01002743 initgroups kill killpg lchmod lchown lockf linkat lstat lutimes mmap \
2744 memrchr mbrtowc mkdirat mkfifo \
Charles-François Natalidaafdd52011-05-29 20:07:40 +02002745 mkfifoat mknod mknodat mktime mremap nice openat pathconf pause pipe2 plock poll \
Ross Lagerwall7807c352011-03-17 20:20:30 +02002746 posix_fallocate posix_fadvise pread \
Victor Stinnerb3e72192011-05-08 01:46:11 +02002747 pthread_init pthread_kill putenv pwrite readlink readlinkat readv realpath renameat \
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00002748 select sem_open sem_timedwait sem_getvalue sem_unlink sendfile setegid seteuid \
Antoine Pitrou061cfb52011-02-28 22:25:22 +00002749 setgid sethostname \
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +00002750 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setpriority setuid setvbuf \
Charles-François Nataliea0d5fc2011-09-06 19:03:35 +02002751 sched_get_priority_max sched_setaffinity sched_setscheduler sched_setparam \
2752 sched_rr_get_interval \
Ross Lagerwallbc808222011-06-25 12:13:40 +02002753 sigaction sigaltstack siginterrupt sigpending sigrelse \
2754 sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002755 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Ross Lagerwall7807c352011-03-17 20:20:30 +02002756 truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
2757 wcscoll wcsftime wcsxfrm writev _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002758
Gregory P. Smithdf300d52012-01-21 18:20:15 -08002759AC_CHECK_DECL(dirfd,
2760 AC_DEFINE(HAVE_DIRFD, 1,
2761 Define if you have the 'dirfd' function or macro.), ,
2762 [#include <sys/types.h>
2763 #include <dirent.h>])
2764
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002765# For some functions, having a definition is not sufficient, since
2766# we want to take their address.
2767AC_MSG_CHECKING(for chroot)
Matthias Kloseb159a552010-04-25 21:00:44 +00002768AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=chroot]])],
2769 [AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2770 AC_MSG_RESULT(yes)],
2771 [AC_MSG_RESULT(no)
2772])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002773AC_MSG_CHECKING(for link)
Matthias Kloseb159a552010-04-25 21:00:44 +00002774AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=link]])],
2775 [AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2776 AC_MSG_RESULT(yes)],
2777 [AC_MSG_RESULT(no)
2778])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002779AC_MSG_CHECKING(for symlink)
Matthias Kloseb159a552010-04-25 21:00:44 +00002780AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=symlink]])],
2781 [AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2782 AC_MSG_RESULT(yes)],
2783 [AC_MSG_RESULT(no)
2784])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002785AC_MSG_CHECKING(for fchdir)
Matthias Kloseb159a552010-04-25 21:00:44 +00002786AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fchdir]])],
2787 [AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2788 AC_MSG_RESULT(yes)],
2789 [AC_MSG_RESULT(no)
2790])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002791AC_MSG_CHECKING(for fsync)
Matthias Kloseb159a552010-04-25 21:00:44 +00002792AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fsync]])],
2793 [AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
2794 AC_MSG_RESULT(yes)],
2795 [AC_MSG_RESULT(no)
2796])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002797AC_MSG_CHECKING(for fdatasync)
Matthias Kloseb159a552010-04-25 21:00:44 +00002798AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fdatasync]])],
2799 [AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2800 AC_MSG_RESULT(yes)],
2801 [AC_MSG_RESULT(no)
2802])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002803AC_MSG_CHECKING(for epoll)
Matthias Kloseb159a552010-04-25 21:00:44 +00002804AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create]])],
2805 [AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2806 AC_MSG_RESULT(yes)],
2807 [AC_MSG_RESULT(no)
2808])
Benjamin Peterson95c16622011-12-27 15:36:32 -06002809AC_MSG_CHECKING(for epoll_create1)
2810AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create1]])],
2811 [AC_DEFINE(HAVE_EPOLL_CREATE1, 1, Define if you have the 'epoll_create1' function.)
2812 AC_MSG_RESULT(yes)],
2813 [AC_MSG_RESULT(no)
2814])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002815AC_MSG_CHECKING(for kqueue)
Matthias Kloseb159a552010-04-25 21:00:44 +00002816AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002817#include <sys/types.h>
2818#include <sys/event.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002819 ]], [[int x=kqueue()]])],
2820 [AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2821 AC_MSG_RESULT(yes)],
2822 [AC_MSG_RESULT(no)
2823])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002824# On some systems (eg. FreeBSD 5), we would find a definition of the
2825# functions ctermid_r, setgroups in the library, but no prototype
2826# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2827# address to avoid compiler warnings and potential miscompilations
2828# because of the missing prototypes.
2829
2830AC_MSG_CHECKING(for ctermid_r)
Matthias Kloseb159a552010-04-25 21:00:44 +00002831AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisd5843682002-11-21 20:41:28 +00002832#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002833]], [[void* p = ctermid_r]])],
2834 [AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2835 AC_MSG_RESULT(yes)],
2836 [AC_MSG_RESULT(no)
2837])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002838
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00002839AC_CACHE_CHECK([for flock declaration], [ac_cv_flock_decl],
2840 [AC_COMPILE_IFELSE(
2841 [AC_LANG_PROGRAM(
2842 [#include <sys/file.h>],
2843 [void* p = flock]
2844 )],
2845 [ac_cv_flock_decl=yes],
2846 [ac_cv_flock_decl=no]
2847 )
Matthias Kloseb159a552010-04-25 21:00:44 +00002848])
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00002849if test "x${ac_cv_flock_decl}" = xyes; then
2850 AC_CHECK_FUNCS(flock,,
2851 AC_CHECK_LIB(bsd,flock,
2852 [AC_DEFINE(HAVE_FLOCK)
2853 AC_DEFINE(FLOCK_NEEDS_LIBBSD, 1, Define if flock needs to be linked with bsd library.)
2854 ])
2855 )
Antoine Pitroua3000072010-09-07 14:52:42 +00002856fi
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002857
2858AC_MSG_CHECKING(for getpagesize)
Matthias Kloseb159a552010-04-25 21:00:44 +00002859AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002860#include <unistd.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002861]], [[void* p = getpagesize]])],
2862 [AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2863 AC_MSG_RESULT(yes)],
2864 [AC_MSG_RESULT(no)
2865])
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002866
Victor Stinner984890f2011-11-24 13:53:38 +01002867AC_MSG_CHECKING(for broken unsetenv)
2868AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2869#include <stdlib.h>
2870]], [[int res = unsetenv("DUMMY")]])],
2871 [AC_MSG_RESULT(no)],
2872 [AC_DEFINE(HAVE_BROKEN_UNSETENV, 1, Define if `unsetenv` does not return an int.)
2873 AC_MSG_RESULT(yes)
2874])
2875
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002876dnl check for true
2877AC_CHECK_PROGS(TRUE, true, /bin/true)
2878
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002879dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2880dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002881AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002882 AC_CHECK_LIB(resolv, inet_aton)
2883)
2884
Christian Heimesd0764e22007-12-04 15:00:33 +00002885# On Tru64, chflags seems to be present, but calling it will
2886# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002887AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Ned Deily3eb67d52011-06-28 00:00:28 -07002888AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002889#include <sys/stat.h>
2890#include <unistd.h>
2891int main(int argc, char*argv[])
2892{
2893 if(chflags(argv[0], 0) != 0)
2894 return 1;
2895 return 0;
2896}
Ned Deily3eb67d52011-06-28 00:00:28 -07002897]])],
Matthias Kloseb159a552010-04-25 21:00:44 +00002898[ac_cv_have_chflags=yes],
2899[ac_cv_have_chflags=no],
2900[ac_cv_have_chflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002901])
2902if test "$ac_cv_have_chflags" = cross ; then
2903 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2904fi
2905if test "$ac_cv_have_chflags" = yes ; then
Ned Deily3eb67d52011-06-28 00:00:28 -07002906 AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the 'chflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002907fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002908
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002909AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Ned Deily3eb67d52011-06-28 00:00:28 -07002910AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002911#include <sys/stat.h>
2912#include <unistd.h>
2913int main(int argc, char*argv[])
2914{
2915 if(lchflags(argv[0], 0) != 0)
2916 return 1;
2917 return 0;
2918}
Ned Deily3eb67d52011-06-28 00:00:28 -07002919]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002920])
2921if test "$ac_cv_have_lchflags" = cross ; then
2922 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2923fi
2924if test "$ac_cv_have_lchflags" = yes ; then
Ned Deily3eb67d52011-06-28 00:00:28 -07002925 AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the 'lchflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002926fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002927
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002928dnl Check if system zlib has *Copy() functions
2929dnl
2930dnl On MacOSX the linker will search for dylibs on the entire linker path
2931dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2932dnl to revert to a more traditional unix behaviour and make it possible to
2933dnl override the system libz with a local static library of libz. Temporarily
2934dnl add that flag to our CFLAGS as well to ensure that we check the version
2935dnl of libz that will be used by setup.py.
2936dnl The -L/usr/local/lib is needed as wel to get the same compilation
2937dnl environment as setup.py (and leaving it out can cause configure to use the
2938dnl wrong version of the library)
2939case $ac_sys_system/$ac_sys_release in
2940Darwin/*)
2941 _CUR_CFLAGS="${CFLAGS}"
2942 _CUR_LDFLAGS="${LDFLAGS}"
2943 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2944 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2945 ;;
2946esac
2947
Matthias Klosec80c93f2010-04-24 17:04:35 +00002948AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, [Define if the zlib library has inflateCopy]))
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002949
2950case $ac_sys_system/$ac_sys_release in
2951Darwin/*)
2952 CFLAGS="${_CUR_CFLAGS}"
2953 LDFLAGS="${_CUR_LDFLAGS}"
2954 ;;
2955esac
2956
Martin v. Löwise9416172003-05-03 10:12:45 +00002957AC_MSG_CHECKING(for hstrerror)
Matthias Kloseb159a552010-04-25 21:00:44 +00002958AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwise9416172003-05-03 10:12:45 +00002959#include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002960]], [[void* p = hstrerror; hstrerror(0)]])],
2961 [AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2962 AC_MSG_RESULT(yes)],
2963 [AC_MSG_RESULT(no)
2964])
Martin v. Löwise9416172003-05-03 10:12:45 +00002965
2966AC_MSG_CHECKING(for inet_aton)
Matthias Kloseb159a552010-04-25 21:00:44 +00002967AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis86d66262006-02-17 08:40:11 +00002968#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002969#include <sys/socket.h>
2970#include <netinet/in.h>
2971#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002972]], [[void* p = inet_aton;inet_aton(0,0)]])],
2973 [AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2974 AC_MSG_RESULT(yes)],
2975 [AC_MSG_RESULT(no)
2976])
Martin v. Löwise9416172003-05-03 10:12:45 +00002977
2978AC_MSG_CHECKING(for inet_pton)
Matthias Kloseb159a552010-04-25 21:00:44 +00002979AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002980#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002981#include <sys/socket.h>
2982#include <netinet/in.h>
2983#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002984]], [[void* p = inet_pton]])],
2985 [AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2986 AC_MSG_RESULT(yes)],
2987 [AC_MSG_RESULT(no)
2988])
Martin v. Löwise9416172003-05-03 10:12:45 +00002989
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002990# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002991AC_MSG_CHECKING(for setgroups)
Matthias Kloseb159a552010-04-25 21:00:44 +00002992AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002993#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002994#ifdef HAVE_GRP_H
2995#include <grp.h>
2996#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00002997]], [[void* p = setgroups]])],
2998 [AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2999 AC_MSG_RESULT(yes)],
3000 [AC_MSG_RESULT(no)
3001])
Martin v. Löwisd5843682002-11-21 20:41:28 +00003002
Fred Drake8cef4cf2000-06-28 16:40:38 +00003003# check for openpty and forkpty
3004
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00003005AC_CHECK_FUNCS(openpty,,
3006 AC_CHECK_LIB(util,openpty,
3007 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
3008 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
3009 )
3010)
3011AC_CHECK_FUNCS(forkpty,,
3012 AC_CHECK_LIB(util,forkpty,
3013 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
3014 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
3015 )
3016)
Fred Drake8cef4cf2000-06-28 16:40:38 +00003017
Christian Heimesb186d002008-03-18 15:15:01 +00003018# Stuff for expat.
3019AC_CHECK_FUNCS(memmove)
3020
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00003021# check for long file support functions
3022AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
3023
Christian Heimesb186d002008-03-18 15:15:01 +00003024AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003025AC_CHECK_FUNCS(getpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00003026 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[getpgrp(0);]])],
3027 [AC_DEFINE(GETPGRP_HAVE_ARG, 1, [Define if getpgrp() must be called as getpgrp(0).])],
3028 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003029)
Jack Jansen150753c2003-03-29 22:07:47 +00003030AC_CHECK_FUNCS(setpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00003031 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[setpgrp(0,0);]])],
3032 [AC_DEFINE(SETPGRP_HAVE_ARG, 1, [Define if setpgrp() must be called as setpgrp(0, 0).])],
3033 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003034)
3035AC_CHECK_FUNCS(gettimeofday,
Matthias Kloseb159a552010-04-25 21:00:44 +00003036 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>]],
3037 [[gettimeofday((struct timeval*)0,(struct timezone*)0);]])],
3038 [],
3039 [AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
3040 [Define if gettimeofday() does not have second (timezone) argument
3041 This is the case on Motorola V4 (R40V4.2)])
3042 ])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003043)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003044
Victor Stinnere0be4232011-10-25 13:06:09 +02003045AC_CHECK_FUNCS(clock_gettime, [], [
3046 AC_CHECK_LIB(rt, clock_gettime, [
3047 AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
3048 AC_DEFINE(TIMEMODULE_LIB, [rt],
3049 [Library needed by timemodule.c: librt may be needed for clock_gettime()])
3050 ])
3051])
3052
3053AC_CHECK_FUNCS(clock_getres, [], [
3054 AC_CHECK_LIB(rt, clock_getres, [
3055 AC_DEFINE(HAVE_CLOCK_GETRES, 1)
3056 ])
3057])
3058
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003059AC_MSG_CHECKING(for major, minor, and makedev)
Matthias Kloseb159a552010-04-25 21:00:44 +00003060AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Neal Norwitz6eb37f02003-02-23 23:28:15 +00003061#if defined(MAJOR_IN_MKDEV)
3062#include <sys/mkdev.h>
3063#elif defined(MAJOR_IN_SYSMACROS)
3064#include <sys/sysmacros.h>
3065#else
3066#include <sys/types.h>
3067#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003068]], [[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003069 makedev(major(0),minor(0));
Matthias Kloseb159a552010-04-25 21:00:44 +00003070]])],[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003071 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
3072 [Define to 1 if you have the device macros.])
3073 AC_MSG_RESULT(yes)
3074],[
3075 AC_MSG_RESULT(no)
3076])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003077
3078# On OSF/1 V5.1, getaddrinfo is available, but a define
3079# for [no]getaddrinfo in netdb.h.
3080AC_MSG_CHECKING(for getaddrinfo)
Matthias Kloseb159a552010-04-25 21:00:44 +00003081AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00003082#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003083#include <sys/socket.h>
3084#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00003085#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003086]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])],
3087[have_getaddrinfo=yes],
3088[have_getaddrinfo=no])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003089AC_MSG_RESULT($have_getaddrinfo)
3090if test $have_getaddrinfo = yes
3091then
3092 AC_MSG_CHECKING(getaddrinfo bug)
3093 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00003094 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003095#include <sys/types.h>
3096#include <netdb.h>
3097#include <string.h>
3098#include <sys/socket.h>
3099#include <netinet/in.h>
3100
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003101int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003102{
3103 int passive, gaierr, inet4 = 0, inet6 = 0;
3104 struct addrinfo hints, *ai, *aitop;
3105 char straddr[INET6_ADDRSTRLEN], strport[16];
3106
3107 for (passive = 0; passive <= 1; passive++) {
3108 memset(&hints, 0, sizeof(hints));
3109 hints.ai_family = AF_UNSPEC;
3110 hints.ai_flags = passive ? AI_PASSIVE : 0;
3111 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00003112 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003113 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
3114 (void)gai_strerror(gaierr);
3115 goto bad;
3116 }
3117 for (ai = aitop; ai; ai = ai->ai_next) {
3118 if (ai->ai_addr == NULL ||
3119 ai->ai_addrlen == 0 ||
3120 getnameinfo(ai->ai_addr, ai->ai_addrlen,
3121 straddr, sizeof(straddr), strport, sizeof(strport),
3122 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
3123 goto bad;
3124 }
3125 switch (ai->ai_family) {
3126 case AF_INET:
3127 if (strcmp(strport, "54321") != 0) {
3128 goto bad;
3129 }
3130 if (passive) {
3131 if (strcmp(straddr, "0.0.0.0") != 0) {
3132 goto bad;
3133 }
3134 } else {
3135 if (strcmp(straddr, "127.0.0.1") != 0) {
3136 goto bad;
3137 }
3138 }
3139 inet4++;
3140 break;
3141 case AF_INET6:
3142 if (strcmp(strport, "54321") != 0) {
3143 goto bad;
3144 }
3145 if (passive) {
3146 if (strcmp(straddr, "::") != 0) {
3147 goto bad;
3148 }
3149 } else {
3150 if (strcmp(straddr, "::1") != 0) {
3151 goto bad;
3152 }
3153 }
3154 inet6++;
3155 break;
3156 case AF_UNSPEC:
3157 goto bad;
3158 break;
3159 default:
3160 /* another family support? */
3161 break;
3162 }
3163 }
3164 }
3165
3166 if (!(inet4 == 0 || inet4 == 2))
3167 goto bad;
3168 if (!(inet6 == 0 || inet6 == 2))
3169 goto bad;
3170
3171 if (aitop)
3172 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003173 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003174
3175 bad:
3176 if (aitop)
3177 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003178 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003179}
Matthias Kloseb159a552010-04-25 21:00:44 +00003180]]])],
3181[ac_cv_buggy_getaddrinfo=no],
3182[ac_cv_buggy_getaddrinfo=yes],
Matthias Klose96350132012-03-15 20:42:23 +01003183[
3184if test "${enable_ipv6+set}" = set; then
3185 ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6"
3186else
3187 ac_cv_buggy_getaddrinfo=yes
3188fi]))
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003189fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003190
Benjamin Petersond4694ed2010-11-01 01:44:30 +00003191AC_MSG_RESULT($ac_cv_buggy_getaddrinfo)
3192
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02003193if test $have_getaddrinfo = no || test "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003194then
3195 if test $ipv6 = yes
3196 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003197 echo 'Fatal: You must get working getaddrinfo() function.'
3198 echo ' or you can specify "--disable-ipv6"'.
3199 exit 1
3200 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003201else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003202 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003203fi
Benjamin Petersond4694ed2010-11-01 01:44:30 +00003204
Thomas Woutersb0db85a2001-08-08 10:39:03 +00003205AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003206
Guido van Rossum627b2d71993-12-24 10:39:16 +00003207# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003208AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00003209AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003210AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00003211AC_CHECK_MEMBERS([struct stat.st_rdev])
3212AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00003213AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003214AC_CHECK_MEMBERS([struct stat.st_gen])
3215AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00003216AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003217
3218AC_MSG_CHECKING(for time.h that defines altzone)
Matthias Kloseb159a552010-04-25 21:00:44 +00003219AC_CACHE_VAL(ac_cv_header_time_altzone,[
3220 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[return altzone;]])],
3221 [ac_cv_header_time_altzone=yes],
3222 [ac_cv_header_time_altzone=no])
3223 ])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003224AC_MSG_RESULT($ac_cv_header_time_altzone)
3225if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003226 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003227fi
3228
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003229was_it_defined=no
3230AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Matthias Kloseb159a552010-04-25 21:00:44 +00003231AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003232#include <sys/types.h>
3233#include <sys/select.h>
3234#include <sys/time.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003235]], [[;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003236 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
3237 [Define if you can safely include both <sys/select.h> and <sys/time.h>
3238 (which you can't on SCO ODT 3.0).])
3239 was_it_defined=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003240],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003241AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003242
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003243AC_MSG_CHECKING(for addrinfo)
3244AC_CACHE_VAL(ac_cv_struct_addrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00003245AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[struct addrinfo a]])],
3246 [ac_cv_struct_addrinfo=yes],
3247 [ac_cv_struct_addrinfo=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003248AC_MSG_RESULT($ac_cv_struct_addrinfo)
3249if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003250 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003251fi
3252
3253AC_MSG_CHECKING(for sockaddr_storage)
3254AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
Matthias Kloseb159a552010-04-25 21:00:44 +00003255AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003256# include <sys/types.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003257# include <sys/socket.h>]], [[struct sockaddr_storage s]])],
3258 [ac_cv_struct_sockaddr_storage=yes],
3259 [ac_cv_struct_sockaddr_storage=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003260AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3261if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003262 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003263fi
3264
Guido van Rossum627b2d71993-12-24 10:39:16 +00003265# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003266
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003267AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003268AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003269
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003270works=no
3271AC_MSG_CHECKING(for working volatile)
Matthias Kloseb159a552010-04-25 21:00:44 +00003272AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[volatile int x; x = 0;]])],
3273 [works=yes],
3274 [AC_DEFINE(volatile, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003275)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003276AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003277
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003278works=no
3279AC_MSG_CHECKING(for working signed char)
Matthias Kloseb159a552010-04-25 21:00:44 +00003280AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char c;]])],
3281 [works=yes],
3282 [AC_DEFINE(signed, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003283)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003284AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003285
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003286have_prototypes=no
3287AC_MSG_CHECKING(for prototypes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003288AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo(int x) { return 0; }]], [[return foo(10);]])],
3289 [AC_DEFINE(HAVE_PROTOTYPES, 1,
3290 [Define if your compiler supports function prototype])
3291 have_prototypes=yes],
3292 []
3293)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003294AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003295
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003296works=no
3297AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Matthias Kloseb159a552010-04-25 21:00:44 +00003298AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003299#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003300int foo(int x, ...) {
3301 va_list va;
3302 va_start(va, x);
3303 va_arg(va, int);
3304 va_arg(va, char *);
3305 va_arg(va, double);
3306 return 0;
3307}
Matthias Kloseb159a552010-04-25 21:00:44 +00003308]], [[return foo(10, "", 3.14);]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003309 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3310 [Define if your compiler supports variable length function prototypes
3311 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3312 works=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003313],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003314AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003315
Dave Cole331708b2004-08-09 04:51:41 +00003316# check for socketpair
3317AC_MSG_CHECKING(for socketpair)
Matthias Kloseb159a552010-04-25 21:00:44 +00003318AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Dave Cole331708b2004-08-09 04:51:41 +00003319#include <sys/types.h>
3320#include <sys/socket.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003321]], [[void *x=socketpair]])],
3322 [AC_DEFINE(HAVE_SOCKETPAIR, 1, [Define if you have the 'socketpair' function.])
3323 AC_MSG_RESULT(yes)],
3324 [AC_MSG_RESULT(no)]
Dave Cole331708b2004-08-09 04:51:41 +00003325)
3326
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003327# check if sockaddr has sa_len member
3328AC_MSG_CHECKING(if sockaddr has sa_len member)
Matthias Kloseb159a552010-04-25 21:00:44 +00003329AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
3330#include <sys/socket.h>]], [[struct sockaddr x;
3331x.sa_len = 0;]])],
3332 [AC_MSG_RESULT(yes)
3333 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member])],
3334 [AC_MSG_RESULT(no)]
3335)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003336
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003337va_list_is_array=no
3338AC_MSG_CHECKING(whether va_list is an array)
Matthias Kloseb159a552010-04-25 21:00:44 +00003339AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003340#ifdef HAVE_STDARG_PROTOTYPES
3341#include <stdarg.h>
3342#else
3343#include <varargs.h>
3344#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003345]], [[va_list list1, list2; list1 = list2;]])],[],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003346 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3347 va_list_is_array=yes
3348])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003349AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003350
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003351# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003352AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3353 [Define this if you have some version of gethostbyname_r()])
3354
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003355AC_CHECK_FUNC(gethostbyname_r, [
3356 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3357 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3358 OLD_CFLAGS=$CFLAGS
3359 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003360 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003361# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003362 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003363 char *name;
3364 struct hostent *he, *res;
3365 char buffer[2048];
3366 int buflen = 2048;
3367 int h_errnop;
3368
3369 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
Matthias Kloseb159a552010-04-25 21:00:44 +00003370 ]])],[
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003371 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003372 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3373 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003374 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003375 ],[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003376 AC_MSG_RESULT(no)
3377 AC_MSG_CHECKING([gethostbyname_r with 5 args])
Matthias Kloseb159a552010-04-25 21:00:44 +00003378 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003379# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003380 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003381 char *name;
3382 struct hostent *he;
Matthias Kloseb159a552010-04-25 21:00:44 +00003383 char buffer[2048];
3384 int buflen = 2048;
3385 int h_errnop;
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003386
Matthias Kloseb159a552010-04-25 21:00:44 +00003387 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3388 ]])],
3389 [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003390 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Matthias Kloseb159a552010-04-25 21:00:44 +00003391 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3392 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003393 AC_MSG_RESULT(yes)
3394 ], [
3395 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00003396 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3397 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3398# include <netdb.h>
3399 ]], [[
3400 char *name;
3401 struct hostent *he;
3402 struct hostent_data data;
3403
3404 (void) gethostbyname_r(name, he, &data);
3405 ]])],
3406 [
3407 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3408 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3409 [Define this if you have the 3-arg version of gethostbyname_r().])
3410 AC_MSG_RESULT(yes)
3411 ], [
3412 AC_MSG_RESULT(no)
3413 ])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003414 ])
3415 ])
3416 CFLAGS=$OLD_CFLAGS
3417], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003418 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003419])
3420AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3421AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3422AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003423AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003424AC_SUBST(HAVE_GETHOSTBYNAME)
3425
Guido van Rossum627b2d71993-12-24 10:39:16 +00003426# checks for system services
3427# (none yet)
3428
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003429# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003430AC_CHECK_FUNC(__fpu_control,
3431 [],
3432 [AC_CHECK_LIB(ieee, __fpu_control)
3433])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003434
Guido van Rossum93274221997-05-09 02:42:00 +00003435# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003436AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003437AC_ARG_WITH(fpectl,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003438 AS_HELP_STRING([--with-fpectl], [enable SIGFPE catching]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003439[
Guido van Rossum93274221997-05-09 02:42:00 +00003440if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003441then
3442 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3443 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3444 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003445else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003446fi],
3447[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003448
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003449# check for --with-libm=...
3450AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003451case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003452Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003453*) LIBM=-lm
3454esac
Guido van Rossum93274221997-05-09 02:42:00 +00003455AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003456AC_ARG_WITH(libm,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003457 AS_HELP_STRING([--with-libm=STRING], [math library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003458[
Guido van Rossum93274221997-05-09 02:42:00 +00003459if test "$withval" = no
3460then LIBM=
3461 AC_MSG_RESULT(force LIBM empty)
3462elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003463then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003464 AC_MSG_RESULT(set LIBM="$withval")
3465else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003466fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003467[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003468
3469# check for --with-libc=...
3470AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003471AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003472AC_ARG_WITH(libc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003473 AS_HELP_STRING([--with-libc=STRING], [C library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003474[
Guido van Rossum93274221997-05-09 02:42:00 +00003475if test "$withval" = no
3476then LIBC=
3477 AC_MSG_RESULT(force LIBC empty)
3478elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003479then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003480 AC_MSG_RESULT(set LIBC="$withval")
3481else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003482fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003483[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003484
Stefan Krah1919b7e2012-03-21 18:25:23 +01003485# **************************************
3486# * Check for gcc x64 inline assembler *
3487# **************************************
3488
3489AC_MSG_CHECKING(for x64 gcc inline assembler)
3490AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
3491 __asm__ __volatile__ ("movq %rcx, %rax");
3492]])],[have_gcc_asm_for_x64=yes],[have_gcc_asm_for_x64=no])
3493AC_MSG_RESULT($have_gcc_asm_for_x64)
3494if test "$have_gcc_asm_for_x64" = yes
3495then
3496 AC_DEFINE(HAVE_GCC_ASM_FOR_X64, 1,
3497 [Define if we can use x64 gcc inline assembler])
3498fi
3499
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003500# **************************************************
3501# * Check for various properties of floating point *
3502# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003503
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003504AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3505AC_CACHE_VAL(ac_cv_little_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003506AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003507#include <string.h>
3508int main() {
3509 double x = 9006104071832581.0;
3510 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3511 return 0;
3512 else
3513 return 1;
3514}
Matthias Kloseb159a552010-04-25 21:00:44 +00003515]])],
3516[ac_cv_little_endian_double=yes],
3517[ac_cv_little_endian_double=no],
3518[ac_cv_little_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003519AC_MSG_RESULT($ac_cv_little_endian_double)
3520if test "$ac_cv_little_endian_double" = yes
3521then
3522 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3523 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3524 with the least significant byte first])
3525fi
3526
3527AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3528AC_CACHE_VAL(ac_cv_big_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003529AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003530#include <string.h>
3531int main() {
3532 double x = 9006104071832581.0;
3533 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3534 return 0;
3535 else
3536 return 1;
3537}
Matthias Kloseb159a552010-04-25 21:00:44 +00003538]])],
3539[ac_cv_big_endian_double=yes],
3540[ac_cv_big_endian_double=no],
3541[ac_cv_big_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003542AC_MSG_RESULT($ac_cv_big_endian_double)
3543if test "$ac_cv_big_endian_double" = yes
3544then
3545 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3546 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3547 with the most significant byte first])
3548fi
3549
3550# Some ARM platforms use a mixed-endian representation for doubles.
3551# While Python doesn't currently have full support for these platforms
3552# (see e.g., issue 1762561), we can at least make sure that float <-> string
3553# conversions work.
3554AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3555AC_CACHE_VAL(ac_cv_mixed_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003556AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003557#include <string.h>
3558int main() {
3559 double x = 9006104071832581.0;
3560 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3561 return 0;
3562 else
3563 return 1;
3564}
Matthias Kloseb159a552010-04-25 21:00:44 +00003565]])],
3566[ac_cv_mixed_endian_double=yes],
3567[ac_cv_mixed_endian_double=no],
3568[ac_cv_mixed_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003569AC_MSG_RESULT($ac_cv_mixed_endian_double)
3570if test "$ac_cv_mixed_endian_double" = yes
3571then
3572 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3573 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3574 in ARM mixed-endian order (byte order 45670123)])
3575fi
3576
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003577# The short float repr introduced in Python 3.1 requires the
3578# correctly-rounded string <-> double conversion functions from
3579# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3580# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003581# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003582# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003583
3584# This inline assembler syntax may also work for suncc and icc,
3585# so we try it on all platforms.
3586
3587AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
Matthias Kloseb159a552010-04-25 21:00:44 +00003588AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003589 unsigned short cw;
3590 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3591 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
Matthias Kloseb159a552010-04-25 21:00:44 +00003592]])],[have_gcc_asm_for_x87=yes],[have_gcc_asm_for_x87=no])
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003593AC_MSG_RESULT($have_gcc_asm_for_x87)
3594if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003595then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003596 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3597 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003598fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003599
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003600# Detect whether system arithmetic is subject to x87-style double
3601# rounding issues. The result of this test has little meaning on non
3602# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3603# mode is round-to-nearest and double rounding issues are present, and
3604# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3605AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003606# $BASECFLAGS may affect the result
3607ac_save_cc="$CC"
3608CC="$CC $BASECFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003609AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003610#include <stdlib.h>
3611#include <math.h>
3612int main() {
3613 volatile double x, y, z;
3614 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3615 x = 0.99999999999999989; /* 1-2**-53 */
3616 y = 1./x;
3617 if (y != 1.)
3618 exit(0);
3619 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3620 x = 1e16;
3621 y = 2.99999;
3622 z = x + y;
3623 if (z != 1e16+4.)
3624 exit(0);
3625 /* both tests show evidence of double rounding */
3626 exit(1);
3627}
Matthias Kloseb159a552010-04-25 21:00:44 +00003628]])],
3629[ac_cv_x87_double_rounding=no],
3630[ac_cv_x87_double_rounding=yes],
3631[ac_cv_x87_double_rounding=no])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003632CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003633AC_MSG_RESULT($ac_cv_x87_double_rounding)
3634if test "$ac_cv_x87_double_rounding" = yes
3635then
3636 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3637 [Define if arithmetic is subject to x87-style double rounding issue])
3638fi
3639
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003640# ************************************
3641# * Check for mathematical functions *
3642# ************************************
3643
3644LIBS_SAVE=$LIBS
3645LIBS="$LIBS $LIBM"
3646
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003647AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
Victor Stinner8f9f8d62011-05-09 12:45:41 +02003648AC_CHECK_FUNCS([hypot lgamma log1p log2 round tgamma])
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003649AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
3650
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003651# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3652# -0. on some architectures.
3653AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3654AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003655AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003656#include <math.h>
3657#include <stdlib.h>
3658int main() {
3659 /* return 0 if either negative zeros don't exist
3660 on this platform or if negative zeros exist
3661 and tanh(-0.) == -0. */
3662 if (atan2(0., -1.) == atan2(-0., -1.) ||
3663 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3664 else exit(1);
3665}
Matthias Kloseb159a552010-04-25 21:00:44 +00003666]])],
3667[ac_cv_tanh_preserves_zero_sign=yes],
3668[ac_cv_tanh_preserves_zero_sign=no],
3669[ac_cv_tanh_preserves_zero_sign=no])])
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003670AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3671if test "$ac_cv_tanh_preserves_zero_sign" = yes
3672then
3673 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3674 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3675fi
3676
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003677if test "$ac_cv_func_log1p" = yes
3678then
3679 # On some versions of AIX, log1p(-0.) returns 0. instead of
3680 # -0. See issue #9920.
3681 AC_MSG_CHECKING(whether log1p drops the sign of negative zero)
3682 AC_CACHE_VAL(ac_cv_log1p_drops_zero_sign, [
3683 AC_RUN_IFELSE([AC_LANG_SOURCE([[
3684 #include <math.h>
3685 #include <stdlib.h>
3686 int main() {
3687 /* Fail if the signs of log1p(-0.) and -0. can be
3688 distinguished. */
3689 if (atan2(log1p(-0.), -1.) == atan2(-0., -1.))
3690 return 0;
3691 else
3692 return 1;
3693 }
3694 ]])],
3695 [ac_cv_log1p_drops_zero_sign=no],
3696 [ac_cv_log1p_drops_zero_sign=yes],
3697 [ac_cv_log1p_drops_zero_sign=no])])
3698 AC_MSG_RESULT($ac_cv_log1p_drops_zero_sign)
3699fi
3700if test "$ac_cv_log1p_drops_zero_sign" = yes
3701then
3702 AC_DEFINE(LOG1P_DROPS_ZERO_SIGN, 1,
3703 [Define if log1p(-0.) is 0. rather than -0.])
3704fi
Christian Heimes99170a52007-12-19 02:07:34 +00003705
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003706LIBS=$LIBS_SAVE
3707
Mark Dickinsona614f042009-11-28 12:48:43 +00003708# For multiprocessing module, check that sem_open
3709# actually works. For FreeBSD versions <= 7.2,
3710# the kernel module that provides POSIX semaphores
3711# isn't loaded by default, so an attempt to call
3712# sem_open results in a 'Signal 12' error.
3713AC_MSG_CHECKING(whether POSIX semaphores are enabled)
3714AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
Matthias Kloseb159a552010-04-25 21:00:44 +00003715AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsona614f042009-11-28 12:48:43 +00003716#include <unistd.h>
3717#include <fcntl.h>
3718#include <stdio.h>
3719#include <semaphore.h>
3720#include <sys/stat.h>
3721
3722int main(void) {
3723 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3724 if (a == SEM_FAILED) {
3725 perror("sem_open");
3726 return 1;
3727 }
3728 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003729 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00003730 return 0;
3731}
Matthias Kloseb159a552010-04-25 21:00:44 +00003732]])],
3733[ac_cv_posix_semaphores_enabled=yes],
3734[ac_cv_posix_semaphores_enabled=no],
3735[ac_cv_posix_semaphores_enabled=yes])
Mark Dickinsona614f042009-11-28 12:48:43 +00003736)
3737AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
3738if test $ac_cv_posix_semaphores_enabled = no
3739then
3740 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
3741 [Define if POSIX semaphores aren't enabled on your system])
3742fi
3743
Mark Dickinson10683072009-04-18 21:18:19 +00003744# Multiprocessing check for broken sem_getvalue
3745AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003746AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Matthias Kloseb159a552010-04-25 21:00:44 +00003747AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson10683072009-04-18 21:18:19 +00003748#include <unistd.h>
3749#include <fcntl.h>
3750#include <stdio.h>
3751#include <semaphore.h>
3752#include <sys/stat.h>
3753
3754int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00003755 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00003756 int count;
3757 int res;
3758 if(a==SEM_FAILED){
3759 perror("sem_open");
3760 return 1;
3761
3762 }
3763 res = sem_getvalue(a, &count);
3764 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003765 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00003766 return res==-1 ? 1 : 0;
3767}
Matthias Kloseb159a552010-04-25 21:00:44 +00003768]])],
3769[ac_cv_broken_sem_getvalue=no],
3770[ac_cv_broken_sem_getvalue=yes],
3771[ac_cv_broken_sem_getvalue=yes])
Mark Dickinson10683072009-04-18 21:18:19 +00003772)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003773AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3774if test $ac_cv_broken_sem_getvalue = yes
3775then
3776 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3777 [define to 1 if your sem_getvalue is broken.])
3778fi
Mark Dickinson10683072009-04-18 21:18:19 +00003779
Mark Dickinsonbd792642009-03-18 20:06:12 +00003780# determine what size digit to use for Python's longs
3781AC_MSG_CHECKING([digit size for Python's longs])
3782AC_ARG_ENABLE(big-digits,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003783AS_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
Mark Dickinsonbd792642009-03-18 20:06:12 +00003784[case $enable_big_digits in
3785yes)
3786 enable_big_digits=30 ;;
3787no)
3788 enable_big_digits=15 ;;
3789[15|30])
3790 ;;
3791*)
3792 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3793esac
3794AC_MSG_RESULT($enable_big_digits)
3795AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3796],
3797[AC_MSG_RESULT(no value specified)])
3798
Guido van Rossumef2255b2000-03-10 22:30:29 +00003799# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003800AC_CHECK_HEADER(wchar.h, [
3801 AC_DEFINE(HAVE_WCHAR_H, 1,
3802 [Define if the compiler provides a wchar.h header file.])
3803 wchar_h="yes"
3804],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003805wchar_h="no"
3806)
3807
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003808# determine wchar_t size
3809if test "$wchar_h" = yes
3810then
Guido van Rossum67b26592001-10-20 14:21:45 +00003811 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003812fi
3813
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003814AC_MSG_CHECKING(for UCS-4 tcl)
3815have_ucs4_tcl=no
Matthias Kloseb159a552010-04-25 21:00:44 +00003816AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003817#include <tcl.h>
3818#if TCL_UTF_MAX != 6
3819# error "NOT UCS4_TCL"
Matthias Kloseb159a552010-04-25 21:00:44 +00003820#endif]], [[]])],[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003821 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3822 have_ucs4_tcl=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003823],[])
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003824AC_MSG_RESULT($have_ucs4_tcl)
3825
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003826# check whether wchar_t is signed or not
3827if test "$wchar_h" = yes
3828then
3829 # check whether wchar_t is signed or not
3830 AC_MSG_CHECKING(whether wchar_t is signed)
3831 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003832 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003833 #include <wchar.h>
3834 int main()
3835 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003836 /* Success: exit code 0 */
3837 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003838 }
Matthias Kloseb159a552010-04-25 21:00:44 +00003839 ]])],
3840 [ac_cv_wchar_t_signed=yes],
3841 [ac_cv_wchar_t_signed=no],
3842 [ac_cv_wchar_t_signed=yes])])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003843 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3844fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003845
Georg Brandl52d168a2008-01-07 18:10:24 +00003846# wchar_t is only usable if it maps to an unsigned type
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02003847if test "$ac_cv_sizeof_wchar_t" -ge 2 \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003848 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003849then
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02003850 HAVE_USABLE_WCHAR_T="yes"
Georg Brandl52d168a2008-01-07 18:10:24 +00003851 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3852 [Define if you have a useable wchar_t type defined in wchar.h; useable
3853 means wchar_t must be an unsigned type with at least 16 bits. (see
3854 Include/unicodeobject.h).])
Georg Brandl52d168a2008-01-07 18:10:24 +00003855else
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02003856 HAVE_USABLE_WCHAR_T="no usable wchar_t found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003857fi
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02003858AC_MSG_RESULT($HAVE_USABLE_WCHAR_T)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003859
3860# check for endianness
3861AC_C_BIGENDIAN
3862
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003863# ABI version string for Python extension modules. This appears between the
3864# periods in shared library file names, e.g. foo.<SOABI>.so. It is calculated
3865# from the following attributes which affect the ABI of this Python build (in
3866# this order):
3867#
3868# * The Python implementation (always 'cpython-' for us)
3869# * The major and minor version numbers
3870# * --with-pydebug (adds a 'd')
3871# * --with-pymalloc (adds a 'm')
3872# * --with-wide-unicode (adds a 'u')
3873#
3874# Thus for example, Python 3.2 built with wide unicode, pydebug, and pymalloc,
Georg Brandlde7d8342010-09-03 22:19:07 +00003875# would get a shared library ABI version tag of 'cpython-32dmu' and shared
3876# libraries would be named 'foo.cpython-32dmu.so'.
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003877AC_SUBST(SOABI)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00003878AC_MSG_CHECKING(ABIFLAGS)
3879AC_MSG_RESULT($ABIFLAGS)
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003880AC_MSG_CHECKING(SOABI)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00003881SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003882AC_MSG_RESULT($SOABI)
3883
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00003884AC_MSG_CHECKING(LDVERSION)
3885LDVERSION='$(VERSION)$(ABIFLAGS)'
3886AC_MSG_RESULT($LDVERSION)
3887
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003888# SO is the extension of shared libraries `(including the dot!)
3889# -- usually .so, .sl on HP-UX, .dll on Cygwin
3890AC_MSG_CHECKING(SO)
3891if test -z "$SO"
3892then
3893 case $ac_sys_system in
3894 hp*|HP*)
3895 case `uname -m` in
3896 ia64) SO=.so;;
3897 *) SO=.sl;;
3898 esac
3899 ;;
3900 CYGWIN*) SO=.dll;;
Matthias Klose3fbfea12010-10-14 15:24:22 +00003901 Linux*|GNU*)
3902 SO=.${SOABI}.so;;
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003903 *) SO=.so;;
3904 esac
3905else
3906 # this might also be a termcap variable, see #610332
Georg Brandlde7d8342010-09-03 22:19:07 +00003907 echo
3908 echo '====================================================================='
3909 echo '+ +'
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003910 echo '+ WARNING: You have set SO in your environment. +'
Georg Brandlde7d8342010-09-03 22:19:07 +00003911 echo '+ Do you really mean to change the extension for shared libraries? +'
3912 echo '+ Continuing in 10 seconds to let you to ponder. +'
3913 echo '+ +'
3914 echo '====================================================================='
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003915 sleep 10
3916fi
3917AC_MSG_RESULT($SO)
3918
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003919# Check whether right shifting a negative integer extends the sign bit
3920# or fills with zeros (like the Cray J90, according to Tim Peters).
3921AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003922AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003923AC_RUN_IFELSE([AC_LANG_SOURCE([[
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003924int main()
3925{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003926 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003927}
Matthias Kloseb159a552010-04-25 21:00:44 +00003928]])],
3929[ac_cv_rshift_extends_sign=yes],
3930[ac_cv_rshift_extends_sign=no],
3931[ac_cv_rshift_extends_sign=yes])])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003932AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3933if test "$ac_cv_rshift_extends_sign" = no
3934then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003935 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3936 [Define if i>>j for signed int i does not extend the sign bit
3937 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003938fi
3939
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003940# check for getc_unlocked and related locking functions
3941AC_MSG_CHECKING(for getc_unlocked() and friends)
3942AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003943AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003944 FILE *f = fopen("/dev/null", "r");
3945 flockfile(f);
3946 getc_unlocked(f);
3947 funlockfile(f);
Matthias Kloseb159a552010-04-25 21:00:44 +00003948]])],[ac_cv_have_getc_unlocked=yes],[ac_cv_have_getc_unlocked=no])])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003949AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3950if test "$ac_cv_have_getc_unlocked" = yes
3951then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003952 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3953 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003954fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003955
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003956# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003957# save the value of LIBS so we don't actually link Python with readline
3958LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003959
3960# On some systems we need to link readline to a termcap compatible
3961# library. NOTE: Keep the precedence of listed libraries synchronised
3962# with setup.py.
3963py_cv_lib_readline=no
3964AC_MSG_CHECKING([how to link readline libs])
doko@ubuntu.comf2967c72012-06-30 17:32:23 +02003965for py_libtermcap in "" tinfo ncursesw ncurses curses termcap; do
Gregory P. Smith18820942008-09-07 06:24:49 +00003966 if test -z "$py_libtermcap"; then
3967 READLINE_LIBS="-lreadline"
3968 else
3969 READLINE_LIBS="-lreadline -l$py_libtermcap"
3970 fi
3971 LIBS="$READLINE_LIBS $LIBS_no_readline"
3972 AC_LINK_IFELSE(
3973 [AC_LANG_CALL([],[readline])],
3974 [py_cv_lib_readline=yes])
3975 if test $py_cv_lib_readline = yes; then
3976 break
3977 fi
3978done
3979# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3980#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003981if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003982 AC_MSG_RESULT([none])
3983else
3984 AC_MSG_RESULT([$READLINE_LIBS])
3985 AC_DEFINE(HAVE_LIBREADLINE, 1,
3986 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003987fi
3988
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003989# check for readline 2.1
3990AC_CHECK_LIB(readline, rl_callback_handler_install,
3991 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003992 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003993
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003994# check for readline 2.2
Matthias Kloseb159a552010-04-25 21:00:44 +00003995AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
3996 [have_readline=yes],
3997 [have_readline=no]
3998)
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003999if test $have_readline = yes
4000then
4001 AC_EGREP_HEADER([extern int rl_completion_append_character;],
4002 [readline/readline.h],
4003 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
4004 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00004005 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
4006 [readline/readline.h],
4007 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
4008 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00004009fi
4010
Martin v. Löwis0daad592001-09-30 21:09:59 +00004011# check for readline 4.0
4012AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004013 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004014 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00004015
Thomas Wouters89d996e2007-09-08 17:39:28 +00004016# also in 4.0
4017AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
4018 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004019 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00004020
Guido van Rossum353ae582001-07-10 16:45:32 +00004021# check for readline 4.2
4022AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004023 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00004024 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00004025
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004026# also in readline 4.2
Matthias Kloseb159a552010-04-25 21:00:44 +00004027AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
4028 [have_readline=yes],
4029 [have_readline=no]
4030)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00004031if test $have_readline = yes
4032then
4033 AC_EGREP_HEADER([extern int rl_catch_signals;],
4034 [readline/readline.h],
4035 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
4036 [Define if you can turn off readline's signal handling.]), )
4037fi
4038
Martin v. Löwis82bca632006-02-10 20:49:30 +00004039# End of readline checks: restore LIBS
4040LIBS=$LIBS_no_readline
4041
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004042AC_MSG_CHECKING(for broken nice())
4043AC_CACHE_VAL(ac_cv_broken_nice, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004044AC_RUN_IFELSE([AC_LANG_SOURCE([[
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004045int main()
4046{
4047 int val1 = nice(1);
4048 if (val1 != -1 && val1 == nice(2))
4049 exit(0);
4050 exit(1);
4051}
Matthias Kloseb159a552010-04-25 21:00:44 +00004052]])],
4053[ac_cv_broken_nice=yes],
4054[ac_cv_broken_nice=no],
4055[ac_cv_broken_nice=no])])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004056AC_MSG_RESULT($ac_cv_broken_nice)
4057if test "$ac_cv_broken_nice" = yes
4058then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004059 AC_DEFINE(HAVE_BROKEN_NICE, 1,
4060 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004061fi
4062
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004063AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004064AC_CACHE_VAL(ac_cv_broken_poll,
Matthias Kloseb159a552010-04-25 21:00:44 +00004065AC_RUN_IFELSE([AC_LANG_SOURCE([[
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004066#include <poll.h>
4067
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004068int main()
4069{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004070 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004071 int poll_test;
4072
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004073 close (42);
4074
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004075 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004076 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004077 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004078 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004079 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004080 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004081 return 1;
4082}
Matthias Kloseb159a552010-04-25 21:00:44 +00004083]])],
4084[ac_cv_broken_poll=yes],
4085[ac_cv_broken_poll=no],
4086[ac_cv_broken_poll=no]))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004087AC_MSG_RESULT($ac_cv_broken_poll)
4088if test "$ac_cv_broken_poll" = yes
4089then
4090 AC_DEFINE(HAVE_BROKEN_POLL, 1,
4091 [Define if poll() sets errno on invalid file descriptors.])
4092fi
4093
Brett Cannon43802422005-02-10 20:48:03 +00004094# Before we can test tzset, we need to check if struct tm has a tm_zone
4095# (which is not required by ISO C or UNIX spec) and/or if we support
4096# tzname[]
4097AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004098
Brett Cannon43802422005-02-10 20:48:03 +00004099# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004100AC_MSG_CHECKING(for working tzset())
4101AC_CACHE_VAL(ac_cv_working_tzset, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004102AC_RUN_IFELSE([AC_LANG_SOURCE([[
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004103#include <stdlib.h>
4104#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00004105#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00004106
4107#if HAVE_TZNAME
4108extern char *tzname[];
4109#endif
4110
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004111int main()
4112{
Brett Cannon18367812003-09-19 00:59:16 +00004113 /* Note that we need to ensure that not only does tzset(3)
4114 do 'something' with localtime, but it works as documented
4115 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00004116 This includes making sure that tzname is set properly if
4117 tm->tm_zone does not exist since it is the alternative way
4118 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00004119
4120 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00004121 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00004122 */
4123
Brett Cannon43802422005-02-10 20:48:03 +00004124 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00004125 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
4126
Neal Norwitz7f2588c2003-04-11 15:35:53 +00004127 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004128 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00004129 if (localtime(&groundhogday)->tm_hour != 0)
4130 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004131#if HAVE_TZNAME
4132 /* For UTC, tzname[1] is sometimes "", sometimes " " */
4133 if (strcmp(tzname[0], "UTC") ||
4134 (tzname[1][0] != 0 && tzname[1][0] != ' '))
4135 exit(1);
4136#endif
Brett Cannon18367812003-09-19 00:59:16 +00004137
Neal Norwitz7f2588c2003-04-11 15:35:53 +00004138 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004139 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00004140 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004141 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004142#if HAVE_TZNAME
4143 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
4144 exit(1);
4145#endif
Brett Cannon18367812003-09-19 00:59:16 +00004146
4147 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
4148 tzset();
4149 if (localtime(&groundhogday)->tm_hour != 11)
4150 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004151#if HAVE_TZNAME
4152 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
4153 exit(1);
4154#endif
4155
4156#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00004157 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
4158 exit(1);
4159 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
4160 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004161#endif
Brett Cannon18367812003-09-19 00:59:16 +00004162
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004163 exit(0);
4164}
Matthias Kloseb159a552010-04-25 21:00:44 +00004165]])],
4166[ac_cv_working_tzset=yes],
4167[ac_cv_working_tzset=no],
4168[ac_cv_working_tzset=no])])
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004169AC_MSG_RESULT($ac_cv_working_tzset)
4170if test "$ac_cv_working_tzset" = yes
4171then
4172 AC_DEFINE(HAVE_WORKING_TZSET, 1,
4173 [Define if tzset() actually switches the local timezone in a meaningful way.])
4174fi
4175
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004176# Look for subsecond timestamps in struct stat
4177AC_MSG_CHECKING(for tv_nsec in struct stat)
4178AC_CACHE_VAL(ac_cv_stat_tv_nsec,
Matthias Kloseb159a552010-04-25 21:00:44 +00004179AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004180struct stat st;
4181st.st_mtim.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00004182]])],
4183[ac_cv_stat_tv_nsec=yes],
4184[ac_cv_stat_tv_nsec=no]))
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004185AC_MSG_RESULT($ac_cv_stat_tv_nsec)
4186if test "$ac_cv_stat_tv_nsec" = yes
4187then
4188 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
4189 [Define if you have struct stat.st_mtim.tv_nsec])
4190fi
4191
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004192# Look for BSD style subsecond timestamps in struct stat
4193AC_MSG_CHECKING(for tv_nsec2 in struct stat)
4194AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
Matthias Kloseb159a552010-04-25 21:00:44 +00004195AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004196struct stat st;
4197st.st_mtimespec.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00004198]])],
4199[ac_cv_stat_tv_nsec2=yes],
4200[ac_cv_stat_tv_nsec2=no]))
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004201AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
4202if test "$ac_cv_stat_tv_nsec2" = yes
4203then
4204 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
4205 [Define if you have struct stat.st_mtimensec])
4206fi
4207
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004208# On HP/UX 11.0, mvwdelch is a block with a return statement
4209AC_MSG_CHECKING(whether mvwdelch is an expression)
4210AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
Matthias Kloseb159a552010-04-25 21:00:44 +00004211AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004212 int rtn;
4213 rtn = mvwdelch(0,0,0);
Matthias Kloseb159a552010-04-25 21:00:44 +00004214]])],
4215[ac_cv_mvwdelch_is_expression=yes],
4216[ac_cv_mvwdelch_is_expression=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004217AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
4218
4219if test "$ac_cv_mvwdelch_is_expression" = yes
4220then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004221 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
4222 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004223fi
4224
4225AC_MSG_CHECKING(whether WINDOW has _flags)
4226AC_CACHE_VAL(ac_cv_window_has_flags,
Matthias Kloseb159a552010-04-25 21:00:44 +00004227AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004228 WINDOW *w;
4229 w->_flags = 0;
Matthias Kloseb159a552010-04-25 21:00:44 +00004230]])],
4231[ac_cv_window_has_flags=yes],
4232[ac_cv_window_has_flags=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004233AC_MSG_RESULT($ac_cv_window_has_flags)
4234
4235
4236if test "$ac_cv_window_has_flags" = yes
4237then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004238 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
4239 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004240fi
4241
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004242AC_MSG_CHECKING(for is_term_resized)
Matthias Kloseb159a552010-04-25 21:00:44 +00004243AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=is_term_resized]])],
4244 [AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
4245 AC_MSG_RESULT(yes)],
4246 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004247)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00004248
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004249AC_MSG_CHECKING(for resize_term)
Matthias Kloseb159a552010-04-25 21:00:44 +00004250AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resize_term]])],
4251 [AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
4252 AC_MSG_RESULT(yes)],
4253 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004254)
4255
4256AC_MSG_CHECKING(for resizeterm)
Matthias Kloseb159a552010-04-25 21:00:44 +00004257AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resizeterm]])],
4258 [AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
4259 AC_MSG_RESULT(yes)],
4260 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004261)
4262
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02004263AC_MSG_NOTICE([checking for device files])
Thomas Wouters89f507f2006-12-13 04:49:30 +00004264
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02004265dnl NOTE: Inform user how to proceed with files when cross compiling.
4266if test "x$cross_compiling" = xyes; then
4267 if test "${ac_cv_file__dev_ptmx+set}" != set; then
4268 AC_MSG_CHECKING([for /dev/ptmx])
4269 AC_MSG_RESULT([not set])
4270 AC_MSG_ERROR([set ac_cv_file__dev_ptmx to yes/no in your CONFIG_SITE file when cross compiling])
4271 fi
4272 if test "${ac_cv_file__dev_ptc+set}" != set; then
4273 AC_MSG_CHECKING([for /dev/ptc])
4274 AC_MSG_RESULT([not set])
4275 AC_MSG_ERROR([set ac_cv_file__dev_ptc to yes/no in your CONFIG_SITE file when cross compiling])
4276 fi
Thomas Wouters89f507f2006-12-13 04:49:30 +00004277fi
4278
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02004279AC_CHECK_FILE(/dev/ptmx, [], [])
4280if test "x$ac_cv_file__dev_ptmx" = xyes; then
4281 AC_DEFINE(HAVE_DEV_PTMX, 1,
4282 [Define to 1 if you have the /dev/ptmx device file.])
4283fi
4284AC_CHECK_FILE(/dev/ptc, [], [])
4285if test "x$ac_cv_file__dev_ptc" = xyes; then
Thomas Wouters89f507f2006-12-13 04:49:30 +00004286 AC_DEFINE(HAVE_DEV_PTC, 1,
doko@ubuntu.comb457b9b2012-06-30 19:28:16 +02004287 [Define to 1 if you have the /dev/ptc device file.])
Thomas Wouters89f507f2006-12-13 04:49:30 +00004288fi
Neal Norwitz865400f2003-03-21 01:42:58 +00004289
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004290if test "$have_long_long" = yes
4291then
4292 AC_MSG_CHECKING(for %lld and %llu printf() format support)
4293 AC_CACHE_VAL(ac_cv_have_long_long_format,
Matthias Kloseb159a552010-04-25 21:00:44 +00004294 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004295 #include <stdio.h>
4296 #include <stddef.h>
4297 #include <string.h>
4298
4299 #ifdef HAVE_SYS_TYPES_H
4300 #include <sys/types.h>
4301 #endif
4302
4303 int main()
4304 {
4305 char buffer[256];
4306
4307 if (sprintf(buffer, "%lld", (long long)123) < 0)
4308 return 1;
4309 if (strcmp(buffer, "123"))
4310 return 1;
4311
4312 if (sprintf(buffer, "%lld", (long long)-123) < 0)
4313 return 1;
4314 if (strcmp(buffer, "-123"))
4315 return 1;
4316
4317 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
4318 return 1;
4319 if (strcmp(buffer, "123"))
4320 return 1;
4321
4322 return 0;
4323 }
Matthias Kloseb159a552010-04-25 21:00:44 +00004324 ]]])],
4325 [ac_cv_have_long_long_format=yes],
4326 [ac_cv_have_long_long_format=no],
Matthias Klose3b739b12012-03-15 19:31:06 +01004327 [ac_cv_have_long_long_format="cross -- assuming no"
4328 if test x$GCC = xyes; then
4329 save_CFLAGS=$CFLAGS
4330 CFLAGS="$CFLAGS -Werror -Wformat"
4331 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
4332 #include <stdio.h>
4333 #include <stddef.h>
4334 ]], [[
4335 char *buffer;
4336 sprintf(buffer, "%lld", (long long)123);
4337 sprintf(buffer, "%lld", (long long)-123);
4338 sprintf(buffer, "%llu", (unsigned long long)123);
4339 ]])],
4340 ac_cv_have_long_long_format=yes
4341 )
4342 CFLAGS=$save_CFLAGS
4343 fi])
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004344 )
4345 AC_MSG_RESULT($ac_cv_have_long_long_format)
4346fi
4347
Mark Dickinson89d7d412009-12-31 20:50:59 +00004348if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004349then
4350 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
4351 [Define to printf format modifier for long long type])
4352fi
4353
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00004354if test $ac_sys_system = Darwin
4355then
4356 LIBS="$LIBS -framework CoreFoundation"
4357fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004358
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004359AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00004360AC_RUN_IFELSE([AC_LANG_SOURCE([[
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00004361#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00004362#include <stddef.h>
4363#include <string.h>
4364
Christian Heimes2c181612007-12-17 20:04:13 +00004365#ifdef HAVE_SYS_TYPES_H
4366#include <sys/types.h>
4367#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00004368
4369#ifdef HAVE_SSIZE_T
4370typedef ssize_t Py_ssize_t;
4371#elif SIZEOF_VOID_P == SIZEOF_LONG
4372typedef long Py_ssize_t;
4373#else
4374typedef int Py_ssize_t;
4375#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00004376
Christian Heimes2c181612007-12-17 20:04:13 +00004377int main()
4378{
4379 char buffer[256];
4380
Thomas Wouters477c8d52006-05-27 19:21:47 +00004381 if(sprintf(buffer, "%zd", (size_t)123) < 0)
4382 return 1;
4383
Thomas Wouters89f507f2006-12-13 04:49:30 +00004384 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00004385 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00004386
4387 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
4388 return 1;
4389
4390 if (strcmp(buffer, "-123"))
4391 return 1;
4392
Thomas Wouters477c8d52006-05-27 19:21:47 +00004393 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004394}
Matthias Kloseb159a552010-04-25 21:00:44 +00004395]])],
4396 [ac_cv_have_size_t_format=yes],
4397 [ac_cv_have_size_t_format=no],
4398 [ac_cv_have_size_t_format="cross -- assuming yes"
4399])])
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004400if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004401 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
4402 [Define to printf format modifier for Py_ssize_t])
4403fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00004404
Martin v. Löwis01c04012002-11-11 14:58:44 +00004405AC_CHECK_TYPE(socklen_t,,
4406 AC_DEFINE(socklen_t,int,
Matthias Klosec80c93f2010-04-24 17:04:35 +00004407 [Define to `int' if <sys/socket.h> does not define.]),[
Martin v. Löwis01c04012002-11-11 14:58:44 +00004408#ifdef HAVE_SYS_TYPES_H
4409#include <sys/types.h>
4410#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00004411#ifdef HAVE_SYS_SOCKET_H
4412#include <sys/socket.h>
4413#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00004414])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004415
Antoine Pitroufff95302008-09-03 18:58:51 +00004416AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004417AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Matthias Kloseb159a552010-04-25 21:00:44 +00004418AC_RUN_IFELSE([AC_LANG_SOURCE([[
Antoine Pitroufff95302008-09-03 18:58:51 +00004419#include<stdlib.h>
4420int main() {
4421 size_t len = -1;
4422 const char *str = "text";
4423 len = mbstowcs(NULL, str, 0);
4424 return (len != 4);
4425}
Matthias Kloseb159a552010-04-25 21:00:44 +00004426]])],
4427[ac_cv_broken_mbstowcs=no],
4428[ac_cv_broken_mbstowcs=yes],
4429[ac_cv_broken_mbstowcs=no]))
Antoine Pitroufff95302008-09-03 18:58:51 +00004430AC_MSG_RESULT($ac_cv_broken_mbstowcs)
4431if test "$ac_cv_broken_mbstowcs" = yes
4432then
4433 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
4434 [Define if mbstowcs(NULL, "text", 0) does not return the number of
4435 wide chars that would be converted.])
4436fi
4437
Antoine Pitroub52ec782009-01-25 16:34:23 +00004438# Check for --with-computed-gotos
4439AC_MSG_CHECKING(for --with-computed-gotos)
4440AC_ARG_WITH(computed-gotos,
Antoine Pitrou042b1282010-08-13 21:15:58 +00004441 AS_HELP_STRING([--with(out)-computed-gotos],
4442 [Use computed gotos in evaluation loop (enabled by default on supported compilers)]),
Antoine Pitroub52ec782009-01-25 16:34:23 +00004443[
Antoine Pitrou042b1282010-08-13 21:15:58 +00004444if test "$withval" = yes
Antoine Pitroub52ec782009-01-25 16:34:23 +00004445then
4446 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
4447 [Define if you want to use computed gotos in ceval.c.])
4448 AC_MSG_RESULT(yes)
Antoine Pitrou042b1282010-08-13 21:15:58 +00004449fi
4450if test "$withval" = no
4451then
4452 AC_DEFINE(USE_COMPUTED_GOTOS, 0,
4453 [Define if you want to use computed gotos in ceval.c.])
4454 AC_MSG_RESULT(no)
4455fi
4456],
4457[AC_MSG_RESULT(no value specified)])
Antoine Pitroub52ec782009-01-25 16:34:23 +00004458
Matthias Kloseb17289e2012-03-15 19:51:34 +01004459AC_MSG_CHECKING(whether $CC supports computed gotos)
4460AC_CACHE_VAL(ac_cv_computed_gotos,
4461AC_RUN_IFELSE([AC_LANG_SOURCE([[[
4462int main(int argc, char **argv)
4463{
4464 static void *targets[1] = { &&LABEL1 };
4465 goto LABEL2;
4466LABEL1:
4467 return 0;
4468LABEL2:
4469 goto *targets[0];
4470 return 1;
4471}
4472]]])],
4473[ac_cv_computed_gotos=yes],
4474[ac_cv_computed_gotos=no],
4475[if test "${with_computed_gotos+set}" = set; then
4476 ac_cv_computed_gotos="$with_computed_gotos -- configured --with(out)-computed-gotos"
4477 else
4478 ac_cv_computed_gotos=no
4479 fi]))
4480AC_MSG_RESULT($ac_cv_computed_gotos)
4481case "$ac_cv_computed_gotos" in yes*)
4482 AC_DEFINE(HAVE_COMPUTED_GOTOS, 1,
4483 [Define if the C compiler supports computed gotos.])
4484esac
4485
R. David Murraye16cda92010-10-15 23:12:57 +00004486case $ac_sys_system in
4487AIX*)
4488 AC_DEFINE(HAVE_BROKEN_PIPE_BUF, 1, [Define if the system reports an invalid PIPE_BUF value.]) ;;
4489esac
Antoine Pitroub52ec782009-01-25 16:34:23 +00004490
Jesus Cea6a792292010-05-03 21:18:48 +00004491
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004492AC_SUBST(THREADHEADERS)
4493
4494for h in `(cd $srcdir;echo Python/thread_*.h)`
4495do
4496 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4497done
4498
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004499AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00004500SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004501AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004502for dir in $SRCDIRS; do
4503 if test ! -d $dir; then
4504 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004505 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004506done
4507AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004508
Stefan Krah1919b7e2012-03-21 18:25:23 +01004509# Availability of -O2:
4510AC_MSG_CHECKING(for -O2)
4511saved_cflags="$CFLAGS"
4512CFLAGS="-O2"
4513AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
4514]])],[have_O2=yes],[have_O2=no])
4515AC_MSG_RESULT($have_O2)
4516CFLAGS="$saved_cflags"
4517
4518# _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect:
4519# http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html
4520AC_MSG_CHECKING(for glibc _FORTIFY_SOURCE/memmove bug)
4521saved_cflags="$CFLAGS"
4522CFLAGS="-O2 -D_FORTIFY_SOURCE=2"
4523if test "$have_O2" = no; then
4524 CFLAGS=""
4525fi
4526AC_RUN_IFELSE([AC_LANG_SOURCE([[
4527#include <stdio.h>
4528#include <stdlib.h>
4529#include <string.h>
4530void foo(void *p, void *q) { memmove(p, q, 19); }
4531int main() {
4532 char a[32] = "123456789000000000";
4533 foo(&a[9], a);
4534 if (strcmp(a, "123456789123456789000000000") != 0)
4535 return 1;
4536 foo(a, &a[9]);
4537 if (strcmp(a, "123456789000000000") != 0)
4538 return 1;
4539 return 0;
4540}
4541]])],
4542[have_glibc_memmove_bug=no],
4543[have_glibc_memmove_bug=yes],
4544[have_glibc_memmove_bug=undefined])
4545CFLAGS="$saved_cflags"
4546AC_MSG_RESULT($have_glibc_memmove_bug)
4547if test "$have_glibc_memmove_bug" = yes; then
4548 AC_DEFINE(HAVE_GLIBC_MEMMOVE_BUG, 1,
4549 [Define if glibc has incorrect _FORTIFY_SOURCE wrappers
4550 for memmove and bcopy.])
4551fi
4552
4553if test "$have_gcc_asm_for_x87" = yes; then
4554 # Some versions of gcc miscompile inline asm:
4555 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491
4556 # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html
4557 case $CC in
4558 *gcc*)
4559 AC_MSG_CHECKING(for gcc ipa-pure-const bug)
4560 saved_cflags="$CFLAGS"
4561 CFLAGS="-O2"
4562 AC_RUN_IFELSE([AC_LANG_SOURCE([[
4563 __attribute__((noinline)) int
4564 foo(int *p) {
4565 int r;
4566 asm ( "movl \$6, (%1)\n\t"
4567 "xorl %0, %0\n\t"
4568 : "=r" (r) : "r" (p) : "memory"
4569 );
4570 return r;
4571 }
4572 int main() {
4573 int p = 8;
4574 if ((foo(&p) ? : p) != 6)
4575 return 1;
4576 return 0;
4577 }
4578 ]])],
4579 [have_ipa_pure_const_bug=no],
4580 [have_ipa_pure_const_bug=yes],
4581 [have_ipa_pure_const_bug=undefined])
4582 CFLAGS="$saved_cflags"
4583 AC_MSG_RESULT($have_ipa_pure_const_bug)
4584 if test "$have_ipa_pure_const_bug" = yes; then
4585 AC_DEFINE(HAVE_IPA_PURE_CONST_BUG, 1,
4586 [Define if gcc has the ipa-pure-const bug.])
4587 fi
4588 ;;
4589 esac
4590fi
4591
Guido van Rossum627b2d71993-12-24 10:39:16 +00004592# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00004593AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Antoine Pitrou8e6b4072010-09-10 19:44:44 +00004594AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])
Martin v. Löwis88afe662002-10-26 13:47:44 +00004595AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004596
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004597echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004598if test ! -f Modules/Setup
4599then
4600 cp $srcdir/Modules/Setup.dist Modules/Setup
4601fi
4602
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004603echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004604if test ! -f Modules/Setup.local
4605then
4606 echo "# Edit this file for local setup changes" >Modules/Setup.local
4607fi
4608
4609echo "creating Makefile"
4610$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4611 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004612 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00004613mv config.c Modules