blob: 116e03e471b57d687371dfcfb5eaa9629c5dafea [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)
Benjamin Peterson46ea4f72009-06-27 21:40:27 +00006m4_define(PYTHON_VERSION, 3.2)
Martin v. Löwis88afe662002-10-26 13:47:44 +00007
Alexandre Vassalottib89910f2009-07-18 00:33:23 +00008dnl Some m4 magic to ensure that the configure script is generated
9dnl by the correct autoconf version.
10m4_define([version_required],
11[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), [$1]), 0,
12 [],
13 [m4_fatal([Autoconf version $1 is required for Python], 63)])
14])
Barry Warsaw35f3a2c2010-09-03 18:30:30 +000015AC_PREREQ(2.65)
Alexandre Vassalottib89910f2009-07-18 00:33:23 +000016
Guido van Rossum76be6ed1995-01-02 18:33:54 +000017AC_REVISION($Revision$)
Georg Brandle2e15612009-05-20 18:25:10 +000018AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
Martin v. Löwis88afe662002-10-26 13:47:44 +000019AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000020AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000021
Benjamin Petersond23f8222009-04-05 19:13:16 +000022dnl Ensure that if prefix is specified, it does not end in a slash. If
23dnl it does, we get path names containing '//' which is both ugly and
24dnl can cause trouble.
25
26dnl Last slash shouldn't be stripped if prefix=/
27if test "$prefix" != "/"; then
28 prefix=`echo "$prefix" | sed -e 's/\/$//g'`
29fi
30
Martin v. Löwis8316feb2003-06-14 07:48:07 +000031dnl This is for stuff that absolutely must end up in pyconfig.h.
32dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000033AH_TOP([
34#ifndef Py_PYCONFIG_H
35#define Py_PYCONFIG_H
36])
Martin v. Löwis11437992002-04-12 09:54:03 +000037AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000038/* Define the macros needed if on a UnixWare 7.x system. */
39#if defined(__USLC__) && defined(__SCO_VERSION__)
40#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
41#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000042
43#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000044])
45
Martin v. Löwis8316feb2003-06-14 07:48:07 +000046# We don't use PACKAGE_ variables, and they cause conflicts
47# with other autoconf-based packages that include Python.h
48grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
49rm confdefs.h
50mv confdefs.h.new confdefs.h
51
Guido van Rossum642b6781997-07-19 19:35:41 +000052AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000053VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000054
Georg Brandlde7d8342010-09-03 22:19:07 +000055# Version number of Python's own shared library file.
Martin v. Löwis1142de32002-03-29 16:28:31 +000056AC_SUBST(SOVERSION)
57SOVERSION=1.0
58
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000059# The later defininition of _XOPEN_SOURCE disables certain features
60# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
61AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
62
Martin v. Löwisbcd93962003-05-03 10:32:18 +000063# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
64# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
65# them.
66AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
67
Andrew MacIntyreabccf412003-07-02 13:53:25 +000068# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
69# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
70# them.
71AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
72
Martin v. Löwisd6320502004-08-12 13:45:08 +000073# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
74# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
75AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
76
Georg Brandlfcaf9102008-07-16 02:17:56 +000077# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
78# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
79# them.
80AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
81
82
Martin v. Löwise981a4e2002-11-11 13:26:51 +000083define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000084
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000085# Arguments passed to configure.
86AC_SUBST(CONFIG_ARGS)
87CONFIG_ARGS="$ac_configure_args"
88
Ronald Oussoren8af24c12010-02-07 12:03:42 +000089AC_MSG_CHECKING([for --enable-universalsdk])
Thomas Wouters477c8d52006-05-27 19:21:47 +000090AC_ARG_ENABLE(universalsdk,
Matthias Klose2b8733f2010-04-25 18:34:36 +000091 AS_HELP_STRING([--enable-universalsdk@<:@=SDKDIR@:>@], [Build against Mac OS X 10.4u SDK (ppc/i386)]),
Thomas Wouters477c8d52006-05-27 19:21:47 +000092[
93 case $enableval in
94 yes)
95 enableval=/Developer/SDKs/MacOSX10.4u.sdk
Ronald Oussoren8af24c12010-02-07 12:03:42 +000096 if test ! -d "${enableval}"
97 then
98 enableval=/
99 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000100 ;;
101 esac
102 case $enableval in
103 no)
104 UNIVERSALSDK=
105 enable_universalsdk=
106 ;;
107 *)
108 UNIVERSALSDK=$enableval
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000109 if test ! -d "${UNIVERSALSDK}"
110 then
111 AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
112 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000113 ;;
114 esac
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000115
Thomas Wouters477c8d52006-05-27 19:21:47 +0000116],[
117 UNIVERSALSDK=
118 enable_universalsdk=
119])
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000120if test -n "${UNIVERSALSDK}"
121then
122 AC_MSG_RESULT(${UNIVERSALSDK})
123else
124 AC_MSG_RESULT(no)
125fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000126AC_SUBST(UNIVERSALSDK)
127
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000128AC_SUBST(ARCH_RUN_32BIT)
129
Georg Brandlfcaf9102008-07-16 02:17:56 +0000130UNIVERSAL_ARCHS="32-bit"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000131AC_SUBST(LIPO_32BIT_FLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000132AC_MSG_CHECKING(for --with-universal-archs)
133AC_ARG_WITH(universal-archs,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000134 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 +0000135[
136 AC_MSG_RESULT($withval)
137 UNIVERSAL_ARCHS="$withval"
138],
139[
140 AC_MSG_RESULT(32-bit)
141])
142
143
144
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000145AC_ARG_WITH(framework-name,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000146 AS_HELP_STRING([--with-framework-name=FRAMEWORK],
Matthias Klosec80c93f2010-04-24 17:04:35 +0000147 [specify an alternate name of the framework built with --enable-framework]),
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000148[
149 PYTHONFRAMEWORK=${withval}
150 PYTHONFRAMEWORKDIR=${withval}.framework
151 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
152 ],[
153 PYTHONFRAMEWORK=Python
154 PYTHONFRAMEWORKDIR=Python.framework
155 PYTHONFRAMEWORKIDENTIFIER=org.python.python
156])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000157dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000158AC_ARG_ENABLE(framework,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000159 AS_HELP_STRING([--enable-framework@<:@=INSTALLDIR@:>@], [Build (MacOSX|Darwin) framework]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000160[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000161 case $enableval in
162 yes)
163 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000164 esac
165 case $enableval in
166 no)
167 PYTHONFRAMEWORK=
168 PYTHONFRAMEWORKDIR=no-framework
169 PYTHONFRAMEWORKPREFIX=
170 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000171 FRAMEWORKINSTALLFIRST=
172 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000173 FRAMEWORKALTINSTALLFIRST=
174 FRAMEWORKALTINSTALLLAST=
175 if test "x${prefix}" = "xNONE"; then
176 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
177 else
178 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
179 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000180 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000181 ;;
182 *)
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000183 PYTHONFRAMEWORKPREFIX="${enableval}"
Jack Jansen127e56e2001-09-11 14:41:54 +0000184 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000185 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussorenf6ccbf62009-06-02 10:55:56 +0000186 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000187 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
188 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000189 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000190
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000191 if test "x${prefix}" = "xNONE" ; then
192 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000193
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000194 else
195 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
196 fi
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000197
198 case "${enableval}" in
199 /System*)
200 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
201 if test "${prefix}" = "NONE" ; then
202 # See below
203 FRAMEWORKUNIXTOOLSPREFIX="/usr"
204 fi
205 ;;
206
207 /Library*)
208 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
209 ;;
210
211 */Library/Frameworks)
212 MDIR="`dirname "${enableval}"`"
213 MDIR="`dirname "${MDIR}"`"
214 FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications"
215
216 if test "${prefix}" = "NONE"; then
217 # User hasn't specified the
218 # --prefix option, but wants to install
219 # the framework in a non-default location,
220 # ensure that the compatibility links get
221 # installed relative to that prefix as well
222 # instead of in /usr/local.
223 FRAMEWORKUNIXTOOLSPREFIX="${MDIR}"
224 fi
225 ;;
226
227 *)
228 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
229 ;;
230 esac
231
Jack Jansen127e56e2001-09-11 14:41:54 +0000232 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000233
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000234 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000235 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000236 AC_CONFIG_FILES(Mac/Makefile)
237 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000238 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
239 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000240 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000241 ],[
242 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000243 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000244 PYTHONFRAMEWORKPREFIX=
245 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000246 FRAMEWORKINSTALLFIRST=
247 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000248 FRAMEWORKALTINSTALLFIRST=
249 FRAMEWORKALTINSTALLLAST=
250 if test "x${prefix}" = "xNONE" ; then
251 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
252 else
253 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
254 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000255 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000256
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000257])
258AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000259AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000260AC_SUBST(PYTHONFRAMEWORKDIR)
261AC_SUBST(PYTHONFRAMEWORKPREFIX)
262AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000263AC_SUBST(FRAMEWORKINSTALLFIRST)
264AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000265AC_SUBST(FRAMEWORKALTINSTALLFIRST)
266AC_SUBST(FRAMEWORKALTINSTALLLAST)
267AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000268AC_SUBST(FRAMEWORKINSTALLAPPSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000269
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000270##AC_ARG_WITH(dyld,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000271## AS_HELP_STRING([--with-dyld],
Matthias Klosec80c93f2010-04-24 17:04:35 +0000272## [Use (OpenStep|Rhapsody) dynamic linker]))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000273##
Guido van Rossumb418f891996-07-30 18:06:02 +0000274# Set name for machine-dependent library files
275AC_SUBST(MACHDEP)
276AC_MSG_CHECKING(MACHDEP)
277if test -z "$MACHDEP"
278then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000279 ac_sys_system=`uname -s`
Benjamin Peterson8719ad52009-09-11 22:24:02 +0000280 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000281 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000282 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000283 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000284 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000285 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000286 ac_md_system=`echo $ac_sys_system |
287 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
288 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000289 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000290 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000291
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000292 case $MACHDEP in
Victor Stinner0c17d0d2011-08-20 14:01:05 +0200293 linux*) MACHDEP="linux2";;
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000294 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000295 darwin*) MACHDEP="darwin";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000296 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000297 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000298 esac
299fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000300
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000301# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
302# disable features if it is defined, without any means to access these
303# features as extensions. For these systems, we skip the definition of
304# _XOPEN_SOURCE. Before adding a system to the list to gain access to
305# some feature, make sure there is no alternative way to access this
306# feature. Also, when using wildcards, make sure you have verified the
307# need for not defining _XOPEN_SOURCE on all systems matching the
308# wildcard, and that the wildcard does not include future systems
309# (which may remove their limitations).
310dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
311case $ac_sys_system/$ac_sys_release in
312 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
313 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000314 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Martin v. Löwis19ed3c82010-02-15 21:45:06 +0000315 # In addition, Stefan Krah confirms that issue #1244610 exists through
316 # OpenBSD 4.6, but is fixed in 4.7.
Charles-François Natalibeed47e2011-07-22 23:48:44 +0200317 OpenBSD/2.* | OpenBSD/3.* | OpenBSD/4.@<:@0123456@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000318 define_xopen_source=no
319 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
320 # also defined. This can be overridden by defining _BSD_SOURCE
321 # As this has a different meaning on Linux, only define it on OpenBSD
322 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
323 ;;
Charles-François Natalibeed47e2011-07-22 23:48:44 +0200324 OpenBSD/*)
Martin v. Löwis7671efc2010-02-15 08:35:16 +0000325 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
326 # also defined. This can be overridden by defining _BSD_SOURCE
327 # As this has a different meaning on Linux, only define it on OpenBSD
328 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
329 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000330 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
331 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
332 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000333 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 +0000334 define_xopen_source=no;;
Martin v. Löwis1a415762010-05-28 15:44:20 +0000335 # From the perspective of Solaris, _XOPEN_SOURCE is not so much a
336 # request to enable features supported by the standard as a request
337 # to disable features not supported by the standard. The best way
338 # for Python to use Solaris is simply to leave _XOPEN_SOURCE out
339 # entirely and define __EXTENSIONS__ instead.
340 SunOS/*)
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000341 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000342 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
343 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000344 # Reconfirmed for 7.1.4 by Martin v. Loewis.
345 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000346 define_xopen_source=no;;
347 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000348 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000349 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000350 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000351 # On FreeBSD 4, the math functions C89 does not cover are never defined
352 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
353 FreeBSD/4.*)
354 define_xopen_source=no;;
355 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
356 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
357 # identifies itself as Darwin/7.*
358 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
359 # disables platform specific features beyond repair.
360 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
361 # has no effect, don't bother defining them
362 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000363 define_xopen_source=no;;
Ronald Oussoren92fb9412010-03-09 06:40:19 +0000364 Darwin/1@<:@0-9@:>@.*)
Ronald Oussorenb8f11a62010-03-08 07:02:03 +0000365 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000366 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
367 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
368 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000369 AIX/4)
370 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000371 AIX/5)
372 if test `uname -r` -eq 1; then
373 define_xopen_source=no
374 fi
375 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000376 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
377 # defining NI_NUMERICHOST.
378 QNX/6.3.2)
379 define_xopen_source=no
380 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000381
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000382esac
383
384if test $define_xopen_source = yes
385then
Martin v. Löwis1a415762010-05-28 15:44:20 +0000386 AC_DEFINE(_XOPEN_SOURCE, 600,
387 Define to the level of X/Open that your system supports)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000388
389 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
390 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
391 # several APIs are not declared. Since this is also needed in some
392 # cases for HP-UX, we define it globally.
Martin v. Löwis1a415762010-05-28 15:44:20 +0000393 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
394 Define to activate Unix95-and-earlier features)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000395
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000396 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
397
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000398fi
399
Guido van Rossum91922671997-10-09 20:24:13 +0000400#
401# SGI compilers allow the specification of the both the ABI and the
402# ISA on the command line. Depending on the values of these switches,
403# different and often incompatable code will be generated.
404#
405# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
406# thus supply support for various ABI/ISA combinations. The MACHDEP
407# variable is also adjusted.
408#
409AC_SUBST(SGI_ABI)
410if test ! -z "$SGI_ABI"
411then
412 CC="cc $SGI_ABI"
413 LDFLAGS="$SGI_ABI $LDFLAGS"
414 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
415fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000416AC_MSG_RESULT($MACHDEP)
417
Jack Jansen6b08a402004-06-03 12:41:45 +0000418# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
419# it may influence the way we can build extensions, so distutils
420# needs to check it
421AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000422AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000423CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000424EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000425
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000426AC_MSG_CHECKING(machine type as reported by uname -m)
427ac_sys_machine=`uname -m`
428AC_MSG_RESULT($ac_sys_machine)
429
Guido van Rossum627b2d71993-12-24 10:39:16 +0000430# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000431
432# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
433# for debug/optimization stuff. BASECFLAGS is for flags that are required
434# just to get things to compile and link. Users are free to override OPT
435# when running configure or make. The build should not break if they do.
436# BASECFLAGS should generally not be messed with, however.
437
438# XXX shouldn't some/most/all of this code be merged with the stuff later
439# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000440AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000441AC_ARG_WITH(gcc,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000442 AS_HELP_STRING([--without-gcc], [never use gcc]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000443[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000444 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000445 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000446 without_gcc=yes;;
447 yes) CC=gcc
448 without_gcc=no;;
449 *) CC=$withval
450 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000451 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000452 case $ac_sys_system in
Antoine Pitrouf6350d22010-09-21 15:19:14 +0000453 AIX*) CC=${CC:-xlc_r}
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000454 without_gcc=;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000455 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000456 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000457AC_MSG_RESULT($without_gcc)
458
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000459# If the user switches compilers, we can't believe the cache
460if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
461then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000462 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
463(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000464fi
465
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000466# Don't let AC_PROG_CC set the default CFLAGS. It normally sets -g -O2
467# when the compiler supports them, but we don't always want -O2, and
468# we set -g later.
469if test -z "$CFLAGS"; then
470 CFLAGS=
Marc-André Lemburgdf700f02010-04-30 17:29:56 +0000471fi
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000472AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000473
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000474AC_SUBST(CXX)
475AC_SUBST(MAINCC)
476AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
477AC_ARG_WITH(cxx_main,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000478 AS_HELP_STRING([--with-cxx-main=<compiler>],
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000479 [compile main() and link python executable with C++ compiler]),
480[
481
482 case $withval in
483 no) with_cxx_main=no
484 MAINCC='$(CC)';;
485 yes) with_cxx_main=yes
486 MAINCC='$(CXX)';;
487 *) with_cxx_main=yes
488 MAINCC=$withval
489 if test -z "$CXX"
490 then
491 CXX=$withval
492 fi;;
493 esac], [
494 with_cxx_main=no
495 MAINCC='$(CC)'
496])
497AC_MSG_RESULT($with_cxx_main)
498
499preset_cxx="$CXX"
500if test -z "$CXX"
501then
502 case "$CC" in
503 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
504 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
505 esac
506 if test "$CXX" = "notfound"
507 then
508 CXX=""
509 fi
510fi
511if test -z "$CXX"
512then
513 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
514 if test "$CXX" = "notfound"
515 then
516 CXX=""
517 fi
518fi
519if test "$preset_cxx" != "$CXX"
520then
521 AC_MSG_WARN([
522
523 By default, distutils will build C++ extension modules with "$CXX".
524 If this is not intended, then set CXX on the configure command line.
525 ])
526fi
527
528
Martin v. Löwis48e14d32011-05-09 07:37:45 +0200529AC_MSG_CHECKING([for -Wl,--no-as-needed])
530save_LDFLAGS="$LDFLAGS"
531LDFLAGS="$LDFLAGS -Wl,--no-as-needed"
532AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
533 [NO_AS_NEEDED="-Wl,--no-as-needed"
534 AC_MSG_RESULT([yes])],
535 [NO_AS_NEEDED=""
536 AC_MSG_RESULT([no])])
537LDFLAGS="$save_LDFLAGS"
538AC_SUBST(NO_AS_NEEDED)
539
540
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000541# checks for UNIX variants that set C preprocessor variables
Matthias Kloseaf30c5d2010-04-25 18:43:42 +0000542AC_USE_SYSTEM_EXTENSIONS
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000543
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000544# Check for unsupported systems
545case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000546atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000547 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
548 echo See README for details.
549 exit 1;;
550esac
551
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000552AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000553AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000554AC_ARG_WITH(suffix,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000555 AS_HELP_STRING([--with-suffix=.exe], [set executable suffix]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000556[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000557 case $withval in
558 no) EXEEXT=;;
559 yes) EXEEXT=.exe;;
560 *) EXEEXT=$withval;;
561 esac])
562AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000563
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000564# Test whether we're running on a non-case-sensitive system, in which
565# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000566AC_SUBST(BUILDEXEEXT)
567AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000568if test ! -d CaseSensitiveTestDir; then
569mkdir CaseSensitiveTestDir
570fi
571
572if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000573then
Jack Jansen1999ef42001-12-06 21:47:20 +0000574 AC_MSG_RESULT(yes)
575 BUILDEXEEXT=.exe
576else
577 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000578 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000579fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000580rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000581
Guido van Rossumdd997f71998-10-07 19:58:26 +0000582case $MACHDEP in
583bsdos*)
584 case $CC in
585 gcc) CC="$CC -D_HAVE_BSDI";;
586 esac;;
587esac
588
Guido van Rossum84561611997-08-21 00:08:11 +0000589case $ac_sys_system in
590hp*|HP*)
591 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000592 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000593 esac;;
594esac
595
Martin v. Löwise8964d42001-03-06 12:09:07 +0000596
Neil Schemenauer61c51152001-01-26 16:18:16 +0000597AC_SUBST(LIBRARY)
598AC_MSG_CHECKING(LIBRARY)
599if test -z "$LIBRARY"
600then
Barry Warsawf040d7d2010-10-18 17:09:07 +0000601 LIBRARY='libpython$(VERSION)$(ABIFLAGS).a'
Neil Schemenauer61c51152001-01-26 16:18:16 +0000602fi
603AC_MSG_RESULT($LIBRARY)
604
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000605# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000606# name of the library into which to insert object files). BLDLIBRARY is also
607# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
608# is blank as the main program is not linked directly against LDLIBRARY.
609# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
610# systems without shared libraries, LDLIBRARY is the same as LIBRARY
611# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
612# DLLLIBRARY is the shared (i.e., DLL) library.
613#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000614# RUNSHARED is used to run shared python without installed libraries
615#
616# INSTSONAME is the name of the shared library that will be use to install
617# on the system - some systems like version suffix, others don't
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000618#
619# LDVERSION is the shared library version number, normally the Python version
620# with the ABI build flags appended.
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000621AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000622AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000623AC_SUBST(BLDLIBRARY)
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000624AC_SUBST(PY3LIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000625AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000626AC_SUBST(INSTSONAME)
627AC_SUBST(RUNSHARED)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000628AC_SUBST(LDVERSION)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000629LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000630BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000631INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000632DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000633LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000634RUNSHARED=''
Barry Warsaw14d98ac2010-11-24 19:43:47 +0000635LDVERSION="$VERSION"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000636
Guido van Rossumfb842551997-08-06 23:42:07 +0000637# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000638# If CXX is set, and if it is needed to link a main function that was
639# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
640# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000641# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000642# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000643AC_SUBST(LINKCC)
644AC_MSG_CHECKING(LINKCC)
645if test -z "$LINKCC"
646then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000647 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000648 case $ac_sys_system in
649 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000650 exp_extra="\"\""
651 if test $ac_sys_release -ge 5 -o \
652 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
653 exp_extra="."
654 fi
655 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000656 QNX*)
657 # qcc must be used because the other compilers do not
658 # support -N.
659 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000660 esac
661fi
662AC_MSG_RESULT($LINKCC)
663
Tarek Ziadébe720e02009-05-09 11:55:12 +0000664# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
665# make sure we default having it set to "no": this is used by
666# distutils.unixccompiler to know if it should add --enable-new-dtags
667# to linker command lines, and failing to detect GNU ld simply results
668# in the same bahaviour as before.
669AC_SUBST(GNULD)
670AC_MSG_CHECKING(for GNU ld)
671ac_prog=ld
672if test "$GCC" = yes; then
673 ac_prog=`$CC -print-prog-name=ld`
674fi
675case `"$ac_prog" -V 2>&1 < /dev/null` in
676 *GNU*)
677 GNULD=yes;;
678 *)
679 GNULD=no;;
680esac
681AC_MSG_RESULT($GNULD)
682
Daniel Stutzbacha606faa2010-08-31 19:51:07 +0000683AC_C_INLINE
684if test "$ac_cv_c_inline" != no ; then
Benjamin Petersond7f73e92010-09-05 00:09:07 +0000685 AC_DEFINE(USE_INLINE, 1, [Define to use the C99 inline keyword.])
Daniel Stutzbacha606faa2010-08-31 19:51:07 +0000686 AC_SUBST(USE_INLINE)
687fi
688
689
Martin v. Löwis1142de32002-03-29 16:28:31 +0000690AC_MSG_CHECKING(for --enable-shared)
691AC_ARG_ENABLE(shared,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000692 AS_HELP_STRING([--enable-shared], [disable/enable building shared python library]))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000693
Martin v. Löwis1142de32002-03-29 16:28:31 +0000694if test -z "$enable_shared"
695then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000696 case $ac_sys_system in
Antoine Pitrou6103ab12009-10-24 20:11:21 +0000697 CYGWIN*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000698 enable_shared="yes";;
699 *)
700 enable_shared="no";;
701 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000702fi
703AC_MSG_RESULT($enable_shared)
704
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000705AC_MSG_CHECKING(for --enable-profiling)
706AC_ARG_ENABLE(profiling,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000707 AS_HELP_STRING([--enable-profiling], [enable C-level code profiling]),
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000708[ac_save_cc="$CC"
709 CC="$CC -pg"
Matthias Kloseb159a552010-04-25 21:00:44 +0000710 AC_RUN_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
711 [ac_enable_profiling="yes"],
712 [ac_enable_profiling="no"],
713 [ac_enable_profiling="no"])
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000714 CC="$ac_save_cc"])
715AC_MSG_RESULT($ac_enable_profiling)
716
717case "$ac_enable_profiling" in
718 "yes")
719 BASECFLAGS="-pg $BASECFLAGS"
720 LDFLAGS="-pg $LDFLAGS"
721 ;;
722esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000723
724AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000725
Guido van Rossumb8552162001-09-05 14:58:11 +0000726# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
727# library that we build, but we do not want to link against it (we
728# will find it with a -framework option). For this reason there is an
729# extra variable BLDLIBRARY against which Python and the extension
730# modules are linked, BLDLIBRARY. This is normally the same as
731# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000732if test "$enable_framework"
733then
734 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000735 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000736 BLDLIBRARY=''
737else
738 BLDLIBRARY='$(LDLIBRARY)'
739fi
740
Martin v. Löwis1142de32002-03-29 16:28:31 +0000741# Other platforms follow
742if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000743 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000744 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000745 CYGWIN*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000746 LDLIBRARY='libpython$(LDVERSION).dll.a'
747 DLLLIBRARY='libpython$(LDVERSION).dll'
Martin v. Löwis1142de32002-03-29 16:28:31 +0000748 ;;
749 SunOS*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000750 LDLIBRARY='libpython$(LDVERSION).so'
751 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000752 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000753 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis9b142aa2011-02-05 20:26:52 +0000754 if test "$with_pydebug" != yes
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000755 then
756 PY3LIBRARY=libpython3.so
757 fi
Martin v. Löwis1142de32002-03-29 16:28:31 +0000758 ;;
Charles-François Natali749400a2011-07-24 22:41:18 +0200759 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000760 LDLIBRARY='libpython$(LDVERSION).so'
761 BLDLIBRARY='-L. -lpython$(LDVERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000762 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000763 case $ac_sys_system in
764 FreeBSD*)
765 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
766 ;;
767 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000768 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis9b142aa2011-02-05 20:26:52 +0000769 if test "$with_pydebug" != yes
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000770 then
771 PY3LIBRARY=libpython3.so
772 fi
Martin v. Löwis1142de32002-03-29 16:28:31 +0000773 ;;
774 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000775 case `uname -m` in
776 ia64)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000777 LDLIBRARY='libpython$(LDVERSION).so'
Thomas Wouters477c8d52006-05-27 19:21:47 +0000778 ;;
779 *)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000780 LDLIBRARY='libpython$(LDVERSION).sl'
Thomas Wouters477c8d52006-05-27 19:21:47 +0000781 ;;
782 esac
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000783 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000784 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000785 ;;
786 OSF*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000787 LDLIBRARY='libpython$(LDVERSION).so'
788 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(LDVERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000789 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000790 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000791 Darwin*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000792 LDLIBRARY='libpython$(LDVERSION).dylib'
793 BLDLIBRARY='-L. -lpython$(LDVERSION)'
Georg Brandlb1441c72009-01-03 22:33:39 +0000794 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
795 ;;
Antoine Pitrou8e6b4072010-09-10 19:44:44 +0000796 AIX*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000797 LDLIBRARY='libpython$(LDVERSION).so'
Antoine Pitrou8e6b4072010-09-10 19:44:44 +0000798 RUNSHARED=LIBPATH=`pwd`:${LIBPATH}
799 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000800
Martin v. Löwis1142de32002-03-29 16:28:31 +0000801 esac
Jason Tishler30765592003-09-04 11:04:06 +0000802else # shared is disabled
803 case $ac_sys_system in
804 CYGWIN*)
805 BLDLIBRARY='$(LIBRARY)'
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000806 LDLIBRARY='libpython$(LDVERSION).dll.a'
Jason Tishler30765592003-09-04 11:04:06 +0000807 ;;
808 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000809fi
810
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000811AC_MSG_RESULT($LDLIBRARY)
812
Guido van Rossum627b2d71993-12-24 10:39:16 +0000813AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000814AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000815AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000816
Tarek Ziadé5662d3e2009-05-07 21:24:43 +0000817# tweak ARFLAGS only if the user didn't set it on the command line
818AC_SUBST(ARFLAGS)
819if test -z "$ARFLAGS"
820then
821 ARFLAGS="rc"
822fi
823
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000824AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000825AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000826if test $SVNVERSION = found
827then
828 SVNVERSION="svnversion \$(srcdir)"
829else
Benjamin Petersonf53eec82009-05-23 19:36:27 +0000830 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000831fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000832
Trent Nelson9effe692012-10-16 08:41:32 -0400833BUILDDIR="`pwd`"
834AC_SUBST(BUILDDIR)
835AC_SUBST(BASECPPFLAGS)
Trent Nelson66031182012-10-16 11:04:04 -0400836if test "$srcdir" != "." -a "$srcdir" != "$BUILDDIR"; then
Trent Nelson9effe692012-10-16 08:41:32 -0400837 # If we're building out-of-tree, we need to make sure the following
838 # resources get picked up before their $srcdir counterparts.
839 # Objects/ -> typeslots.inc
840 # Include/ -> Python-ast.h, graminit.h
841 # Python/ -> importlib.h
842 # (A side effect of this is that these resources will automatically be
843 # regenerated when building out-of-tree, regardless of whether or not
844 # the $srcdir counterpart is up-to-date. This is an acceptable trade
845 # off.)
846 BASECPPFLAGS="-IObjects -IInclude -IPython"
847else
848 BASECPPFLAGS=""
849fi
850
Georg Brandl1ca2e792011-03-05 20:51:24 +0100851AC_SUBST(HGVERSION)
852AC_SUBST(HGTAG)
853AC_SUBST(HGBRANCH)
Ralf Schmitt06945622011-05-31 17:10:03 -0500854
Antoine Pitrou5cd3e302011-07-27 01:16:18 +0200855if test -e $srcdir/.hg/dirstate
Ralf Schmitt06945622011-05-31 17:10:03 -0500856then
Georg Brandl1ca2e792011-03-05 20:51:24 +0100857AC_CHECK_PROG(HAS_HG, hg, found, not-found)
Ralf Schmitt06945622011-05-31 17:10:03 -0500858else
859HAS_HG=no-repository
860fi
Georg Brandl1ca2e792011-03-05 20:51:24 +0100861if test $HAS_HG = found
862then
863 HGVERSION="hg id -i \$(srcdir)"
864 HGTAG="hg id -t \$(srcdir)"
865 HGBRANCH="hg id -b \$(srcdir)"
866else
867 HGVERSION=""
868 HGTAG=""
869 HGBRANCH=""
870fi
871
Ralf Schmitt06945622011-05-31 17:10:03 -0500872AC_SUBST(DISABLE_ASDLGEN)
873DISABLE_ASDLGEN=""
874AC_CHECK_PROG(HAS_PYTHON, python, found, not-found)
875if test $HAS_HG != found -o $HAS_PYTHON != found
876then
877 DISABLE_ASDLGEN="@echo hg: $HAS_HG, python: $HAS_PYTHON! cannot run \$(srcdir)/Parser/asdl_c.py #"
878fi
879
880
Neil Schemenauera42c8272001-03-31 00:01:55 +0000881case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000882bsdos*|hp*|HP*)
883 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000884 if test -z "$INSTALL"
885 then
886 INSTALL="${srcdir}/install-sh -c"
887 fi
888esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000889AC_PROG_INSTALL
Trent Nelsona45afca2012-08-30 14:32:02 +0000890AC_PROG_MKDIR_P
Guido van Rossumb418f891996-07-30 18:06:02 +0000891
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000892# Not every filesystem supports hard links
893AC_SUBST(LN)
894if test -z "$LN" ; then
895 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000896 CYGWIN*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000897 *) LN=ln;;
898 esac
899fi
900
Barry Warsaw35f3a2c2010-09-03 18:30:30 +0000901# For calculating the .so ABI tag.
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000902AC_SUBST(ABIFLAGS)
903ABIFLAGS=""
Barry Warsaw35f3a2c2010-09-03 18:30:30 +0000904
Fred Drake9f715822001-07-11 06:27:00 +0000905# Check for --with-pydebug
906AC_MSG_CHECKING(for --with-pydebug)
907AC_ARG_WITH(pydebug,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000908 AS_HELP_STRING([--with-pydebug], [build with Py_DEBUG defined]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000909[
Fred Drake9f715822001-07-11 06:27:00 +0000910if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000911then
912 AC_DEFINE(Py_DEBUG, 1,
913 [Define if you want to build an interpreter with many run-time checks.])
914 AC_MSG_RESULT(yes);
915 Py_DEBUG='true'
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000916 ABIFLAGS="${ABIFLAGS}d"
Fred Drake9f715822001-07-11 06:27:00 +0000917else AC_MSG_RESULT(no); Py_DEBUG='false'
918fi],
919[AC_MSG_RESULT(no)])
920
Skip Montanarodecc6a42003-01-01 20:07:49 +0000921# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
922# merged with this chunk of code?
923
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000924# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000925# ------------------------
926# (The following bit of code is complicated enough - please keep things
927# indented properly. Just pretend you're editing Python code. ;-)
928
929# There are two parallel sets of case statements below, one that checks to
930# see if OPT was set and one that does BASECFLAGS setting based upon
931# compiler and platform. BASECFLAGS tweaks need to be made even if the
932# user set OPT.
933
934# tweak OPT based on compiler and platform, only if the user didn't set
935# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000936AC_SUBST(OPT)
Benjamin Peterson65b4ec52010-03-23 21:02:34 +0000937if test "${OPT-unset}" = "unset"
Guido van Rossumb418f891996-07-30 18:06:02 +0000938then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000939 case $GCC in
940 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000941 if test "$CC" != 'g++' ; then
942 STRICT_PROTO="-Wstrict-prototypes"
943 fi
Christian Heimes38053212007-12-14 01:24:44 +0000944 # For gcc 4.x we need to use -fwrapv so lets check if its supported
945 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
946 WRAP="-fwrapv"
947 fi
Stefan Krah962055d2011-09-14 15:14:08 +0200948
949 # Clang also needs -fwrapv
Stefan Krahaf04ff22011-12-08 22:20:31 +0100950 case $CC in
951 *clang*) WRAP="-fwrapv"
952 ;;
953 esac
Stefan Krah962055d2011-09-14 15:14:08 +0200954
Skip Montanarodecc6a42003-01-01 20:07:49 +0000955 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000956 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000957 if test "$Py_DEBUG" = 'true' ; then
958 # Optimization messes up debuggers, so turn it off for
959 # debug builds.
Mark Dickinsonb2153e92010-05-05 22:31:36 +0000960 OPT="-g -O0 -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000961 else
Christian Heimes38053212007-12-14 01:24:44 +0000962 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000963 fi
964 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000965 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000966 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000967 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000968 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000969 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000970 SCO_SV*) OPT="$OPT -m486 -DSCO5"
971 ;;
972 esac
Fred Drake9f715822001-07-11 06:27:00 +0000973 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000974
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000975 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000976 OPT="-O"
977 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000978 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +0000979fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000980
Skip Montanarodecc6a42003-01-01 20:07:49 +0000981AC_SUBST(BASECFLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000982
983# The -arch flags for universal builds on OSX
984UNIVERSAL_ARCH_FLAGS=
985AC_SUBST(UNIVERSAL_ARCH_FLAGS)
986
Skip Montanarodecc6a42003-01-01 20:07:49 +0000987# tweak BASECFLAGS based on compiler and platform
988case $GCC in
989yes)
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000990 # Python doesn't violate C99 aliasing rules, but older versions of
991 # GCC produce warnings for legal Python code. Enable
992 # -fno-strict-aliasing on versions of GCC that support but produce
993 # warnings. See Issue3326
994 AC_MSG_CHECKING(whether $CC accepts and needs -fno-strict-aliasing)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000995 ac_save_cc="$CC"
996 CC="$CC -fno-strict-aliasing"
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000997 save_CFLAGS="$CFLAGS"
998 AC_CACHE_VAL(ac_cv_no_strict_aliasing,
Matthias Kloseb159a552010-04-25 21:00:44 +0000999 AC_COMPILE_IFELSE(
1000 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001001 AC_LANG_PROGRAM([[]], [[]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001002 ],[
1003 CC="$ac_save_cc -fstrict-aliasing"
1004 CFLAGS="$CFLAGS -Werror -Wstrict-aliasing"
1005 AC_COMPILE_IFELSE(
1006 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001007 AC_LANG_PROGRAM([[void f(int **x) {}]],
1008 [[double *x; f((int **) &x);]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001009 ],[
1010 ac_cv_no_strict_aliasing=no
1011 ],[
1012 ac_cv_no_strict_aliasing=yes
1013 ])
1014 ],[
1015 ac_cv_no_strict_aliasing=no
1016 ]))
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001017 CFLAGS="$save_CFLAGS"
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001018 CC="$ac_save_cc"
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001019 AC_MSG_RESULT($ac_cv_no_strict_aliasing)
1020 if test $ac_cv_no_strict_aliasing = yes
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001021 then
1022 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
1023 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001024
1025 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
1026 # support. Without this, treatment of subnormals doesn't follow
1027 # the standard.
1028 case $ac_sys_machine in
1029 alpha*)
1030 BASECFLAGS="$BASECFLAGS -mieee"
1031 ;;
1032 esac
1033
Skip Montanarodecc6a42003-01-01 20:07:49 +00001034 case $ac_sys_system in
1035 SCO_SV*)
1036 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
1037 ;;
1038 # is there any other compiler on Darwin besides gcc?
1039 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +00001040 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
1041 # used to be here, but non-Apple gcc doesn't accept them.
Ronald Oussoren666028b2010-04-18 19:07:43 +00001042 if test "${CC}" = gcc
1043 then
1044 AC_MSG_CHECKING(which compiler should be used)
1045 case "${UNIVERSALSDK}" in
1046 */MacOSX10.4u.sdk)
1047 # Build using 10.4 SDK, force usage of gcc when the
1048 # compiler is gcc, otherwise the user will get very
1049 # confusing error messages when building on OSX 10.6
1050 CC=gcc-4.0
1051 CPP=cpp-4.0
1052 ;;
1053 esac
1054 AC_MSG_RESULT($CC)
1055 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001056
1057
Thomas Wouters477c8d52006-05-27 19:21:47 +00001058 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001059 UNIVERSAL_ARCH_FLAGS=""
1060 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
1061 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson6794aa32008-07-16 20:33:37 +00001062 ARCH_RUN_32BIT=""
Benjamin Peterson051858e2010-04-11 22:14:02 +00001063 LIPO_32BIT_FLAGS=""
Georg Brandlfcaf9102008-07-16 02:17:56 +00001064 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
1065 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +00001066 LIPO_32BIT_FLAGS=""
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001067 ARCH_RUN_32BIT="true"
Georg Brandlfcaf9102008-07-16 02:17:56 +00001068
1069 elif test "$UNIVERSAL_ARCHS" = "all" ; then
1070 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +00001071 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +00001072 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Georg Brandlfcaf9102008-07-16 02:17:56 +00001073
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001074 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
1075 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +00001076 LIPO_32BIT_FLAGS="-extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +00001077 ARCH_RUN_32BIT="/usr/bin/arch -i386"
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001078
1079 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
1080 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +00001081 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +00001082 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001083
Georg Brandlfcaf9102008-07-16 02:17:56 +00001084 else
Ronald Oussoren74f29b42009-09-20 20:09:26 +00001085 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Georg Brandlfcaf9102008-07-16 02:17:56 +00001086
1087 fi
1088
1089
Ronald Oussoren666028b2010-04-18 19:07:43 +00001090 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
1091 if test "${UNIVERSALSDK}" != "/"
1092 then
1093 CFLAGS="-isysroot ${UNIVERSALSDK} ${CFLAGS}"
1094 LDFLAGS="-isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren712979d2010-04-20 19:51:33 +00001095 CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001096 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00001097 fi
1098
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001099 # Calculate the right deployment target for this build.
1100 #
1101 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
1102 if test ${cur_target} '>' 10.2; then
1103 cur_target=10.3
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001104 if test ${enable_universalsdk}; then
1105 if test "${UNIVERSAL_ARCHS}" = "all"; then
1106 # Ensure that the default platform for a
1107 # 4-way universal build is OSX 10.5,
1108 # that's the first OS release where
1109 # 4-way builds make sense.
1110 cur_target='10.5'
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001111
1112 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
1113 cur_target='10.5'
1114
1115 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
1116 cur_target='10.5'
1117
1118 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
1119 cur_target='10.5'
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001120 fi
1121 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001122 if test `/usr/bin/arch` = "i386"; then
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001123 # On Intel macs default to a deployment
1124 # target of 10.4, that's the first OSX
1125 # release with Intel support.
1126 cur_target="10.4"
1127 fi
1128 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001129 fi
1130 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1131
1132 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1133 # environment with a value that is the same as what we'll use
1134 # in the Makefile to ensure that we'll get the same compiler
1135 # environment during configure and build time.
1136 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1137 export MACOSX_DEPLOYMENT_TARGET
1138 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1139
Skip Montanarodecc6a42003-01-01 20:07:49 +00001140 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001141 OSF*)
1142 BASECFLAGS="$BASECFLAGS -mieee"
1143 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001144 esac
1145 ;;
1146
1147*)
1148 case $ac_sys_system in
1149 OpenUNIX*|UnixWare*)
1150 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1151 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001152 OSF*)
1153 BASECFLAGS="$BASECFLAGS -ieee -std"
1154 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001155 SCO_SV*)
1156 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1157 ;;
1158 esac
1159 ;;
1160esac
1161
Fred Drakee1ceaa02001-12-04 20:55:47 +00001162if test "$Py_DEBUG" = 'true'; then
1163 :
1164else
1165 OPT="-DNDEBUG $OPT"
1166fi
1167
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001168if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001169then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001170 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001171fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001172
Thomas Wouters89f507f2006-12-13 04:49:30 +00001173# Check whether GCC supports PyArg_ParseTuple format
1174if test "$GCC" = "yes"
1175then
1176 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1177 save_CFLAGS=$CFLAGS
1178 CFLAGS="$CFLAGS -Werror"
Matthias Kloseb159a552010-04-25 21:00:44 +00001179 AC_COMPILE_IFELSE([
1180 AC_LANG_PROGRAM([[void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));]], [[]])
1181 ],[
1182 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1,
1183 [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1184 AC_MSG_RESULT(yes)
1185 ],[
1186 AC_MSG_RESULT(no)
1187 ])
Thomas Wouters89f507f2006-12-13 04:49:30 +00001188 CFLAGS=$save_CFLAGS
1189fi
1190
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001191# On some compilers, pthreads are available without further options
1192# (e.g. MacOS X). On some of these systems, the compiler will not
1193# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1194# So we have to see first whether pthreads are available without
1195# options before we can check whether -Kpthread improves anything.
1196AC_MSG_CHECKING(whether pthreads are available without options)
1197AC_CACHE_VAL(ac_cv_pthread_is_default,
Matthias Kloseb159a552010-04-25 21:00:44 +00001198[AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001199#include <pthread.h>
1200
1201void* routine(void* p){return NULL;}
1202
1203int main(){
1204 pthread_t p;
1205 if(pthread_create(&p,NULL,routine,NULL)!=0)
1206 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001207 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001208 return 0;
1209}
Matthias Kloseb159a552010-04-25 21:00:44 +00001210]])],[
Skip Montanarod8d39a02003-07-10 20:44:10 +00001211 ac_cv_pthread_is_default=yes
1212 ac_cv_kthread=no
1213 ac_cv_pthread=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001214],[ac_cv_pthread_is_default=no],[ac_cv_pthread_is_default=no])
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001215])
1216AC_MSG_RESULT($ac_cv_pthread_is_default)
1217
1218
1219if test $ac_cv_pthread_is_default = yes
1220then
1221 ac_cv_kpthread=no
1222else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001223# -Kpthread, if available, provides the right #defines
1224# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001225# Some compilers won't report that they do not support -Kpthread,
1226# so we need to run a program to see whether it really made the
1227# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001228AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1229AC_CACHE_VAL(ac_cv_kpthread,
1230[ac_save_cc="$CC"
1231CC="$CC -Kpthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001232AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001233#include <pthread.h>
1234
1235void* routine(void* p){return NULL;}
1236
1237int main(){
1238 pthread_t p;
1239 if(pthread_create(&p,NULL,routine,NULL)!=0)
1240 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001241 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001242 return 0;
1243}
Matthias Kloseb159a552010-04-25 21:00:44 +00001244]])],[ac_cv_kpthread=yes],[ac_cv_kpthread=no],[ac_cv_kpthread=no])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001245CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001246AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001247fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001248
Skip Montanarod8d39a02003-07-10 20:44:10 +00001249if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001250then
1251# -Kthread, if available, provides the right #defines
1252# and linker options to make pthread_create available
1253# Some compilers won't report that they do not support -Kthread,
1254# so we need to run a program to see whether it really made the
1255# function available.
1256AC_MSG_CHECKING(whether $CC accepts -Kthread)
1257AC_CACHE_VAL(ac_cv_kthread,
1258[ac_save_cc="$CC"
1259CC="$CC -Kthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001260AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001261#include <pthread.h>
1262
1263void* routine(void* p){return NULL;}
1264
1265int main(){
1266 pthread_t p;
1267 if(pthread_create(&p,NULL,routine,NULL)!=0)
1268 return 1;
1269 (void)pthread_detach(p);
1270 return 0;
1271}
Matthias Kloseb159a552010-04-25 21:00:44 +00001272]])],[ac_cv_kthread=yes],[ac_cv_kthread=no],[ac_cv_kthread=no])
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001273CC="$ac_save_cc"])
1274AC_MSG_RESULT($ac_cv_kthread)
1275fi
1276
Skip Montanarod8d39a02003-07-10 20:44:10 +00001277if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001278then
1279# -pthread, if available, provides the right #defines
1280# and linker options to make pthread_create available
1281# Some compilers won't report that they do not support -pthread,
1282# so we need to run a program to see whether it really made the
1283# function available.
1284AC_MSG_CHECKING(whether $CC accepts -pthread)
1285AC_CACHE_VAL(ac_cv_thread,
1286[ac_save_cc="$CC"
1287CC="$CC -pthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001288AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001289#include <pthread.h>
1290
1291void* routine(void* p){return NULL;}
1292
1293int main(){
1294 pthread_t p;
1295 if(pthread_create(&p,NULL,routine,NULL)!=0)
1296 return 1;
1297 (void)pthread_detach(p);
1298 return 0;
1299}
Matthias Kloseb159a552010-04-25 21:00:44 +00001300]])],[ac_cv_pthread=yes],[ac_cv_pthread=no],[ac_cv_pthread=no])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001301CC="$ac_save_cc"])
1302AC_MSG_RESULT($ac_cv_pthread)
1303fi
1304
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001305# If we have set a CC compiler flag for thread support then
1306# check if it works for CXX, too.
1307ac_cv_cxx_thread=no
1308if test ! -z "$CXX"
1309then
1310AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1311ac_save_cxx="$CXX"
1312
1313if test "$ac_cv_kpthread" = "yes"
1314then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001315 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001316 ac_cv_cxx_thread=yes
1317elif test "$ac_cv_kthread" = "yes"
1318then
1319 CXX="$CXX -Kthread"
1320 ac_cv_cxx_thread=yes
1321elif test "$ac_cv_pthread" = "yes"
1322then
1323 CXX="$CXX -pthread"
1324 ac_cv_cxx_thread=yes
1325fi
1326
1327if test $ac_cv_cxx_thread = yes
1328then
1329 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1330 $CXX -c conftest.$ac_ext 2>&5
1331 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1332 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1333 then
1334 ac_cv_cxx_thread=yes
1335 else
1336 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001337 fi
1338 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001339fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001340AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001341fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001342CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001343
Fred Drakece81d592000-07-09 14:39:29 +00001344dnl # check for ANSI or K&R ("traditional") preprocessor
1345dnl AC_MSG_CHECKING(for C preprocessor type)
Matthias Kloseb159a552010-04-25 21:00:44 +00001346dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Fred Drakece81d592000-07-09 14:39:29 +00001347dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1348dnl int foo;
1349dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
Matthias Kloseb159a552010-04-25 21:00:44 +00001350dnl ]], [[;]])],[cpp_type=ansi],[AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional])
Fred Drakece81d592000-07-09 14:39:29 +00001351dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001352
Guido van Rossum627b2d71993-12-24 10:39:16 +00001353# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001354AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001355AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1356fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001357ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001358shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001359unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001360sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1361sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001362sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Gregory P. Smith8facece2012-01-21 14:01:08 -08001363sys/syscall.h sys/termio.h sys/time.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001364sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001365sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Ronald Oussoren755740f2010-02-07 19:56:39 +00001366bluetooth/bluetooth.h linux/tipc.h spawn.h util.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001367AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001368AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001369
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001370# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001371AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001372#ifdef HAVE_CURSES_H
1373#include <curses.h>
1374#endif
1375])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001376
Martin v. Löwis11017b12006-01-14 18:12:57 +00001377# On Linux, netlink.h requires asm/types.h
1378AC_CHECK_HEADERS(linux/netlink.h,,,[
1379#ifdef HAVE_ASM_TYPES_H
1380#include <asm/types.h>
1381#endif
1382#ifdef HAVE_SYS_SOCKET_H
1383#include <sys/socket.h>
1384#endif
1385])
1386
Guido van Rossum627b2d71993-12-24 10:39:16 +00001387# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001388was_it_defined=no
1389AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001390AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1391 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1392])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001393AC_MSG_RESULT($was_it_defined)
1394
Neal Norwitz11690112002-07-30 01:08:28 +00001395# Check whether using makedev requires defining _OSF_SOURCE
1396AC_MSG_CHECKING(for makedev)
Jesus Cea740f53a2010-04-28 11:35:30 +00001397AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1398#if defined(MAJOR_IN_MKDEV)
1399#include <sys/mkdev.h>
1400#elif defined(MAJOR_IN_SYSMACROS)
1401#include <sys/sysmacros.h>
1402#else
1403#include <sys/types.h>
1404#endif
1405]], [[
1406 makedev(0, 0) ]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001407],[ac_cv_has_makedev=yes],[ac_cv_has_makedev=no])
Neal Norwitz11690112002-07-30 01:08:28 +00001408if test "$ac_cv_has_makedev" = "no"; then
1409 # we didn't link, try if _OSF_SOURCE will allow us to link
Matthias Kloseb159a552010-04-25 21:00:44 +00001410 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001411#define _OSF_SOURCE 1
1412#include <sys/types.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00001413 ]],
1414 [[ makedev(0, 0) ]])],
1415 [ac_cv_has_makedev=yes],
1416 [ac_cv_has_makedev=no])
Neal Norwitz11690112002-07-30 01:08:28 +00001417 if test "$ac_cv_has_makedev" = "yes"; then
1418 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1419 fi
1420fi
1421AC_MSG_RESULT($ac_cv_has_makedev)
1422if test "$ac_cv_has_makedev" = "yes"; then
1423 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1424fi
1425
Martin v. Löwis399a6892002-10-04 10:22:02 +00001426# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1427# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1428# defined, but the compiler does not support pragma redefine_extname,
1429# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1430# structures (such as rlimit64) without declaring them. As a
1431# work-around, disable LFS on such configurations
1432
1433use_lfs=yes
1434AC_MSG_CHECKING(Solaris LFS bug)
Matthias Kloseb159a552010-04-25 21:00:44 +00001435AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis399a6892002-10-04 10:22:02 +00001436#define _LARGEFILE_SOURCE 1
1437#define _FILE_OFFSET_BITS 64
1438#include <sys/resource.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00001439]], [[struct rlimit foo;]])],[sol_lfs_bug=no],[sol_lfs_bug=yes])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001440AC_MSG_RESULT($sol_lfs_bug)
1441if test "$sol_lfs_bug" = "yes"; then
1442 use_lfs=no
1443fi
1444
1445if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001446# Two defines needed to enable largefile support on various platforms
1447# These may affect some typedefs
Georg Brandl216e4042011-02-19 08:58:23 +00001448case $ac_sys_system/$ac_sys_release in
1449AIX*)
1450 AC_DEFINE(_LARGE_FILES, 1,
1451 [This must be defined on AIX systems to enable large file support.])
1452 ;;
1453esac
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001454AC_DEFINE(_LARGEFILE_SOURCE, 1,
1455[This must be defined on some systems to enable large file support.])
1456AC_DEFINE(_FILE_OFFSET_BITS, 64,
1457[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001458fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001459
Guido van Rossum300fda71996-08-19 21:58:16 +00001460# Add some code to confdefs.h so that the test for off_t works on SCO
1461cat >> confdefs.h <<\EOF
1462#if defined(SCO_DS)
1463#undef _OFF_T
1464#endif
1465EOF
1466
Guido van Rossumef2255b2000-03-10 22:30:29 +00001467# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001468AC_TYPE_MODE_T
1469AC_TYPE_OFF_T
1470AC_TYPE_PID_T
Matthias Klosebada4c32010-04-25 21:18:48 +00001471AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[assume C89 semantics that RETSIGTYPE is always void])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001472AC_TYPE_SIZE_T
1473AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001474AC_TYPE_UINT32_T
1475AC_TYPE_UINT64_T
1476AC_TYPE_INT32_T
1477AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001478AC_CHECK_TYPE(ssize_t,
Matthias Klosec80c93f2010-04-24 17:04:35 +00001479 AC_DEFINE(HAVE_SSIZE_T, 1, [Define if your compiler provides ssize_t]),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001480
Guido van Rossumef2255b2000-03-10 22:30:29 +00001481# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001482# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001483AC_CHECK_SIZEOF(int, 4)
1484AC_CHECK_SIZEOF(long, 4)
1485AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001486AC_CHECK_SIZEOF(short, 2)
1487AC_CHECK_SIZEOF(float, 4)
1488AC_CHECK_SIZEOF(double, 8)
1489AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001490AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001491AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001492
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001493AC_MSG_CHECKING(for long long support)
1494have_long_long=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001495AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long long x; x = (long long)0;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001496 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1497 have_long_long=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001498],[])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001499AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001500if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001501AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001502fi
1503
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001504AC_MSG_CHECKING(for long double support)
1505have_long_double=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001506AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long double x; x = (long double)0;]])],[
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001507 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1508 have_long_double=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001509],[])
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001510AC_MSG_RESULT($have_long_double)
1511if test "$have_long_double" = yes ; then
1512AC_CHECK_SIZEOF(long double, 16)
1513fi
1514
1515
Thomas Woutersb2137042007-02-01 18:02:27 +00001516AC_MSG_CHECKING(for _Bool support)
1517have_c99_bool=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001518AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[_Bool x; x = (_Bool)0;]])],[
Thomas Woutersb2137042007-02-01 18:02:27 +00001519 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1520 have_c99_bool=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001521],[])
Thomas Woutersb2137042007-02-01 18:02:27 +00001522AC_MSG_RESULT($have_c99_bool)
1523if test "$have_c99_bool" = yes ; then
1524AC_CHECK_SIZEOF(_Bool, 1)
1525fi
1526
Thomas Wouters89f507f2006-12-13 04:49:30 +00001527AC_CHECK_TYPES(uintptr_t,
1528 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1529 [], [#ifdef HAVE_STDINT_H
1530 #include <stdint.h>
Antoine Pitrou1bf29b72010-10-10 08:10:16 +00001531 #endif
1532 #ifdef HAVE_INTTYPES_H
1533 #include <inttypes.h>
Thomas Wouters89f507f2006-12-13 04:49:30 +00001534 #endif])
1535
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001536AC_CHECK_SIZEOF(off_t, [], [
1537#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001538#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001539#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001540])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001541
1542AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson2df5d282009-12-31 21:22:50 +00001543if test "$have_long_long" = yes
1544then
1545if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001546 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001547 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1548 [Defined to enable large file support when an off_t is bigger than a long
1549 and long long is available and at least as big as an off_t. You may need
1550 to add some flags for configuration and compilation to enable this mode.
1551 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001552 AC_MSG_RESULT(yes)
1553else
1554 AC_MSG_RESULT(no)
1555fi
Mark Dickinson2df5d282009-12-31 21:22:50 +00001556else
1557 AC_MSG_RESULT(no)
1558fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001559
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001560AC_CHECK_SIZEOF(time_t, [], [
1561#ifdef HAVE_SYS_TYPES_H
1562#include <sys/types.h>
1563#endif
1564#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00001565#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001566#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001567])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001568
Trent Mick635f6fb2000-08-23 21:33:05 +00001569# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001570ac_save_cc="$CC"
1571if test "$ac_cv_kpthread" = "yes"
1572then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001573elif test "$ac_cv_kthread" = "yes"
1574then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001575elif test "$ac_cv_pthread" = "yes"
1576then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001577fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001578
Trent Mick635f6fb2000-08-23 21:33:05 +00001579AC_MSG_CHECKING(for pthread_t)
1580have_pthread_t=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001581AC_COMPILE_IFELSE([
1582 AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t x; x = *(pthread_t*)0;]])
1583],[have_pthread_t=yes],[])
Trent Mick635f6fb2000-08-23 21:33:05 +00001584AC_MSG_RESULT($have_pthread_t)
1585if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001586 AC_CHECK_SIZEOF(pthread_t, [], [
1587#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001588#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001589#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001590 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001591fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001592CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001593
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001594AC_SUBST(OTHER_LIBTOOL_OPT)
1595case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001596 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001597 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1598 ;;
1599 Darwin/*)
1600 OTHER_LIBTOOL_OPT=""
1601 ;;
1602esac
1603
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001604
1605ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001606AC_SUBST(LIBTOOL_CRUFT)
1607case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001608 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001609 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1610 if test "${enable_universalsdk}"; then
1611 :
1612 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001613 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001614 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001615 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001616 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001617 Darwin/*)
Ronald Oussoren9812a6c2010-02-07 11:53:18 +00001618 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001619 if test ${gcc_version} '<' 4.0
1620 then
1621 LIBTOOL_CRUFT="-lcc_dynamic"
1622 else
1623 LIBTOOL_CRUFT=""
1624 fi
Matthias Kloseb159a552010-04-25 21:00:44 +00001625 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001626 #include <unistd.h>
1627 int main(int argc, char*argv[])
1628 {
1629 if (sizeof(long) == 4) {
1630 return 0;
1631 } else {
1632 return 1;
1633 }
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001634 }
Matthias Kloseb159a552010-04-25 21:00:44 +00001635 ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=yes])
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001636
1637 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001638 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001639 i386)
1640 MACOSX_DEFAULT_ARCH="i386"
1641 ;;
1642 ppc)
1643 MACOSX_DEFAULT_ARCH="ppc"
1644 ;;
1645 *)
1646 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1647 ;;
1648 esac
1649 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001650 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001651 i386)
1652 MACOSX_DEFAULT_ARCH="x86_64"
1653 ;;
1654 ppc)
1655 MACOSX_DEFAULT_ARCH="ppc64"
1656 ;;
1657 *)
1658 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1659 ;;
1660 esac
1661
1662 #ARCH_RUN_32BIT="true"
1663 fi
1664
1665 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001666 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001667 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001668esac
1669
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001670AC_MSG_CHECKING(for --enable-framework)
1671if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001672then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001673 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001674 # -F. is needed to allow linking to the framework while
1675 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001676 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1677 [Define if you want to produce an OpenStep/Rhapsody framework
1678 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001679 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001680 if test $enable_shared = "yes"
1681 then
1682 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1683 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001684else
1685 AC_MSG_RESULT(no)
1686fi
1687
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001688AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001689case $ac_sys_system/$ac_sys_release in
1690 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001691 AC_DEFINE(WITH_DYLD, 1,
1692 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1693 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1694 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001695 AC_MSG_RESULT(always on for Darwin)
1696 ;;
1697 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001698 AC_MSG_RESULT(no)
1699 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001700esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001701
Guido van Rossumac405f61994-09-12 10:56:06 +00001702# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001703AC_SUBST(SO)
1704AC_SUBST(LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001705AC_SUBST(LDCXXSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001706AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001707AC_SUBST(CCSHARED)
1708AC_SUBST(LINKFORSHARED)
Georg Brandlb1441c72009-01-03 22:33:39 +00001709
Thomas Wouters477c8d52006-05-27 19:21:47 +00001710AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001711# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001712# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001713# (Shared libraries in this instance are shared modules to be loaded into
1714# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001715AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001716if test -z "$LDSHARED"
1717then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001718 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001719 AIX*)
Georg Brandl9a829be2011-02-15 15:44:51 +00001720 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:\$(srcdir)/Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001721 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001722 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001723 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001724 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001725 SunOS/5*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001726 if test "$GCC" = "yes" ; then
1727 LDSHARED='$(CC) -shared'
1728 LDCXXSHARED='$(CXX) -shared'
1729 else
1730 LDSHARED='$(CC) -G'
1731 LDCXXSHARED='$(CXX) -G'
Greg Ward57c9a662000-05-26 12:22:54 +00001732 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001733 hp*|HP*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001734 if test "$GCC" = "yes" ; then
1735 LDSHARED='$(CC) -shared'
1736 LDCXXSHARED='$(CXX) -shared'
1737 else
1738 LDSHARED='ld -b'
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001739 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001740 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001741 Darwin/1.3*)
Antoine Pitroud4958c22010-10-13 17:01:10 +00001742 LDSHARED='$(CC) -bundle'
1743 LDCXXSHARED='$(CXX) -bundle'
Jack Jansena3891ea2001-09-07 14:25:12 +00001744 if test "$enable_framework" ; then
1745 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001746 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1747 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001748 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001749 else
1750 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001751 LDSHARED="$LDSHARED -undefined suppress"
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001752 LDCXXSHARED="$LDCXXSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001753 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001754 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Antoine Pitroud4958c22010-10-13 17:01:10 +00001755 LDSHARED='$(CC) -bundle'
1756 LDCXXSHARED='$(CXX) -bundle'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001757 if test "$enable_framework" ; then
1758 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001759 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1760 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001761 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001762 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001763 # No framework, use the Python app as bundle-loader
1764 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001765 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001766 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001767 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001768 Darwin/*)
1769 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1770 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001771
Georg Brandlfcaf9102008-07-16 02:17:56 +00001772 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001773 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001774 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001775 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001776 fi
Antoine Pitroud4958c22010-10-13 17:01:10 +00001777 LDSHARED='$(CC) -bundle -undefined dynamic_lookup'
1778 LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup'
Jack Jansen6b08a402004-06-03 12:41:45 +00001779 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001780 else
Antoine Pitroud4958c22010-10-13 17:01:10 +00001781 LDSHARED='$(CC) -bundle'
1782 LDCXXSHARED='$(CXX) -bundle'
Jack Jansen6b08a402004-06-03 12:41:45 +00001783 if test "$enable_framework" ; then
1784 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001785 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1786 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001787 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001788 else
1789 # No framework, use the Python app as bundle-loader
1790 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1791 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001792 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001793 fi
1794 fi
1795 ;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001796 Linux*|GNU*|QNX*)
1797 LDSHARED='$(CC) -shared'
1798 LDCXXSHARED='$(CXX) -shared';;
1799 BSD/OS*/4*)
1800 LDSHARED="gcc -shared"
1801 LDCXXSHARED="g++ -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001802 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001803 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001804 then
Antoine Pitroud4958c22010-10-13 17:01:10 +00001805 LDSHARED='$(CC) -shared'
1806 LDCXXSHARED='$(CXX) -shared'
Guido van Rossum0286ae82000-08-29 15:06:49 +00001807 else
Antoine Pitroud4958c22010-10-13 17:01:10 +00001808 LDSHARED="ld -Bshareable"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001809 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001810 OpenBSD*)
1811 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1812 then
Antoine Pitroud4958c22010-10-13 17:01:10 +00001813 LDSHARED='$(CC) -shared $(CCSHARED)'
1814 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001815 else
1816 case `uname -r` in
1817 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1818 LDSHARED="ld -Bshareable ${LDFLAGS}"
1819 ;;
1820 *)
Antoine Pitroud4958c22010-10-13 17:01:10 +00001821 LDSHARED='$(CC) -shared $(CCSHARED)'
1822 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001823 ;;
1824 esac
1825 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001826 NetBSD*|DragonFly*)
Antoine Pitrouece919e2011-01-02 20:45:21 +00001827 LDSHARED='$(CC) -shared'
1828 LDCXXSHARED='$(CXX) -shared';;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001829 OpenUNIX*|UnixWare*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001830 if test "$GCC" = "yes" ; then
1831 LDSHARED='$(CC) -shared'
1832 LDCXXSHARED='$(CXX) -shared'
1833 else
1834 LDSHARED='$(CC) -G'
1835 LDCXXSHARED='$(CXX) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001836 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001837 SCO_SV*)
1838 LDSHARED='$(CC) -Wl,-G,-Bexport'
1839 LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
1840 CYGWIN*)
1841 LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
1842 LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001843 *) LDSHARED="ld";;
1844 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001845fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001846AC_MSG_RESULT($LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001847LDCXXSHARED=${LDCXXSHARED-$LDSHARED}
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001848BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001849# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001850# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001851AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001852if test -z "$CCSHARED"
1853then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001854 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001855 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001856 then CCSHARED="-fPIC";
1857 elif test `uname -p` = sparc;
1858 then CCSHARED="-xcode=pic32";
1859 else CCSHARED="-Kpic";
1860 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001861 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001862 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001863 else CCSHARED="+z";
1864 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001865 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001866 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001867 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001868 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001869 if test "$GCC" = "yes"
1870 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001871 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001872 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001873 SCO_SV*)
1874 if test "$GCC" = "yes"
1875 then CCSHARED="-fPIC"
1876 else CCSHARED="-Kpic -belf"
1877 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001878 IRIX*/6*) case $CC in
1879 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001880 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001881 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001882 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001883fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001884AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001885# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001886# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001887AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001888if test -z "$LINKFORSHARED"
1889then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001890 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001891 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001892 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001893 LINKFORSHARED="-Wl,-E -Wl,+s";;
1894# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001895 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001896 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001897 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001898 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00001899 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001900 if test "$enable_framework"
1901 then
Jack Jansenda49e192005-01-07 13:08:22 +00001902 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001903 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001904 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001905 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001906 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001907 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001908 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001909 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1910 then
1911 LINKFORSHARED="-Wl,--export-dynamic"
1912 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001913 SunOS/5*) case $CC in
1914 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001915 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001916 then
1917 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001918 fi;;
1919 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001920 CYGWIN*)
1921 if test $enable_shared = "no"
1922 then
1923 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1924 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001925 QNX*)
1926 # -Wl,-E causes the symbols to be added to the dynamic
1927 # symbol table so that they can be found when a module
1928 # is loaded. -N 2048K causes the stack size to be set
1929 # to 2048 kilobytes so that the stack doesn't overflow
1930 # when running test_compile.py.
1931 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001932 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001933fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001934AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001935
Georg Brandl93de2162008-07-16 02:21:06 +00001936
Neil Schemenauer61c51152001-01-26 16:18:16 +00001937AC_SUBST(CFLAGSFORSHARED)
1938AC_MSG_CHECKING(CFLAGSFORSHARED)
1939if test ! "$LIBRARY" = "$LDLIBRARY"
1940then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001941 case $ac_sys_system in
1942 CYGWIN*)
1943 # Cygwin needs CCSHARED when building extension DLLs
1944 # but not when building the interpreter DLL.
1945 CFLAGSFORSHARED='';;
1946 *)
1947 CFLAGSFORSHARED='$(CCSHARED)'
1948 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001949fi
1950AC_MSG_RESULT($CFLAGSFORSHARED)
1951
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001952# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1953# library (with --enable-shared).
1954# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001955# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1956# if it is not required, since it creates a dependency of the shared library
1957# to LIBS. This, in turn, means that applications linking the shared libpython
1958# don't need to link LIBS explicitly. The default should be only changed
1959# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001960AC_SUBST(SHLIBS)
1961AC_MSG_CHECKING(SHLIBS)
1962case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001963 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001964 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001965esac
1966AC_MSG_RESULT($SHLIBS)
1967
1968
Guido van Rossum627b2d71993-12-24 10:39:16 +00001969# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001970AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1971AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001972
Georg Brandleee31162008-12-07 15:15:22 +00001973# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001974if test "$with_threads" = "yes" -o -z "$with_threads"; then
1975 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1976 # posix4 on Solaris 2.6
1977 # pthread (first!) on Linux
1978fi
1979
Martin v. Löwis19d17342003-06-14 21:03:05 +00001980# check if we need libintl for locale functions
1981AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00001982 [AC_DEFINE(WITH_LIBINTL, 1,
1983 [Define to 1 if libintl is needed for locale functions.])
1984 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001985
1986# checks for system dependent C++ extensions support
1987case "$ac_sys_system" in
1988 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
Matthias Kloseb159a552010-04-25 21:00:44 +00001989 AC_LINK_IFELSE([
Georg Brandl59e87bd2011-02-15 19:48:59 +00001990 AC_LANG_PROGRAM([[#include <load.h>]],
Matthias Kloseb159a552010-04-25 21:00:44 +00001991 [[loadAndInit("", 0, "")]])
1992 ],[
1993 AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001994 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1995 and you want support for AIX C++ shared extension modules.])
Matthias Kloseb159a552010-04-25 21:00:44 +00001996 AC_MSG_RESULT(yes)
1997 ],[
1998 AC_MSG_RESULT(no)
1999 ]);;
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002000 *) ;;
2001esac
2002
Guido van Rossum70c7f481998-03-26 18:44:10 +00002003# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002004AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002005AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00002006
Guido van Rossumc5a39031996-07-31 17:35:03 +00002007AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002008AC_ARG_WITH(libs,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002009 AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002010[
Guido van Rossumc5a39031996-07-31 17:35:03 +00002011AC_MSG_RESULT($withval)
2012LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002013],
2014[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002015
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00002016AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
2017
Benjamin Petersonb2d90462009-12-31 03:23:10 +00002018# Check for use of the system expat library
2019AC_MSG_CHECKING(for --with-system-expat)
2020AC_ARG_WITH(system_expat,
Benjamin Peterson79263252010-10-31 16:50:44 +00002021 AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library]),
2022 [],
2023 [with_system_expat="no"])
Benjamin Petersonb2d90462009-12-31 03:23:10 +00002024
2025AC_MSG_RESULT($with_system_expat)
2026
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002027# Check for use of the system libffi library
2028AC_MSG_CHECKING(for --with-system-ffi)
2029AC_ARG_WITH(system_ffi,
Benjamin Peterson79263252010-10-31 16:50:44 +00002030 AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]),
2031 [],
2032 [with_system_ffi="no"])
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002033
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00002034if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
Benjamin Petersond78735d2010-01-01 16:04:23 +00002035 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
2036else
2037 LIBFFI_INCLUDEDIR=""
2038fi
2039AC_SUBST(LIBFFI_INCLUDEDIR)
2040
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002041AC_MSG_RESULT($with_system_ffi)
2042
Benjamin Peterson076ed002010-10-31 17:11:02 +00002043# Check for support for loadable sqlite extensions
2044AC_MSG_CHECKING(for --enable-loadable-sqlite-extensions)
2045AC_ARG_ENABLE(loadable-sqlite-extensions,
2046 AS_HELP_STRING([--enable-loadable-sqlite-extensions], [support loadable extensions in _sqlite module]),
2047 [],
2048 [enable_loadable_sqlite_extensions="no"])
2049
2050AC_MSG_RESULT($enable_loadable_sqlite_extensions)
2051
Matthias Klose55708cc2009-04-30 08:06:49 +00002052# Check for --with-dbmliborder
2053AC_MSG_CHECKING(for --with-dbmliborder)
2054AC_ARG_WITH(dbmliborder,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002055 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 +00002056[
2057if test x$with_dbmliborder = xyes
2058then
2059AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2060else
2061 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
2062 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
2063 then
2064 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2065 fi
2066 done
2067fi])
2068AC_MSG_RESULT($with_dbmliborder)
2069
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002070# Determine if signalmodule should be used.
2071AC_SUBST(USE_SIGNAL_MODULE)
2072AC_SUBST(SIGNAL_OBJS)
2073AC_MSG_CHECKING(for --with-signal-module)
2074AC_ARG_WITH(signal-module,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002075 AS_HELP_STRING([--with-signal-module], [disable/enable signal module]))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002076
2077if test -z "$with_signal_module"
2078then with_signal_module="yes"
2079fi
2080AC_MSG_RESULT($with_signal_module)
2081
2082if test "${with_signal_module}" = "yes"; then
2083 USE_SIGNAL_MODULE=""
2084 SIGNAL_OBJS=""
2085else
2086 USE_SIGNAL_MODULE="#"
2087 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2088fi
2089
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002090# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002091AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002092USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002093
Guido van Rossum54d93d41997-01-22 20:51:58 +00002094AC_MSG_CHECKING(for --with-dec-threads)
2095AC_SUBST(LDLAST)
2096AC_ARG_WITH(dec-threads,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002097 AS_HELP_STRING([--with-dec-threads], [use DEC Alpha/OSF1 thread-safe libraries]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002098[
Barry Warsawc0d24d82000-06-29 16:12:00 +00002099AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002100LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00002101if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00002102 with_thread="$withval";
2103fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002104[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00002105
Martin v. Löwis11437992002-04-12 09:54:03 +00002106# Templates for things AC_DEFINEd more than once.
2107# For a single AC_DEFINE, no template is needed.
2108AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
2109AH_TEMPLATE(_REENTRANT,
2110 [Define to force use of thread-safe errno, h_errno, and other functions])
2111AH_TEMPLATE(WITH_THREAD,
2112 [Define if you want to compile in rudimentary thread support])
2113
Guido van Rossum54d93d41997-01-22 20:51:58 +00002114AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002115dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00002116AC_ARG_WITH(threads,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002117 AS_HELP_STRING([--with(out)-threads@<:@=DIRECTORY@:>@], [disable/enable thread support]))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002118
Barry Warsawc0d24d82000-06-29 16:12:00 +00002119# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002120dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002121AC_ARG_WITH(thread,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002122 AS_HELP_STRING([--with(out)-thread@<:@=DIRECTORY@:>@], [deprecated; use --with(out)-threads]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002123 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002124
2125if test -z "$with_threads"
2126then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002127fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00002128AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002129
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002130AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002131if test "$with_threads" = "no"
2132then
2133 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002134elif test "$ac_cv_pthread_is_default" = yes
2135then
2136 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002137 # Defining _REENTRANT on system with POSIX threads should not hurt.
2138 AC_DEFINE(_REENTRANT)
2139 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002140 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002141elif test "$ac_cv_kpthread" = "yes"
2142then
2143 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002144 if test "$ac_cv_cxx_thread" = "yes"; then
2145 CXX="$CXX -Kpthread"
2146 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002147 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002148 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002149 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002150elif test "$ac_cv_kthread" = "yes"
2151then
2152 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002153 if test "$ac_cv_cxx_thread" = "yes"; then
2154 CXX="$CXX -Kthread"
2155 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002156 AC_DEFINE(WITH_THREAD)
2157 posix_threads=yes
2158 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002159elif test "$ac_cv_pthread" = "yes"
2160then
2161 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002162 if test "$ac_cv_cxx_thread" = "yes"; then
2163 CXX="$CXX -pthread"
2164 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002165 AC_DEFINE(WITH_THREAD)
2166 posix_threads=yes
2167 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00002168else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002169 if test ! -z "$with_threads" -a -d "$with_threads"
2170 then LDFLAGS="$LDFLAGS -L$with_threads"
2171 fi
2172 if test ! -z "$withval" -a -d "$withval"
2173 then LDFLAGS="$LDFLAGS -L$withval"
2174 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002175
2176 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002177 # define _POSIX_THREADS in unistd.h. Some apparently don't
2178 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002179 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2180 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002181 [
2182#include <unistd.h>
2183#ifdef _POSIX_THREADS
2184yes
2185#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002186 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2187 AC_MSG_RESULT($unistd_defines_pthreads)
2188
Martin v. Löwis130fb172001-07-19 11:00:41 +00002189 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002190 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2191 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002192 AC_DEFINE(HURD_C_THREADS, 1,
2193 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002194 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002195 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002196 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2197 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002198 AC_DEFINE(MACH_C_THREADS, 1,
2199 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002200 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002201 # Just looking for pthread_create in libpthread is not enough:
2202 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2203 # So we really have to include pthread.h, and then link.
2204 _libs=$LIBS
2205 LIBS="$LIBS -lpthread"
2206 AC_MSG_CHECKING([for pthread_create in -lpthread])
Matthias Kloseb159a552010-04-25 21:00:44 +00002207 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002208
Matthias Kloseb159a552010-04-25 21:00:44 +00002209void * start_routine (void *arg) { exit (0); }]], [[
2210pthread_create (NULL, NULL, start_routine, NULL)]])],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002211 AC_MSG_RESULT(yes)
2212 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002213 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002214 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002215 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002216 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002217 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002218 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002219 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002220 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002221 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002222 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002223 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002224 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002225 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002226 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002227 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002228 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002229 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002230 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002231 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002232 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002233 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002234 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002235 USE_THREAD_MODULE="#"])
Antoine Pitroudb6c5672009-10-24 20:35:52 +00002236 ])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002237
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002238 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2239 LIBS="$LIBS -lmpc"
2240 THREADOBJ="Python/thread.o"
2241 USE_THREAD_MODULE=""])
2242
2243 if test "$posix_threads" != "yes"; then
2244 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2245 LIBS="$LIBS -lthread"
2246 THREADOBJ="Python/thread.o"
2247 USE_THREAD_MODULE=""])
2248 fi
2249
2250 if test "$USE_THREAD_MODULE" != "#"
2251 then
2252 # If the above checks didn't disable threads, (at least) OSF1
2253 # needs this '-threads' argument during linking.
2254 case $ac_sys_system in
2255 OSF1) LDLAST=-threads;;
2256 esac
2257 fi
2258fi
2259
2260if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002261 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002262 AC_DEFINE(_POSIX_THREADS, 1,
2263 [Define if you have POSIX threads,
2264 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002265 fi
2266
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002267 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2268 case $ac_sys_system/$ac_sys_release in
Charles-François Natali996f6062011-07-21 19:45:31 +02002269 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002270 [Defined for Solaris 2.6 bug in pthread header.])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002271 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002272 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002273 [Define if the Posix semaphores do not work on your system])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002274 ;;
Charles-François Natali996f6062011-07-21 19:45:31 +02002275 AIX/*) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002276 [Define if the Posix semaphores do not work on your system])
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002277 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002278 esac
2279
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002280 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2281 AC_CACHE_VAL(ac_cv_pthread_system_supported,
Matthias Kloseb159a552010-04-25 21:00:44 +00002282 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <pthread.h>
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002283 void *foo(void *parm) {
2284 return NULL;
2285 }
2286 main() {
2287 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002288 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002289 if (pthread_attr_init(&attr)) exit(-1);
2290 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002291 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002292 exit(0);
Matthias Kloseb159a552010-04-25 21:00:44 +00002293 }]])],
2294 [ac_cv_pthread_system_supported=yes],
2295 [ac_cv_pthread_system_supported=no],
2296 [ac_cv_pthread_system_supported=no])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002297 ])
2298 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2299 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002300 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002301 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002302 AC_CHECK_FUNCS(pthread_sigmask,
2303 [case $ac_sys_system in
2304 CYGWIN*)
2305 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2306 [Define if pthread_sigmask() does not work on your system.])
2307 ;;
2308 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002309fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002310
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002311
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002312# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002313AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002314AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002315AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002316[ --enable-ipv6 Enable ipv6 (with ipv4) support
2317 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002318[ case "$enableval" in
2319 no)
2320 AC_MSG_RESULT(no)
2321 ipv6=no
2322 ;;
2323 *) AC_MSG_RESULT(yes)
2324 AC_DEFINE(ENABLE_IPV6)
2325 ipv6=yes
2326 ;;
2327 esac ],
2328
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002329[
2330dnl the check does not work on cross compilation case...
Matthias Kloseb159a552010-04-25 21:00:44 +00002331 AC_RUN_IFELSE([AC_LANG_SOURCE([[ /* AF_INET6 available check */
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002332#include <sys/types.h>
2333#include <sys/socket.h>
2334main()
2335{
2336 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2337 exit(1);
2338 else
2339 exit(0);
2340}
Matthias Kloseb159a552010-04-25 21:00:44 +00002341]])],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002342 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00002343 ipv6=yes
2344],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002345 AC_MSG_RESULT(no)
2346 ipv6=no
Matthias Kloseb159a552010-04-25 21:00:44 +00002347],[
2348 AC_MSG_RESULT(no)
2349 ipv6=no
2350])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002351
2352if test "$ipv6" = "yes"; then
2353 AC_MSG_CHECKING(if RFC2553 API is available)
Matthias Kloseb159a552010-04-25 21:00:44 +00002354 AC_COMPILE_IFELSE([
2355 AC_LANG_PROGRAM([[#include <sys/types.h>
2356#include <netinet/in.h>]],
2357 [[struct sockaddr_in6 x;
2358 x.sin6_scope_id;]])
2359 ],[
2360 AC_MSG_RESULT(yes)
2361 ipv6=yes
2362 ],[
2363 AC_MSG_RESULT(no, IPv6 disabled)
2364 ipv6=no
2365 ])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002366fi
2367
2368if test "$ipv6" = "yes"; then
2369 AC_DEFINE(ENABLE_IPV6)
2370fi
2371])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002372
2373ipv6type=unknown
2374ipv6lib=none
2375ipv6trylibc=no
2376
2377if test "$ipv6" = "yes"; then
2378 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002379 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2380 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002381 case $i in
2382 inria)
2383 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002384 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002385#include <netinet/in.h>
2386#ifdef IPV6_INRIA_VERSION
2387yes
2388#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002389 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002390 ;;
2391 kame)
2392 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002393 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002394#include <netinet/in.h>
2395#ifdef __KAME__
2396yes
2397#endif],
2398 [ipv6type=$i;
2399 ipv6lib=inet6
2400 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002401 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002402 ;;
2403 linux-glibc)
2404 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002405 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002406#include <features.h>
2407#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2408yes
2409#endif],
2410 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002411 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002412 ;;
2413 linux-inet6)
2414 dnl http://www.v6.linux.or.jp/
2415 if test -d /usr/inet6; then
2416 ipv6type=$i
2417 ipv6lib=inet6
2418 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002419 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002420 fi
2421 ;;
2422 solaris)
2423 if test -f /etc/netconfig; then
Antoine Pitrouf3fcd9f2011-01-03 18:53:50 +00002424 if $GREP -q tcp6 /etc/netconfig; then
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002425 ipv6type=$i
2426 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002427 fi
2428 fi
2429 ;;
2430 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002431 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002432#include <sys/param.h>
2433#ifdef _TOSHIBA_INET6
2434yes
2435#endif],
2436 [ipv6type=$i;
2437 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002438 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002439 ;;
2440 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002441 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002442#include </usr/local/v6/include/sys/v6config.h>
2443#ifdef __V6D__
2444yes
2445#endif],
2446 [ipv6type=$i;
2447 ipv6lib=v6;
2448 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002449 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002450 ;;
2451 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002452 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002453#include <sys/param.h>
2454#ifdef _ZETA_MINAMI_INET6
2455yes
2456#endif],
2457 [ipv6type=$i;
2458 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002459 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002460 ;;
2461 esac
2462 if test "$ipv6type" != "unknown"; then
2463 break
2464 fi
2465 done
2466 AC_MSG_RESULT($ipv6type)
2467fi
2468
2469if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2470 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2471 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2472 echo "using lib$ipv6lib"
2473 else
2474 if test $ipv6trylibc = "yes"; then
2475 echo "using libc"
2476 else
2477 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2478 echo "You need to fetch lib$ipv6lib.a from appropriate"
2479 echo 'ipv6 kit and compile beforehand.'
2480 exit 1
2481 fi
2482 fi
2483fi
2484
Georg Brandl93de2162008-07-16 02:21:06 +00002485AC_MSG_CHECKING(for OSX 10.5 SDK or later)
Matthias Kloseb159a552010-04-25 21:00:44 +00002486AC_COMPILE_IFELSE([
2487 AC_LANG_PROGRAM([[#include <Carbon/Carbon.h>]], [[FSIORefNum fRef = 0]])
2488],[
Matthias Klosec80c93f2010-04-24 17:04:35 +00002489 AC_DEFINE(HAVE_OSX105_SDK, 1, [Define if compiling using MacOS X 10.5 SDK or later.])
Matthias Kloseb159a552010-04-25 21:00:44 +00002490 AC_MSG_RESULT(yes)
2491],[
Georg Brandl93de2162008-07-16 02:21:06 +00002492 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00002493])
Georg Brandl93de2162008-07-16 02:21:06 +00002494
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002495# Check for --with-doc-strings
2496AC_MSG_CHECKING(for --with-doc-strings)
2497AC_ARG_WITH(doc-strings,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002498 AS_HELP_STRING([--with(out)-doc-strings], [disable/enable documentation strings]))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002499
2500if test -z "$with_doc_strings"
2501then with_doc_strings="yes"
2502fi
2503if test "$with_doc_strings" != "no"
2504then
2505 AC_DEFINE(WITH_DOC_STRINGS, 1,
2506 [Define if you want documentation strings in extension modules])
2507fi
2508AC_MSG_RESULT($with_doc_strings)
2509
Georg Brandl9976a512010-08-02 21:02:36 +00002510# Check if eval loop should use timestamp counter profiling
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002511AC_MSG_CHECKING(for --with-tsc)
2512AC_ARG_WITH(tsc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002513 AS_HELP_STRING([--with(out)-tsc],[enable/disable timestamp counter profile]),[
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002514if test "$withval" != no
2515then
2516 AC_DEFINE(WITH_TSC, 1,
2517 [Define to profile with the Pentium timestamp counter])
2518 AC_MSG_RESULT(yes)
2519else AC_MSG_RESULT(no)
2520fi],
2521[AC_MSG_RESULT(no)])
2522
2523# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002524AC_MSG_CHECKING(for --with-pymalloc)
2525AC_ARG_WITH(pymalloc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002526 AS_HELP_STRING([--with(out)-pymalloc], [disable/enable specialized mallocs]))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002527
2528if test -z "$with_pymalloc"
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00002529then
2530 with_pymalloc="yes"
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00002531 ABIFLAGS="${ABIFLAGS}m"
Neil Schemenauer16c22972002-03-22 15:34:49 +00002532fi
2533if test "$with_pymalloc" != "no"
2534then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002535 AC_DEFINE(WITH_PYMALLOC, 1,
2536 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002537fi
2538AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002539
Benjamin Peterson05159c42009-12-03 03:01:27 +00002540# Check for Valgrind support
2541AC_MSG_CHECKING([for --with-valgrind])
2542AC_ARG_WITH([valgrind],
Matthias Klose2b8733f2010-04-25 18:34:36 +00002543 AS_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
Benjamin Peterson05159c42009-12-03 03:01:27 +00002544 with_valgrind=no)
2545AC_MSG_RESULT([$with_valgrind])
2546if test "$with_valgrind" != no; then
2547 AC_CHECK_HEADER([valgrind/valgrind.h],
2548 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
2549 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
2550 )
Jeffrey Yasskin39370832010-05-03 19:29:34 +00002551 OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
Benjamin Peterson05159c42009-12-03 03:01:27 +00002552fi
2553
Guido van Rossum68242b51996-05-28 22:53:03 +00002554# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002555AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002556DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002557
Guido van Rossume97ee181999-12-20 21:27:22 +00002558# the dlopen() function means we might want to use dynload_shlib.o. some
2559# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002560AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002561
2562# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2563# loading of modules.
2564AC_SUBST(DYNLOADFILE)
2565AC_MSG_CHECKING(DYNLOADFILE)
2566if test -z "$DYNLOADFILE"
2567then
2568 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002569 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2570 if test "$ac_cv_func_dlopen" = yes
2571 then DYNLOADFILE="dynload_shlib.o"
2572 else DYNLOADFILE="dynload_aix.o"
2573 fi
2574 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002575 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002576 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2577 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002578 *)
2579 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2580 # out any dynamic loading
2581 if test "$ac_cv_func_dlopen" = yes
2582 then DYNLOADFILE="dynload_shlib.o"
2583 else DYNLOADFILE="dynload_stub.o"
2584 fi
2585 ;;
2586 esac
2587fi
2588AC_MSG_RESULT($DYNLOADFILE)
2589if test "$DYNLOADFILE" != "dynload_stub.o"
2590then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002591 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2592 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002593fi
2594
Jack Jansenc49e5b72001-06-19 15:00:23 +00002595# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2596
2597AC_SUBST(MACHDEP_OBJS)
2598AC_MSG_CHECKING(MACHDEP_OBJS)
2599if test -z "$MACHDEP_OBJS"
2600then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002601 MACHDEP_OBJS=$extra_machdep_objs
2602else
2603 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002604fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002605AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002606
Guido van Rossum627b2d71993-12-24 10:39:16 +00002607# checks for library functions
Antoine Pitroub1c54962010-10-14 15:05:38 +00002608AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
Gregory P. Smithdf300d52012-01-21 18:20:15 -08002609 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002610 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002611 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Antoine Pitroub7572f02009-12-02 20:46:48 +00002612 initgroups kill killpg lchmod lchown lstat mbrtowc mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002613 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002614 putenv readlink realpath \
Benjamin Peterson965ce872009-04-05 21:24:58 +00002615 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2616 setgid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002617 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setuid setvbuf \
Jean-Paul Calderone6ed7ac42010-06-19 19:58:37 +00002618 sigaction siginterrupt sigrelse snprintf strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002619 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis113a0852009-05-29 17:25:39 +00002620 truncate uname unsetenv utimes waitpid wait3 wait4 \
2621 wcscoll wcsftime wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002622
Gregory P. Smithdf300d52012-01-21 18:20:15 -08002623AC_CHECK_DECL(dirfd,
2624 AC_DEFINE(HAVE_DIRFD, 1,
2625 Define if you have the 'dirfd' function or macro.), ,
2626 [#include <sys/types.h>
2627 #include <dirent.h>])
2628
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002629# For some functions, having a definition is not sufficient, since
2630# we want to take their address.
2631AC_MSG_CHECKING(for chroot)
Matthias Kloseb159a552010-04-25 21:00:44 +00002632AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=chroot]])],
2633 [AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2634 AC_MSG_RESULT(yes)],
2635 [AC_MSG_RESULT(no)
2636])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002637AC_MSG_CHECKING(for link)
Matthias Kloseb159a552010-04-25 21:00:44 +00002638AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=link]])],
2639 [AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2640 AC_MSG_RESULT(yes)],
2641 [AC_MSG_RESULT(no)
2642])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002643AC_MSG_CHECKING(for symlink)
Matthias Kloseb159a552010-04-25 21:00:44 +00002644AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=symlink]])],
2645 [AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2646 AC_MSG_RESULT(yes)],
2647 [AC_MSG_RESULT(no)
2648])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002649AC_MSG_CHECKING(for fchdir)
Matthias Kloseb159a552010-04-25 21:00:44 +00002650AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fchdir]])],
2651 [AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2652 AC_MSG_RESULT(yes)],
2653 [AC_MSG_RESULT(no)
2654])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002655AC_MSG_CHECKING(for fsync)
Matthias Kloseb159a552010-04-25 21:00:44 +00002656AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fsync]])],
2657 [AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
2658 AC_MSG_RESULT(yes)],
2659 [AC_MSG_RESULT(no)
2660])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002661AC_MSG_CHECKING(for fdatasync)
Matthias Kloseb159a552010-04-25 21:00:44 +00002662AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fdatasync]])],
2663 [AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2664 AC_MSG_RESULT(yes)],
2665 [AC_MSG_RESULT(no)
2666])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002667AC_MSG_CHECKING(for epoll)
Matthias Kloseb159a552010-04-25 21:00:44 +00002668AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create]])],
2669 [AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2670 AC_MSG_RESULT(yes)],
2671 [AC_MSG_RESULT(no)
2672])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002673AC_MSG_CHECKING(for kqueue)
Matthias Kloseb159a552010-04-25 21:00:44 +00002674AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002675#include <sys/types.h>
2676#include <sys/event.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002677 ]], [[int x=kqueue()]])],
2678 [AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2679 AC_MSG_RESULT(yes)],
2680 [AC_MSG_RESULT(no)
2681])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002682# On some systems (eg. FreeBSD 5), we would find a definition of the
2683# functions ctermid_r, setgroups in the library, but no prototype
2684# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2685# address to avoid compiler warnings and potential miscompilations
2686# because of the missing prototypes.
2687
2688AC_MSG_CHECKING(for ctermid_r)
Matthias Kloseb159a552010-04-25 21:00:44 +00002689AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisd5843682002-11-21 20:41:28 +00002690#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002691]], [[void* p = ctermid_r]])],
2692 [AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2693 AC_MSG_RESULT(yes)],
2694 [AC_MSG_RESULT(no)
2695])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002696
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00002697AC_CACHE_CHECK([for flock declaration], [ac_cv_flock_decl],
2698 [AC_COMPILE_IFELSE(
2699 [AC_LANG_PROGRAM(
2700 [#include <sys/file.h>],
2701 [void* p = flock]
2702 )],
2703 [ac_cv_flock_decl=yes],
2704 [ac_cv_flock_decl=no]
2705 )
Matthias Kloseb159a552010-04-25 21:00:44 +00002706])
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00002707if test "x${ac_cv_flock_decl}" = xyes; then
2708 AC_CHECK_FUNCS(flock,,
2709 AC_CHECK_LIB(bsd,flock,
2710 [AC_DEFINE(HAVE_FLOCK)
2711 AC_DEFINE(FLOCK_NEEDS_LIBBSD, 1, Define if flock needs to be linked with bsd library.)
2712 ])
2713 )
Antoine Pitroua3000072010-09-07 14:52:42 +00002714fi
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002715
2716AC_MSG_CHECKING(for getpagesize)
Matthias Kloseb159a552010-04-25 21:00:44 +00002717AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002718#include <unistd.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002719]], [[void* p = getpagesize]])],
2720 [AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2721 AC_MSG_RESULT(yes)],
2722 [AC_MSG_RESULT(no)
2723])
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002724
Charles-François Natali6613c182011-11-27 12:41:06 +01002725AC_MSG_CHECKING(for broken unsetenv)
2726AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2727#include <stdlib.h>
2728]], [[int res = unsetenv("DUMMY")]])],
2729 [AC_MSG_RESULT(no)],
2730 [AC_DEFINE(HAVE_BROKEN_UNSETENV, 1, Define if `unsetenv` does not return an int.)
2731 AC_MSG_RESULT(yes)
2732])
2733
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002734dnl check for true
2735AC_CHECK_PROGS(TRUE, true, /bin/true)
2736
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002737dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2738dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002739AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002740 AC_CHECK_LIB(resolv, inet_aton)
2741)
2742
Christian Heimesd0764e22007-12-04 15:00:33 +00002743# On Tru64, chflags seems to be present, but calling it will
2744# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002745AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Ned Deily3eb67d52011-06-28 00:00:28 -07002746AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002747#include <sys/stat.h>
2748#include <unistd.h>
2749int main(int argc, char*argv[])
2750{
2751 if(chflags(argv[0], 0) != 0)
2752 return 1;
2753 return 0;
2754}
Ned Deily3eb67d52011-06-28 00:00:28 -07002755]])],
Matthias Kloseb159a552010-04-25 21:00:44 +00002756[ac_cv_have_chflags=yes],
2757[ac_cv_have_chflags=no],
2758[ac_cv_have_chflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002759])
2760if test "$ac_cv_have_chflags" = cross ; then
2761 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2762fi
2763if test "$ac_cv_have_chflags" = yes ; then
Ned Deily3eb67d52011-06-28 00:00:28 -07002764 AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the 'chflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002765fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002766
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002767AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Ned Deily3eb67d52011-06-28 00:00:28 -07002768AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002769#include <sys/stat.h>
2770#include <unistd.h>
2771int main(int argc, char*argv[])
2772{
2773 if(lchflags(argv[0], 0) != 0)
2774 return 1;
2775 return 0;
2776}
Ned Deily3eb67d52011-06-28 00:00:28 -07002777]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002778])
2779if test "$ac_cv_have_lchflags" = cross ; then
2780 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2781fi
2782if test "$ac_cv_have_lchflags" = yes ; then
Ned Deily3eb67d52011-06-28 00:00:28 -07002783 AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the 'lchflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002784fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002785
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002786dnl Check if system zlib has *Copy() functions
2787dnl
2788dnl On MacOSX the linker will search for dylibs on the entire linker path
2789dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2790dnl to revert to a more traditional unix behaviour and make it possible to
2791dnl override the system libz with a local static library of libz. Temporarily
2792dnl add that flag to our CFLAGS as well to ensure that we check the version
2793dnl of libz that will be used by setup.py.
2794dnl The -L/usr/local/lib is needed as wel to get the same compilation
2795dnl environment as setup.py (and leaving it out can cause configure to use the
2796dnl wrong version of the library)
2797case $ac_sys_system/$ac_sys_release in
2798Darwin/*)
2799 _CUR_CFLAGS="${CFLAGS}"
2800 _CUR_LDFLAGS="${LDFLAGS}"
2801 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2802 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2803 ;;
2804esac
2805
Matthias Klosec80c93f2010-04-24 17:04:35 +00002806AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, [Define if the zlib library has inflateCopy]))
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002807
2808case $ac_sys_system/$ac_sys_release in
2809Darwin/*)
2810 CFLAGS="${_CUR_CFLAGS}"
2811 LDFLAGS="${_CUR_LDFLAGS}"
2812 ;;
2813esac
2814
Martin v. Löwise9416172003-05-03 10:12:45 +00002815AC_MSG_CHECKING(for hstrerror)
Matthias Kloseb159a552010-04-25 21:00:44 +00002816AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwise9416172003-05-03 10:12:45 +00002817#include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002818]], [[void* p = hstrerror; hstrerror(0)]])],
2819 [AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2820 AC_MSG_RESULT(yes)],
2821 [AC_MSG_RESULT(no)
2822])
Martin v. Löwise9416172003-05-03 10:12:45 +00002823
2824AC_MSG_CHECKING(for inet_aton)
Matthias Kloseb159a552010-04-25 21:00:44 +00002825AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis86d66262006-02-17 08:40:11 +00002826#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002827#include <sys/socket.h>
2828#include <netinet/in.h>
2829#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002830]], [[void* p = inet_aton;inet_aton(0,0)]])],
2831 [AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2832 AC_MSG_RESULT(yes)],
2833 [AC_MSG_RESULT(no)
2834])
Martin v. Löwise9416172003-05-03 10:12:45 +00002835
2836AC_MSG_CHECKING(for inet_pton)
Matthias Kloseb159a552010-04-25 21:00:44 +00002837AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002838#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002839#include <sys/socket.h>
2840#include <netinet/in.h>
2841#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002842]], [[void* p = inet_pton]])],
2843 [AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2844 AC_MSG_RESULT(yes)],
2845 [AC_MSG_RESULT(no)
2846])
Martin v. Löwise9416172003-05-03 10:12:45 +00002847
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002848# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002849AC_MSG_CHECKING(for setgroups)
Matthias Kloseb159a552010-04-25 21:00:44 +00002850AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002851#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002852#ifdef HAVE_GRP_H
2853#include <grp.h>
2854#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00002855]], [[void* p = setgroups]])],
2856 [AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2857 AC_MSG_RESULT(yes)],
2858 [AC_MSG_RESULT(no)
2859])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002860
Fred Drake8cef4cf2000-06-28 16:40:38 +00002861# check for openpty and forkpty
2862
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002863AC_CHECK_FUNCS(openpty,,
2864 AC_CHECK_LIB(util,openpty,
2865 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2866 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2867 )
2868)
2869AC_CHECK_FUNCS(forkpty,,
2870 AC_CHECK_LIB(util,forkpty,
2871 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2872 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2873 )
2874)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002875
Christian Heimesb186d002008-03-18 15:15:01 +00002876# Stuff for expat.
2877AC_CHECK_FUNCS(memmove)
2878
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002879# check for long file support functions
2880AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2881
Christian Heimesb186d002008-03-18 15:15:01 +00002882AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002883AC_CHECK_FUNCS(getpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00002884 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[getpgrp(0);]])],
2885 [AC_DEFINE(GETPGRP_HAVE_ARG, 1, [Define if getpgrp() must be called as getpgrp(0).])],
2886 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002887)
Jack Jansen150753c2003-03-29 22:07:47 +00002888AC_CHECK_FUNCS(setpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00002889 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[setpgrp(0,0);]])],
2890 [AC_DEFINE(SETPGRP_HAVE_ARG, 1, [Define if setpgrp() must be called as setpgrp(0, 0).])],
2891 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002892)
2893AC_CHECK_FUNCS(gettimeofday,
Matthias Kloseb159a552010-04-25 21:00:44 +00002894 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>]],
2895 [[gettimeofday((struct timeval*)0,(struct timezone*)0);]])],
2896 [],
2897 [AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2898 [Define if gettimeofday() does not have second (timezone) argument
2899 This is the case on Motorola V4 (R40V4.2)])
2900 ])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002901)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002902
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002903AC_MSG_CHECKING(for major, minor, and makedev)
Matthias Kloseb159a552010-04-25 21:00:44 +00002904AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002905#if defined(MAJOR_IN_MKDEV)
2906#include <sys/mkdev.h>
2907#elif defined(MAJOR_IN_SYSMACROS)
2908#include <sys/sysmacros.h>
2909#else
2910#include <sys/types.h>
2911#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00002912]], [[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002913 makedev(major(0),minor(0));
Matthias Kloseb159a552010-04-25 21:00:44 +00002914]])],[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002915 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2916 [Define to 1 if you have the device macros.])
2917 AC_MSG_RESULT(yes)
2918],[
2919 AC_MSG_RESULT(no)
2920])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002921
2922# On OSF/1 V5.1, getaddrinfo is available, but a define
2923# for [no]getaddrinfo in netdb.h.
2924AC_MSG_CHECKING(for getaddrinfo)
Matthias Kloseb159a552010-04-25 21:00:44 +00002925AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002926#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002927#include <sys/socket.h>
2928#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002929#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002930]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])],
2931[have_getaddrinfo=yes],
2932[have_getaddrinfo=no])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002933AC_MSG_RESULT($have_getaddrinfo)
2934if test $have_getaddrinfo = yes
2935then
2936 AC_MSG_CHECKING(getaddrinfo bug)
2937 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00002938 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002939#include <sys/types.h>
2940#include <netdb.h>
2941#include <string.h>
2942#include <sys/socket.h>
2943#include <netinet/in.h>
2944
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002945int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002946{
2947 int passive, gaierr, inet4 = 0, inet6 = 0;
2948 struct addrinfo hints, *ai, *aitop;
2949 char straddr[INET6_ADDRSTRLEN], strport[16];
2950
2951 for (passive = 0; passive <= 1; passive++) {
2952 memset(&hints, 0, sizeof(hints));
2953 hints.ai_family = AF_UNSPEC;
2954 hints.ai_flags = passive ? AI_PASSIVE : 0;
2955 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002956 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002957 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2958 (void)gai_strerror(gaierr);
2959 goto bad;
2960 }
2961 for (ai = aitop; ai; ai = ai->ai_next) {
2962 if (ai->ai_addr == NULL ||
2963 ai->ai_addrlen == 0 ||
2964 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2965 straddr, sizeof(straddr), strport, sizeof(strport),
2966 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2967 goto bad;
2968 }
2969 switch (ai->ai_family) {
2970 case AF_INET:
2971 if (strcmp(strport, "54321") != 0) {
2972 goto bad;
2973 }
2974 if (passive) {
2975 if (strcmp(straddr, "0.0.0.0") != 0) {
2976 goto bad;
2977 }
2978 } else {
2979 if (strcmp(straddr, "127.0.0.1") != 0) {
2980 goto bad;
2981 }
2982 }
2983 inet4++;
2984 break;
2985 case AF_INET6:
2986 if (strcmp(strport, "54321") != 0) {
2987 goto bad;
2988 }
2989 if (passive) {
2990 if (strcmp(straddr, "::") != 0) {
2991 goto bad;
2992 }
2993 } else {
2994 if (strcmp(straddr, "::1") != 0) {
2995 goto bad;
2996 }
2997 }
2998 inet6++;
2999 break;
3000 case AF_UNSPEC:
3001 goto bad;
3002 break;
3003 default:
3004 /* another family support? */
3005 break;
3006 }
3007 }
3008 }
3009
3010 if (!(inet4 == 0 || inet4 == 2))
3011 goto bad;
3012 if (!(inet6 == 0 || inet6 == 2))
3013 goto bad;
3014
3015 if (aitop)
3016 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003017 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003018
3019 bad:
3020 if (aitop)
3021 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003022 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003023}
Matthias Kloseb159a552010-04-25 21:00:44 +00003024]]])],
3025[ac_cv_buggy_getaddrinfo=no],
3026[ac_cv_buggy_getaddrinfo=yes],
3027[ac_cv_buggy_getaddrinfo=yes]))
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003028fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003029
Benjamin Petersond4694ed2010-11-01 01:44:30 +00003030AC_MSG_RESULT($ac_cv_buggy_getaddrinfo)
3031
Mark Dickinson2df5d282009-12-31 21:22:50 +00003032if test $have_getaddrinfo = no -o "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003033then
3034 if test $ipv6 = yes
3035 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003036 echo 'Fatal: You must get working getaddrinfo() function.'
3037 echo ' or you can specify "--disable-ipv6"'.
3038 exit 1
3039 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003040else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003041 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003042fi
Benjamin Petersond4694ed2010-11-01 01:44:30 +00003043
Thomas Woutersb0db85a2001-08-08 10:39:03 +00003044AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003045
Guido van Rossum627b2d71993-12-24 10:39:16 +00003046# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003047AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00003048AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003049AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00003050AC_CHECK_MEMBERS([struct stat.st_rdev])
3051AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00003052AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003053AC_CHECK_MEMBERS([struct stat.st_gen])
3054AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00003055AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003056
3057AC_MSG_CHECKING(for time.h that defines altzone)
Matthias Kloseb159a552010-04-25 21:00:44 +00003058AC_CACHE_VAL(ac_cv_header_time_altzone,[
3059 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[return altzone;]])],
3060 [ac_cv_header_time_altzone=yes],
3061 [ac_cv_header_time_altzone=no])
3062 ])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003063AC_MSG_RESULT($ac_cv_header_time_altzone)
3064if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003065 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003066fi
3067
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003068was_it_defined=no
3069AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Matthias Kloseb159a552010-04-25 21:00:44 +00003070AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003071#include <sys/types.h>
3072#include <sys/select.h>
3073#include <sys/time.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003074]], [[;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003075 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
3076 [Define if you can safely include both <sys/select.h> and <sys/time.h>
3077 (which you can't on SCO ODT 3.0).])
3078 was_it_defined=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003079],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003080AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003081
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003082AC_MSG_CHECKING(for addrinfo)
3083AC_CACHE_VAL(ac_cv_struct_addrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00003084AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[struct addrinfo a]])],
3085 [ac_cv_struct_addrinfo=yes],
3086 [ac_cv_struct_addrinfo=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003087AC_MSG_RESULT($ac_cv_struct_addrinfo)
3088if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003089 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003090fi
3091
3092AC_MSG_CHECKING(for sockaddr_storage)
3093AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
Matthias Kloseb159a552010-04-25 21:00:44 +00003094AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003095# include <sys/types.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003096# include <sys/socket.h>]], [[struct sockaddr_storage s]])],
3097 [ac_cv_struct_sockaddr_storage=yes],
3098 [ac_cv_struct_sockaddr_storage=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003099AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3100if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003101 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003102fi
3103
Guido van Rossum627b2d71993-12-24 10:39:16 +00003104# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003105
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003106AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003107AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003108
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003109works=no
3110AC_MSG_CHECKING(for working volatile)
Matthias Kloseb159a552010-04-25 21:00:44 +00003111AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[volatile int x; x = 0;]])],
3112 [works=yes],
3113 [AC_DEFINE(volatile, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003114)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003115AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003116
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003117works=no
3118AC_MSG_CHECKING(for working signed char)
Matthias Kloseb159a552010-04-25 21:00:44 +00003119AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char c;]])],
3120 [works=yes],
3121 [AC_DEFINE(signed, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003122)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003123AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003124
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003125have_prototypes=no
3126AC_MSG_CHECKING(for prototypes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003127AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo(int x) { return 0; }]], [[return foo(10);]])],
3128 [AC_DEFINE(HAVE_PROTOTYPES, 1,
3129 [Define if your compiler supports function prototype])
3130 have_prototypes=yes],
3131 []
3132)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003133AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003134
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003135works=no
3136AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Matthias Kloseb159a552010-04-25 21:00:44 +00003137AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003138#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003139int foo(int x, ...) {
3140 va_list va;
3141 va_start(va, x);
3142 va_arg(va, int);
3143 va_arg(va, char *);
3144 va_arg(va, double);
3145 return 0;
3146}
Matthias Kloseb159a552010-04-25 21:00:44 +00003147]], [[return foo(10, "", 3.14);]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003148 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3149 [Define if your compiler supports variable length function prototypes
3150 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3151 works=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003152],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003153AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003154
Dave Cole331708b2004-08-09 04:51:41 +00003155# check for socketpair
3156AC_MSG_CHECKING(for socketpair)
Matthias Kloseb159a552010-04-25 21:00:44 +00003157AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Dave Cole331708b2004-08-09 04:51:41 +00003158#include <sys/types.h>
3159#include <sys/socket.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003160]], [[void *x=socketpair]])],
3161 [AC_DEFINE(HAVE_SOCKETPAIR, 1, [Define if you have the 'socketpair' function.])
3162 AC_MSG_RESULT(yes)],
3163 [AC_MSG_RESULT(no)]
Dave Cole331708b2004-08-09 04:51:41 +00003164)
3165
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003166# check if sockaddr has sa_len member
3167AC_MSG_CHECKING(if sockaddr has sa_len member)
Matthias Kloseb159a552010-04-25 21:00:44 +00003168AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
3169#include <sys/socket.h>]], [[struct sockaddr x;
3170x.sa_len = 0;]])],
3171 [AC_MSG_RESULT(yes)
3172 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member])],
3173 [AC_MSG_RESULT(no)]
3174)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003175
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003176va_list_is_array=no
3177AC_MSG_CHECKING(whether va_list is an array)
Matthias Kloseb159a552010-04-25 21:00:44 +00003178AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003179#ifdef HAVE_STDARG_PROTOTYPES
3180#include <stdarg.h>
3181#else
3182#include <varargs.h>
3183#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003184]], [[va_list list1, list2; list1 = list2;]])],[],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003185 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3186 va_list_is_array=yes
3187])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003188AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003189
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003190# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003191AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3192 [Define this if you have some version of gethostbyname_r()])
3193
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003194AC_CHECK_FUNC(gethostbyname_r, [
3195 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3196 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3197 OLD_CFLAGS=$CFLAGS
3198 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003199 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003200# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003201 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003202 char *name;
3203 struct hostent *he, *res;
3204 char buffer[2048];
3205 int buflen = 2048;
3206 int h_errnop;
3207
3208 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
Matthias Kloseb159a552010-04-25 21:00:44 +00003209 ]])],[
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003210 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003211 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3212 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003213 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003214 ],[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003215 AC_MSG_RESULT(no)
3216 AC_MSG_CHECKING([gethostbyname_r with 5 args])
Matthias Kloseb159a552010-04-25 21:00:44 +00003217 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003218# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003219 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003220 char *name;
3221 struct hostent *he;
Matthias Kloseb159a552010-04-25 21:00:44 +00003222 char buffer[2048];
3223 int buflen = 2048;
3224 int h_errnop;
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003225
Matthias Kloseb159a552010-04-25 21:00:44 +00003226 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3227 ]])],
3228 [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003229 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Matthias Kloseb159a552010-04-25 21:00:44 +00003230 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3231 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003232 AC_MSG_RESULT(yes)
3233 ], [
3234 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00003235 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3236 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3237# include <netdb.h>
3238 ]], [[
3239 char *name;
3240 struct hostent *he;
3241 struct hostent_data data;
3242
3243 (void) gethostbyname_r(name, he, &data);
3244 ]])],
3245 [
3246 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3247 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3248 [Define this if you have the 3-arg version of gethostbyname_r().])
3249 AC_MSG_RESULT(yes)
3250 ], [
3251 AC_MSG_RESULT(no)
3252 ])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003253 ])
3254 ])
3255 CFLAGS=$OLD_CFLAGS
3256], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003257 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003258])
3259AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3260AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3261AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003262AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003263AC_SUBST(HAVE_GETHOSTBYNAME)
3264
Guido van Rossum627b2d71993-12-24 10:39:16 +00003265# checks for system services
3266# (none yet)
3267
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003268# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003269AC_CHECK_FUNC(__fpu_control,
3270 [],
3271 [AC_CHECK_LIB(ieee, __fpu_control)
3272])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003273
Guido van Rossum93274221997-05-09 02:42:00 +00003274# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003275AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00003276AC_ARG_WITH(fpectl,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003277 AS_HELP_STRING([--with-fpectl], [enable SIGFPE catching]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003278[
Guido van Rossum93274221997-05-09 02:42:00 +00003279if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003280then
3281 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3282 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3283 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003284else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003285fi],
3286[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003287
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003288# check for --with-libm=...
3289AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003290case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003291Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003292*) LIBM=-lm
3293esac
Guido van Rossum93274221997-05-09 02:42:00 +00003294AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003295AC_ARG_WITH(libm,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003296 AS_HELP_STRING([--with-libm=STRING], [math library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003297[
Guido van Rossum93274221997-05-09 02:42:00 +00003298if test "$withval" = no
3299then LIBM=
3300 AC_MSG_RESULT(force LIBM empty)
3301elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003302then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003303 AC_MSG_RESULT(set LIBM="$withval")
3304else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003305fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003306[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003307
3308# check for --with-libc=...
3309AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003310AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003311AC_ARG_WITH(libc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003312 AS_HELP_STRING([--with-libc=STRING], [C library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003313[
Guido van Rossum93274221997-05-09 02:42:00 +00003314if test "$withval" = no
3315then LIBC=
3316 AC_MSG_RESULT(force LIBC empty)
3317elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003318then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003319 AC_MSG_RESULT(set LIBC="$withval")
3320else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003321fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003322[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003323
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003324# **************************************************
3325# * Check for various properties of floating point *
3326# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003327
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003328AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3329AC_CACHE_VAL(ac_cv_little_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003330AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003331#include <string.h>
3332int main() {
3333 double x = 9006104071832581.0;
3334 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3335 return 0;
3336 else
3337 return 1;
3338}
Matthias Kloseb159a552010-04-25 21:00:44 +00003339]])],
3340[ac_cv_little_endian_double=yes],
3341[ac_cv_little_endian_double=no],
3342[ac_cv_little_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003343AC_MSG_RESULT($ac_cv_little_endian_double)
3344if test "$ac_cv_little_endian_double" = yes
3345then
3346 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3347 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3348 with the least significant byte first])
3349fi
3350
3351AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3352AC_CACHE_VAL(ac_cv_big_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003353AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003354#include <string.h>
3355int main() {
3356 double x = 9006104071832581.0;
3357 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3358 return 0;
3359 else
3360 return 1;
3361}
Matthias Kloseb159a552010-04-25 21:00:44 +00003362]])],
3363[ac_cv_big_endian_double=yes],
3364[ac_cv_big_endian_double=no],
3365[ac_cv_big_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003366AC_MSG_RESULT($ac_cv_big_endian_double)
3367if test "$ac_cv_big_endian_double" = yes
3368then
3369 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3370 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3371 with the most significant byte first])
3372fi
3373
3374# Some ARM platforms use a mixed-endian representation for doubles.
3375# While Python doesn't currently have full support for these platforms
3376# (see e.g., issue 1762561), we can at least make sure that float <-> string
3377# conversions work.
3378AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3379AC_CACHE_VAL(ac_cv_mixed_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003380AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003381#include <string.h>
3382int main() {
3383 double x = 9006104071832581.0;
3384 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3385 return 0;
3386 else
3387 return 1;
3388}
Matthias Kloseb159a552010-04-25 21:00:44 +00003389]])],
3390[ac_cv_mixed_endian_double=yes],
3391[ac_cv_mixed_endian_double=no],
3392[ac_cv_mixed_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003393AC_MSG_RESULT($ac_cv_mixed_endian_double)
3394if test "$ac_cv_mixed_endian_double" = yes
3395then
3396 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3397 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3398 in ARM mixed-endian order (byte order 45670123)])
3399fi
3400
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003401# The short float repr introduced in Python 3.1 requires the
3402# correctly-rounded string <-> double conversion functions from
3403# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3404# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003405# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003406# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003407
3408# This inline assembler syntax may also work for suncc and icc,
3409# so we try it on all platforms.
3410
3411AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
Matthias Kloseb159a552010-04-25 21:00:44 +00003412AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003413 unsigned short cw;
3414 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3415 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
Matthias Kloseb159a552010-04-25 21:00:44 +00003416]])],[have_gcc_asm_for_x87=yes],[have_gcc_asm_for_x87=no])
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003417AC_MSG_RESULT($have_gcc_asm_for_x87)
3418if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003419then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003420 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3421 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003422fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003423
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003424# Detect whether system arithmetic is subject to x87-style double
3425# rounding issues. The result of this test has little meaning on non
3426# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3427# mode is round-to-nearest and double rounding issues are present, and
3428# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3429AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003430# $BASECFLAGS may affect the result
3431ac_save_cc="$CC"
3432CC="$CC $BASECFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003433AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003434#include <stdlib.h>
3435#include <math.h>
3436int main() {
3437 volatile double x, y, z;
3438 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3439 x = 0.99999999999999989; /* 1-2**-53 */
3440 y = 1./x;
3441 if (y != 1.)
3442 exit(0);
3443 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3444 x = 1e16;
3445 y = 2.99999;
3446 z = x + y;
3447 if (z != 1e16+4.)
3448 exit(0);
3449 /* both tests show evidence of double rounding */
3450 exit(1);
3451}
Matthias Kloseb159a552010-04-25 21:00:44 +00003452]])],
3453[ac_cv_x87_double_rounding=no],
3454[ac_cv_x87_double_rounding=yes],
3455[ac_cv_x87_double_rounding=no])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003456CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003457AC_MSG_RESULT($ac_cv_x87_double_rounding)
3458if test "$ac_cv_x87_double_rounding" = yes
3459then
3460 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3461 [Define if arithmetic is subject to x87-style double rounding issue])
3462fi
3463
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003464# ************************************
3465# * Check for mathematical functions *
3466# ************************************
3467
3468LIBS_SAVE=$LIBS
3469LIBS="$LIBS $LIBM"
3470
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003471AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
3472AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
3473AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
3474
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003475# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3476# -0. on some architectures.
3477AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3478AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003479AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003480#include <math.h>
3481#include <stdlib.h>
3482int main() {
3483 /* return 0 if either negative zeros don't exist
3484 on this platform or if negative zeros exist
3485 and tanh(-0.) == -0. */
3486 if (atan2(0., -1.) == atan2(-0., -1.) ||
3487 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3488 else exit(1);
3489}
Matthias Kloseb159a552010-04-25 21:00:44 +00003490]])],
3491[ac_cv_tanh_preserves_zero_sign=yes],
3492[ac_cv_tanh_preserves_zero_sign=no],
3493[ac_cv_tanh_preserves_zero_sign=no])])
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003494AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3495if test "$ac_cv_tanh_preserves_zero_sign" = yes
3496then
3497 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3498 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3499fi
3500
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003501if test "$ac_cv_func_log1p" = yes
3502then
3503 # On some versions of AIX, log1p(-0.) returns 0. instead of
3504 # -0. See issue #9920.
3505 AC_MSG_CHECKING(whether log1p drops the sign of negative zero)
3506 AC_CACHE_VAL(ac_cv_log1p_drops_zero_sign, [
3507 AC_RUN_IFELSE([AC_LANG_SOURCE([[
3508 #include <math.h>
3509 #include <stdlib.h>
3510 int main() {
3511 /* Fail if the signs of log1p(-0.) and -0. can be
3512 distinguished. */
3513 if (atan2(log1p(-0.), -1.) == atan2(-0., -1.))
3514 return 0;
3515 else
3516 return 1;
3517 }
3518 ]])],
3519 [ac_cv_log1p_drops_zero_sign=no],
3520 [ac_cv_log1p_drops_zero_sign=yes],
3521 [ac_cv_log1p_drops_zero_sign=no])])
3522 AC_MSG_RESULT($ac_cv_log1p_drops_zero_sign)
3523fi
3524if test "$ac_cv_log1p_drops_zero_sign" = yes
3525then
3526 AC_DEFINE(LOG1P_DROPS_ZERO_SIGN, 1,
3527 [Define if log1p(-0.) is 0. rather than -0.])
3528fi
Christian Heimes99170a52007-12-19 02:07:34 +00003529
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003530LIBS=$LIBS_SAVE
3531
Mark Dickinsona614f042009-11-28 12:48:43 +00003532# For multiprocessing module, check that sem_open
3533# actually works. For FreeBSD versions <= 7.2,
3534# the kernel module that provides POSIX semaphores
3535# isn't loaded by default, so an attempt to call
3536# sem_open results in a 'Signal 12' error.
3537AC_MSG_CHECKING(whether POSIX semaphores are enabled)
3538AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
Matthias Kloseb159a552010-04-25 21:00:44 +00003539AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsona614f042009-11-28 12:48:43 +00003540#include <unistd.h>
3541#include <fcntl.h>
3542#include <stdio.h>
3543#include <semaphore.h>
3544#include <sys/stat.h>
3545
3546int main(void) {
3547 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3548 if (a == SEM_FAILED) {
3549 perror("sem_open");
3550 return 1;
3551 }
3552 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003553 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00003554 return 0;
3555}
Matthias Kloseb159a552010-04-25 21:00:44 +00003556]])],
3557[ac_cv_posix_semaphores_enabled=yes],
3558[ac_cv_posix_semaphores_enabled=no],
3559[ac_cv_posix_semaphores_enabled=yes])
Mark Dickinsona614f042009-11-28 12:48:43 +00003560)
3561AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
3562if test $ac_cv_posix_semaphores_enabled = no
3563then
3564 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
3565 [Define if POSIX semaphores aren't enabled on your system])
3566fi
3567
Mark Dickinson10683072009-04-18 21:18:19 +00003568# Multiprocessing check for broken sem_getvalue
3569AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003570AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Matthias Kloseb159a552010-04-25 21:00:44 +00003571AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson10683072009-04-18 21:18:19 +00003572#include <unistd.h>
3573#include <fcntl.h>
3574#include <stdio.h>
3575#include <semaphore.h>
3576#include <sys/stat.h>
3577
3578int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00003579 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00003580 int count;
3581 int res;
3582 if(a==SEM_FAILED){
3583 perror("sem_open");
3584 return 1;
3585
3586 }
3587 res = sem_getvalue(a, &count);
3588 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003589 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00003590 return res==-1 ? 1 : 0;
3591}
Matthias Kloseb159a552010-04-25 21:00:44 +00003592]])],
3593[ac_cv_broken_sem_getvalue=no],
3594[ac_cv_broken_sem_getvalue=yes],
3595[ac_cv_broken_sem_getvalue=yes])
Mark Dickinson10683072009-04-18 21:18:19 +00003596)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003597AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3598if test $ac_cv_broken_sem_getvalue = yes
3599then
3600 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3601 [define to 1 if your sem_getvalue is broken.])
3602fi
Mark Dickinson10683072009-04-18 21:18:19 +00003603
Mark Dickinsonbd792642009-03-18 20:06:12 +00003604# determine what size digit to use for Python's longs
3605AC_MSG_CHECKING([digit size for Python's longs])
3606AC_ARG_ENABLE(big-digits,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003607AS_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
Mark Dickinsonbd792642009-03-18 20:06:12 +00003608[case $enable_big_digits in
3609yes)
3610 enable_big_digits=30 ;;
3611no)
3612 enable_big_digits=15 ;;
3613[15|30])
3614 ;;
3615*)
3616 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3617esac
3618AC_MSG_RESULT($enable_big_digits)
3619AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3620],
3621[AC_MSG_RESULT(no value specified)])
3622
Guido van Rossumef2255b2000-03-10 22:30:29 +00003623# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003624AC_CHECK_HEADER(wchar.h, [
3625 AC_DEFINE(HAVE_WCHAR_H, 1,
3626 [Define if the compiler provides a wchar.h header file.])
3627 wchar_h="yes"
3628],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003629wchar_h="no"
3630)
3631
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003632# determine wchar_t size
3633if test "$wchar_h" = yes
3634then
Guido van Rossum67b26592001-10-20 14:21:45 +00003635 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003636fi
3637
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003638AC_MSG_CHECKING(for UCS-4 tcl)
3639have_ucs4_tcl=no
Matthias Kloseb159a552010-04-25 21:00:44 +00003640AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003641#include <tcl.h>
3642#if TCL_UTF_MAX != 6
3643# error "NOT UCS4_TCL"
Matthias Kloseb159a552010-04-25 21:00:44 +00003644#endif]], [[]])],[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003645 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3646 have_ucs4_tcl=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003647],[])
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003648AC_MSG_RESULT($have_ucs4_tcl)
3649
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003650# check whether wchar_t is signed or not
3651if test "$wchar_h" = yes
3652then
3653 # check whether wchar_t is signed or not
3654 AC_MSG_CHECKING(whether wchar_t is signed)
3655 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003656 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003657 #include <wchar.h>
3658 int main()
3659 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003660 /* Success: exit code 0 */
3661 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003662 }
Matthias Kloseb159a552010-04-25 21:00:44 +00003663 ]])],
3664 [ac_cv_wchar_t_signed=yes],
3665 [ac_cv_wchar_t_signed=no],
3666 [ac_cv_wchar_t_signed=yes])])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003667 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3668fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003669
Georg Brandl52d168a2008-01-07 18:10:24 +00003670AC_MSG_CHECKING(what type to use for str)
3671AC_ARG_WITH(wide-unicode,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003672 AS_HELP_STRING([--with-wide-unicode], [Use 4-byte Unicode characters (default is 2 bytes)]),
Georg Brandl52d168a2008-01-07 18:10:24 +00003673[
3674if test "$withval" != no
3675then unicode_size="4"
3676else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003677fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003678],
3679[
3680case "$have_ucs4_tcl" in
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003681 yes) unicode_size="4";;
Georg Brandl52d168a2008-01-07 18:10:24 +00003682 *) unicode_size="2" ;;
3683esac
3684])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003685
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003686AH_TEMPLATE(Py_UNICODE_SIZE,
3687 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003688case "$unicode_size" in
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003689 4)
3690 AC_DEFINE(Py_UNICODE_SIZE, 4)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00003691 ABIFLAGS="${ABIFLAGS}u"
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003692 ;;
Georg Brandl52d168a2008-01-07 18:10:24 +00003693 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003694esac
3695
Martin v. Löwis11437992002-04-12 09:54:03 +00003696AH_TEMPLATE(PY_UNICODE_TYPE,
3697 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003698
Georg Brandl52d168a2008-01-07 18:10:24 +00003699# wchar_t is only usable if it maps to an unsigned type
3700if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003701 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003702then
3703 PY_UNICODE_TYPE="wchar_t"
3704 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3705 [Define if you have a useable wchar_t type defined in wchar.h; useable
3706 means wchar_t must be an unsigned type with at least 16 bits. (see
3707 Include/unicodeobject.h).])
3708 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3709elif test "$ac_cv_sizeof_short" = "$unicode_size"
3710then
3711 PY_UNICODE_TYPE="unsigned short"
3712 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3713elif test "$ac_cv_sizeof_long" = "$unicode_size"
3714then
3715 PY_UNICODE_TYPE="unsigned long"
3716 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3717else
3718 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003719fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003720AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003721
3722# check for endianness
3723AC_C_BIGENDIAN
3724
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003725# ABI version string for Python extension modules. This appears between the
3726# periods in shared library file names, e.g. foo.<SOABI>.so. It is calculated
3727# from the following attributes which affect the ABI of this Python build (in
3728# this order):
3729#
3730# * The Python implementation (always 'cpython-' for us)
3731# * The major and minor version numbers
3732# * --with-pydebug (adds a 'd')
3733# * --with-pymalloc (adds a 'm')
3734# * --with-wide-unicode (adds a 'u')
3735#
3736# Thus for example, Python 3.2 built with wide unicode, pydebug, and pymalloc,
Georg Brandlde7d8342010-09-03 22:19:07 +00003737# would get a shared library ABI version tag of 'cpython-32dmu' and shared
3738# libraries would be named 'foo.cpython-32dmu.so'.
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003739AC_SUBST(SOABI)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00003740AC_MSG_CHECKING(ABIFLAGS)
3741AC_MSG_RESULT($ABIFLAGS)
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003742AC_MSG_CHECKING(SOABI)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00003743SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003744AC_MSG_RESULT($SOABI)
3745
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00003746AC_MSG_CHECKING(LDVERSION)
3747LDVERSION='$(VERSION)$(ABIFLAGS)'
3748AC_MSG_RESULT($LDVERSION)
3749
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003750# SO is the extension of shared libraries `(including the dot!)
3751# -- usually .so, .sl on HP-UX, .dll on Cygwin
3752AC_MSG_CHECKING(SO)
3753if test -z "$SO"
3754then
3755 case $ac_sys_system in
3756 hp*|HP*)
3757 case `uname -m` in
3758 ia64) SO=.so;;
3759 *) SO=.sl;;
3760 esac
3761 ;;
3762 CYGWIN*) SO=.dll;;
Matthias Klose3fbfea12010-10-14 15:24:22 +00003763 Linux*|GNU*)
3764 SO=.${SOABI}.so;;
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003765 *) SO=.so;;
3766 esac
3767else
3768 # this might also be a termcap variable, see #610332
Georg Brandlde7d8342010-09-03 22:19:07 +00003769 echo
3770 echo '====================================================================='
3771 echo '+ +'
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003772 echo '+ WARNING: You have set SO in your environment. +'
Georg Brandlde7d8342010-09-03 22:19:07 +00003773 echo '+ Do you really mean to change the extension for shared libraries? +'
3774 echo '+ Continuing in 10 seconds to let you to ponder. +'
3775 echo '+ +'
3776 echo '====================================================================='
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003777 sleep 10
3778fi
3779AC_MSG_RESULT($SO)
3780
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003781# Check whether right shifting a negative integer extends the sign bit
3782# or fills with zeros (like the Cray J90, according to Tim Peters).
3783AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003784AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003785AC_RUN_IFELSE([AC_LANG_SOURCE([[
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003786int main()
3787{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003788 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003789}
Matthias Kloseb159a552010-04-25 21:00:44 +00003790]])],
3791[ac_cv_rshift_extends_sign=yes],
3792[ac_cv_rshift_extends_sign=no],
3793[ac_cv_rshift_extends_sign=yes])])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003794AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3795if test "$ac_cv_rshift_extends_sign" = no
3796then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003797 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3798 [Define if i>>j for signed int i does not extend the sign bit
3799 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003800fi
3801
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003802# check for getc_unlocked and related locking functions
3803AC_MSG_CHECKING(for getc_unlocked() and friends)
3804AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003805AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003806 FILE *f = fopen("/dev/null", "r");
3807 flockfile(f);
3808 getc_unlocked(f);
3809 funlockfile(f);
Matthias Kloseb159a552010-04-25 21:00:44 +00003810]])],[ac_cv_have_getc_unlocked=yes],[ac_cv_have_getc_unlocked=no])])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003811AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3812if test "$ac_cv_have_getc_unlocked" = yes
3813then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003814 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3815 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003816fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003817
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003818# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003819# save the value of LIBS so we don't actually link Python with readline
3820LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003821
3822# On some systems we need to link readline to a termcap compatible
3823# library. NOTE: Keep the precedence of listed libraries synchronised
3824# with setup.py.
3825py_cv_lib_readline=no
3826AC_MSG_CHECKING([how to link readline libs])
3827for py_libtermcap in "" ncursesw ncurses curses termcap; do
3828 if test -z "$py_libtermcap"; then
3829 READLINE_LIBS="-lreadline"
3830 else
3831 READLINE_LIBS="-lreadline -l$py_libtermcap"
3832 fi
3833 LIBS="$READLINE_LIBS $LIBS_no_readline"
3834 AC_LINK_IFELSE(
3835 [AC_LANG_CALL([],[readline])],
3836 [py_cv_lib_readline=yes])
3837 if test $py_cv_lib_readline = yes; then
3838 break
3839 fi
3840done
3841# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3842#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003843if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003844 AC_MSG_RESULT([none])
3845else
3846 AC_MSG_RESULT([$READLINE_LIBS])
3847 AC_DEFINE(HAVE_LIBREADLINE, 1,
3848 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003849fi
3850
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003851# check for readline 2.1
3852AC_CHECK_LIB(readline, rl_callback_handler_install,
3853 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003854 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003855
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003856# check for readline 2.2
Matthias Kloseb159a552010-04-25 21:00:44 +00003857AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
3858 [have_readline=yes],
3859 [have_readline=no]
3860)
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003861if test $have_readline = yes
3862then
3863 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3864 [readline/readline.h],
3865 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3866 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00003867 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3868 [readline/readline.h],
3869 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3870 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003871fi
3872
Martin v. Löwis0daad592001-09-30 21:09:59 +00003873# check for readline 4.0
3874AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003875 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003876 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003877
Thomas Wouters89d996e2007-09-08 17:39:28 +00003878# also in 4.0
3879AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3880 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003881 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003882
Guido van Rossum353ae582001-07-10 16:45:32 +00003883# check for readline 4.2
3884AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003885 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003886 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003887
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003888# also in readline 4.2
Matthias Kloseb159a552010-04-25 21:00:44 +00003889AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
3890 [have_readline=yes],
3891 [have_readline=no]
3892)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003893if test $have_readline = yes
3894then
3895 AC_EGREP_HEADER([extern int rl_catch_signals;],
3896 [readline/readline.h],
3897 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3898 [Define if you can turn off readline's signal handling.]), )
3899fi
3900
Martin v. Löwis82bca632006-02-10 20:49:30 +00003901# End of readline checks: restore LIBS
3902LIBS=$LIBS_no_readline
3903
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003904AC_MSG_CHECKING(for broken nice())
3905AC_CACHE_VAL(ac_cv_broken_nice, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003906AC_RUN_IFELSE([AC_LANG_SOURCE([[
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003907int main()
3908{
3909 int val1 = nice(1);
3910 if (val1 != -1 && val1 == nice(2))
3911 exit(0);
3912 exit(1);
3913}
Matthias Kloseb159a552010-04-25 21:00:44 +00003914]])],
3915[ac_cv_broken_nice=yes],
3916[ac_cv_broken_nice=no],
3917[ac_cv_broken_nice=no])])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003918AC_MSG_RESULT($ac_cv_broken_nice)
3919if test "$ac_cv_broken_nice" = yes
3920then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003921 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3922 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003923fi
3924
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003925AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003926AC_CACHE_VAL(ac_cv_broken_poll,
Matthias Kloseb159a552010-04-25 21:00:44 +00003927AC_RUN_IFELSE([AC_LANG_SOURCE([[
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003928#include <poll.h>
3929
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003930int main()
3931{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003932 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003933 int poll_test;
3934
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003935 close (42);
3936
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003937 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003938 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003939 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003940 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003941 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003942 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003943 return 1;
3944}
Matthias Kloseb159a552010-04-25 21:00:44 +00003945]])],
3946[ac_cv_broken_poll=yes],
3947[ac_cv_broken_poll=no],
3948[ac_cv_broken_poll=no]))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003949AC_MSG_RESULT($ac_cv_broken_poll)
3950if test "$ac_cv_broken_poll" = yes
3951then
3952 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3953 [Define if poll() sets errno on invalid file descriptors.])
3954fi
3955
Brett Cannon43802422005-02-10 20:48:03 +00003956# Before we can test tzset, we need to check if struct tm has a tm_zone
3957# (which is not required by ISO C or UNIX spec) and/or if we support
3958# tzname[]
3959AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003960
Brett Cannon43802422005-02-10 20:48:03 +00003961# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003962AC_MSG_CHECKING(for working tzset())
3963AC_CACHE_VAL(ac_cv_working_tzset, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003964AC_RUN_IFELSE([AC_LANG_SOURCE([[
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003965#include <stdlib.h>
3966#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003967#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003968
3969#if HAVE_TZNAME
3970extern char *tzname[];
3971#endif
3972
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003973int main()
3974{
Brett Cannon18367812003-09-19 00:59:16 +00003975 /* Note that we need to ensure that not only does tzset(3)
3976 do 'something' with localtime, but it works as documented
3977 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003978 This includes making sure that tzname is set properly if
3979 tm->tm_zone does not exist since it is the alternative way
3980 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003981
3982 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003983 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003984 */
3985
Brett Cannon43802422005-02-10 20:48:03 +00003986 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003987 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3988
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003989 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003990 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003991 if (localtime(&groundhogday)->tm_hour != 0)
3992 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003993#if HAVE_TZNAME
3994 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3995 if (strcmp(tzname[0], "UTC") ||
3996 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3997 exit(1);
3998#endif
Brett Cannon18367812003-09-19 00:59:16 +00003999
Neal Norwitz7f2588c2003-04-11 15:35:53 +00004000 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004001 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00004002 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004003 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004004#if HAVE_TZNAME
4005 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
4006 exit(1);
4007#endif
Brett Cannon18367812003-09-19 00:59:16 +00004008
4009 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
4010 tzset();
4011 if (localtime(&groundhogday)->tm_hour != 11)
4012 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004013#if HAVE_TZNAME
4014 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
4015 exit(1);
4016#endif
4017
4018#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00004019 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
4020 exit(1);
4021 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
4022 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004023#endif
Brett Cannon18367812003-09-19 00:59:16 +00004024
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004025 exit(0);
4026}
Matthias Kloseb159a552010-04-25 21:00:44 +00004027]])],
4028[ac_cv_working_tzset=yes],
4029[ac_cv_working_tzset=no],
4030[ac_cv_working_tzset=no])])
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004031AC_MSG_RESULT($ac_cv_working_tzset)
4032if test "$ac_cv_working_tzset" = yes
4033then
4034 AC_DEFINE(HAVE_WORKING_TZSET, 1,
4035 [Define if tzset() actually switches the local timezone in a meaningful way.])
4036fi
4037
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004038# Look for subsecond timestamps in struct stat
4039AC_MSG_CHECKING(for tv_nsec in struct stat)
4040AC_CACHE_VAL(ac_cv_stat_tv_nsec,
Matthias Kloseb159a552010-04-25 21:00:44 +00004041AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004042struct stat st;
4043st.st_mtim.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00004044]])],
4045[ac_cv_stat_tv_nsec=yes],
4046[ac_cv_stat_tv_nsec=no]))
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004047AC_MSG_RESULT($ac_cv_stat_tv_nsec)
4048if test "$ac_cv_stat_tv_nsec" = yes
4049then
4050 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
4051 [Define if you have struct stat.st_mtim.tv_nsec])
4052fi
4053
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004054# Look for BSD style subsecond timestamps in struct stat
4055AC_MSG_CHECKING(for tv_nsec2 in struct stat)
4056AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
Matthias Kloseb159a552010-04-25 21:00:44 +00004057AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004058struct stat st;
4059st.st_mtimespec.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00004060]])],
4061[ac_cv_stat_tv_nsec2=yes],
4062[ac_cv_stat_tv_nsec2=no]))
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004063AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
4064if test "$ac_cv_stat_tv_nsec2" = yes
4065then
4066 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
4067 [Define if you have struct stat.st_mtimensec])
4068fi
4069
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004070# On HP/UX 11.0, mvwdelch is a block with a return statement
4071AC_MSG_CHECKING(whether mvwdelch is an expression)
4072AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
Matthias Kloseb159a552010-04-25 21:00:44 +00004073AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004074 int rtn;
4075 rtn = mvwdelch(0,0,0);
Matthias Kloseb159a552010-04-25 21:00:44 +00004076]])],
4077[ac_cv_mvwdelch_is_expression=yes],
4078[ac_cv_mvwdelch_is_expression=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004079AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
4080
4081if test "$ac_cv_mvwdelch_is_expression" = yes
4082then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004083 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
4084 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004085fi
4086
4087AC_MSG_CHECKING(whether WINDOW has _flags)
4088AC_CACHE_VAL(ac_cv_window_has_flags,
Matthias Kloseb159a552010-04-25 21:00:44 +00004089AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004090 WINDOW *w;
4091 w->_flags = 0;
Matthias Kloseb159a552010-04-25 21:00:44 +00004092]])],
4093[ac_cv_window_has_flags=yes],
4094[ac_cv_window_has_flags=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004095AC_MSG_RESULT($ac_cv_window_has_flags)
4096
4097
4098if test "$ac_cv_window_has_flags" = yes
4099then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004100 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
4101 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004102fi
4103
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004104AC_MSG_CHECKING(for is_term_resized)
Matthias Kloseb159a552010-04-25 21:00:44 +00004105AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=is_term_resized]])],
4106 [AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
4107 AC_MSG_RESULT(yes)],
4108 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004109)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00004110
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004111AC_MSG_CHECKING(for resize_term)
Matthias Kloseb159a552010-04-25 21:00:44 +00004112AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resize_term]])],
4113 [AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
4114 AC_MSG_RESULT(yes)],
4115 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004116)
4117
4118AC_MSG_CHECKING(for resizeterm)
Matthias Kloseb159a552010-04-25 21:00:44 +00004119AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resizeterm]])],
4120 [AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
4121 AC_MSG_RESULT(yes)],
4122 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004123)
4124
Thomas Wouters89f507f2006-12-13 04:49:30 +00004125AC_MSG_CHECKING(for /dev/ptmx)
4126
4127if test -r /dev/ptmx
4128then
4129 AC_MSG_RESULT(yes)
4130 AC_DEFINE(HAVE_DEV_PTMX, 1,
4131 [Define if we have /dev/ptmx.])
4132else
4133 AC_MSG_RESULT(no)
4134fi
4135
4136AC_MSG_CHECKING(for /dev/ptc)
4137
4138if test -r /dev/ptc
4139then
4140 AC_MSG_RESULT(yes)
4141 AC_DEFINE(HAVE_DEV_PTC, 1,
4142 [Define if we have /dev/ptc.])
4143else
4144 AC_MSG_RESULT(no)
4145fi
Neal Norwitz865400f2003-03-21 01:42:58 +00004146
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004147if test "$have_long_long" = yes
4148then
4149 AC_MSG_CHECKING(for %lld and %llu printf() format support)
4150 AC_CACHE_VAL(ac_cv_have_long_long_format,
Matthias Kloseb159a552010-04-25 21:00:44 +00004151 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004152 #include <stdio.h>
4153 #include <stddef.h>
4154 #include <string.h>
4155
4156 #ifdef HAVE_SYS_TYPES_H
4157 #include <sys/types.h>
4158 #endif
4159
4160 int main()
4161 {
4162 char buffer[256];
4163
4164 if (sprintf(buffer, "%lld", (long long)123) < 0)
4165 return 1;
4166 if (strcmp(buffer, "123"))
4167 return 1;
4168
4169 if (sprintf(buffer, "%lld", (long long)-123) < 0)
4170 return 1;
4171 if (strcmp(buffer, "-123"))
4172 return 1;
4173
4174 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
4175 return 1;
4176 if (strcmp(buffer, "123"))
4177 return 1;
4178
4179 return 0;
4180 }
Matthias Kloseb159a552010-04-25 21:00:44 +00004181 ]]])],
4182 [ac_cv_have_long_long_format=yes],
4183 [ac_cv_have_long_long_format=no],
4184 [ac_cv_have_long_long_format=no])
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004185 )
4186 AC_MSG_RESULT($ac_cv_have_long_long_format)
4187fi
4188
Mark Dickinson89d7d412009-12-31 20:50:59 +00004189if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004190then
4191 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
4192 [Define to printf format modifier for long long type])
4193fi
4194
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00004195if test $ac_sys_system = Darwin
4196then
4197 LIBS="$LIBS -framework CoreFoundation"
4198fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004199
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004200AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00004201AC_RUN_IFELSE([AC_LANG_SOURCE([[
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00004202#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00004203#include <stddef.h>
4204#include <string.h>
4205
Christian Heimes2c181612007-12-17 20:04:13 +00004206#ifdef HAVE_SYS_TYPES_H
4207#include <sys/types.h>
4208#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00004209
4210#ifdef HAVE_SSIZE_T
4211typedef ssize_t Py_ssize_t;
4212#elif SIZEOF_VOID_P == SIZEOF_LONG
4213typedef long Py_ssize_t;
4214#else
4215typedef int Py_ssize_t;
4216#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00004217
Christian Heimes2c181612007-12-17 20:04:13 +00004218int main()
4219{
4220 char buffer[256];
4221
Thomas Wouters477c8d52006-05-27 19:21:47 +00004222 if(sprintf(buffer, "%zd", (size_t)123) < 0)
4223 return 1;
4224
Thomas Wouters89f507f2006-12-13 04:49:30 +00004225 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00004226 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00004227
4228 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
4229 return 1;
4230
4231 if (strcmp(buffer, "-123"))
4232 return 1;
4233
Thomas Wouters477c8d52006-05-27 19:21:47 +00004234 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004235}
Matthias Kloseb159a552010-04-25 21:00:44 +00004236]])],
4237 [ac_cv_have_size_t_format=yes],
4238 [ac_cv_have_size_t_format=no],
4239 [ac_cv_have_size_t_format="cross -- assuming yes"
4240])])
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004241if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004242 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
4243 [Define to printf format modifier for Py_ssize_t])
4244fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00004245
Martin v. Löwis01c04012002-11-11 14:58:44 +00004246AC_CHECK_TYPE(socklen_t,,
4247 AC_DEFINE(socklen_t,int,
Matthias Klosec80c93f2010-04-24 17:04:35 +00004248 [Define to `int' if <sys/socket.h> does not define.]),[
Martin v. Löwis01c04012002-11-11 14:58:44 +00004249#ifdef HAVE_SYS_TYPES_H
4250#include <sys/types.h>
4251#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00004252#ifdef HAVE_SYS_SOCKET_H
4253#include <sys/socket.h>
4254#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00004255])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004256
Antoine Pitroufff95302008-09-03 18:58:51 +00004257AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004258AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Matthias Kloseb159a552010-04-25 21:00:44 +00004259AC_RUN_IFELSE([AC_LANG_SOURCE([[
Antoine Pitroufff95302008-09-03 18:58:51 +00004260#include<stdlib.h>
4261int main() {
4262 size_t len = -1;
4263 const char *str = "text";
4264 len = mbstowcs(NULL, str, 0);
4265 return (len != 4);
4266}
Matthias Kloseb159a552010-04-25 21:00:44 +00004267]])],
4268[ac_cv_broken_mbstowcs=no],
4269[ac_cv_broken_mbstowcs=yes],
4270[ac_cv_broken_mbstowcs=no]))
Antoine Pitroufff95302008-09-03 18:58:51 +00004271AC_MSG_RESULT($ac_cv_broken_mbstowcs)
4272if test "$ac_cv_broken_mbstowcs" = yes
4273then
4274 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
4275 [Define if mbstowcs(NULL, "text", 0) does not return the number of
4276 wide chars that would be converted.])
4277fi
4278
Antoine Pitrou042b1282010-08-13 21:15:58 +00004279AC_MSG_CHECKING(whether $CC supports computed gotos)
4280AC_CACHE_VAL(ac_cv_computed_gotos,
4281AC_RUN_IFELSE([AC_LANG_SOURCE([[[
4282int main(int argc, char **argv)
4283{
4284 static void *targets[1] = { &&LABEL1 };
4285 goto LABEL2;
4286LABEL1:
4287 return 0;
4288LABEL2:
4289 goto *targets[0];
4290 return 1;
4291}
4292]]])],
4293[ac_cv_computed_gotos=yes],
4294[ac_cv_computed_gotos=no],
4295[ac_cv_computed_gotos=no]))
4296AC_MSG_RESULT($ac_cv_computed_gotos)
4297if test "$ac_cv_computed_gotos" = yes
4298then
4299 AC_DEFINE(HAVE_COMPUTED_GOTOS, 1,
4300 [Define if the C compiler supports computed gotos.])
4301fi
4302
Antoine Pitroub52ec782009-01-25 16:34:23 +00004303# Check for --with-computed-gotos
4304AC_MSG_CHECKING(for --with-computed-gotos)
4305AC_ARG_WITH(computed-gotos,
Antoine Pitrou042b1282010-08-13 21:15:58 +00004306 AS_HELP_STRING([--with(out)-computed-gotos],
4307 [Use computed gotos in evaluation loop (enabled by default on supported compilers)]),
Antoine Pitroub52ec782009-01-25 16:34:23 +00004308[
Antoine Pitrou042b1282010-08-13 21:15:58 +00004309if test "$withval" = yes
Antoine Pitroub52ec782009-01-25 16:34:23 +00004310then
4311 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
4312 [Define if you want to use computed gotos in ceval.c.])
4313 AC_MSG_RESULT(yes)
Antoine Pitrou042b1282010-08-13 21:15:58 +00004314fi
4315if test "$withval" = no
4316then
4317 AC_DEFINE(USE_COMPUTED_GOTOS, 0,
4318 [Define if you want to use computed gotos in ceval.c.])
4319 AC_MSG_RESULT(no)
4320fi
4321],
4322[AC_MSG_RESULT(no value specified)])
Antoine Pitroub52ec782009-01-25 16:34:23 +00004323
R. David Murraye16cda92010-10-15 23:12:57 +00004324case $ac_sys_system in
4325AIX*)
4326 AC_DEFINE(HAVE_BROKEN_PIPE_BUF, 1, [Define if the system reports an invalid PIPE_BUF value.]) ;;
4327esac
Antoine Pitroub52ec782009-01-25 16:34:23 +00004328
Jesus Cea6a792292010-05-03 21:18:48 +00004329
4330case $ac_sys_system in
4331 OSF*) AC_MSG_ERROR(OSF* systems are deprecated unless somebody volunteers. Check http://bugs.python.org/issue8606) ;;
4332esac
4333
Gregory P. Smith51ee2702010-12-13 07:59:39 +00004334AC_CHECK_FUNC(pipe2, AC_DEFINE(HAVE_PIPE2, 1, [Define if the OS supports pipe2()]), )
Jesus Cea6a792292010-05-03 21:18:48 +00004335
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004336AC_SUBST(THREADHEADERS)
4337
4338for h in `(cd $srcdir;echo Python/thread_*.h)`
4339do
4340 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4341done
4342
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004343AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00004344SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004345AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004346for dir in $SRCDIRS; do
4347 if test ! -d $dir; then
4348 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004349 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004350done
4351AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004352
Guido van Rossum627b2d71993-12-24 10:39:16 +00004353# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00004354AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Antoine Pitrou8e6b4072010-09-10 19:44:44 +00004355AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])
Martin v. Löwis88afe662002-10-26 13:47:44 +00004356AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004357
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004358echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004359if test ! -f Modules/Setup
4360then
4361 cp $srcdir/Modules/Setup.dist Modules/Setup
4362fi
4363
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004364echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004365if test ! -f Modules/Setup.local
4366then
4367 echo "# Edit this file for local setup changes" >Modules/Setup.local
4368fi
4369
4370echo "creating Makefile"
4371$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4372 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004373 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00004374mv config.c Modules