blob: 00ed902d540da095373af84343dec2ca91fb59e2 [file] [log] [blame]
Benjamin Petersonfbeb6b62008-05-26 16:04:49 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Martin v. Löwis88afe662002-10-26 13:47:44 +00004
5# Set VERSION so we only need to edit in one place (i.e., here)
Georg Brandl3ebb6b32011-02-20 10:37:07 +00006m4_define(PYTHON_VERSION, 3.3)
Martin v. Löwis88afe662002-10-26 13:47:44 +00007
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00008AC_PREREQ(2.65)
Alexandre Vassalottib89910f2009-07-18 00:33:23 +00009
Georg Brandle2e15612009-05-20 18:25:10 +000010AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050011
12AC_SUBST(HGVERSION)
13AC_SUBST(HGTAG)
14AC_SUBST(HGBRANCH)
15
Antoine Pitroud3b2aef2011-07-27 01:22:41 +020016if test -e $srcdir/.hg/dirstate
Benjamin Peterson8c6f88e2011-05-31 20:52:17 -050017then
18AC_CHECK_PROG(HAS_HG, hg, found, not-found)
19else
20HAS_HG=no-repository
21fi
22if test $HAS_HG = found
23then
24 HGVERSION="hg id -i \$(srcdir)"
25 HGTAG="hg id -t \$(srcdir)"
26 HGBRANCH="hg id -b \$(srcdir)"
27else
28 HGVERSION=""
29 HGTAG=""
30 HGBRANCH=""
31fi
32
Martin v. Löwis88afe662002-10-26 13:47:44 +000033AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000034AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000035
Matthias Kloseca2f6ec2012-03-15 21:30:11 +010036AC_CANONICAL_HOST
37
Benjamin Petersond23f8222009-04-05 19:13:16 +000038dnl Ensure that if prefix is specified, it does not end in a slash. If
39dnl it does, we get path names containing '//' which is both ugly and
40dnl can cause trouble.
41
42dnl Last slash shouldn't be stripped if prefix=/
43if test "$prefix" != "/"; then
44 prefix=`echo "$prefix" | sed -e 's/\/$//g'`
45fi
46
Martin v. Löwis8316feb2003-06-14 07:48:07 +000047dnl This is for stuff that absolutely must end up in pyconfig.h.
48dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000049AH_TOP([
50#ifndef Py_PYCONFIG_H
51#define Py_PYCONFIG_H
52])
Martin v. Löwis11437992002-04-12 09:54:03 +000053AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000054/* Define the macros needed if on a UnixWare 7.x system. */
55#if defined(__USLC__) && defined(__SCO_VERSION__)
56#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
57#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000058
59#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000060])
61
Martin v. Löwis8316feb2003-06-14 07:48:07 +000062# We don't use PACKAGE_ variables, and they cause conflicts
63# with other autoconf-based packages that include Python.h
64grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
65rm confdefs.h
66mv confdefs.h.new confdefs.h
67
Guido van Rossum642b6781997-07-19 19:35:41 +000068AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000069VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000070
Georg Brandlde7d8342010-09-03 22:19:07 +000071# Version number of Python's own shared library file.
Martin v. Löwis1142de32002-03-29 16:28:31 +000072AC_SUBST(SOVERSION)
73SOVERSION=1.0
74
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000075# The later defininition of _XOPEN_SOURCE disables certain features
76# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
77AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
78
Martin v. Löwisbcd93962003-05-03 10:32:18 +000079# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
80# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
81# them.
82AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
83
Andrew MacIntyreabccf412003-07-02 13:53:25 +000084# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
85# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
86# them.
87AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
88
Martin v. Löwisd6320502004-08-12 13:45:08 +000089# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
90# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
91AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
92
Georg Brandlfcaf9102008-07-16 02:17:56 +000093# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
94# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
95# them.
96AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
97
98
Martin v. Löwise981a4e2002-11-11 13:26:51 +000099define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +0000100
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +0000101# Arguments passed to configure.
102AC_SUBST(CONFIG_ARGS)
103CONFIG_ARGS="$ac_configure_args"
104
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000105AC_MSG_CHECKING([for --enable-universalsdk])
Thomas Wouters477c8d52006-05-27 19:21:47 +0000106AC_ARG_ENABLE(universalsdk,
Ned Deilycbfb9a52012-06-23 16:02:19 -0700107 AS_HELP_STRING([--enable-universalsdk@<:@=SDKDIR@:>@], [Build fat binary against Mac OS X SDK]),
Thomas Wouters477c8d52006-05-27 19:21:47 +0000108[
109 case $enableval in
110 yes)
Ned Deilycbfb9a52012-06-23 16:02:19 -0700111 # Locate the best usable SDK, see Mac/README.txt for more
112 # information
113 enableval="`/usr/bin/xcodebuild -version -sdk macosx Path 2>/dev/null`"
114 if test -z "${enableval}"
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000115 then
Ned Deilycbfb9a52012-06-23 16:02:19 -0700116 enableval=/Developer/SDKs/MacOSX10.4u.sdk
117 if test ! -d "${enableval}"
118 then
119 enableval=/
120 fi
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000121 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000122 ;;
123 esac
124 case $enableval in
125 no)
126 UNIVERSALSDK=
127 enable_universalsdk=
128 ;;
129 *)
130 UNIVERSALSDK=$enableval
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000131 if test ! -d "${UNIVERSALSDK}"
132 then
133 AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
134 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000135 ;;
136 esac
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000137
Thomas Wouters477c8d52006-05-27 19:21:47 +0000138],[
139 UNIVERSALSDK=
140 enable_universalsdk=
141])
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000142if test -n "${UNIVERSALSDK}"
143then
144 AC_MSG_RESULT(${UNIVERSALSDK})
145else
146 AC_MSG_RESULT(no)
147fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000148AC_SUBST(UNIVERSALSDK)
149
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000150AC_SUBST(ARCH_RUN_32BIT)
151
Ned Deilycbfb9a52012-06-23 16:02:19 -0700152# For backward compatibility reasons we prefer to select '32-bit' if available,
153# otherwise use 'intel'
Georg Brandlfcaf9102008-07-16 02:17:56 +0000154UNIVERSAL_ARCHS="32-bit"
Ned Deilycbfb9a52012-06-23 16:02:19 -0700155if test "`uname -s`" = "Darwin"
156then
157 if test -n "${UNIVERSALSDK}"
158 then
159 if test -z "`/usr/bin/file "${UNIVERSALSDK}/usr/lib/libSystem.dylib" | grep ppc`"
160 then
161 UNIVERSAL_ARCHS="intel"
162 fi
163 fi
164fi
165
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000166AC_SUBST(LIPO_32BIT_FLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000167AC_MSG_CHECKING(for --with-universal-archs)
168AC_ARG_WITH(universal-archs,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000169 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 +0000170[
171 AC_MSG_RESULT($withval)
172 UNIVERSAL_ARCHS="$withval"
173],
174[
Ned Deilycbfb9a52012-06-23 16:02:19 -0700175 AC_MSG_RESULT(${UNIVERSAL_ARCHS})
Georg Brandlfcaf9102008-07-16 02:17:56 +0000176])
177
178
179
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000180AC_ARG_WITH(framework-name,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000181 AS_HELP_STRING([--with-framework-name=FRAMEWORK],
Matthias Klosec80c93f2010-04-24 17:04:35 +0000182 [specify an alternate name of the framework built with --enable-framework]),
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000183[
184 PYTHONFRAMEWORK=${withval}
185 PYTHONFRAMEWORKDIR=${withval}.framework
186 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
187 ],[
188 PYTHONFRAMEWORK=Python
189 PYTHONFRAMEWORKDIR=Python.framework
190 PYTHONFRAMEWORKIDENTIFIER=org.python.python
191])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000192dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000193AC_ARG_ENABLE(framework,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000194 AS_HELP_STRING([--enable-framework@<:@=INSTALLDIR@:>@], [Build (MacOSX|Darwin) framework]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000195[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000196 case $enableval in
197 yes)
198 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000199 esac
200 case $enableval in
201 no)
202 PYTHONFRAMEWORK=
203 PYTHONFRAMEWORKDIR=no-framework
204 PYTHONFRAMEWORKPREFIX=
205 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000206 FRAMEWORKINSTALLFIRST=
207 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000208 FRAMEWORKALTINSTALLFIRST=
209 FRAMEWORKALTINSTALLLAST=
210 if test "x${prefix}" = "xNONE"; then
211 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
212 else
213 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
214 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000215 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000216 ;;
217 *)
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000218 PYTHONFRAMEWORKPREFIX="${enableval}"
Jack Jansen127e56e2001-09-11 14:41:54 +0000219 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000220 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussorenf6ccbf62009-06-02 10:55:56 +0000221 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000222 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
223 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000224 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000225
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000226 if test "x${prefix}" = "xNONE" ; then
227 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000228
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000229 else
230 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
231 fi
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000232
233 case "${enableval}" in
234 /System*)
235 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
236 if test "${prefix}" = "NONE" ; then
237 # See below
238 FRAMEWORKUNIXTOOLSPREFIX="/usr"
239 fi
240 ;;
241
242 /Library*)
243 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
244 ;;
245
246 */Library/Frameworks)
247 MDIR="`dirname "${enableval}"`"
248 MDIR="`dirname "${MDIR}"`"
249 FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications"
250
251 if test "${prefix}" = "NONE"; then
252 # User hasn't specified the
253 # --prefix option, but wants to install
254 # the framework in a non-default location,
255 # ensure that the compatibility links get
256 # installed relative to that prefix as well
257 # instead of in /usr/local.
258 FRAMEWORKUNIXTOOLSPREFIX="${MDIR}"
259 fi
260 ;;
261
262 *)
263 FRAMEWORKINSTALLAPPSPREFIX="/Applications"
264 ;;
265 esac
266
Jack Jansen127e56e2001-09-11 14:41:54 +0000267 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000268
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000269 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000270 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000271 AC_CONFIG_FILES(Mac/Makefile)
272 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000273 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
274 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000275 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000276 ],[
277 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000278 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000279 PYTHONFRAMEWORKPREFIX=
280 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000281 FRAMEWORKINSTALLFIRST=
282 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000283 FRAMEWORKALTINSTALLFIRST=
284 FRAMEWORKALTINSTALLLAST=
285 if test "x${prefix}" = "xNONE" ; then
286 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
287 else
288 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
289 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000290 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000291
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000292])
293AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000294AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000295AC_SUBST(PYTHONFRAMEWORKDIR)
296AC_SUBST(PYTHONFRAMEWORKPREFIX)
297AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000298AC_SUBST(FRAMEWORKINSTALLFIRST)
299AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000300AC_SUBST(FRAMEWORKALTINSTALLFIRST)
301AC_SUBST(FRAMEWORKALTINSTALLLAST)
302AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Ronald Oussoren86b33c82010-04-30 11:41:56 +0000303AC_SUBST(FRAMEWORKINSTALLAPPSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000304
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000305##AC_ARG_WITH(dyld,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000306## AS_HELP_STRING([--with-dyld],
Matthias Klosec80c93f2010-04-24 17:04:35 +0000307## [Use (OpenStep|Rhapsody) dynamic linker]))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000308##
Guido van Rossumb418f891996-07-30 18:06:02 +0000309# Set name for machine-dependent library files
310AC_SUBST(MACHDEP)
311AC_MSG_CHECKING(MACHDEP)
312if test -z "$MACHDEP"
313then
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100314 # avoid using uname for cross builds
315 if test "$cross_compiling" = yes; then
316 # ac_sys_system and ac_sys_release are only used for setting
317 # `define_xopen_source' in the case statement below. For the
318 # current supported cross builds, this macro is not adjusted.
319 case "$host" in
320 *-*-linux*)
321 ac_sys_system=Linux
322 ;;
323 *-*-cygwin*)
324 ac_sys_system=Cygwin
325 ;;
326 *)
327 # for now, limit cross builds to known configurations
328 MACHDEP="unknown"
329 AC_MSG_ERROR([cross build not supported for $host])
330 esac
331 ac_sys_release=
332 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000333 ac_sys_system=`uname -s`
Benjamin Peterson8719ad52009-09-11 22:24:02 +0000334 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000335 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000336 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000337 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000338 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000339 fi
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100340 fi
341 ac_md_system=`echo $ac_sys_system |
342 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
343 ac_md_release=`echo $ac_sys_release |
344 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
345 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000346
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100347 case $MACHDEP in
Victor Stinner7209ff22011-08-21 00:00:16 +0200348 linux*) MACHDEP="linux";;
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000349 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000350 darwin*) MACHDEP="darwin";;
doko@ubuntu.comba015832012-06-30 16:52:05 +0200351 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000352 '') MACHDEP="unknown";;
Matthias Klosedf2aecb2012-03-15 22:19:28 +0100353 esac
Guido van Rossumb418f891996-07-30 18:06:02 +0000354fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000355
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000356# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
357# disable features if it is defined, without any means to access these
358# features as extensions. For these systems, we skip the definition of
359# _XOPEN_SOURCE. Before adding a system to the list to gain access to
360# some feature, make sure there is no alternative way to access this
361# feature. Also, when using wildcards, make sure you have verified the
362# need for not defining _XOPEN_SOURCE on all systems matching the
363# wildcard, and that the wildcard does not include future systems
364# (which may remove their limitations).
365dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
366case $ac_sys_system/$ac_sys_release in
367 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
368 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000369 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Martin v. Löwis19ed3c82010-02-15 21:45:06 +0000370 # In addition, Stefan Krah confirms that issue #1244610 exists through
371 # OpenBSD 4.6, but is fixed in 4.7.
Charles-François Natali54ef40b2011-07-22 23:52:02 +0200372 OpenBSD/2.* | OpenBSD/3.* | OpenBSD/4.@<:@0123456@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000373 define_xopen_source=no
374 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
375 # also defined. This can be overridden by defining _BSD_SOURCE
376 # As this has a different meaning on Linux, only define it on OpenBSD
377 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
378 ;;
Charles-François Natali54ef40b2011-07-22 23:52:02 +0200379 OpenBSD/*)
Martin v. Löwis7671efc2010-02-15 08:35:16 +0000380 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
381 # also defined. This can be overridden by defining _BSD_SOURCE
382 # As this has a different meaning on Linux, only define it on OpenBSD
383 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
384 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000385 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
386 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
387 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000388 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 +0000389 define_xopen_source=no;;
Martin v. Löwis1a415762010-05-28 15:44:20 +0000390 # From the perspective of Solaris, _XOPEN_SOURCE is not so much a
391 # request to enable features supported by the standard as a request
392 # to disable features not supported by the standard. The best way
393 # for Python to use Solaris is simply to leave _XOPEN_SOURCE out
394 # entirely and define __EXTENSIONS__ instead.
395 SunOS/*)
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000396 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000397 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
398 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000399 # Reconfirmed for 7.1.4 by Martin v. Loewis.
400 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000401 define_xopen_source=no;;
402 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000403 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000404 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000405 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000406 # On FreeBSD 4, the math functions C89 does not cover are never defined
407 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
408 FreeBSD/4.*)
409 define_xopen_source=no;;
410 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
411 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
412 # identifies itself as Darwin/7.*
413 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
414 # disables platform specific features beyond repair.
415 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
416 # has no effect, don't bother defining them
417 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000418 define_xopen_source=no;;
Ronald Oussoren92fb9412010-03-09 06:40:19 +0000419 Darwin/1@<:@0-9@:>@.*)
Ronald Oussorenb8f11a62010-03-08 07:02:03 +0000420 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000421 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
422 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
423 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000424 AIX/4)
425 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000426 AIX/5)
427 if test `uname -r` -eq 1; then
428 define_xopen_source=no
429 fi
430 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000431 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
432 # defining NI_NUMERICHOST.
433 QNX/6.3.2)
434 define_xopen_source=no
435 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000436
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000437esac
438
439if test $define_xopen_source = yes
440then
Victor Stinner14d098d2011-09-07 22:29:43 +0200441 # X/Open 7, incorporating POSIX.1-2008
442 AC_DEFINE(_XOPEN_SOURCE, 700,
Martin v. Löwis1a415762010-05-28 15:44:20 +0000443 Define to the level of X/Open that your system supports)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000444
445 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
446 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
447 # several APIs are not declared. Since this is also needed in some
448 # cases for HP-UX, we define it globally.
Martin v. Löwis1a415762010-05-28 15:44:20 +0000449 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
450 Define to activate Unix95-and-earlier features)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000451
Victor Stinnerd169fdc2011-09-08 00:56:17 +0200452 AC_DEFINE(_POSIX_C_SOURCE, 200809L, Define to activate features from IEEE Stds 1003.1-2008)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000453fi
454
Guido van Rossum91922671997-10-09 20:24:13 +0000455#
456# SGI compilers allow the specification of the both the ABI and the
457# ISA on the command line. Depending on the values of these switches,
458# different and often incompatable code will be generated.
459#
460# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
461# thus supply support for various ABI/ISA combinations. The MACHDEP
462# variable is also adjusted.
463#
464AC_SUBST(SGI_ABI)
465if test ! -z "$SGI_ABI"
466then
467 CC="cc $SGI_ABI"
468 LDFLAGS="$SGI_ABI $LDFLAGS"
469 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
470fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000471AC_MSG_RESULT($MACHDEP)
472
Jack Jansen6b08a402004-06-03 12:41:45 +0000473# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
474# it may influence the way we can build extensions, so distutils
475# needs to check it
476AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000477AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000478CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000479EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000480
Guido van Rossum627b2d71993-12-24 10:39:16 +0000481# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000482
483# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
484# for debug/optimization stuff. BASECFLAGS is for flags that are required
485# just to get things to compile and link. Users are free to override OPT
486# when running configure or make. The build should not break if they do.
487# BASECFLAGS should generally not be messed with, however.
488
489# XXX shouldn't some/most/all of this code be merged with the stuff later
490# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000491AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000492AC_ARG_WITH(gcc,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000493 AS_HELP_STRING([--without-gcc], [never use gcc]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000494[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000495 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000496 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000497 without_gcc=yes;;
498 yes) CC=gcc
499 without_gcc=no;;
500 *) CC=$withval
501 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000502 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000503 case $ac_sys_system in
Antoine Pitrouf6350d22010-09-21 15:19:14 +0000504 AIX*) CC=${CC:-xlc_r}
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000505 without_gcc=;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000506 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000507 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000508AC_MSG_RESULT($without_gcc)
509
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000510# If the user switches compilers, we can't believe the cache
511if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
512then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000513 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
514(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000515fi
516
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000517# Don't let AC_PROG_CC set the default CFLAGS. It normally sets -g -O2
518# when the compiler supports them, but we don't always want -O2, and
519# we set -g later.
520if test -z "$CFLAGS"; then
521 CFLAGS=
Marc-André Lemburgdf700f02010-04-30 17:29:56 +0000522fi
Ned Deilycbfb9a52012-06-23 16:02:19 -0700523
524if test "$ac_sys_system" = "Darwin"
525then
526 # Compiler selection on MacOSX is more complicated than
527 # AC_PROG_CC can handle, see Mac/README.txt for more
528 # information
529 if test -z "${CC}"
530 then
531 found_gcc=
532 found_clang=
533 as_save_IFS=$IFS; IFS=:
534 for as_dir in $PATH
535 do
536 IFS=$as_save_IFS
537 if test -x $as_dir/gcc; then
538 if test -z "${found_gcc}"; then
539 found_gcc=$as_dir/gcc
540 fi
541 fi
542 if test -x $as_dir/clang; then
543 if test -z "${found_clang}"; then
544 found_clang=$as_dir/clang
545 fi
546 fi
547 done
548 IFS=$as_save_IFS
549
550 if test -n "$found_gcc" -a -n "$found_clang"
551 then
552 if test -n "`"$found_gcc" --version | grep llvm-gcc`"
553 then
554 AC_MSG_NOTICE([Detected llvm-gcc, falling back to clang])
555 CC="$found_clang"
556 CXX="$found_clang++"
557 fi
558
559
560 elif test -z "$found_gcc" -a -n "$found_clang"
561 then
562 AC_MSG_NOTICE([No GCC found, use CLANG])
563 CC="$found_clang"
564 CXX="$found_clang++"
565
566 elif test -z "$found_gcc" -a -z "$found_clang"
567 then
568 found_clang=`/usr/bin/xcrun -find clang 2>/dev/null`
569 if test -n "${found_clang}"
570 then
571 AC_MSG_NOTICE([Using clang from Xcode.app])
572 CC="${found_clang}"
573 CXX="`/usr/bin/xcrun -find clang++`"
574
575 # else: use default behaviour
576 fi
577 fi
578 fi
579fi
Jeffrey Yasskind4fcdb12010-07-09 16:30:58 +0000580AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000581
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000582AC_SUBST(CXX)
583AC_SUBST(MAINCC)
584AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
585AC_ARG_WITH(cxx_main,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000586 AS_HELP_STRING([--with-cxx-main=<compiler>],
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000587 [compile main() and link python executable with C++ compiler]),
588[
589
590 case $withval in
591 no) with_cxx_main=no
592 MAINCC='$(CC)';;
593 yes) with_cxx_main=yes
594 MAINCC='$(CXX)';;
595 *) with_cxx_main=yes
596 MAINCC=$withval
597 if test -z "$CXX"
598 then
599 CXX=$withval
600 fi;;
601 esac], [
602 with_cxx_main=no
603 MAINCC='$(CC)'
604])
605AC_MSG_RESULT($with_cxx_main)
606
607preset_cxx="$CXX"
608if test -z "$CXX"
609then
610 case "$CC" in
doko@ubuntu.com51f65942012-06-30 14:42:46 +0200611 gcc) AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
612 cc) AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
613 clang|*/clang) AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000614 esac
615 if test "$CXX" = "notfound"
616 then
617 CXX=""
618 fi
619fi
620if test -z "$CXX"
621then
doko@ubuntu.com51f65942012-06-30 14:42:46 +0200622 AC_CHECK_TOOLS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000623 if test "$CXX" = "notfound"
624 then
625 CXX=""
626 fi
627fi
628if test "$preset_cxx" != "$CXX"
629then
630 AC_MSG_WARN([
631
632 By default, distutils will build C++ extension modules with "$CXX".
633 If this is not intended, then set CXX on the configure command line.
634 ])
635fi
636
637
Martin v. Löwis48e14d32011-05-09 07:37:45 +0200638AC_MSG_CHECKING([for -Wl,--no-as-needed])
639save_LDFLAGS="$LDFLAGS"
640LDFLAGS="$LDFLAGS -Wl,--no-as-needed"
641AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
642 [NO_AS_NEEDED="-Wl,--no-as-needed"
643 AC_MSG_RESULT([yes])],
644 [NO_AS_NEEDED=""
645 AC_MSG_RESULT([no])])
646LDFLAGS="$save_LDFLAGS"
647AC_SUBST(NO_AS_NEEDED)
648
649
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000650# checks for UNIX variants that set C preprocessor variables
Matthias Kloseaf30c5d2010-04-25 18:43:42 +0000651AC_USE_SYSTEM_EXTENSIONS
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000652
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000653# Check for unsupported systems
654case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000655atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000656 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
657 echo See README for details.
658 exit 1;;
659esac
660
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000661AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000662AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000663AC_ARG_WITH(suffix,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000664 AS_HELP_STRING([--with-suffix=.exe], [set executable suffix]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000665[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000666 case $withval in
667 no) EXEEXT=;;
668 yes) EXEEXT=.exe;;
669 *) EXEEXT=$withval;;
670 esac])
671AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000672
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000673# Test whether we're running on a non-case-sensitive system, in which
674# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000675AC_SUBST(BUILDEXEEXT)
676AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000677if test ! -d CaseSensitiveTestDir; then
678mkdir CaseSensitiveTestDir
679fi
680
681if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000682then
Jack Jansen1999ef42001-12-06 21:47:20 +0000683 AC_MSG_RESULT(yes)
684 BUILDEXEEXT=.exe
685else
686 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000687 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000688fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000689rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000690
Guido van Rossumdd997f71998-10-07 19:58:26 +0000691case $MACHDEP in
692bsdos*)
693 case $CC in
694 gcc) CC="$CC -D_HAVE_BSDI";;
695 esac;;
696esac
697
Guido van Rossum84561611997-08-21 00:08:11 +0000698case $ac_sys_system in
699hp*|HP*)
700 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000701 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000702 esac;;
703esac
704
Martin v. Löwise8964d42001-03-06 12:09:07 +0000705
Neil Schemenauer61c51152001-01-26 16:18:16 +0000706AC_SUBST(LIBRARY)
707AC_MSG_CHECKING(LIBRARY)
708if test -z "$LIBRARY"
709then
Barry Warsawf040d7d2010-10-18 17:09:07 +0000710 LIBRARY='libpython$(VERSION)$(ABIFLAGS).a'
Neil Schemenauer61c51152001-01-26 16:18:16 +0000711fi
712AC_MSG_RESULT($LIBRARY)
713
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000714# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000715# name of the library into which to insert object files). BLDLIBRARY is also
716# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
717# is blank as the main program is not linked directly against LDLIBRARY.
718# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
719# systems without shared libraries, LDLIBRARY is the same as LIBRARY
720# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
721# DLLLIBRARY is the shared (i.e., DLL) library.
722#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000723# RUNSHARED is used to run shared python without installed libraries
724#
725# INSTSONAME is the name of the shared library that will be use to install
726# on the system - some systems like version suffix, others don't
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000727#
728# LDVERSION is the shared library version number, normally the Python version
729# with the ABI build flags appended.
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000730AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000731AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000732AC_SUBST(BLDLIBRARY)
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000733AC_SUBST(PY3LIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000734AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000735AC_SUBST(INSTSONAME)
736AC_SUBST(RUNSHARED)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000737AC_SUBST(LDVERSION)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000738LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000739BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000740INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000741DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000742LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000743RUNSHARED=''
Barry Warsaw14d98ac2010-11-24 19:43:47 +0000744LDVERSION="$VERSION"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000745
Guido van Rossumfb842551997-08-06 23:42:07 +0000746# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000747# If CXX is set, and if it is needed to link a main function that was
748# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
749# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000750# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000751# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000752AC_SUBST(LINKCC)
753AC_MSG_CHECKING(LINKCC)
754if test -z "$LINKCC"
755then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000756 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000757 case $ac_sys_system in
758 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000759 exp_extra="\"\""
760 if test $ac_sys_release -ge 5 -o \
761 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
762 exp_extra="."
763 fi
764 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000765 QNX*)
766 # qcc must be used because the other compilers do not
767 # support -N.
768 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000769 esac
770fi
771AC_MSG_RESULT($LINKCC)
772
Tarek Ziadébe720e02009-05-09 11:55:12 +0000773# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
774# make sure we default having it set to "no": this is used by
775# distutils.unixccompiler to know if it should add --enable-new-dtags
776# to linker command lines, and failing to detect GNU ld simply results
777# in the same bahaviour as before.
778AC_SUBST(GNULD)
779AC_MSG_CHECKING(for GNU ld)
780ac_prog=ld
781if test "$GCC" = yes; then
782 ac_prog=`$CC -print-prog-name=ld`
783fi
784case `"$ac_prog" -V 2>&1 < /dev/null` in
785 *GNU*)
786 GNULD=yes;;
787 *)
788 GNULD=no;;
789esac
790AC_MSG_RESULT($GNULD)
791
Daniel Stutzbacha606faa2010-08-31 19:51:07 +0000792AC_C_INLINE
793if test "$ac_cv_c_inline" != no ; then
Benjamin Petersond7f73e92010-09-05 00:09:07 +0000794 AC_DEFINE(USE_INLINE, 1, [Define to use the C99 inline keyword.])
Daniel Stutzbacha606faa2010-08-31 19:51:07 +0000795 AC_SUBST(USE_INLINE)
796fi
797
798
Martin v. Löwis1142de32002-03-29 16:28:31 +0000799AC_MSG_CHECKING(for --enable-shared)
800AC_ARG_ENABLE(shared,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000801 AS_HELP_STRING([--enable-shared], [disable/enable building shared python library]))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000802
Martin v. Löwis1142de32002-03-29 16:28:31 +0000803if test -z "$enable_shared"
804then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000805 case $ac_sys_system in
Antoine Pitrou6103ab12009-10-24 20:11:21 +0000806 CYGWIN*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000807 enable_shared="yes";;
808 *)
809 enable_shared="no";;
810 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000811fi
812AC_MSG_RESULT($enable_shared)
813
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000814AC_MSG_CHECKING(for --enable-profiling)
815AC_ARG_ENABLE(profiling,
doko@ubuntu.comba015832012-06-30 16:52:05 +0200816 AS_HELP_STRING([--enable-profiling], [enable C-level code profiling]))
817if test "x$enable_profiling" = xyes; then
818 ac_save_cc="$CC"
819 CC="$(CC) -pg"
820 AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])],
821 [],
822 [enable_profiling=no])
823 CC="$ac_save_cc"
824else
825 enable_profiling=no
826fi
827AC_MSG_RESULT($enable_profiling)
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000828
doko@ubuntu.comba015832012-06-30 16:52:05 +0200829if test "x$enable_profiling" = xyes; then
830 BASECFLAGS="-pg $BASECFLAGS"
831 LDFLAGS="-pg $LDFLAGS"
832fi
Martin v. Löwis1142de32002-03-29 16:28:31 +0000833
834AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000835
Guido van Rossumb8552162001-09-05 14:58:11 +0000836# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
837# library that we build, but we do not want to link against it (we
838# will find it with a -framework option). For this reason there is an
839# extra variable BLDLIBRARY against which Python and the extension
840# modules are linked, BLDLIBRARY. This is normally the same as
841# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000842if test "$enable_framework"
843then
844 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000845 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000846 BLDLIBRARY=''
847else
848 BLDLIBRARY='$(LDLIBRARY)'
849fi
850
Martin v. Löwis1142de32002-03-29 16:28:31 +0000851# Other platforms follow
852if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000853 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000854 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000855 CYGWIN*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000856 LDLIBRARY='libpython$(LDVERSION).dll.a'
857 DLLLIBRARY='libpython$(LDVERSION).dll'
Martin v. Löwis1142de32002-03-29 16:28:31 +0000858 ;;
859 SunOS*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000860 LDLIBRARY='libpython$(LDVERSION).so'
861 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(LDVERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000862 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000863 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis9b142aa2011-02-05 20:26:52 +0000864 if test "$with_pydebug" != yes
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000865 then
866 PY3LIBRARY=libpython3.so
867 fi
Martin v. Löwis1142de32002-03-29 16:28:31 +0000868 ;;
Charles-François Natali749400a2011-07-24 22:41:18 +0200869 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000870 LDLIBRARY='libpython$(LDVERSION).so'
871 BLDLIBRARY='-L. -lpython$(LDVERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000872 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000873 case $ac_sys_system in
874 FreeBSD*)
875 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
876 ;;
877 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000878 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis9b142aa2011-02-05 20:26:52 +0000879 if test "$with_pydebug" != yes
Martin v. Löwisd1fc34d2010-12-30 14:55:47 +0000880 then
881 PY3LIBRARY=libpython3.so
882 fi
Martin v. Löwis1142de32002-03-29 16:28:31 +0000883 ;;
884 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000885 case `uname -m` in
886 ia64)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000887 LDLIBRARY='libpython$(LDVERSION).so'
Thomas Wouters477c8d52006-05-27 19:21:47 +0000888 ;;
889 *)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000890 LDLIBRARY='libpython$(LDVERSION).sl'
Thomas Wouters477c8d52006-05-27 19:21:47 +0000891 ;;
892 esac
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000893 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(LDVERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000894 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000895 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000896 Darwin*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000897 LDLIBRARY='libpython$(LDVERSION).dylib'
898 BLDLIBRARY='-L. -lpython$(LDVERSION)'
Georg Brandlb1441c72009-01-03 22:33:39 +0000899 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
900 ;;
Antoine Pitrou8e6b4072010-09-10 19:44:44 +0000901 AIX*)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000902 LDLIBRARY='libpython$(LDVERSION).so'
Antoine Pitrou8e6b4072010-09-10 19:44:44 +0000903 RUNSHARED=LIBPATH=`pwd`:${LIBPATH}
904 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000905
Martin v. Löwis1142de32002-03-29 16:28:31 +0000906 esac
Jason Tishler30765592003-09-04 11:04:06 +0000907else # shared is disabled
908 case $ac_sys_system in
909 CYGWIN*)
910 BLDLIBRARY='$(LIBRARY)'
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000911 LDLIBRARY='libpython$(LDVERSION).dll.a'
Jason Tishler30765592003-09-04 11:04:06 +0000912 ;;
913 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000914fi
915
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000916AC_MSG_RESULT($LDLIBRARY)
917
Guido van Rossum627b2d71993-12-24 10:39:16 +0000918AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000919AC_SUBST(AR)
doko@ubuntu.com51f65942012-06-30 14:42:46 +0200920AC_CHECK_TOOLS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000921
Tarek Ziadé5662d3e2009-05-07 21:24:43 +0000922# tweak ARFLAGS only if the user didn't set it on the command line
923AC_SUBST(ARFLAGS)
924if test -z "$ARFLAGS"
925then
926 ARFLAGS="rc"
927fi
928
doko@ubuntu.com58844492012-06-30 18:25:32 +0200929AC_CHECK_TOOLS([READELF], [readelf], [:])
930if test "$cross_compiling" = yes; then
931 case "$READELF" in
932 readelf|:)
933 AC_MSG_ERROR([readelf for the host is required for cross builds])
934 ;;
935 esac
936fi
937AC_SUBST(READELF)
938
Ralf Schmitt023f3a72011-05-31 17:10:03 -0500939AC_SUBST(DISABLE_ASDLGEN)
940DISABLE_ASDLGEN=""
941AC_CHECK_PROG(HAS_PYTHON, python, found, not-found)
942if test $HAS_HG != found -o $HAS_PYTHON != found
943then
944 DISABLE_ASDLGEN="@echo hg: $HAS_HG, python: $HAS_PYTHON! cannot run \$(srcdir)/Parser/asdl_c.py #"
945fi
946
947
Neil Schemenauera42c8272001-03-31 00:01:55 +0000948case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000949bsdos*|hp*|HP*)
950 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000951 if test -z "$INSTALL"
952 then
953 INSTALL="${srcdir}/install-sh -c"
954 fi
955esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000956AC_PROG_INSTALL
Matthias Klose93a0ef12012-03-15 18:08:34 +0100957AC_PROG_MKDIR_P
Guido van Rossumb418f891996-07-30 18:06:02 +0000958
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000959# Not every filesystem supports hard links
960AC_SUBST(LN)
961if test -z "$LN" ; then
962 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000963 CYGWIN*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000964 *) LN=ln;;
965 esac
966fi
967
Barry Warsaw35f3a2c2010-09-03 18:30:30 +0000968# For calculating the .so ABI tag.
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000969AC_SUBST(ABIFLAGS)
970ABIFLAGS=""
Barry Warsaw35f3a2c2010-09-03 18:30:30 +0000971
Fred Drake9f715822001-07-11 06:27:00 +0000972# Check for --with-pydebug
973AC_MSG_CHECKING(for --with-pydebug)
974AC_ARG_WITH(pydebug,
Matthias Klose2b8733f2010-04-25 18:34:36 +0000975 AS_HELP_STRING([--with-pydebug], [build with Py_DEBUG defined]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000976[
Fred Drake9f715822001-07-11 06:27:00 +0000977if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000978then
979 AC_DEFINE(Py_DEBUG, 1,
980 [Define if you want to build an interpreter with many run-time checks.])
981 AC_MSG_RESULT(yes);
982 Py_DEBUG='true'
Barry Warsaw8cf4eae2010-10-16 01:04:07 +0000983 ABIFLAGS="${ABIFLAGS}d"
Fred Drake9f715822001-07-11 06:27:00 +0000984else AC_MSG_RESULT(no); Py_DEBUG='false'
985fi],
986[AC_MSG_RESULT(no)])
987
Skip Montanarodecc6a42003-01-01 20:07:49 +0000988# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
989# merged with this chunk of code?
990
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000991# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000992# ------------------------
993# (The following bit of code is complicated enough - please keep things
994# indented properly. Just pretend you're editing Python code. ;-)
995
996# There are two parallel sets of case statements below, one that checks to
997# see if OPT was set and one that does BASECFLAGS setting based upon
998# compiler and platform. BASECFLAGS tweaks need to be made even if the
999# user set OPT.
1000
1001# tweak OPT based on compiler and platform, only if the user didn't set
1002# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +00001003AC_SUBST(OPT)
Benjamin Peterson65b4ec52010-03-23 21:02:34 +00001004if test "${OPT-unset}" = "unset"
Guido van Rossumb418f891996-07-30 18:06:02 +00001005then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001006 case $GCC in
1007 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001008 if test "$CC" != 'g++' ; then
1009 STRICT_PROTO="-Wstrict-prototypes"
1010 fi
Christian Heimes38053212007-12-14 01:24:44 +00001011 # For gcc 4.x we need to use -fwrapv so lets check if its supported
1012 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
1013 WRAP="-fwrapv"
1014 fi
Stefan Krah962055d2011-09-14 15:14:08 +02001015
1016 # Clang also needs -fwrapv
Stefan Krahaf04ff22011-12-08 22:20:31 +01001017 case $CC in
1018 *clang*) WRAP="-fwrapv"
1019 ;;
1020 esac
Stefan Krah962055d2011-09-14 15:14:08 +02001021
Skip Montanarodecc6a42003-01-01 20:07:49 +00001022 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001023 yes)
Fred Drake9f715822001-07-11 06:27:00 +00001024 if test "$Py_DEBUG" = 'true' ; then
1025 # Optimization messes up debuggers, so turn it off for
1026 # debug builds.
Mark Dickinsonb2153e92010-05-05 22:31:36 +00001027 OPT="-g -O0 -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +00001028 else
Christian Heimes38053212007-12-14 01:24:44 +00001029 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +00001030 fi
1031 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001032 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001033 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +00001034 ;;
Fred Drake9f715822001-07-11 06:27:00 +00001035 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001036 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001037 SCO_SV*) OPT="$OPT -m486 -DSCO5"
1038 ;;
1039 esac
Fred Drake9f715822001-07-11 06:27:00 +00001040 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001041
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001042 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +00001043 OPT="-O"
1044 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +00001045 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +00001046fi
Guido van Rossum627b2d71993-12-24 10:39:16 +00001047
Skip Montanarodecc6a42003-01-01 20:07:49 +00001048AC_SUBST(BASECFLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +00001049
1050# The -arch flags for universal builds on OSX
1051UNIVERSAL_ARCH_FLAGS=
1052AC_SUBST(UNIVERSAL_ARCH_FLAGS)
1053
Skip Montanarodecc6a42003-01-01 20:07:49 +00001054# tweak BASECFLAGS based on compiler and platform
1055case $GCC in
1056yes)
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001057 # Python doesn't violate C99 aliasing rules, but older versions of
1058 # GCC produce warnings for legal Python code. Enable
1059 # -fno-strict-aliasing on versions of GCC that support but produce
1060 # warnings. See Issue3326
1061 AC_MSG_CHECKING(whether $CC accepts and needs -fno-strict-aliasing)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001062 ac_save_cc="$CC"
1063 CC="$CC -fno-strict-aliasing"
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001064 save_CFLAGS="$CFLAGS"
1065 AC_CACHE_VAL(ac_cv_no_strict_aliasing,
Matthias Kloseb159a552010-04-25 21:00:44 +00001066 AC_COMPILE_IFELSE(
1067 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001068 AC_LANG_PROGRAM([[]], [[]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001069 ],[
1070 CC="$ac_save_cc -fstrict-aliasing"
1071 CFLAGS="$CFLAGS -Werror -Wstrict-aliasing"
1072 AC_COMPILE_IFELSE(
1073 [
Mark Dickinson8c2b6f12010-05-11 09:23:07 +00001074 AC_LANG_PROGRAM([[void f(int **x) {}]],
1075 [[double *x; f((int **) &x);]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001076 ],[
1077 ac_cv_no_strict_aliasing=no
1078 ],[
1079 ac_cv_no_strict_aliasing=yes
1080 ])
1081 ],[
1082 ac_cv_no_strict_aliasing=no
1083 ]))
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001084 CFLAGS="$save_CFLAGS"
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001085 CC="$ac_save_cc"
Benjamin Petersone6c9d242010-03-30 17:34:47 +00001086 AC_MSG_RESULT($ac_cv_no_strict_aliasing)
1087 if test $ac_cv_no_strict_aliasing = yes
Martin v. Löwis70fedcd2003-07-07 21:26:19 +00001088 then
1089 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
1090 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001091
Benjamin Peterson7ddbf102011-09-23 13:23:22 -04001092 AC_MSG_CHECKING(if we can turn off $CC unused result warning)
1093 ac_save_cc="$CC"
1094 CC="$CC -Wunused-result -Werror"
1095 save_CFLAGS="$CFLAGS"
1096 AC_CACHE_VAL(ac_cv_disable_unused_result_warning,
1097 AC_COMPILE_IFELSE(
1098 [
1099 AC_LANG_PROGRAM([[]], [[]])
1100 ],[
1101 ac_cv_disable_unused_result_warning=yes
1102 ],[
1103 ac_cv_disable_unused_result_warning=no
1104 ]))
1105 CFLAGS="$save_CFLAGS"
1106 CC="$ac_save_cc"
1107 AC_MSG_RESULT($ac_cv_disable_unused_result_warning)
1108
1109 if test $ac_cv_disable_unused_result_warning = yes
1110 then
1111 BASECFLAGS="$BASECFLAGS -Wno-unused-result"
1112 fi
1113
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001114 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
1115 # support. Without this, treatment of subnormals doesn't follow
1116 # the standard.
Matthias Klosedf2aecb2012-03-15 22:19:28 +01001117 case $host in
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +00001118 alpha*)
1119 BASECFLAGS="$BASECFLAGS -mieee"
1120 ;;
1121 esac
1122
Skip Montanarodecc6a42003-01-01 20:07:49 +00001123 case $ac_sys_system in
1124 SCO_SV*)
1125 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
1126 ;;
1127 # is there any other compiler on Darwin besides gcc?
1128 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +00001129 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
1130 # used to be here, but non-Apple gcc doesn't accept them.
Ronald Oussoren666028b2010-04-18 19:07:43 +00001131 if test "${CC}" = gcc
1132 then
1133 AC_MSG_CHECKING(which compiler should be used)
1134 case "${UNIVERSALSDK}" in
1135 */MacOSX10.4u.sdk)
1136 # Build using 10.4 SDK, force usage of gcc when the
1137 # compiler is gcc, otherwise the user will get very
1138 # confusing error messages when building on OSX 10.6
1139 CC=gcc-4.0
1140 CPP=cpp-4.0
1141 ;;
1142 esac
1143 AC_MSG_RESULT($CC)
1144 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001145
1146
Thomas Wouters477c8d52006-05-27 19:21:47 +00001147 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001148 UNIVERSAL_ARCH_FLAGS=""
1149 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
1150 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson6794aa32008-07-16 20:33:37 +00001151 ARCH_RUN_32BIT=""
Benjamin Peterson051858e2010-04-11 22:14:02 +00001152 LIPO_32BIT_FLAGS=""
Georg Brandlfcaf9102008-07-16 02:17:56 +00001153 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
1154 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +00001155 LIPO_32BIT_FLAGS=""
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001156 ARCH_RUN_32BIT="true"
Georg Brandlfcaf9102008-07-16 02:17:56 +00001157
1158 elif test "$UNIVERSAL_ARCHS" = "all" ; then
1159 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +00001160 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +00001161 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Georg Brandlfcaf9102008-07-16 02:17:56 +00001162
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001163 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
1164 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +00001165 LIPO_32BIT_FLAGS="-extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +00001166 ARCH_RUN_32BIT="/usr/bin/arch -i386"
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001167
1168 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
1169 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +00001170 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +00001171 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001172
Georg Brandlfcaf9102008-07-16 02:17:56 +00001173 else
Ronald Oussoren74f29b42009-09-20 20:09:26 +00001174 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Georg Brandlfcaf9102008-07-16 02:17:56 +00001175
1176 fi
1177
1178
Ronald Oussoren666028b2010-04-18 19:07:43 +00001179 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
1180 if test "${UNIVERSALSDK}" != "/"
1181 then
1182 CFLAGS="-isysroot ${UNIVERSALSDK} ${CFLAGS}"
1183 LDFLAGS="-isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren712979d2010-04-20 19:51:33 +00001184 CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001185 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00001186 fi
1187
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001188 # Calculate the right deployment target for this build.
1189 #
1190 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Ned Deily3784ff92012-06-25 05:04:28 -07001191 if test ${cur_target} '>' 10.2 && \
1192 test ${cur_target} '<' 10.6
1193 then
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001194 cur_target=10.3
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001195 if test ${enable_universalsdk}; then
1196 if test "${UNIVERSAL_ARCHS}" = "all"; then
1197 # Ensure that the default platform for a
1198 # 4-way universal build is OSX 10.5,
1199 # that's the first OS release where
1200 # 4-way builds make sense.
1201 cur_target='10.5'
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001202
1203 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
1204 cur_target='10.5'
1205
1206 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
1207 cur_target='10.5'
1208
1209 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
1210 cur_target='10.5'
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001211 fi
1212 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001213 if test `/usr/bin/arch` = "i386"; then
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001214 # On Intel macs default to a deployment
1215 # target of 10.4, that's the first OSX
1216 # release with Intel support.
1217 cur_target="10.4"
1218 fi
1219 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001220 fi
1221 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1222
1223 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1224 # environment with a value that is the same as what we'll use
1225 # in the Makefile to ensure that we'll get the same compiler
1226 # environment during configure and build time.
1227 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1228 export MACOSX_DEPLOYMENT_TARGET
1229 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1230
Skip Montanarodecc6a42003-01-01 20:07:49 +00001231 ;;
1232 esac
1233 ;;
1234
1235*)
1236 case $ac_sys_system in
1237 OpenUNIX*|UnixWare*)
1238 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1239 ;;
1240 SCO_SV*)
1241 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1242 ;;
1243 esac
1244 ;;
1245esac
1246
Fred Drakee1ceaa02001-12-04 20:55:47 +00001247if test "$Py_DEBUG" = 'true'; then
1248 :
1249else
1250 OPT="-DNDEBUG $OPT"
1251fi
1252
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001253if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001254then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001255 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001256fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001257
Thomas Wouters89f507f2006-12-13 04:49:30 +00001258# Check whether GCC supports PyArg_ParseTuple format
1259if test "$GCC" = "yes"
1260then
1261 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1262 save_CFLAGS=$CFLAGS
1263 CFLAGS="$CFLAGS -Werror"
Matthias Kloseb159a552010-04-25 21:00:44 +00001264 AC_COMPILE_IFELSE([
1265 AC_LANG_PROGRAM([[void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));]], [[]])
1266 ],[
1267 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1,
1268 [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1269 AC_MSG_RESULT(yes)
1270 ],[
1271 AC_MSG_RESULT(no)
1272 ])
Thomas Wouters89f507f2006-12-13 04:49:30 +00001273 CFLAGS=$save_CFLAGS
1274fi
1275
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001276# On some compilers, pthreads are available without further options
1277# (e.g. MacOS X). On some of these systems, the compiler will not
1278# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1279# So we have to see first whether pthreads are available without
1280# options before we can check whether -Kpthread improves anything.
1281AC_MSG_CHECKING(whether pthreads are available without options)
1282AC_CACHE_VAL(ac_cv_pthread_is_default,
Matthias Kloseb159a552010-04-25 21:00:44 +00001283[AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001284#include <pthread.h>
1285
1286void* routine(void* p){return NULL;}
1287
1288int main(){
1289 pthread_t p;
1290 if(pthread_create(&p,NULL,routine,NULL)!=0)
1291 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001292 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001293 return 0;
1294}
Matthias Kloseb159a552010-04-25 21:00:44 +00001295]])],[
Skip Montanarod8d39a02003-07-10 20:44:10 +00001296 ac_cv_pthread_is_default=yes
1297 ac_cv_kthread=no
1298 ac_cv_pthread=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001299],[ac_cv_pthread_is_default=no],[ac_cv_pthread_is_default=no])
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001300])
1301AC_MSG_RESULT($ac_cv_pthread_is_default)
1302
1303
1304if test $ac_cv_pthread_is_default = yes
1305then
1306 ac_cv_kpthread=no
1307else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001308# -Kpthread, if available, provides the right #defines
1309# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001310# Some compilers won't report that they do not support -Kpthread,
1311# so we need to run a program to see whether it really made the
1312# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001313AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1314AC_CACHE_VAL(ac_cv_kpthread,
1315[ac_save_cc="$CC"
1316CC="$CC -Kpthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001317AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001318#include <pthread.h>
1319
1320void* routine(void* p){return NULL;}
1321
1322int main(){
1323 pthread_t p;
1324 if(pthread_create(&p,NULL,routine,NULL)!=0)
1325 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001326 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001327 return 0;
1328}
Matthias Kloseb159a552010-04-25 21:00:44 +00001329]])],[ac_cv_kpthread=yes],[ac_cv_kpthread=no],[ac_cv_kpthread=no])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001330CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001331AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001332fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001333
Skip Montanarod8d39a02003-07-10 20:44:10 +00001334if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001335then
1336# -Kthread, if available, provides the right #defines
1337# and linker options to make pthread_create available
1338# Some compilers won't report that they do not support -Kthread,
1339# so we need to run a program to see whether it really made the
1340# function available.
1341AC_MSG_CHECKING(whether $CC accepts -Kthread)
1342AC_CACHE_VAL(ac_cv_kthread,
1343[ac_save_cc="$CC"
1344CC="$CC -Kthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001345AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001346#include <pthread.h>
1347
1348void* routine(void* p){return NULL;}
1349
1350int main(){
1351 pthread_t p;
1352 if(pthread_create(&p,NULL,routine,NULL)!=0)
1353 return 1;
1354 (void)pthread_detach(p);
1355 return 0;
1356}
Matthias Kloseb159a552010-04-25 21:00:44 +00001357]])],[ac_cv_kthread=yes],[ac_cv_kthread=no],[ac_cv_kthread=no])
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001358CC="$ac_save_cc"])
1359AC_MSG_RESULT($ac_cv_kthread)
1360fi
1361
Skip Montanarod8d39a02003-07-10 20:44:10 +00001362if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001363then
1364# -pthread, if available, provides the right #defines
1365# and linker options to make pthread_create available
1366# Some compilers won't report that they do not support -pthread,
1367# so we need to run a program to see whether it really made the
1368# function available.
1369AC_MSG_CHECKING(whether $CC accepts -pthread)
1370AC_CACHE_VAL(ac_cv_thread,
1371[ac_save_cc="$CC"
1372CC="$CC -pthread"
Matthias Kloseb159a552010-04-25 21:00:44 +00001373AC_RUN_IFELSE([AC_LANG_SOURCE([[
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001374#include <pthread.h>
1375
1376void* routine(void* p){return NULL;}
1377
1378int main(){
1379 pthread_t p;
1380 if(pthread_create(&p,NULL,routine,NULL)!=0)
1381 return 1;
1382 (void)pthread_detach(p);
1383 return 0;
1384}
Matthias Kloseb159a552010-04-25 21:00:44 +00001385]])],[ac_cv_pthread=yes],[ac_cv_pthread=no],[ac_cv_pthread=no])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001386CC="$ac_save_cc"])
1387AC_MSG_RESULT($ac_cv_pthread)
1388fi
1389
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001390# If we have set a CC compiler flag for thread support then
1391# check if it works for CXX, too.
1392ac_cv_cxx_thread=no
1393if test ! -z "$CXX"
1394then
1395AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1396ac_save_cxx="$CXX"
1397
1398if test "$ac_cv_kpthread" = "yes"
1399then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001400 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001401 ac_cv_cxx_thread=yes
1402elif test "$ac_cv_kthread" = "yes"
1403then
1404 CXX="$CXX -Kthread"
1405 ac_cv_cxx_thread=yes
1406elif test "$ac_cv_pthread" = "yes"
1407then
1408 CXX="$CXX -pthread"
1409 ac_cv_cxx_thread=yes
1410fi
1411
1412if test $ac_cv_cxx_thread = yes
1413then
1414 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1415 $CXX -c conftest.$ac_ext 2>&5
1416 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1417 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1418 then
1419 ac_cv_cxx_thread=yes
1420 else
1421 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001422 fi
1423 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001424fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001425AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001426fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001427CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001428
Fred Drakece81d592000-07-09 14:39:29 +00001429dnl # check for ANSI or K&R ("traditional") preprocessor
1430dnl AC_MSG_CHECKING(for C preprocessor type)
Matthias Kloseb159a552010-04-25 21:00:44 +00001431dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Fred Drakece81d592000-07-09 14:39:29 +00001432dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1433dnl int foo;
1434dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
Matthias Kloseb159a552010-04-25 21:00:44 +00001435dnl ]], [[;]])],[cpp_type=ansi],[AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional])
Fred Drakece81d592000-07-09 14:39:29 +00001436dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001437
Guido van Rossum627b2d71993-12-24 10:39:16 +00001438# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001439AC_HEADER_STDC
Benjamin Petersonb77fe172011-09-13 17:20:47 -04001440AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001441fcntl.h grp.h \
Jesus Cead8b9ae62011-11-14 19:07:41 +01001442ieeefp.h io.h langinfo.h libintl.h ncurses.h process.h pthread.h \
Benjamin Peterson94b580d2011-08-02 17:30:04 -05001443sched.h shadow.h signal.h stdint.h stropts.h termios.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001444unistd.h utime.h \
Jesus Cead8b9ae62011-11-14 19:07:41 +01001445poll.h sys/devpoll.h sys/epoll.h sys/poll.h \
Antoine Pitroubcf2b592012-02-08 23:28:36 +01001446sys/audioio.h sys/xattr.h sys/bsdtty.h sys/event.h sys/file.h sys/ioctl.h \
Martin v. Löwis9d6c6692012-02-03 17:44:58 +01001447sys/kern_control.h sys/loadavg.h sys/lock.h sys/mkdev.h sys/modem.h \
Jesus Cead8b9ae62011-11-14 19:07:41 +01001448sys/param.h sys/select.h sys/sendfile.h sys/socket.h sys/statvfs.h \
Martin v. Löwis9d6c6692012-02-03 17:44:58 +01001449sys/stat.h sys/syscall.h sys/sys_domain.h sys/termio.h sys/time.h \
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001450sys/times.h sys/types.h sys/uio.h sys/un.h sys/utsname.h sys/wait.h pty.h \
Gregory P. Smith3b1f2c32011-05-15 12:18:23 -07001451libutil.h sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Ronald Oussoren755740f2010-02-07 19:56:39 +00001452bluetooth/bluetooth.h linux/tipc.h spawn.h util.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001453AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001454AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001455
Gregory P. Smith3b1f2c32011-05-15 12:18:23 -07001456# On Darwin (OS X) net/if.h requires sys/socket.h to be imported first.
1457AC_CHECK_HEADERS([net/if.h], [], [],
1458[#include <stdio.h>
1459#ifdef STDC_HEADERS
1460# include <stdlib.h>
1461# include <stddef.h>
1462#else
1463# ifdef HAVE_STDLIB_H
1464# include <stdlib.h>
1465# endif
1466#endif
1467#ifdef HAVE_SYS_SOCKET_H
1468# include <sys/socket.h>
1469#endif
1470])
1471
1472
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001473# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001474AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001475#ifdef HAVE_CURSES_H
1476#include <curses.h>
1477#endif
1478])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001479
Martin v. Löwis11017b12006-01-14 18:12:57 +00001480# On Linux, netlink.h requires asm/types.h
1481AC_CHECK_HEADERS(linux/netlink.h,,,[
1482#ifdef HAVE_ASM_TYPES_H
1483#include <asm/types.h>
1484#endif
1485#ifdef HAVE_SYS_SOCKET_H
1486#include <sys/socket.h>
1487#endif
1488])
1489
Charles-François Natali47413c12011-10-06 19:47:44 +02001490# On Linux, can.h and can/raw.h require sys/socket.h
1491AC_CHECK_HEADERS(linux/can.h linux/can/raw.h,,,[
1492#ifdef HAVE_SYS_SOCKET_H
1493#include <sys/socket.h>
1494#endif
1495])
1496
Guido van Rossum627b2d71993-12-24 10:39:16 +00001497# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001498was_it_defined=no
1499AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001500AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1501 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1502])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001503AC_MSG_RESULT($was_it_defined)
1504
Neal Norwitz11690112002-07-30 01:08:28 +00001505AC_MSG_CHECKING(for makedev)
Jesus Cea740f53a2010-04-28 11:35:30 +00001506AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1507#if defined(MAJOR_IN_MKDEV)
1508#include <sys/mkdev.h>
1509#elif defined(MAJOR_IN_SYSMACROS)
1510#include <sys/sysmacros.h>
1511#else
1512#include <sys/types.h>
1513#endif
1514]], [[
1515 makedev(0, 0) ]])
Matthias Kloseb159a552010-04-25 21:00:44 +00001516],[ac_cv_has_makedev=yes],[ac_cv_has_makedev=no])
Neal Norwitz11690112002-07-30 01:08:28 +00001517AC_MSG_RESULT($ac_cv_has_makedev)
1518if test "$ac_cv_has_makedev" = "yes"; then
1519 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1520fi
1521
Martin v. Löwis399a6892002-10-04 10:22:02 +00001522# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1523# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1524# defined, but the compiler does not support pragma redefine_extname,
1525# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1526# structures (such as rlimit64) without declaring them. As a
1527# work-around, disable LFS on such configurations
1528
1529use_lfs=yes
1530AC_MSG_CHECKING(Solaris LFS bug)
Matthias Kloseb159a552010-04-25 21:00:44 +00001531AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis399a6892002-10-04 10:22:02 +00001532#define _LARGEFILE_SOURCE 1
1533#define _FILE_OFFSET_BITS 64
1534#include <sys/resource.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00001535]], [[struct rlimit foo;]])],[sol_lfs_bug=no],[sol_lfs_bug=yes])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001536AC_MSG_RESULT($sol_lfs_bug)
1537if test "$sol_lfs_bug" = "yes"; then
1538 use_lfs=no
1539fi
1540
1541if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001542# Two defines needed to enable largefile support on various platforms
1543# These may affect some typedefs
Georg Brandl216e4042011-02-19 08:58:23 +00001544case $ac_sys_system/$ac_sys_release in
1545AIX*)
1546 AC_DEFINE(_LARGE_FILES, 1,
1547 [This must be defined on AIX systems to enable large file support.])
1548 ;;
1549esac
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001550AC_DEFINE(_LARGEFILE_SOURCE, 1,
1551[This must be defined on some systems to enable large file support.])
1552AC_DEFINE(_FILE_OFFSET_BITS, 64,
1553[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001554fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001555
Guido van Rossum300fda71996-08-19 21:58:16 +00001556# Add some code to confdefs.h so that the test for off_t works on SCO
1557cat >> confdefs.h <<\EOF
1558#if defined(SCO_DS)
1559#undef _OFF_T
1560#endif
1561EOF
1562
Guido van Rossumef2255b2000-03-10 22:30:29 +00001563# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001564AC_TYPE_MODE_T
1565AC_TYPE_OFF_T
1566AC_TYPE_PID_T
Matthias Klosebada4c32010-04-25 21:18:48 +00001567AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[assume C89 semantics that RETSIGTYPE is always void])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001568AC_TYPE_SIZE_T
1569AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001570AC_TYPE_UINT32_T
1571AC_TYPE_UINT64_T
1572AC_TYPE_INT32_T
1573AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001574AC_CHECK_TYPE(ssize_t,
Matthias Klosec80c93f2010-04-24 17:04:35 +00001575 AC_DEFINE(HAVE_SSIZE_T, 1, [Define if your compiler provides ssize_t]),,)
Stefan Krah1919b7e2012-03-21 18:25:23 +01001576AC_CHECK_TYPE(__uint128_t,
1577 AC_DEFINE(HAVE_GCC_UINT128_T, 1, [Define if your compiler provides __uint128_t]),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001578
Guido van Rossumef2255b2000-03-10 22:30:29 +00001579# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001580# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001581AC_CHECK_SIZEOF(int, 4)
1582AC_CHECK_SIZEOF(long, 4)
1583AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001584AC_CHECK_SIZEOF(short, 2)
1585AC_CHECK_SIZEOF(float, 4)
1586AC_CHECK_SIZEOF(double, 8)
1587AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001588AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001589AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001590
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001591AC_MSG_CHECKING(for long long support)
1592have_long_long=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001593AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long long x; x = (long long)0;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001594 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1595 have_long_long=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001596],[])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001597AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001598if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001599AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001600fi
1601
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001602AC_MSG_CHECKING(for long double support)
1603have_long_double=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001604AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[long double x; x = (long double)0;]])],[
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001605 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1606 have_long_double=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001607],[])
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001608AC_MSG_RESULT($have_long_double)
1609if test "$have_long_double" = yes ; then
1610AC_CHECK_SIZEOF(long double, 16)
1611fi
1612
1613
Thomas Woutersb2137042007-02-01 18:02:27 +00001614AC_MSG_CHECKING(for _Bool support)
1615have_c99_bool=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001616AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[_Bool x; x = (_Bool)0;]])],[
Thomas Woutersb2137042007-02-01 18:02:27 +00001617 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1618 have_c99_bool=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00001619],[])
Thomas Woutersb2137042007-02-01 18:02:27 +00001620AC_MSG_RESULT($have_c99_bool)
1621if test "$have_c99_bool" = yes ; then
1622AC_CHECK_SIZEOF(_Bool, 1)
1623fi
1624
Thomas Wouters89f507f2006-12-13 04:49:30 +00001625AC_CHECK_TYPES(uintptr_t,
1626 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1627 [], [#ifdef HAVE_STDINT_H
1628 #include <stdint.h>
Antoine Pitrou1bf29b72010-10-10 08:10:16 +00001629 #endif
1630 #ifdef HAVE_INTTYPES_H
1631 #include <inttypes.h>
Thomas Wouters89f507f2006-12-13 04:49:30 +00001632 #endif])
1633
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001634AC_CHECK_SIZEOF(off_t, [], [
1635#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001636#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001637#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001638])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001639
1640AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson2df5d282009-12-31 21:22:50 +00001641if test "$have_long_long" = yes
1642then
1643if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001644 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001645 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1646 [Defined to enable large file support when an off_t is bigger than a long
1647 and long long is available and at least as big as an off_t. You may need
1648 to add some flags for configuration and compilation to enable this mode.
1649 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001650 AC_MSG_RESULT(yes)
1651else
1652 AC_MSG_RESULT(no)
1653fi
Mark Dickinson2df5d282009-12-31 21:22:50 +00001654else
1655 AC_MSG_RESULT(no)
1656fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001657
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001658AC_CHECK_SIZEOF(time_t, [], [
1659#ifdef HAVE_SYS_TYPES_H
1660#include <sys/types.h>
1661#endif
1662#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00001663#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001664#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001665])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001666
Trent Mick635f6fb2000-08-23 21:33:05 +00001667# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001668ac_save_cc="$CC"
1669if test "$ac_cv_kpthread" = "yes"
1670then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001671elif test "$ac_cv_kthread" = "yes"
1672then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001673elif test "$ac_cv_pthread" = "yes"
1674then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001675fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001676
Trent Mick635f6fb2000-08-23 21:33:05 +00001677AC_MSG_CHECKING(for pthread_t)
1678have_pthread_t=no
Matthias Kloseb159a552010-04-25 21:00:44 +00001679AC_COMPILE_IFELSE([
1680 AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t x; x = *(pthread_t*)0;]])
1681],[have_pthread_t=yes],[])
Trent Mick635f6fb2000-08-23 21:33:05 +00001682AC_MSG_RESULT($have_pthread_t)
1683if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001684 AC_CHECK_SIZEOF(pthread_t, [], [
1685#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001686#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001687#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001688 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001689fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001690CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001691
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001692AC_SUBST(OTHER_LIBTOOL_OPT)
1693case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001694 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001695 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1696 ;;
1697 Darwin/*)
1698 OTHER_LIBTOOL_OPT=""
1699 ;;
1700esac
1701
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001702
1703ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001704AC_SUBST(LIBTOOL_CRUFT)
1705case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001706 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001707 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1708 if test "${enable_universalsdk}"; then
1709 :
1710 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001711 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001712 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001713 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001714 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001715 Darwin/*)
Ronald Oussoren9812a6c2010-02-07 11:53:18 +00001716 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001717 if test ${gcc_version} '<' 4.0
1718 then
1719 LIBTOOL_CRUFT="-lcc_dynamic"
1720 else
1721 LIBTOOL_CRUFT=""
1722 fi
Matthias Kloseb159a552010-04-25 21:00:44 +00001723 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001724 #include <unistd.h>
1725 int main(int argc, char*argv[])
1726 {
1727 if (sizeof(long) == 4) {
1728 return 0;
1729 } else {
1730 return 1;
1731 }
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001732 }
Matthias Kloseb159a552010-04-25 21:00:44 +00001733 ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=yes])
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001734
1735 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001736 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001737 i386)
1738 MACOSX_DEFAULT_ARCH="i386"
1739 ;;
1740 ppc)
1741 MACOSX_DEFAULT_ARCH="ppc"
1742 ;;
1743 *)
1744 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1745 ;;
1746 esac
1747 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001748 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001749 i386)
1750 MACOSX_DEFAULT_ARCH="x86_64"
1751 ;;
1752 ppc)
1753 MACOSX_DEFAULT_ARCH="ppc64"
1754 ;;
1755 *)
1756 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1757 ;;
1758 esac
1759
1760 #ARCH_RUN_32BIT="true"
1761 fi
1762
1763 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001764 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001765 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001766esac
1767
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001768AC_MSG_CHECKING(for --enable-framework)
1769if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001770then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001771 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001772 # -F. is needed to allow linking to the framework while
1773 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001774 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1775 [Define if you want to produce an OpenStep/Rhapsody framework
1776 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001777 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001778 if test $enable_shared = "yes"
1779 then
1780 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1781 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001782else
1783 AC_MSG_RESULT(no)
1784fi
1785
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001786AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001787case $ac_sys_system/$ac_sys_release in
1788 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001789 AC_DEFINE(WITH_DYLD, 1,
1790 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1791 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1792 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001793 AC_MSG_RESULT(always on for Darwin)
1794 ;;
1795 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001796 AC_MSG_RESULT(no)
1797 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001798esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001799
Guido van Rossumac405f61994-09-12 10:56:06 +00001800# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001801AC_SUBST(SO)
1802AC_SUBST(LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001803AC_SUBST(LDCXXSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001804AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001805AC_SUBST(CCSHARED)
1806AC_SUBST(LINKFORSHARED)
Georg Brandlb1441c72009-01-03 22:33:39 +00001807
Thomas Wouters477c8d52006-05-27 19:21:47 +00001808AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001809# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001810# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001811# (Shared libraries in this instance are shared modules to be loaded into
1812# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001813AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001814if test -z "$LDSHARED"
1815then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001816 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001817 AIX*)
Georg Brandl9a829be2011-02-15 15:44:51 +00001818 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:\$(srcdir)/Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001819 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001820 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001821 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001822 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001823 SunOS/5*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001824 if test "$GCC" = "yes" ; then
1825 LDSHARED='$(CC) -shared'
1826 LDCXXSHARED='$(CXX) -shared'
1827 else
1828 LDSHARED='$(CC) -G'
1829 LDCXXSHARED='$(CXX) -G'
Greg Ward57c9a662000-05-26 12:22:54 +00001830 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001831 hp*|HP*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001832 if test "$GCC" = "yes" ; then
1833 LDSHARED='$(CC) -shared'
1834 LDCXXSHARED='$(CXX) -shared'
1835 else
1836 LDSHARED='ld -b'
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001837 fi ;;
Jack Jansen418c3b12001-11-14 10:59:57 +00001838 Darwin/1.3*)
Antoine Pitroud4958c22010-10-13 17:01:10 +00001839 LDSHARED='$(CC) -bundle'
1840 LDCXXSHARED='$(CXX) -bundle'
Jack Jansena3891ea2001-09-07 14:25:12 +00001841 if test "$enable_framework" ; then
1842 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001843 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1844 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001845 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001846 else
1847 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001848 LDSHARED="$LDSHARED -undefined suppress"
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001849 LDCXXSHARED="$LDCXXSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001850 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001851 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Antoine Pitroud4958c22010-10-13 17:01:10 +00001852 LDSHARED='$(CC) -bundle'
1853 LDCXXSHARED='$(CXX) -bundle'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001854 if test "$enable_framework" ; then
1855 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001856 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1857 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001858 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001859 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001860 # No framework, use the Python app as bundle-loader
1861 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001862 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001863 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001864 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001865 Darwin/*)
1866 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1867 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001868
Georg Brandlfcaf9102008-07-16 02:17:56 +00001869 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001870 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001871 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001872 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001873 fi
Antoine Pitroud4958c22010-10-13 17:01:10 +00001874 LDSHARED='$(CC) -bundle -undefined dynamic_lookup'
1875 LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup'
Jack Jansen6b08a402004-06-03 12:41:45 +00001876 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001877 else
Antoine Pitroud4958c22010-10-13 17:01:10 +00001878 LDSHARED='$(CC) -bundle'
1879 LDCXXSHARED='$(CXX) -bundle'
Jack Jansen6b08a402004-06-03 12:41:45 +00001880 if test "$enable_framework" ; then
1881 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001882 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1883 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001884 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001885 else
1886 # No framework, use the Python app as bundle-loader
1887 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1888 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001889 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001890 fi
1891 fi
1892 ;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001893 Linux*|GNU*|QNX*)
1894 LDSHARED='$(CC) -shared'
1895 LDCXXSHARED='$(CXX) -shared';;
1896 BSD/OS*/4*)
1897 LDSHARED="gcc -shared"
1898 LDCXXSHARED="g++ -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001899 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001900 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001901 then
Antoine Pitroud4958c22010-10-13 17:01:10 +00001902 LDSHARED='$(CC) -shared'
1903 LDCXXSHARED='$(CXX) -shared'
Guido van Rossum0286ae82000-08-29 15:06:49 +00001904 else
Antoine Pitroud4958c22010-10-13 17:01:10 +00001905 LDSHARED="ld -Bshareable"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001906 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001907 OpenBSD*)
1908 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1909 then
Antoine Pitroud4958c22010-10-13 17:01:10 +00001910 LDSHARED='$(CC) -shared $(CCSHARED)'
1911 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001912 else
1913 case `uname -r` in
1914 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1915 LDSHARED="ld -Bshareable ${LDFLAGS}"
1916 ;;
1917 *)
Antoine Pitroud4958c22010-10-13 17:01:10 +00001918 LDSHARED='$(CC) -shared $(CCSHARED)'
1919 LDCXXSHARED='$(CXX) -shared $(CCSHARED)'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001920 ;;
1921 esac
1922 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001923 NetBSD*|DragonFly*)
Antoine Pitrouece919e2011-01-02 20:45:21 +00001924 LDSHARED='$(CC) -shared'
1925 LDCXXSHARED='$(CXX) -shared';;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001926 OpenUNIX*|UnixWare*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001927 if test "$GCC" = "yes" ; then
1928 LDSHARED='$(CC) -shared'
1929 LDCXXSHARED='$(CXX) -shared'
1930 else
1931 LDSHARED='$(CC) -G'
1932 LDCXXSHARED='$(CXX) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001933 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001934 SCO_SV*)
1935 LDSHARED='$(CC) -Wl,-G,-Bexport'
1936 LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
1937 CYGWIN*)
1938 LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
1939 LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001940 *) LDSHARED="ld";;
1941 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001942fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001943AC_MSG_RESULT($LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001944LDCXXSHARED=${LDCXXSHARED-$LDSHARED}
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001945BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001946# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001947# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001948AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001949if test -z "$CCSHARED"
1950then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001951 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001952 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001953 then CCSHARED="-fPIC";
1954 elif test `uname -p` = sparc;
1955 then CCSHARED="-xcode=pic32";
1956 else CCSHARED="-Kpic";
1957 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001958 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001959 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001960 else CCSHARED="+z";
1961 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001962 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001963 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001964 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001965 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001966 if test "$GCC" = "yes"
1967 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001968 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001969 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001970 SCO_SV*)
1971 if test "$GCC" = "yes"
1972 then CCSHARED="-fPIC"
1973 else CCSHARED="-Kpic -belf"
1974 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001975 IRIX*/6*) case $CC in
1976 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001977 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001978 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001979 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001980fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001981AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001982# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001983# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001984AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001985if test -z "$LINKFORSHARED"
1986then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001987 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001988 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001989 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001990 LINKFORSHARED="-Wl,-E -Wl,+s";;
1991# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001992 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001993 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001994 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001995 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00001996 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001997 if test "$enable_framework"
1998 then
Jack Jansenda49e192005-01-07 13:08:22 +00001999 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002000 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00002001 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00002002 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00002003 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00002004 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00002005 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00002006 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
2007 then
2008 LINKFORSHARED="-Wl,--export-dynamic"
2009 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002010 SunOS/5*) case $CC in
2011 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00002012 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00002013 then
2014 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00002015 fi;;
2016 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00002017 CYGWIN*)
2018 if test $enable_shared = "no"
2019 then
2020 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
2021 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00002022 QNX*)
2023 # -Wl,-E causes the symbols to be added to the dynamic
2024 # symbol table so that they can be found when a module
2025 # is loaded. -N 2048K causes the stack size to be set
2026 # to 2048 kilobytes so that the stack doesn't overflow
2027 # when running test_compile.py.
2028 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00002029 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00002030fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002031AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00002032
Georg Brandl93de2162008-07-16 02:21:06 +00002033
Neil Schemenauer61c51152001-01-26 16:18:16 +00002034AC_SUBST(CFLAGSFORSHARED)
2035AC_MSG_CHECKING(CFLAGSFORSHARED)
2036if test ! "$LIBRARY" = "$LDLIBRARY"
2037then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00002038 case $ac_sys_system in
2039 CYGWIN*)
2040 # Cygwin needs CCSHARED when building extension DLLs
2041 # but not when building the interpreter DLL.
2042 CFLAGSFORSHARED='';;
2043 *)
2044 CFLAGSFORSHARED='$(CCSHARED)'
2045 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00002046fi
2047AC_MSG_RESULT($CFLAGSFORSHARED)
2048
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002049# SHLIBS are libraries (except -lc and -lm) to link to the python shared
2050# library (with --enable-shared).
2051# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00002052# symbols, this must be set to $(LIBS) (expanded by make). We do this even
2053# if it is not required, since it creates a dependency of the shared library
2054# to LIBS. This, in turn, means that applications linking the shared libpython
2055# don't need to link LIBS explicitly. The default should be only changed
2056# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002057AC_SUBST(SHLIBS)
2058AC_MSG_CHECKING(SHLIBS)
2059case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002060 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00002061 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002062esac
2063AC_MSG_RESULT($SHLIBS)
2064
2065
Guido van Rossum627b2d71993-12-24 10:39:16 +00002066# checks for libraries
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00002067AC_CHECK_LIB(sendfile, sendfile)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002068AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
2069AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00002070
Georg Brandleee31162008-12-07 15:15:22 +00002071# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00002072if test "$with_threads" = "yes" -o -z "$with_threads"; then
2073 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
2074 # posix4 on Solaris 2.6
2075 # pthread (first!) on Linux
2076fi
2077
Martin v. Löwis19d17342003-06-14 21:03:05 +00002078# check if we need libintl for locale functions
2079AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00002080 [AC_DEFINE(WITH_LIBINTL, 1,
2081 [Define to 1 if libintl is needed for locale functions.])
2082 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002083
2084# checks for system dependent C++ extensions support
2085case "$ac_sys_system" in
2086 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
Matthias Kloseb159a552010-04-25 21:00:44 +00002087 AC_LINK_IFELSE([
Georg Brandl59e87bd2011-02-15 19:48:59 +00002088 AC_LANG_PROGRAM([[#include <load.h>]],
Matthias Kloseb159a552010-04-25 21:00:44 +00002089 [[loadAndInit("", 0, "")]])
2090 ],[
2091 AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002092 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
2093 and you want support for AIX C++ shared extension modules.])
Matthias Kloseb159a552010-04-25 21:00:44 +00002094 AC_MSG_RESULT(yes)
2095 ],[
2096 AC_MSG_RESULT(no)
2097 ]);;
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002098 *) ;;
2099esac
2100
Guido van Rossum70c7f481998-03-26 18:44:10 +00002101# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002102AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002103AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00002104
Guido van Rossumc5a39031996-07-31 17:35:03 +00002105AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002106AC_ARG_WITH(libs,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002107 AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002108[
Guido van Rossumc5a39031996-07-31 17:35:03 +00002109AC_MSG_RESULT($withval)
2110LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002111],
2112[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002113
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00002114AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
2115
Benjamin Petersonb2d90462009-12-31 03:23:10 +00002116# Check for use of the system expat library
2117AC_MSG_CHECKING(for --with-system-expat)
2118AC_ARG_WITH(system_expat,
Benjamin Peterson79263252010-10-31 16:50:44 +00002119 AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library]),
2120 [],
2121 [with_system_expat="no"])
Benjamin Petersonb2d90462009-12-31 03:23:10 +00002122
2123AC_MSG_RESULT($with_system_expat)
2124
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002125# Check for use of the system libffi library
2126AC_MSG_CHECKING(for --with-system-ffi)
2127AC_ARG_WITH(system_ffi,
Benjamin Peterson79263252010-10-31 16:50:44 +00002128 AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]),
2129 [],
2130 [with_system_ffi="no"])
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002131
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00002132if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
Benjamin Petersond78735d2010-01-01 16:04:23 +00002133 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
2134else
2135 LIBFFI_INCLUDEDIR=""
2136fi
2137AC_SUBST(LIBFFI_INCLUDEDIR)
2138
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002139AC_MSG_RESULT($with_system_ffi)
2140
Stefan Krah60187b52012-03-23 19:06:27 +01002141# Check for use of the system libmpdec library
2142AC_MSG_CHECKING(for --with-system-libmpdec)
2143AC_ARG_WITH(system_libmpdec,
2144 AS_HELP_STRING([--with-system-libmpdec], [build _decimal module using an installed libmpdec library]),
2145 [],
2146 [with_system_libmpdec="no"])
2147
2148AC_MSG_RESULT($with_system_libmpdec)
2149
Benjamin Peterson076ed002010-10-31 17:11:02 +00002150# Check for support for loadable sqlite extensions
2151AC_MSG_CHECKING(for --enable-loadable-sqlite-extensions)
2152AC_ARG_ENABLE(loadable-sqlite-extensions,
2153 AS_HELP_STRING([--enable-loadable-sqlite-extensions], [support loadable extensions in _sqlite module]),
2154 [],
2155 [enable_loadable_sqlite_extensions="no"])
2156
2157AC_MSG_RESULT($enable_loadable_sqlite_extensions)
2158
Matthias Klose55708cc2009-04-30 08:06:49 +00002159# Check for --with-dbmliborder
2160AC_MSG_CHECKING(for --with-dbmliborder)
2161AC_ARG_WITH(dbmliborder,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002162 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 +00002163[
2164if test x$with_dbmliborder = xyes
2165then
2166AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2167else
2168 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
2169 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
2170 then
2171 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
2172 fi
2173 done
2174fi])
2175AC_MSG_RESULT($with_dbmliborder)
2176
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002177# Determine if signalmodule should be used.
2178AC_SUBST(USE_SIGNAL_MODULE)
2179AC_SUBST(SIGNAL_OBJS)
2180AC_MSG_CHECKING(for --with-signal-module)
2181AC_ARG_WITH(signal-module,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002182 AS_HELP_STRING([--with-signal-module], [disable/enable signal module]))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002183
2184if test -z "$with_signal_module"
2185then with_signal_module="yes"
2186fi
2187AC_MSG_RESULT($with_signal_module)
2188
2189if test "${with_signal_module}" = "yes"; then
2190 USE_SIGNAL_MODULE=""
2191 SIGNAL_OBJS=""
2192else
2193 USE_SIGNAL_MODULE="#"
2194 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2195fi
2196
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002197# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002198AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002199USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002200
Guido van Rossum54d93d41997-01-22 20:51:58 +00002201AC_SUBST(LDLAST)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002202
Martin v. Löwis11437992002-04-12 09:54:03 +00002203# Templates for things AC_DEFINEd more than once.
2204# For a single AC_DEFINE, no template is needed.
Martin v. Löwis11437992002-04-12 09:54:03 +00002205AH_TEMPLATE(_REENTRANT,
2206 [Define to force use of thread-safe errno, h_errno, and other functions])
2207AH_TEMPLATE(WITH_THREAD,
2208 [Define if you want to compile in rudimentary thread support])
2209
Guido van Rossum54d93d41997-01-22 20:51:58 +00002210AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002211dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00002212AC_ARG_WITH(threads,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002213 AS_HELP_STRING([--with(out)-threads@<:@=DIRECTORY@:>@], [disable/enable thread support]))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002214
Barry Warsawc0d24d82000-06-29 16:12:00 +00002215# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002216dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002217AC_ARG_WITH(thread,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002218 AS_HELP_STRING([--with(out)-thread@<:@=DIRECTORY@:>@], [deprecated; use --with(out)-threads]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002219 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002220
2221if test -z "$with_threads"
2222then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002223fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00002224AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002225
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002226AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002227if test "$with_threads" = "no"
2228then
2229 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002230elif test "$ac_cv_pthread_is_default" = yes
2231then
2232 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002233 # Defining _REENTRANT on system with POSIX threads should not hurt.
2234 AC_DEFINE(_REENTRANT)
2235 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002236 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002237elif test "$ac_cv_kpthread" = "yes"
2238then
2239 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002240 if test "$ac_cv_cxx_thread" = "yes"; then
2241 CXX="$CXX -Kpthread"
2242 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002243 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002244 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002245 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002246elif test "$ac_cv_kthread" = "yes"
2247then
2248 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002249 if test "$ac_cv_cxx_thread" = "yes"; then
2250 CXX="$CXX -Kthread"
2251 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002252 AC_DEFINE(WITH_THREAD)
2253 posix_threads=yes
2254 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002255elif test "$ac_cv_pthread" = "yes"
2256then
2257 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002258 if test "$ac_cv_cxx_thread" = "yes"; then
2259 CXX="$CXX -pthread"
2260 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002261 AC_DEFINE(WITH_THREAD)
2262 posix_threads=yes
2263 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00002264else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002265 if test ! -z "$with_threads" -a -d "$with_threads"
2266 then LDFLAGS="$LDFLAGS -L$with_threads"
2267 fi
2268 if test ! -z "$withval" -a -d "$withval"
2269 then LDFLAGS="$LDFLAGS -L$withval"
2270 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002271
2272 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002273 # define _POSIX_THREADS in unistd.h. Some apparently don't
2274 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002275 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2276 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002277 [
2278#include <unistd.h>
2279#ifdef _POSIX_THREADS
2280yes
2281#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002282 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2283 AC_MSG_RESULT($unistd_defines_pthreads)
2284
Martin v. Löwis130fb172001-07-19 11:00:41 +00002285 AC_DEFINE(_REENTRANT)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002286 # Just looking for pthread_create in libpthread is not enough:
2287 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2288 # So we really have to include pthread.h, and then link.
2289 _libs=$LIBS
2290 LIBS="$LIBS -lpthread"
2291 AC_MSG_CHECKING([for pthread_create in -lpthread])
Matthias Kloseb159a552010-04-25 21:00:44 +00002292 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002293
Matthias Kloseb159a552010-04-25 21:00:44 +00002294void * start_routine (void *arg) { exit (0); }]], [[
2295pthread_create (NULL, NULL, start_routine, NULL)]])],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002296 AC_MSG_RESULT(yes)
2297 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002298 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002299 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002300 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002301 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002302 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002303 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002304 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002305 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002306 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002307 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002308 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002309 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002310 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002311 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002312 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002313 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002314 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002315 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002316 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002317 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002318 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002319 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002320 USE_THREAD_MODULE="#"])
Antoine Pitrou37009202011-07-08 23:47:50 +02002321 ])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002322
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002323 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2324 LIBS="$LIBS -lmpc"
2325 THREADOBJ="Python/thread.o"
2326 USE_THREAD_MODULE=""])
2327
2328 if test "$posix_threads" != "yes"; then
2329 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2330 LIBS="$LIBS -lthread"
2331 THREADOBJ="Python/thread.o"
2332 USE_THREAD_MODULE=""])
2333 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002334fi
2335
2336if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002337 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002338 AC_DEFINE(_POSIX_THREADS, 1,
2339 [Define if you have POSIX threads,
2340 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002341 fi
2342
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002343 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2344 case $ac_sys_system/$ac_sys_release in
Charles-François Natali996f6062011-07-21 19:45:31 +02002345 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002346 [Defined for Solaris 2.6 bug in pthread header.])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002347 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002348 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002349 [Define if the Posix semaphores do not work on your system])
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002350 ;;
Charles-François Natali996f6062011-07-21 19:45:31 +02002351 AIX/*) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Matthias Klosec80c93f2010-04-24 17:04:35 +00002352 [Define if the Posix semaphores do not work on your system])
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002353 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002354 esac
2355
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002356 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2357 AC_CACHE_VAL(ac_cv_pthread_system_supported,
Matthias Kloseb159a552010-04-25 21:00:44 +00002358 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <pthread.h>
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002359 void *foo(void *parm) {
2360 return NULL;
2361 }
2362 main() {
2363 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002364 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002365 if (pthread_attr_init(&attr)) exit(-1);
2366 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002367 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002368 exit(0);
Matthias Kloseb159a552010-04-25 21:00:44 +00002369 }]])],
2370 [ac_cv_pthread_system_supported=yes],
2371 [ac_cv_pthread_system_supported=no],
2372 [ac_cv_pthread_system_supported=no])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002373 ])
2374 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2375 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002376 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002377 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002378 AC_CHECK_FUNCS(pthread_sigmask,
2379 [case $ac_sys_system in
2380 CYGWIN*)
2381 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2382 [Define if pthread_sigmask() does not work on your system.])
2383 ;;
2384 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002385fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002386
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002387
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002388# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002389AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002390AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002391AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002392[ --enable-ipv6 Enable ipv6 (with ipv4) support
2393 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002394[ case "$enableval" in
2395 no)
2396 AC_MSG_RESULT(no)
2397 ipv6=no
2398 ;;
2399 *) AC_MSG_RESULT(yes)
2400 AC_DEFINE(ENABLE_IPV6)
2401 ipv6=yes
2402 ;;
2403 esac ],
2404
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002405[
2406dnl the check does not work on cross compilation case...
Matthias Kloseb159a552010-04-25 21:00:44 +00002407 AC_RUN_IFELSE([AC_LANG_SOURCE([[ /* AF_INET6 available check */
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002408#include <sys/types.h>
2409#include <sys/socket.h>
2410main()
2411{
2412 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2413 exit(1);
2414 else
2415 exit(0);
2416}
Matthias Kloseb159a552010-04-25 21:00:44 +00002417]])],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002418 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00002419 ipv6=yes
2420],[
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002421 AC_MSG_RESULT(no)
2422 ipv6=no
Matthias Kloseb159a552010-04-25 21:00:44 +00002423],[
2424 AC_MSG_RESULT(no)
2425 ipv6=no
2426])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002427
2428if test "$ipv6" = "yes"; then
2429 AC_MSG_CHECKING(if RFC2553 API is available)
Matthias Kloseb159a552010-04-25 21:00:44 +00002430 AC_COMPILE_IFELSE([
2431 AC_LANG_PROGRAM([[#include <sys/types.h>
2432#include <netinet/in.h>]],
2433 [[struct sockaddr_in6 x;
2434 x.sin6_scope_id;]])
2435 ],[
2436 AC_MSG_RESULT(yes)
2437 ipv6=yes
2438 ],[
2439 AC_MSG_RESULT(no, IPv6 disabled)
2440 ipv6=no
2441 ])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002442fi
2443
2444if test "$ipv6" = "yes"; then
2445 AC_DEFINE(ENABLE_IPV6)
2446fi
2447])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002448
2449ipv6type=unknown
2450ipv6lib=none
2451ipv6trylibc=no
2452
2453if test "$ipv6" = "yes"; then
2454 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002455 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2456 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002457 case $i in
2458 inria)
2459 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002460 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002461#include <netinet/in.h>
2462#ifdef IPV6_INRIA_VERSION
2463yes
2464#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002465 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002466 ;;
2467 kame)
2468 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002469 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002470#include <netinet/in.h>
2471#ifdef __KAME__
2472yes
2473#endif],
2474 [ipv6type=$i;
2475 ipv6lib=inet6
2476 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002477 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002478 ;;
2479 linux-glibc)
2480 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002481 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002482#include <features.h>
2483#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2484yes
2485#endif],
2486 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002487 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002488 ;;
2489 linux-inet6)
2490 dnl http://www.v6.linux.or.jp/
2491 if test -d /usr/inet6; then
2492 ipv6type=$i
2493 ipv6lib=inet6
2494 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002495 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002496 fi
2497 ;;
2498 solaris)
2499 if test -f /etc/netconfig; then
Antoine Pitrouf3fcd9f2011-01-03 18:53:50 +00002500 if $GREP -q tcp6 /etc/netconfig; then
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002501 ipv6type=$i
2502 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002503 fi
2504 fi
2505 ;;
2506 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002507 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002508#include <sys/param.h>
2509#ifdef _TOSHIBA_INET6
2510yes
2511#endif],
2512 [ipv6type=$i;
2513 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002514 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002515 ;;
2516 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002517 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002518#include </usr/local/v6/include/sys/v6config.h>
2519#ifdef __V6D__
2520yes
2521#endif],
2522 [ipv6type=$i;
2523 ipv6lib=v6;
2524 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002525 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002526 ;;
2527 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002528 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002529#include <sys/param.h>
2530#ifdef _ZETA_MINAMI_INET6
2531yes
2532#endif],
2533 [ipv6type=$i;
2534 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002535 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002536 ;;
2537 esac
2538 if test "$ipv6type" != "unknown"; then
2539 break
2540 fi
2541 done
2542 AC_MSG_RESULT($ipv6type)
2543fi
2544
2545if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2546 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2547 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2548 echo "using lib$ipv6lib"
2549 else
2550 if test $ipv6trylibc = "yes"; then
2551 echo "using libc"
2552 else
2553 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2554 echo "You need to fetch lib$ipv6lib.a from appropriate"
2555 echo 'ipv6 kit and compile beforehand.'
2556 exit 1
2557 fi
2558 fi
2559fi
2560
Georg Brandl93de2162008-07-16 02:21:06 +00002561AC_MSG_CHECKING(for OSX 10.5 SDK or later)
Matthias Kloseb159a552010-04-25 21:00:44 +00002562AC_COMPILE_IFELSE([
2563 AC_LANG_PROGRAM([[#include <Carbon/Carbon.h>]], [[FSIORefNum fRef = 0]])
2564],[
Matthias Klosec80c93f2010-04-24 17:04:35 +00002565 AC_DEFINE(HAVE_OSX105_SDK, 1, [Define if compiling using MacOS X 10.5 SDK or later.])
Matthias Kloseb159a552010-04-25 21:00:44 +00002566 AC_MSG_RESULT(yes)
2567],[
Georg Brandl93de2162008-07-16 02:21:06 +00002568 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00002569])
Georg Brandl93de2162008-07-16 02:21:06 +00002570
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002571# Check for --with-doc-strings
2572AC_MSG_CHECKING(for --with-doc-strings)
2573AC_ARG_WITH(doc-strings,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002574 AS_HELP_STRING([--with(out)-doc-strings], [disable/enable documentation strings]))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002575
2576if test -z "$with_doc_strings"
2577then with_doc_strings="yes"
2578fi
2579if test "$with_doc_strings" != "no"
2580then
2581 AC_DEFINE(WITH_DOC_STRINGS, 1,
2582 [Define if you want documentation strings in extension modules])
2583fi
2584AC_MSG_RESULT($with_doc_strings)
2585
Georg Brandl9976a512010-08-02 21:02:36 +00002586# Check if eval loop should use timestamp counter profiling
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002587AC_MSG_CHECKING(for --with-tsc)
2588AC_ARG_WITH(tsc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002589 AS_HELP_STRING([--with(out)-tsc],[enable/disable timestamp counter profile]),[
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002590if test "$withval" != no
2591then
2592 AC_DEFINE(WITH_TSC, 1,
2593 [Define to profile with the Pentium timestamp counter])
2594 AC_MSG_RESULT(yes)
2595else AC_MSG_RESULT(no)
2596fi],
2597[AC_MSG_RESULT(no)])
2598
2599# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002600AC_MSG_CHECKING(for --with-pymalloc)
2601AC_ARG_WITH(pymalloc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00002602 AS_HELP_STRING([--with(out)-pymalloc], [disable/enable specialized mallocs]))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002603
2604if test -z "$with_pymalloc"
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00002605then
2606 with_pymalloc="yes"
Neil Schemenauer16c22972002-03-22 15:34:49 +00002607fi
2608if test "$with_pymalloc" != "no"
2609then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002610 AC_DEFINE(WITH_PYMALLOC, 1,
2611 [Define if you want to compile in Python-specific mallocs])
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02002612 ABIFLAGS="${ABIFLAGS}m"
Neil Schemenauer16c22972002-03-22 15:34:49 +00002613fi
2614AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002615
Benjamin Peterson05159c42009-12-03 03:01:27 +00002616# Check for Valgrind support
2617AC_MSG_CHECKING([for --with-valgrind])
2618AC_ARG_WITH([valgrind],
Matthias Klose2b8733f2010-04-25 18:34:36 +00002619 AS_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
Benjamin Peterson05159c42009-12-03 03:01:27 +00002620 with_valgrind=no)
2621AC_MSG_RESULT([$with_valgrind])
2622if test "$with_valgrind" != no; then
2623 AC_CHECK_HEADER([valgrind/valgrind.h],
2624 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
2625 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
2626 )
Jeffrey Yasskin39370832010-05-03 19:29:34 +00002627 OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
Benjamin Peterson05159c42009-12-03 03:01:27 +00002628fi
2629
Guido van Rossum68242b51996-05-28 22:53:03 +00002630# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002631AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002632DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002633
Guido van Rossume97ee181999-12-20 21:27:22 +00002634# the dlopen() function means we might want to use dynload_shlib.o. some
2635# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002636AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002637
2638# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2639# loading of modules.
2640AC_SUBST(DYNLOADFILE)
2641AC_MSG_CHECKING(DYNLOADFILE)
2642if test -z "$DYNLOADFILE"
2643then
2644 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002645 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2646 if test "$ac_cv_func_dlopen" = yes
2647 then DYNLOADFILE="dynload_shlib.o"
2648 else DYNLOADFILE="dynload_aix.o"
2649 fi
2650 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002651 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002652 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2653 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002654 *)
2655 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2656 # out any dynamic loading
2657 if test "$ac_cv_func_dlopen" = yes
2658 then DYNLOADFILE="dynload_shlib.o"
2659 else DYNLOADFILE="dynload_stub.o"
2660 fi
2661 ;;
2662 esac
2663fi
2664AC_MSG_RESULT($DYNLOADFILE)
2665if test "$DYNLOADFILE" != "dynload_stub.o"
2666then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002667 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2668 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002669fi
2670
Jack Jansenc49e5b72001-06-19 15:00:23 +00002671# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2672
2673AC_SUBST(MACHDEP_OBJS)
2674AC_MSG_CHECKING(MACHDEP_OBJS)
2675if test -z "$MACHDEP_OBJS"
2676then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002677 MACHDEP_OBJS=$extra_machdep_objs
2678else
2679 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002680fi
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02002681if test -z "$MACHDEP_OBJS"; then
2682 AC_MSG_RESULT([none])
2683else
2684 AC_MSG_RESULT([$MACHDEP_OBJS])
2685fi
Jack Jansenc49e5b72001-06-19 15:00:23 +00002686
Guido van Rossum627b2d71993-12-24 10:39:16 +00002687# checks for library functions
Antoine Pitroub1c54962010-10-14 15:05:38 +00002688AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
Gregory P. Smith1577cf72012-01-21 18:21:56 -08002689 clock confstr ctermid execv faccessat fchmod fchmodat fchown fchownat \
Ross Lagerwall7807c352011-03-17 20:20:30 +02002690 fexecve fdopendir fork fpathconf fstatat ftime ftruncate futimesat \
Ross Lagerwallb0ae53d2011-06-10 07:30:30 +02002691 futimens futimes gai_strerror \
2692 getgrouplist getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002693 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Gregory P. Smith5ed2e772011-05-15 00:26:45 -07002694 if_nameindex \
Antoine Pitrouf0effe62011-11-26 01:11:02 +01002695 initgroups kill killpg lchmod lchown lockf linkat lstat lutimes mmap \
2696 memrchr mbrtowc mkdirat mkfifo \
Charles-François Natalidaafdd52011-05-29 20:07:40 +02002697 mkfifoat mknod mknodat mktime mremap nice openat pathconf pause pipe2 plock poll \
Ross Lagerwall7807c352011-03-17 20:20:30 +02002698 posix_fallocate posix_fadvise pread \
Victor Stinnerb3e72192011-05-08 01:46:11 +02002699 pthread_init pthread_kill putenv pwrite readlink readlinkat readv realpath renameat \
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00002700 select sem_open sem_timedwait sem_getvalue sem_unlink sendfile setegid seteuid \
Antoine Pitrou061cfb52011-02-28 22:25:22 +00002701 setgid sethostname \
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +00002702 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setpriority setuid setvbuf \
Charles-François Nataliea0d5fc2011-09-06 19:03:35 +02002703 sched_get_priority_max sched_setaffinity sched_setscheduler sched_setparam \
2704 sched_rr_get_interval \
Ross Lagerwallbc808222011-06-25 12:13:40 +02002705 sigaction sigaltstack siginterrupt sigpending sigrelse \
2706 sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002707 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Ross Lagerwall7807c352011-03-17 20:20:30 +02002708 truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
2709 wcscoll wcsftime wcsxfrm writev _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002710
Gregory P. Smithdf300d52012-01-21 18:20:15 -08002711AC_CHECK_DECL(dirfd,
2712 AC_DEFINE(HAVE_DIRFD, 1,
2713 Define if you have the 'dirfd' function or macro.), ,
2714 [#include <sys/types.h>
2715 #include <dirent.h>])
2716
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002717# For some functions, having a definition is not sufficient, since
2718# we want to take their address.
2719AC_MSG_CHECKING(for chroot)
Matthias Kloseb159a552010-04-25 21:00:44 +00002720AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=chroot]])],
2721 [AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2722 AC_MSG_RESULT(yes)],
2723 [AC_MSG_RESULT(no)
2724])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002725AC_MSG_CHECKING(for link)
Matthias Kloseb159a552010-04-25 21:00:44 +00002726AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=link]])],
2727 [AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2728 AC_MSG_RESULT(yes)],
2729 [AC_MSG_RESULT(no)
2730])
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002731AC_MSG_CHECKING(for symlink)
Matthias Kloseb159a552010-04-25 21:00:44 +00002732AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=symlink]])],
2733 [AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2734 AC_MSG_RESULT(yes)],
2735 [AC_MSG_RESULT(no)
2736])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002737AC_MSG_CHECKING(for fchdir)
Matthias Kloseb159a552010-04-25 21:00:44 +00002738AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fchdir]])],
2739 [AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2740 AC_MSG_RESULT(yes)],
2741 [AC_MSG_RESULT(no)
2742])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002743AC_MSG_CHECKING(for fsync)
Matthias Kloseb159a552010-04-25 21:00:44 +00002744AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fsync]])],
2745 [AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
2746 AC_MSG_RESULT(yes)],
2747 [AC_MSG_RESULT(no)
2748])
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002749AC_MSG_CHECKING(for fdatasync)
Matthias Kloseb159a552010-04-25 21:00:44 +00002750AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[void *x=fdatasync]])],
2751 [AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2752 AC_MSG_RESULT(yes)],
2753 [AC_MSG_RESULT(no)
2754])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002755AC_MSG_CHECKING(for epoll)
Matthias Kloseb159a552010-04-25 21:00:44 +00002756AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create]])],
2757 [AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2758 AC_MSG_RESULT(yes)],
2759 [AC_MSG_RESULT(no)
2760])
Benjamin Peterson95c16622011-12-27 15:36:32 -06002761AC_MSG_CHECKING(for epoll_create1)
2762AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/epoll.h>]], [[void *x=epoll_create1]])],
2763 [AC_DEFINE(HAVE_EPOLL_CREATE1, 1, Define if you have the 'epoll_create1' function.)
2764 AC_MSG_RESULT(yes)],
2765 [AC_MSG_RESULT(no)
2766])
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002767AC_MSG_CHECKING(for kqueue)
Matthias Kloseb159a552010-04-25 21:00:44 +00002768AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002769#include <sys/types.h>
2770#include <sys/event.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002771 ]], [[int x=kqueue()]])],
2772 [AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2773 AC_MSG_RESULT(yes)],
2774 [AC_MSG_RESULT(no)
2775])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002776# On some systems (eg. FreeBSD 5), we would find a definition of the
2777# functions ctermid_r, setgroups in the library, but no prototype
2778# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2779# address to avoid compiler warnings and potential miscompilations
2780# because of the missing prototypes.
2781
2782AC_MSG_CHECKING(for ctermid_r)
Matthias Kloseb159a552010-04-25 21:00:44 +00002783AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisd5843682002-11-21 20:41:28 +00002784#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002785]], [[void* p = ctermid_r]])],
2786 [AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2787 AC_MSG_RESULT(yes)],
2788 [AC_MSG_RESULT(no)
2789])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002790
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00002791AC_CACHE_CHECK([for flock declaration], [ac_cv_flock_decl],
2792 [AC_COMPILE_IFELSE(
2793 [AC_LANG_PROGRAM(
2794 [#include <sys/file.h>],
2795 [void* p = flock]
2796 )],
2797 [ac_cv_flock_decl=yes],
2798 [ac_cv_flock_decl=no]
2799 )
Matthias Kloseb159a552010-04-25 21:00:44 +00002800])
Antoine Pitroua4e4ae22010-09-10 18:39:00 +00002801if test "x${ac_cv_flock_decl}" = xyes; then
2802 AC_CHECK_FUNCS(flock,,
2803 AC_CHECK_LIB(bsd,flock,
2804 [AC_DEFINE(HAVE_FLOCK)
2805 AC_DEFINE(FLOCK_NEEDS_LIBBSD, 1, Define if flock needs to be linked with bsd library.)
2806 ])
2807 )
Antoine Pitroua3000072010-09-07 14:52:42 +00002808fi
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002809
2810AC_MSG_CHECKING(for getpagesize)
Matthias Kloseb159a552010-04-25 21:00:44 +00002811AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002812#include <unistd.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002813]], [[void* p = getpagesize]])],
2814 [AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2815 AC_MSG_RESULT(yes)],
2816 [AC_MSG_RESULT(no)
2817])
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002818
Victor Stinner984890f2011-11-24 13:53:38 +01002819AC_MSG_CHECKING(for broken unsetenv)
2820AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2821#include <stdlib.h>
2822]], [[int res = unsetenv("DUMMY")]])],
2823 [AC_MSG_RESULT(no)],
2824 [AC_DEFINE(HAVE_BROKEN_UNSETENV, 1, Define if `unsetenv` does not return an int.)
2825 AC_MSG_RESULT(yes)
2826])
2827
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002828dnl check for true
2829AC_CHECK_PROGS(TRUE, true, /bin/true)
2830
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002831dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2832dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002833AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002834 AC_CHECK_LIB(resolv, inet_aton)
2835)
2836
Christian Heimesd0764e22007-12-04 15:00:33 +00002837# On Tru64, chflags seems to be present, but calling it will
2838# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002839AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Ned Deily3eb67d52011-06-28 00:00:28 -07002840AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002841#include <sys/stat.h>
2842#include <unistd.h>
2843int main(int argc, char*argv[])
2844{
2845 if(chflags(argv[0], 0) != 0)
2846 return 1;
2847 return 0;
2848}
Ned Deily3eb67d52011-06-28 00:00:28 -07002849]])],
Matthias Kloseb159a552010-04-25 21:00:44 +00002850[ac_cv_have_chflags=yes],
2851[ac_cv_have_chflags=no],
2852[ac_cv_have_chflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002853])
2854if test "$ac_cv_have_chflags" = cross ; then
2855 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2856fi
2857if test "$ac_cv_have_chflags" = yes ; then
Ned Deily3eb67d52011-06-28 00:00:28 -07002858 AC_DEFINE(HAVE_CHFLAGS, 1, [Define to 1 if you have the 'chflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002859fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002860
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002861AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Ned Deily3eb67d52011-06-28 00:00:28 -07002862AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002863#include <sys/stat.h>
2864#include <unistd.h>
2865int main(int argc, char*argv[])
2866{
2867 if(lchflags(argv[0], 0) != 0)
2868 return 1;
2869 return 0;
2870}
Ned Deily3eb67d52011-06-28 00:00:28 -07002871]])],[ac_cv_have_lchflags=yes],[ac_cv_have_lchflags=no],[ac_cv_have_lchflags=cross])
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002872])
2873if test "$ac_cv_have_lchflags" = cross ; then
2874 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2875fi
2876if test "$ac_cv_have_lchflags" = yes ; then
Ned Deily3eb67d52011-06-28 00:00:28 -07002877 AC_DEFINE(HAVE_LCHFLAGS, 1, [Define to 1 if you have the 'lchflags' function.])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002878fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002879
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002880dnl Check if system zlib has *Copy() functions
2881dnl
2882dnl On MacOSX the linker will search for dylibs on the entire linker path
2883dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2884dnl to revert to a more traditional unix behaviour and make it possible to
2885dnl override the system libz with a local static library of libz. Temporarily
2886dnl add that flag to our CFLAGS as well to ensure that we check the version
2887dnl of libz that will be used by setup.py.
2888dnl The -L/usr/local/lib is needed as wel to get the same compilation
2889dnl environment as setup.py (and leaving it out can cause configure to use the
2890dnl wrong version of the library)
2891case $ac_sys_system/$ac_sys_release in
2892Darwin/*)
2893 _CUR_CFLAGS="${CFLAGS}"
2894 _CUR_LDFLAGS="${LDFLAGS}"
2895 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2896 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2897 ;;
2898esac
2899
Matthias Klosec80c93f2010-04-24 17:04:35 +00002900AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, [Define if the zlib library has inflateCopy]))
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002901
2902case $ac_sys_system/$ac_sys_release in
2903Darwin/*)
2904 CFLAGS="${_CUR_CFLAGS}"
2905 LDFLAGS="${_CUR_LDFLAGS}"
2906 ;;
2907esac
2908
Martin v. Löwise9416172003-05-03 10:12:45 +00002909AC_MSG_CHECKING(for hstrerror)
Matthias Kloseb159a552010-04-25 21:00:44 +00002910AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwise9416172003-05-03 10:12:45 +00002911#include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002912]], [[void* p = hstrerror; hstrerror(0)]])],
2913 [AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2914 AC_MSG_RESULT(yes)],
2915 [AC_MSG_RESULT(no)
2916])
Martin v. Löwise9416172003-05-03 10:12:45 +00002917
2918AC_MSG_CHECKING(for inet_aton)
Matthias Kloseb159a552010-04-25 21:00:44 +00002919AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis86d66262006-02-17 08:40:11 +00002920#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002921#include <sys/socket.h>
2922#include <netinet/in.h>
2923#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002924]], [[void* p = inet_aton;inet_aton(0,0)]])],
2925 [AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2926 AC_MSG_RESULT(yes)],
2927 [AC_MSG_RESULT(no)
2928])
Martin v. Löwise9416172003-05-03 10:12:45 +00002929
2930AC_MSG_CHECKING(for inet_pton)
Matthias Kloseb159a552010-04-25 21:00:44 +00002931AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002932#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002933#include <sys/socket.h>
2934#include <netinet/in.h>
2935#include <arpa/inet.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00002936]], [[void* p = inet_pton]])],
2937 [AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2938 AC_MSG_RESULT(yes)],
2939 [AC_MSG_RESULT(no)
2940])
Martin v. Löwise9416172003-05-03 10:12:45 +00002941
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002942# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002943AC_MSG_CHECKING(for setgroups)
Matthias Kloseb159a552010-04-25 21:00:44 +00002944AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002945#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002946#ifdef HAVE_GRP_H
2947#include <grp.h>
2948#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00002949]], [[void* p = setgroups]])],
2950 [AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2951 AC_MSG_RESULT(yes)],
2952 [AC_MSG_RESULT(no)
2953])
Martin v. Löwisd5843682002-11-21 20:41:28 +00002954
Fred Drake8cef4cf2000-06-28 16:40:38 +00002955# check for openpty and forkpty
2956
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002957AC_CHECK_FUNCS(openpty,,
2958 AC_CHECK_LIB(util,openpty,
2959 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2960 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2961 )
2962)
2963AC_CHECK_FUNCS(forkpty,,
2964 AC_CHECK_LIB(util,forkpty,
2965 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2966 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2967 )
2968)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002969
Christian Heimesb186d002008-03-18 15:15:01 +00002970# Stuff for expat.
2971AC_CHECK_FUNCS(memmove)
2972
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002973# check for long file support functions
2974AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2975
Christian Heimesb186d002008-03-18 15:15:01 +00002976AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002977AC_CHECK_FUNCS(getpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00002978 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[getpgrp(0);]])],
2979 [AC_DEFINE(GETPGRP_HAVE_ARG, 1, [Define if getpgrp() must be called as getpgrp(0).])],
2980 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002981)
Jack Jansen150753c2003-03-29 22:07:47 +00002982AC_CHECK_FUNCS(setpgrp,
Matthias Kloseb159a552010-04-25 21:00:44 +00002983 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[setpgrp(0,0);]])],
2984 [AC_DEFINE(SETPGRP_HAVE_ARG, 1, [Define if setpgrp() must be called as setpgrp(0, 0).])],
2985 [])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002986)
2987AC_CHECK_FUNCS(gettimeofday,
Matthias Kloseb159a552010-04-25 21:00:44 +00002988 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>]],
2989 [[gettimeofday((struct timeval*)0,(struct timezone*)0);]])],
2990 [],
2991 [AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2992 [Define if gettimeofday() does not have second (timezone) argument
2993 This is the case on Motorola V4 (R40V4.2)])
2994 ])
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002995)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002996
Victor Stinnere0be4232011-10-25 13:06:09 +02002997AC_CHECK_FUNCS(clock_gettime, [], [
2998 AC_CHECK_LIB(rt, clock_gettime, [
2999 AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
3000 AC_DEFINE(TIMEMODULE_LIB, [rt],
3001 [Library needed by timemodule.c: librt may be needed for clock_gettime()])
3002 ])
3003])
3004
3005AC_CHECK_FUNCS(clock_getres, [], [
3006 AC_CHECK_LIB(rt, clock_getres, [
3007 AC_DEFINE(HAVE_CLOCK_GETRES, 1)
3008 ])
3009])
3010
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003011AC_MSG_CHECKING(for major, minor, and makedev)
Matthias Kloseb159a552010-04-25 21:00:44 +00003012AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Neal Norwitz6eb37f02003-02-23 23:28:15 +00003013#if defined(MAJOR_IN_MKDEV)
3014#include <sys/mkdev.h>
3015#elif defined(MAJOR_IN_SYSMACROS)
3016#include <sys/sysmacros.h>
3017#else
3018#include <sys/types.h>
3019#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003020]], [[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003021 makedev(major(0),minor(0));
Matthias Kloseb159a552010-04-25 21:00:44 +00003022]])],[
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00003023 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
3024 [Define to 1 if you have the device macros.])
3025 AC_MSG_RESULT(yes)
3026],[
3027 AC_MSG_RESULT(no)
3028])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003029
3030# On OSF/1 V5.1, getaddrinfo is available, but a define
3031# for [no]getaddrinfo in netdb.h.
3032AC_MSG_CHECKING(for getaddrinfo)
Matthias Kloseb159a552010-04-25 21:00:44 +00003033AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00003034#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003035#include <sys/socket.h>
3036#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00003037#include <stdio.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003038]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])],
3039[have_getaddrinfo=yes],
3040[have_getaddrinfo=no])
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003041AC_MSG_RESULT($have_getaddrinfo)
3042if test $have_getaddrinfo = yes
3043then
3044 AC_MSG_CHECKING(getaddrinfo bug)
3045 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00003046 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003047#include <sys/types.h>
3048#include <netdb.h>
3049#include <string.h>
3050#include <sys/socket.h>
3051#include <netinet/in.h>
3052
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003053int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003054{
3055 int passive, gaierr, inet4 = 0, inet6 = 0;
3056 struct addrinfo hints, *ai, *aitop;
3057 char straddr[INET6_ADDRSTRLEN], strport[16];
3058
3059 for (passive = 0; passive <= 1; passive++) {
3060 memset(&hints, 0, sizeof(hints));
3061 hints.ai_family = AF_UNSPEC;
3062 hints.ai_flags = passive ? AI_PASSIVE : 0;
3063 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00003064 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003065 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
3066 (void)gai_strerror(gaierr);
3067 goto bad;
3068 }
3069 for (ai = aitop; ai; ai = ai->ai_next) {
3070 if (ai->ai_addr == NULL ||
3071 ai->ai_addrlen == 0 ||
3072 getnameinfo(ai->ai_addr, ai->ai_addrlen,
3073 straddr, sizeof(straddr), strport, sizeof(strport),
3074 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
3075 goto bad;
3076 }
3077 switch (ai->ai_family) {
3078 case AF_INET:
3079 if (strcmp(strport, "54321") != 0) {
3080 goto bad;
3081 }
3082 if (passive) {
3083 if (strcmp(straddr, "0.0.0.0") != 0) {
3084 goto bad;
3085 }
3086 } else {
3087 if (strcmp(straddr, "127.0.0.1") != 0) {
3088 goto bad;
3089 }
3090 }
3091 inet4++;
3092 break;
3093 case AF_INET6:
3094 if (strcmp(strport, "54321") != 0) {
3095 goto bad;
3096 }
3097 if (passive) {
3098 if (strcmp(straddr, "::") != 0) {
3099 goto bad;
3100 }
3101 } else {
3102 if (strcmp(straddr, "::1") != 0) {
3103 goto bad;
3104 }
3105 }
3106 inet6++;
3107 break;
3108 case AF_UNSPEC:
3109 goto bad;
3110 break;
3111 default:
3112 /* another family support? */
3113 break;
3114 }
3115 }
3116 }
3117
3118 if (!(inet4 == 0 || inet4 == 2))
3119 goto bad;
3120 if (!(inet6 == 0 || inet6 == 2))
3121 goto bad;
3122
3123 if (aitop)
3124 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003125 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003126
3127 bad:
3128 if (aitop)
3129 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003130 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003131}
Matthias Kloseb159a552010-04-25 21:00:44 +00003132]]])],
3133[ac_cv_buggy_getaddrinfo=no],
3134[ac_cv_buggy_getaddrinfo=yes],
Matthias Klose96350132012-03-15 20:42:23 +01003135[
3136if test "${enable_ipv6+set}" = set; then
3137 ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6"
3138else
3139 ac_cv_buggy_getaddrinfo=yes
3140fi]))
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003141fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003142
Benjamin Petersond4694ed2010-11-01 01:44:30 +00003143AC_MSG_RESULT($ac_cv_buggy_getaddrinfo)
3144
doko@ubuntu.com9c7817e2012-06-30 17:05:13 +02003145if test $have_getaddrinfo = no || test "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003146then
3147 if test $ipv6 = yes
3148 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003149 echo 'Fatal: You must get working getaddrinfo() function.'
3150 echo ' or you can specify "--disable-ipv6"'.
3151 exit 1
3152 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003153else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003154 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003155fi
Benjamin Petersond4694ed2010-11-01 01:44:30 +00003156
Thomas Woutersb0db85a2001-08-08 10:39:03 +00003157AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003158
Guido van Rossum627b2d71993-12-24 10:39:16 +00003159# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003160AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00003161AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003162AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00003163AC_CHECK_MEMBERS([struct stat.st_rdev])
3164AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00003165AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003166AC_CHECK_MEMBERS([struct stat.st_gen])
3167AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00003168AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003169
3170AC_MSG_CHECKING(for time.h that defines altzone)
Matthias Kloseb159a552010-04-25 21:00:44 +00003171AC_CACHE_VAL(ac_cv_header_time_altzone,[
3172 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[return altzone;]])],
3173 [ac_cv_header_time_altzone=yes],
3174 [ac_cv_header_time_altzone=no])
3175 ])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003176AC_MSG_RESULT($ac_cv_header_time_altzone)
3177if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003178 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003179fi
3180
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003181was_it_defined=no
3182AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Matthias Kloseb159a552010-04-25 21:00:44 +00003183AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003184#include <sys/types.h>
3185#include <sys/select.h>
3186#include <sys/time.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003187]], [[;]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003188 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
3189 [Define if you can safely include both <sys/select.h> and <sys/time.h>
3190 (which you can't on SCO ODT 3.0).])
3191 was_it_defined=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003192],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003193AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003194
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003195AC_MSG_CHECKING(for addrinfo)
3196AC_CACHE_VAL(ac_cv_struct_addrinfo,
Matthias Kloseb159a552010-04-25 21:00:44 +00003197AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[struct addrinfo a]])],
3198 [ac_cv_struct_addrinfo=yes],
3199 [ac_cv_struct_addrinfo=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003200AC_MSG_RESULT($ac_cv_struct_addrinfo)
3201if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003202 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003203fi
3204
3205AC_MSG_CHECKING(for sockaddr_storage)
3206AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
Matthias Kloseb159a552010-04-25 21:00:44 +00003207AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003208# include <sys/types.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003209# include <sys/socket.h>]], [[struct sockaddr_storage s]])],
3210 [ac_cv_struct_sockaddr_storage=yes],
3211 [ac_cv_struct_sockaddr_storage=no]))
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003212AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3213if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003214 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003215fi
3216
Guido van Rossum627b2d71993-12-24 10:39:16 +00003217# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003218
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003219AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003220AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003221
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003222works=no
3223AC_MSG_CHECKING(for working volatile)
Matthias Kloseb159a552010-04-25 21:00:44 +00003224AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[volatile int x; x = 0;]])],
3225 [works=yes],
3226 [AC_DEFINE(volatile, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003227)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003228AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003229
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003230works=no
3231AC_MSG_CHECKING(for working signed char)
Matthias Kloseb159a552010-04-25 21:00:44 +00003232AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char c;]])],
3233 [works=yes],
3234 [AC_DEFINE(signed, , [Define to empty if the keyword does not work.])]
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003235)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003236AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003237
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003238have_prototypes=no
3239AC_MSG_CHECKING(for prototypes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003240AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo(int x) { return 0; }]], [[return foo(10);]])],
3241 [AC_DEFINE(HAVE_PROTOTYPES, 1,
3242 [Define if your compiler supports function prototype])
3243 have_prototypes=yes],
3244 []
3245)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003246AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003247
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003248works=no
3249AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Matthias Kloseb159a552010-04-25 21:00:44 +00003250AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003251#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003252int foo(int x, ...) {
3253 va_list va;
3254 va_start(va, x);
3255 va_arg(va, int);
3256 va_arg(va, char *);
3257 va_arg(va, double);
3258 return 0;
3259}
Matthias Kloseb159a552010-04-25 21:00:44 +00003260]], [[return foo(10, "", 3.14);]])],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003261 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3262 [Define if your compiler supports variable length function prototypes
3263 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3264 works=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003265],[])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003266AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003267
Dave Cole331708b2004-08-09 04:51:41 +00003268# check for socketpair
3269AC_MSG_CHECKING(for socketpair)
Matthias Kloseb159a552010-04-25 21:00:44 +00003270AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Dave Cole331708b2004-08-09 04:51:41 +00003271#include <sys/types.h>
3272#include <sys/socket.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003273]], [[void *x=socketpair]])],
3274 [AC_DEFINE(HAVE_SOCKETPAIR, 1, [Define if you have the 'socketpair' function.])
3275 AC_MSG_RESULT(yes)],
3276 [AC_MSG_RESULT(no)]
Dave Cole331708b2004-08-09 04:51:41 +00003277)
3278
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003279# check if sockaddr has sa_len member
3280AC_MSG_CHECKING(if sockaddr has sa_len member)
Matthias Kloseb159a552010-04-25 21:00:44 +00003281AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
3282#include <sys/socket.h>]], [[struct sockaddr x;
3283x.sa_len = 0;]])],
3284 [AC_MSG_RESULT(yes)
3285 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member])],
3286 [AC_MSG_RESULT(no)]
3287)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003288
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003289va_list_is_array=no
3290AC_MSG_CHECKING(whether va_list is an array)
Matthias Kloseb159a552010-04-25 21:00:44 +00003291AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003292#ifdef HAVE_STDARG_PROTOTYPES
3293#include <stdarg.h>
3294#else
3295#include <varargs.h>
3296#endif
Matthias Kloseb159a552010-04-25 21:00:44 +00003297]], [[va_list list1, list2; list1 = list2;]])],[],[
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003298 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3299 va_list_is_array=yes
3300])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003301AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003302
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003303# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003304AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3305 [Define this if you have some version of gethostbyname_r()])
3306
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003307AC_CHECK_FUNC(gethostbyname_r, [
3308 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3309 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3310 OLD_CFLAGS=$CFLAGS
3311 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003312 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003313# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003314 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003315 char *name;
3316 struct hostent *he, *res;
3317 char buffer[2048];
3318 int buflen = 2048;
3319 int h_errnop;
3320
3321 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
Matthias Kloseb159a552010-04-25 21:00:44 +00003322 ]])],[
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003323 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003324 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3325 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003326 AC_MSG_RESULT(yes)
Matthias Kloseb159a552010-04-25 21:00:44 +00003327 ],[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003328 AC_MSG_RESULT(no)
3329 AC_MSG_CHECKING([gethostbyname_r with 5 args])
Matthias Kloseb159a552010-04-25 21:00:44 +00003330 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003331# include <netdb.h>
Matthias Kloseb159a552010-04-25 21:00:44 +00003332 ]], [[
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003333 char *name;
3334 struct hostent *he;
Matthias Kloseb159a552010-04-25 21:00:44 +00003335 char buffer[2048];
3336 int buflen = 2048;
3337 int h_errnop;
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003338
Matthias Kloseb159a552010-04-25 21:00:44 +00003339 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3340 ]])],
3341 [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003342 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Matthias Kloseb159a552010-04-25 21:00:44 +00003343 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3344 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003345 AC_MSG_RESULT(yes)
3346 ], [
3347 AC_MSG_RESULT(no)
Matthias Kloseb159a552010-04-25 21:00:44 +00003348 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3349 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
3350# include <netdb.h>
3351 ]], [[
3352 char *name;
3353 struct hostent *he;
3354 struct hostent_data data;
3355
3356 (void) gethostbyname_r(name, he, &data);
3357 ]])],
3358 [
3359 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3360 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3361 [Define this if you have the 3-arg version of gethostbyname_r().])
3362 AC_MSG_RESULT(yes)
3363 ], [
3364 AC_MSG_RESULT(no)
3365 ])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003366 ])
3367 ])
3368 CFLAGS=$OLD_CFLAGS
3369], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003370 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003371])
3372AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3373AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3374AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003375AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003376AC_SUBST(HAVE_GETHOSTBYNAME)
3377
Guido van Rossum627b2d71993-12-24 10:39:16 +00003378# checks for system services
3379# (none yet)
3380
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003381# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003382AC_CHECK_FUNC(__fpu_control,
3383 [],
3384 [AC_CHECK_LIB(ieee, __fpu_control)
3385])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003386
Guido van Rossum93274221997-05-09 02:42:00 +00003387# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003388AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00003389AC_ARG_WITH(fpectl,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003390 AS_HELP_STRING([--with-fpectl], [enable SIGFPE catching]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003391[
Guido van Rossum93274221997-05-09 02:42:00 +00003392if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003393then
3394 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3395 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3396 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003397else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003398fi],
3399[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003400
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003401# check for --with-libm=...
3402AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003403case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003404Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003405*) LIBM=-lm
3406esac
Guido van Rossum93274221997-05-09 02:42:00 +00003407AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003408AC_ARG_WITH(libm,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003409 AS_HELP_STRING([--with-libm=STRING], [math library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003410[
Guido van Rossum93274221997-05-09 02:42:00 +00003411if test "$withval" = no
3412then LIBM=
3413 AC_MSG_RESULT(force LIBM empty)
3414elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003415then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003416 AC_MSG_RESULT(set LIBM="$withval")
3417else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003418fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003419[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003420
3421# check for --with-libc=...
3422AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003423AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003424AC_ARG_WITH(libc,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003425 AS_HELP_STRING([--with-libc=STRING], [C library]),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003426[
Guido van Rossum93274221997-05-09 02:42:00 +00003427if test "$withval" = no
3428then LIBC=
3429 AC_MSG_RESULT(force LIBC empty)
3430elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003431then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003432 AC_MSG_RESULT(set LIBC="$withval")
3433else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003434fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003435[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003436
Stefan Krah1919b7e2012-03-21 18:25:23 +01003437# **************************************
3438# * Check for gcc x64 inline assembler *
3439# **************************************
3440
3441AC_MSG_CHECKING(for x64 gcc inline assembler)
3442AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
3443 __asm__ __volatile__ ("movq %rcx, %rax");
3444]])],[have_gcc_asm_for_x64=yes],[have_gcc_asm_for_x64=no])
3445AC_MSG_RESULT($have_gcc_asm_for_x64)
3446if test "$have_gcc_asm_for_x64" = yes
3447then
3448 AC_DEFINE(HAVE_GCC_ASM_FOR_X64, 1,
3449 [Define if we can use x64 gcc inline assembler])
3450fi
3451
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003452# **************************************************
3453# * Check for various properties of floating point *
3454# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003455
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003456AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3457AC_CACHE_VAL(ac_cv_little_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003458AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003459#include <string.h>
3460int main() {
3461 double x = 9006104071832581.0;
3462 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3463 return 0;
3464 else
3465 return 1;
3466}
Matthias Kloseb159a552010-04-25 21:00:44 +00003467]])],
3468[ac_cv_little_endian_double=yes],
3469[ac_cv_little_endian_double=no],
3470[ac_cv_little_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003471AC_MSG_RESULT($ac_cv_little_endian_double)
3472if test "$ac_cv_little_endian_double" = yes
3473then
3474 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3475 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3476 with the least significant byte first])
3477fi
3478
3479AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3480AC_CACHE_VAL(ac_cv_big_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003481AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003482#include <string.h>
3483int main() {
3484 double x = 9006104071832581.0;
3485 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3486 return 0;
3487 else
3488 return 1;
3489}
Matthias Kloseb159a552010-04-25 21:00:44 +00003490]])],
3491[ac_cv_big_endian_double=yes],
3492[ac_cv_big_endian_double=no],
3493[ac_cv_big_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003494AC_MSG_RESULT($ac_cv_big_endian_double)
3495if test "$ac_cv_big_endian_double" = yes
3496then
3497 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3498 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3499 with the most significant byte first])
3500fi
3501
3502# Some ARM platforms use a mixed-endian representation for doubles.
3503# While Python doesn't currently have full support for these platforms
3504# (see e.g., issue 1762561), we can at least make sure that float <-> string
3505# conversions work.
3506AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3507AC_CACHE_VAL(ac_cv_mixed_endian_double, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003508AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003509#include <string.h>
3510int main() {
3511 double x = 9006104071832581.0;
3512 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3513 return 0;
3514 else
3515 return 1;
3516}
Matthias Kloseb159a552010-04-25 21:00:44 +00003517]])],
3518[ac_cv_mixed_endian_double=yes],
3519[ac_cv_mixed_endian_double=no],
3520[ac_cv_mixed_endian_double=no])])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003521AC_MSG_RESULT($ac_cv_mixed_endian_double)
3522if test "$ac_cv_mixed_endian_double" = yes
3523then
3524 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3525 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3526 in ARM mixed-endian order (byte order 45670123)])
3527fi
3528
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003529# The short float repr introduced in Python 3.1 requires the
3530# correctly-rounded string <-> double conversion functions from
3531# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3532# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003533# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003534# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003535
3536# This inline assembler syntax may also work for suncc and icc,
3537# so we try it on all platforms.
3538
3539AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
Matthias Kloseb159a552010-04-25 21:00:44 +00003540AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003541 unsigned short cw;
3542 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3543 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
Matthias Kloseb159a552010-04-25 21:00:44 +00003544]])],[have_gcc_asm_for_x87=yes],[have_gcc_asm_for_x87=no])
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003545AC_MSG_RESULT($have_gcc_asm_for_x87)
3546if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003547then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003548 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3549 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003550fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003551
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003552# Detect whether system arithmetic is subject to x87-style double
3553# rounding issues. The result of this test has little meaning on non
3554# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3555# mode is round-to-nearest and double rounding issues are present, and
3556# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3557AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003558# $BASECFLAGS may affect the result
3559ac_save_cc="$CC"
3560CC="$CC $BASECFLAGS"
Matthias Kloseb159a552010-04-25 21:00:44 +00003561AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003562#include <stdlib.h>
3563#include <math.h>
3564int main() {
3565 volatile double x, y, z;
3566 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3567 x = 0.99999999999999989; /* 1-2**-53 */
3568 y = 1./x;
3569 if (y != 1.)
3570 exit(0);
3571 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3572 x = 1e16;
3573 y = 2.99999;
3574 z = x + y;
3575 if (z != 1e16+4.)
3576 exit(0);
3577 /* both tests show evidence of double rounding */
3578 exit(1);
3579}
Matthias Kloseb159a552010-04-25 21:00:44 +00003580]])],
3581[ac_cv_x87_double_rounding=no],
3582[ac_cv_x87_double_rounding=yes],
3583[ac_cv_x87_double_rounding=no])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003584CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003585AC_MSG_RESULT($ac_cv_x87_double_rounding)
3586if test "$ac_cv_x87_double_rounding" = yes
3587then
3588 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3589 [Define if arithmetic is subject to x87-style double rounding issue])
3590fi
3591
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003592# ************************************
3593# * Check for mathematical functions *
3594# ************************************
3595
3596LIBS_SAVE=$LIBS
3597LIBS="$LIBS $LIBM"
3598
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003599AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
Victor Stinner8f9f8d62011-05-09 12:45:41 +02003600AC_CHECK_FUNCS([hypot lgamma log1p log2 round tgamma])
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003601AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
3602
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003603# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3604# -0. on some architectures.
3605AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3606AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003607AC_RUN_IFELSE([AC_LANG_SOURCE([[
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003608#include <math.h>
3609#include <stdlib.h>
3610int main() {
3611 /* return 0 if either negative zeros don't exist
3612 on this platform or if negative zeros exist
3613 and tanh(-0.) == -0. */
3614 if (atan2(0., -1.) == atan2(-0., -1.) ||
3615 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3616 else exit(1);
3617}
Matthias Kloseb159a552010-04-25 21:00:44 +00003618]])],
3619[ac_cv_tanh_preserves_zero_sign=yes],
3620[ac_cv_tanh_preserves_zero_sign=no],
3621[ac_cv_tanh_preserves_zero_sign=no])])
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003622AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3623if test "$ac_cv_tanh_preserves_zero_sign" = yes
3624then
3625 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3626 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3627fi
3628
Mark Dickinson7edecdd2010-11-20 10:09:56 +00003629if test "$ac_cv_func_log1p" = yes
3630then
3631 # On some versions of AIX, log1p(-0.) returns 0. instead of
3632 # -0. See issue #9920.
3633 AC_MSG_CHECKING(whether log1p drops the sign of negative zero)
3634 AC_CACHE_VAL(ac_cv_log1p_drops_zero_sign, [
3635 AC_RUN_IFELSE([AC_LANG_SOURCE([[
3636 #include <math.h>
3637 #include <stdlib.h>
3638 int main() {
3639 /* Fail if the signs of log1p(-0.) and -0. can be
3640 distinguished. */
3641 if (atan2(log1p(-0.), -1.) == atan2(-0., -1.))
3642 return 0;
3643 else
3644 return 1;
3645 }
3646 ]])],
3647 [ac_cv_log1p_drops_zero_sign=no],
3648 [ac_cv_log1p_drops_zero_sign=yes],
3649 [ac_cv_log1p_drops_zero_sign=no])])
3650 AC_MSG_RESULT($ac_cv_log1p_drops_zero_sign)
3651fi
3652if test "$ac_cv_log1p_drops_zero_sign" = yes
3653then
3654 AC_DEFINE(LOG1P_DROPS_ZERO_SIGN, 1,
3655 [Define if log1p(-0.) is 0. rather than -0.])
3656fi
Christian Heimes99170a52007-12-19 02:07:34 +00003657
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003658LIBS=$LIBS_SAVE
3659
Mark Dickinsona614f042009-11-28 12:48:43 +00003660# For multiprocessing module, check that sem_open
3661# actually works. For FreeBSD versions <= 7.2,
3662# the kernel module that provides POSIX semaphores
3663# isn't loaded by default, so an attempt to call
3664# sem_open results in a 'Signal 12' error.
3665AC_MSG_CHECKING(whether POSIX semaphores are enabled)
3666AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
Matthias Kloseb159a552010-04-25 21:00:44 +00003667AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinsona614f042009-11-28 12:48:43 +00003668#include <unistd.h>
3669#include <fcntl.h>
3670#include <stdio.h>
3671#include <semaphore.h>
3672#include <sys/stat.h>
3673
3674int main(void) {
3675 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3676 if (a == SEM_FAILED) {
3677 perror("sem_open");
3678 return 1;
3679 }
3680 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003681 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00003682 return 0;
3683}
Matthias Kloseb159a552010-04-25 21:00:44 +00003684]])],
3685[ac_cv_posix_semaphores_enabled=yes],
3686[ac_cv_posix_semaphores_enabled=no],
3687[ac_cv_posix_semaphores_enabled=yes])
Mark Dickinsona614f042009-11-28 12:48:43 +00003688)
3689AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
3690if test $ac_cv_posix_semaphores_enabled = no
3691then
3692 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
3693 [Define if POSIX semaphores aren't enabled on your system])
3694fi
3695
Mark Dickinson10683072009-04-18 21:18:19 +00003696# Multiprocessing check for broken sem_getvalue
3697AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003698AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Matthias Kloseb159a552010-04-25 21:00:44 +00003699AC_RUN_IFELSE([AC_LANG_SOURCE([[
Mark Dickinson10683072009-04-18 21:18:19 +00003700#include <unistd.h>
3701#include <fcntl.h>
3702#include <stdio.h>
3703#include <semaphore.h>
3704#include <sys/stat.h>
3705
3706int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00003707 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00003708 int count;
3709 int res;
3710 if(a==SEM_FAILED){
3711 perror("sem_open");
3712 return 1;
3713
3714 }
3715 res = sem_getvalue(a, &count);
3716 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003717 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00003718 return res==-1 ? 1 : 0;
3719}
Matthias Kloseb159a552010-04-25 21:00:44 +00003720]])],
3721[ac_cv_broken_sem_getvalue=no],
3722[ac_cv_broken_sem_getvalue=yes],
3723[ac_cv_broken_sem_getvalue=yes])
Mark Dickinson10683072009-04-18 21:18:19 +00003724)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003725AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3726if test $ac_cv_broken_sem_getvalue = yes
3727then
3728 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3729 [define to 1 if your sem_getvalue is broken.])
3730fi
Mark Dickinson10683072009-04-18 21:18:19 +00003731
Mark Dickinsonbd792642009-03-18 20:06:12 +00003732# determine what size digit to use for Python's longs
3733AC_MSG_CHECKING([digit size for Python's longs])
3734AC_ARG_ENABLE(big-digits,
Matthias Klose2b8733f2010-04-25 18:34:36 +00003735AS_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
Mark Dickinsonbd792642009-03-18 20:06:12 +00003736[case $enable_big_digits in
3737yes)
3738 enable_big_digits=30 ;;
3739no)
3740 enable_big_digits=15 ;;
3741[15|30])
3742 ;;
3743*)
3744 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3745esac
3746AC_MSG_RESULT($enable_big_digits)
3747AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3748],
3749[AC_MSG_RESULT(no value specified)])
3750
Guido van Rossumef2255b2000-03-10 22:30:29 +00003751# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003752AC_CHECK_HEADER(wchar.h, [
3753 AC_DEFINE(HAVE_WCHAR_H, 1,
3754 [Define if the compiler provides a wchar.h header file.])
3755 wchar_h="yes"
3756],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003757wchar_h="no"
3758)
3759
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003760# determine wchar_t size
3761if test "$wchar_h" = yes
3762then
Guido van Rossum67b26592001-10-20 14:21:45 +00003763 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003764fi
3765
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003766AC_MSG_CHECKING(for UCS-4 tcl)
3767have_ucs4_tcl=no
Matthias Kloseb159a552010-04-25 21:00:44 +00003768AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003769#include <tcl.h>
3770#if TCL_UTF_MAX != 6
3771# error "NOT UCS4_TCL"
Matthias Kloseb159a552010-04-25 21:00:44 +00003772#endif]], [[]])],[
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003773 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3774 have_ucs4_tcl=yes
Matthias Kloseb159a552010-04-25 21:00:44 +00003775],[])
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003776AC_MSG_RESULT($have_ucs4_tcl)
3777
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003778# check whether wchar_t is signed or not
3779if test "$wchar_h" = yes
3780then
3781 # check whether wchar_t is signed or not
3782 AC_MSG_CHECKING(whether wchar_t is signed)
3783 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003784 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003785 #include <wchar.h>
3786 int main()
3787 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003788 /* Success: exit code 0 */
3789 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003790 }
Matthias Kloseb159a552010-04-25 21:00:44 +00003791 ]])],
3792 [ac_cv_wchar_t_signed=yes],
3793 [ac_cv_wchar_t_signed=no],
3794 [ac_cv_wchar_t_signed=yes])])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003795 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3796fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003797
Georg Brandl52d168a2008-01-07 18:10:24 +00003798# wchar_t is only usable if it maps to an unsigned type
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02003799if test "$ac_cv_sizeof_wchar_t" -ge 2 \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003800 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003801then
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02003802 HAVE_USABLE_WCHAR_T="yes"
Georg Brandl52d168a2008-01-07 18:10:24 +00003803 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3804 [Define if you have a useable wchar_t type defined in wchar.h; useable
3805 means wchar_t must be an unsigned type with at least 16 bits. (see
3806 Include/unicodeobject.h).])
Georg Brandl52d168a2008-01-07 18:10:24 +00003807else
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02003808 HAVE_USABLE_WCHAR_T="no usable wchar_t found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003809fi
Martin v. Löwisd63a3b82011-09-28 07:41:54 +02003810AC_MSG_RESULT($HAVE_USABLE_WCHAR_T)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003811
3812# check for endianness
3813AC_C_BIGENDIAN
3814
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003815# ABI version string for Python extension modules. This appears between the
3816# periods in shared library file names, e.g. foo.<SOABI>.so. It is calculated
3817# from the following attributes which affect the ABI of this Python build (in
3818# this order):
3819#
3820# * The Python implementation (always 'cpython-' for us)
3821# * The major and minor version numbers
3822# * --with-pydebug (adds a 'd')
3823# * --with-pymalloc (adds a 'm')
3824# * --with-wide-unicode (adds a 'u')
3825#
3826# Thus for example, Python 3.2 built with wide unicode, pydebug, and pymalloc,
Georg Brandlde7d8342010-09-03 22:19:07 +00003827# would get a shared library ABI version tag of 'cpython-32dmu' and shared
3828# libraries would be named 'foo.cpython-32dmu.so'.
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003829AC_SUBST(SOABI)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00003830AC_MSG_CHECKING(ABIFLAGS)
3831AC_MSG_RESULT($ABIFLAGS)
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003832AC_MSG_CHECKING(SOABI)
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00003833SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003834AC_MSG_RESULT($SOABI)
3835
Barry Warsaw8cf4eae2010-10-16 01:04:07 +00003836AC_MSG_CHECKING(LDVERSION)
3837LDVERSION='$(VERSION)$(ABIFLAGS)'
3838AC_MSG_RESULT($LDVERSION)
3839
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003840# SO is the extension of shared libraries `(including the dot!)
3841# -- usually .so, .sl on HP-UX, .dll on Cygwin
3842AC_MSG_CHECKING(SO)
3843if test -z "$SO"
3844then
3845 case $ac_sys_system in
3846 hp*|HP*)
3847 case `uname -m` in
3848 ia64) SO=.so;;
3849 *) SO=.sl;;
3850 esac
3851 ;;
3852 CYGWIN*) SO=.dll;;
Matthias Klose3fbfea12010-10-14 15:24:22 +00003853 Linux*|GNU*)
3854 SO=.${SOABI}.so;;
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003855 *) SO=.so;;
3856 esac
3857else
3858 # this might also be a termcap variable, see #610332
Georg Brandlde7d8342010-09-03 22:19:07 +00003859 echo
3860 echo '====================================================================='
3861 echo '+ +'
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003862 echo '+ WARNING: You have set SO in your environment. +'
Georg Brandlde7d8342010-09-03 22:19:07 +00003863 echo '+ Do you really mean to change the extension for shared libraries? +'
3864 echo '+ Continuing in 10 seconds to let you to ponder. +'
3865 echo '+ +'
3866 echo '====================================================================='
Barry Warsaw35f3a2c2010-09-03 18:30:30 +00003867 sleep 10
3868fi
3869AC_MSG_RESULT($SO)
3870
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003871# Check whether right shifting a negative integer extends the sign bit
3872# or fills with zeros (like the Cray J90, according to Tim Peters).
3873AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003874AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003875AC_RUN_IFELSE([AC_LANG_SOURCE([[
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003876int main()
3877{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003878 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003879}
Matthias Kloseb159a552010-04-25 21:00:44 +00003880]])],
3881[ac_cv_rshift_extends_sign=yes],
3882[ac_cv_rshift_extends_sign=no],
3883[ac_cv_rshift_extends_sign=yes])])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003884AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3885if test "$ac_cv_rshift_extends_sign" = no
3886then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003887 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3888 [Define if i>>j for signed int i does not extend the sign bit
3889 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003890fi
3891
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003892# check for getc_unlocked and related locking functions
3893AC_MSG_CHECKING(for getc_unlocked() and friends)
3894AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003895AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003896 FILE *f = fopen("/dev/null", "r");
3897 flockfile(f);
3898 getc_unlocked(f);
3899 funlockfile(f);
Matthias Kloseb159a552010-04-25 21:00:44 +00003900]])],[ac_cv_have_getc_unlocked=yes],[ac_cv_have_getc_unlocked=no])])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003901AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3902if test "$ac_cv_have_getc_unlocked" = yes
3903then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003904 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3905 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003906fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003907
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003908# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003909# save the value of LIBS so we don't actually link Python with readline
3910LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003911
3912# On some systems we need to link readline to a termcap compatible
3913# library. NOTE: Keep the precedence of listed libraries synchronised
3914# with setup.py.
3915py_cv_lib_readline=no
3916AC_MSG_CHECKING([how to link readline libs])
doko@ubuntu.comf2967c72012-06-30 17:32:23 +02003917for py_libtermcap in "" tinfo ncursesw ncurses curses termcap; do
Gregory P. Smith18820942008-09-07 06:24:49 +00003918 if test -z "$py_libtermcap"; then
3919 READLINE_LIBS="-lreadline"
3920 else
3921 READLINE_LIBS="-lreadline -l$py_libtermcap"
3922 fi
3923 LIBS="$READLINE_LIBS $LIBS_no_readline"
3924 AC_LINK_IFELSE(
3925 [AC_LANG_CALL([],[readline])],
3926 [py_cv_lib_readline=yes])
3927 if test $py_cv_lib_readline = yes; then
3928 break
3929 fi
3930done
3931# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3932#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003933if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003934 AC_MSG_RESULT([none])
3935else
3936 AC_MSG_RESULT([$READLINE_LIBS])
3937 AC_DEFINE(HAVE_LIBREADLINE, 1,
3938 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003939fi
3940
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003941# check for readline 2.1
3942AC_CHECK_LIB(readline, rl_callback_handler_install,
3943 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003944 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003945
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003946# check for readline 2.2
Matthias Kloseb159a552010-04-25 21:00:44 +00003947AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
3948 [have_readline=yes],
3949 [have_readline=no]
3950)
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003951if test $have_readline = yes
3952then
3953 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3954 [readline/readline.h],
3955 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3956 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00003957 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3958 [readline/readline.h],
3959 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3960 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003961fi
3962
Martin v. Löwis0daad592001-09-30 21:09:59 +00003963# check for readline 4.0
3964AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003965 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003966 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003967
Thomas Wouters89d996e2007-09-08 17:39:28 +00003968# also in 4.0
3969AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3970 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003971 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003972
Guido van Rossum353ae582001-07-10 16:45:32 +00003973# check for readline 4.2
3974AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003975 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003976 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003977
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003978# also in readline 4.2
Matthias Kloseb159a552010-04-25 21:00:44 +00003979AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <readline/readline.h>]])],
3980 [have_readline=yes],
3981 [have_readline=no]
3982)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003983if test $have_readline = yes
3984then
3985 AC_EGREP_HEADER([extern int rl_catch_signals;],
3986 [readline/readline.h],
3987 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3988 [Define if you can turn off readline's signal handling.]), )
3989fi
3990
Martin v. Löwis82bca632006-02-10 20:49:30 +00003991# End of readline checks: restore LIBS
3992LIBS=$LIBS_no_readline
3993
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003994AC_MSG_CHECKING(for broken nice())
3995AC_CACHE_VAL(ac_cv_broken_nice, [
Matthias Kloseb159a552010-04-25 21:00:44 +00003996AC_RUN_IFELSE([AC_LANG_SOURCE([[
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003997int main()
3998{
3999 int val1 = nice(1);
4000 if (val1 != -1 && val1 == nice(2))
4001 exit(0);
4002 exit(1);
4003}
Matthias Kloseb159a552010-04-25 21:00:44 +00004004]])],
4005[ac_cv_broken_nice=yes],
4006[ac_cv_broken_nice=no],
4007[ac_cv_broken_nice=no])])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004008AC_MSG_RESULT($ac_cv_broken_nice)
4009if test "$ac_cv_broken_nice" = yes
4010then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004011 AC_DEFINE(HAVE_BROKEN_NICE, 1,
4012 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00004013fi
4014
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004015AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004016AC_CACHE_VAL(ac_cv_broken_poll,
Matthias Kloseb159a552010-04-25 21:00:44 +00004017AC_RUN_IFELSE([AC_LANG_SOURCE([[
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004018#include <poll.h>
4019
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004020int main()
4021{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004022 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004023 int poll_test;
4024
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004025 close (42);
4026
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004027 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004028 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004029 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004030 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004031 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004032 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00004033 return 1;
4034}
Matthias Kloseb159a552010-04-25 21:00:44 +00004035]])],
4036[ac_cv_broken_poll=yes],
4037[ac_cv_broken_poll=no],
4038[ac_cv_broken_poll=no]))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004039AC_MSG_RESULT($ac_cv_broken_poll)
4040if test "$ac_cv_broken_poll" = yes
4041then
4042 AC_DEFINE(HAVE_BROKEN_POLL, 1,
4043 [Define if poll() sets errno on invalid file descriptors.])
4044fi
4045
Brett Cannon43802422005-02-10 20:48:03 +00004046# Before we can test tzset, we need to check if struct tm has a tm_zone
4047# (which is not required by ISO C or UNIX spec) and/or if we support
4048# tzname[]
4049AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00004050
Brett Cannon43802422005-02-10 20:48:03 +00004051# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004052AC_MSG_CHECKING(for working tzset())
4053AC_CACHE_VAL(ac_cv_working_tzset, [
Matthias Kloseb159a552010-04-25 21:00:44 +00004054AC_RUN_IFELSE([AC_LANG_SOURCE([[
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004055#include <stdlib.h>
4056#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00004057#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00004058
4059#if HAVE_TZNAME
4060extern char *tzname[];
4061#endif
4062
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004063int main()
4064{
Brett Cannon18367812003-09-19 00:59:16 +00004065 /* Note that we need to ensure that not only does tzset(3)
4066 do 'something' with localtime, but it works as documented
4067 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00004068 This includes making sure that tzname is set properly if
4069 tm->tm_zone does not exist since it is the alternative way
4070 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00004071
4072 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00004073 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00004074 */
4075
Brett Cannon43802422005-02-10 20:48:03 +00004076 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00004077 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
4078
Neal Norwitz7f2588c2003-04-11 15:35:53 +00004079 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004080 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00004081 if (localtime(&groundhogday)->tm_hour != 0)
4082 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004083#if HAVE_TZNAME
4084 /* For UTC, tzname[1] is sometimes "", sometimes " " */
4085 if (strcmp(tzname[0], "UTC") ||
4086 (tzname[1][0] != 0 && tzname[1][0] != ' '))
4087 exit(1);
4088#endif
Brett Cannon18367812003-09-19 00:59:16 +00004089
Neal Norwitz7f2588c2003-04-11 15:35:53 +00004090 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004091 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00004092 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004093 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004094#if HAVE_TZNAME
4095 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
4096 exit(1);
4097#endif
Brett Cannon18367812003-09-19 00:59:16 +00004098
4099 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
4100 tzset();
4101 if (localtime(&groundhogday)->tm_hour != 11)
4102 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004103#if HAVE_TZNAME
4104 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
4105 exit(1);
4106#endif
4107
4108#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00004109 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
4110 exit(1);
4111 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
4112 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00004113#endif
Brett Cannon18367812003-09-19 00:59:16 +00004114
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004115 exit(0);
4116}
Matthias Kloseb159a552010-04-25 21:00:44 +00004117]])],
4118[ac_cv_working_tzset=yes],
4119[ac_cv_working_tzset=no],
4120[ac_cv_working_tzset=no])])
Guido van Rossumd11b62e2003-03-14 21:51:36 +00004121AC_MSG_RESULT($ac_cv_working_tzset)
4122if test "$ac_cv_working_tzset" = yes
4123then
4124 AC_DEFINE(HAVE_WORKING_TZSET, 1,
4125 [Define if tzset() actually switches the local timezone in a meaningful way.])
4126fi
4127
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004128# Look for subsecond timestamps in struct stat
4129AC_MSG_CHECKING(for tv_nsec in struct stat)
4130AC_CACHE_VAL(ac_cv_stat_tv_nsec,
Matthias Kloseb159a552010-04-25 21:00:44 +00004131AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004132struct stat st;
4133st.st_mtim.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00004134]])],
4135[ac_cv_stat_tv_nsec=yes],
4136[ac_cv_stat_tv_nsec=no]))
Martin v. Löwis94717ed2002-09-09 14:24:16 +00004137AC_MSG_RESULT($ac_cv_stat_tv_nsec)
4138if test "$ac_cv_stat_tv_nsec" = yes
4139then
4140 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
4141 [Define if you have struct stat.st_mtim.tv_nsec])
4142fi
4143
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004144# Look for BSD style subsecond timestamps in struct stat
4145AC_MSG_CHECKING(for tv_nsec2 in struct stat)
4146AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
Matthias Kloseb159a552010-04-25 21:00:44 +00004147AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/stat.h>]], [[
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004148struct stat st;
4149st.st_mtimespec.tv_nsec = 1;
Matthias Kloseb159a552010-04-25 21:00:44 +00004150]])],
4151[ac_cv_stat_tv_nsec2=yes],
4152[ac_cv_stat_tv_nsec2=no]))
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00004153AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
4154if test "$ac_cv_stat_tv_nsec2" = yes
4155then
4156 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
4157 [Define if you have struct stat.st_mtimensec])
4158fi
4159
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004160# On HP/UX 11.0, mvwdelch is a block with a return statement
4161AC_MSG_CHECKING(whether mvwdelch is an expression)
4162AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
Matthias Kloseb159a552010-04-25 21:00:44 +00004163AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004164 int rtn;
4165 rtn = mvwdelch(0,0,0);
Matthias Kloseb159a552010-04-25 21:00:44 +00004166]])],
4167[ac_cv_mvwdelch_is_expression=yes],
4168[ac_cv_mvwdelch_is_expression=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004169AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
4170
4171if test "$ac_cv_mvwdelch_is_expression" = yes
4172then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004173 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
4174 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004175fi
4176
4177AC_MSG_CHECKING(whether WINDOW has _flags)
4178AC_CACHE_VAL(ac_cv_window_has_flags,
Matthias Kloseb159a552010-04-25 21:00:44 +00004179AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004180 WINDOW *w;
4181 w->_flags = 0;
Matthias Kloseb159a552010-04-25 21:00:44 +00004182]])],
4183[ac_cv_window_has_flags=yes],
4184[ac_cv_window_has_flags=no]))
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004185AC_MSG_RESULT($ac_cv_window_has_flags)
4186
4187
4188if test "$ac_cv_window_has_flags" = yes
4189then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00004190 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
4191 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00004192fi
4193
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004194AC_MSG_CHECKING(for is_term_resized)
Matthias Kloseb159a552010-04-25 21:00:44 +00004195AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=is_term_resized]])],
4196 [AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
4197 AC_MSG_RESULT(yes)],
4198 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004199)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00004200
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004201AC_MSG_CHECKING(for resize_term)
Matthias Kloseb159a552010-04-25 21:00:44 +00004202AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resize_term]])],
4203 [AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
4204 AC_MSG_RESULT(yes)],
4205 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004206)
4207
4208AC_MSG_CHECKING(for resizeterm)
Matthias Kloseb159a552010-04-25 21:00:44 +00004209AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <curses.h>]], [[void *x=resizeterm]])],
4210 [AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
4211 AC_MSG_RESULT(yes)],
4212 [AC_MSG_RESULT(no)]
Thomas Wouters0e3f5912006-08-11 14:57:12 +00004213)
4214
Thomas Wouters89f507f2006-12-13 04:49:30 +00004215AC_MSG_CHECKING(for /dev/ptmx)
4216
4217if test -r /dev/ptmx
4218then
4219 AC_MSG_RESULT(yes)
4220 AC_DEFINE(HAVE_DEV_PTMX, 1,
4221 [Define if we have /dev/ptmx.])
4222else
4223 AC_MSG_RESULT(no)
4224fi
4225
4226AC_MSG_CHECKING(for /dev/ptc)
4227
4228if test -r /dev/ptc
4229then
4230 AC_MSG_RESULT(yes)
4231 AC_DEFINE(HAVE_DEV_PTC, 1,
4232 [Define if we have /dev/ptc.])
4233else
4234 AC_MSG_RESULT(no)
4235fi
Neal Norwitz865400f2003-03-21 01:42:58 +00004236
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004237if test "$have_long_long" = yes
4238then
4239 AC_MSG_CHECKING(for %lld and %llu printf() format support)
4240 AC_CACHE_VAL(ac_cv_have_long_long_format,
Matthias Kloseb159a552010-04-25 21:00:44 +00004241 AC_RUN_IFELSE([AC_LANG_SOURCE([[[
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004242 #include <stdio.h>
4243 #include <stddef.h>
4244 #include <string.h>
4245
4246 #ifdef HAVE_SYS_TYPES_H
4247 #include <sys/types.h>
4248 #endif
4249
4250 int main()
4251 {
4252 char buffer[256];
4253
4254 if (sprintf(buffer, "%lld", (long long)123) < 0)
4255 return 1;
4256 if (strcmp(buffer, "123"))
4257 return 1;
4258
4259 if (sprintf(buffer, "%lld", (long long)-123) < 0)
4260 return 1;
4261 if (strcmp(buffer, "-123"))
4262 return 1;
4263
4264 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
4265 return 1;
4266 if (strcmp(buffer, "123"))
4267 return 1;
4268
4269 return 0;
4270 }
Matthias Kloseb159a552010-04-25 21:00:44 +00004271 ]]])],
4272 [ac_cv_have_long_long_format=yes],
4273 [ac_cv_have_long_long_format=no],
Matthias Klose3b739b12012-03-15 19:31:06 +01004274 [ac_cv_have_long_long_format="cross -- assuming no"
4275 if test x$GCC = xyes; then
4276 save_CFLAGS=$CFLAGS
4277 CFLAGS="$CFLAGS -Werror -Wformat"
4278 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
4279 #include <stdio.h>
4280 #include <stddef.h>
4281 ]], [[
4282 char *buffer;
4283 sprintf(buffer, "%lld", (long long)123);
4284 sprintf(buffer, "%lld", (long long)-123);
4285 sprintf(buffer, "%llu", (unsigned long long)123);
4286 ]])],
4287 ac_cv_have_long_long_format=yes
4288 )
4289 CFLAGS=$save_CFLAGS
4290 fi])
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004291 )
4292 AC_MSG_RESULT($ac_cv_have_long_long_format)
4293fi
4294
Mark Dickinson89d7d412009-12-31 20:50:59 +00004295if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004296then
4297 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
4298 [Define to printf format modifier for long long type])
4299fi
4300
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00004301if test $ac_sys_system = Darwin
4302then
4303 LIBS="$LIBS -framework CoreFoundation"
4304fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004305
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004306AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
Matthias Kloseb159a552010-04-25 21:00:44 +00004307AC_RUN_IFELSE([AC_LANG_SOURCE([[
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00004308#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00004309#include <stddef.h>
4310#include <string.h>
4311
Christian Heimes2c181612007-12-17 20:04:13 +00004312#ifdef HAVE_SYS_TYPES_H
4313#include <sys/types.h>
4314#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00004315
4316#ifdef HAVE_SSIZE_T
4317typedef ssize_t Py_ssize_t;
4318#elif SIZEOF_VOID_P == SIZEOF_LONG
4319typedef long Py_ssize_t;
4320#else
4321typedef int Py_ssize_t;
4322#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00004323
Christian Heimes2c181612007-12-17 20:04:13 +00004324int main()
4325{
4326 char buffer[256];
4327
Thomas Wouters477c8d52006-05-27 19:21:47 +00004328 if(sprintf(buffer, "%zd", (size_t)123) < 0)
4329 return 1;
4330
Thomas Wouters89f507f2006-12-13 04:49:30 +00004331 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00004332 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00004333
4334 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
4335 return 1;
4336
4337 if (strcmp(buffer, "-123"))
4338 return 1;
4339
Thomas Wouters477c8d52006-05-27 19:21:47 +00004340 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004341}
Matthias Kloseb159a552010-04-25 21:00:44 +00004342]])],
4343 [ac_cv_have_size_t_format=yes],
4344 [ac_cv_have_size_t_format=no],
4345 [ac_cv_have_size_t_format="cross -- assuming yes"
4346])])
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004347if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004348 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
4349 [Define to printf format modifier for Py_ssize_t])
4350fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00004351
Martin v. Löwis01c04012002-11-11 14:58:44 +00004352AC_CHECK_TYPE(socklen_t,,
4353 AC_DEFINE(socklen_t,int,
Matthias Klosec80c93f2010-04-24 17:04:35 +00004354 [Define to `int' if <sys/socket.h> does not define.]),[
Martin v. Löwis01c04012002-11-11 14:58:44 +00004355#ifdef HAVE_SYS_TYPES_H
4356#include <sys/types.h>
4357#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00004358#ifdef HAVE_SYS_SOCKET_H
4359#include <sys/socket.h>
4360#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00004361])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004362
Antoine Pitroufff95302008-09-03 18:58:51 +00004363AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004364AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Matthias Kloseb159a552010-04-25 21:00:44 +00004365AC_RUN_IFELSE([AC_LANG_SOURCE([[
Antoine Pitroufff95302008-09-03 18:58:51 +00004366#include<stdlib.h>
4367int main() {
4368 size_t len = -1;
4369 const char *str = "text";
4370 len = mbstowcs(NULL, str, 0);
4371 return (len != 4);
4372}
Matthias Kloseb159a552010-04-25 21:00:44 +00004373]])],
4374[ac_cv_broken_mbstowcs=no],
4375[ac_cv_broken_mbstowcs=yes],
4376[ac_cv_broken_mbstowcs=no]))
Antoine Pitroufff95302008-09-03 18:58:51 +00004377AC_MSG_RESULT($ac_cv_broken_mbstowcs)
4378if test "$ac_cv_broken_mbstowcs" = yes
4379then
4380 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
4381 [Define if mbstowcs(NULL, "text", 0) does not return the number of
4382 wide chars that would be converted.])
4383fi
4384
Antoine Pitroub52ec782009-01-25 16:34:23 +00004385# Check for --with-computed-gotos
4386AC_MSG_CHECKING(for --with-computed-gotos)
4387AC_ARG_WITH(computed-gotos,
Antoine Pitrou042b1282010-08-13 21:15:58 +00004388 AS_HELP_STRING([--with(out)-computed-gotos],
4389 [Use computed gotos in evaluation loop (enabled by default on supported compilers)]),
Antoine Pitroub52ec782009-01-25 16:34:23 +00004390[
Antoine Pitrou042b1282010-08-13 21:15:58 +00004391if test "$withval" = yes
Antoine Pitroub52ec782009-01-25 16:34:23 +00004392then
4393 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
4394 [Define if you want to use computed gotos in ceval.c.])
4395 AC_MSG_RESULT(yes)
Antoine Pitrou042b1282010-08-13 21:15:58 +00004396fi
4397if test "$withval" = no
4398then
4399 AC_DEFINE(USE_COMPUTED_GOTOS, 0,
4400 [Define if you want to use computed gotos in ceval.c.])
4401 AC_MSG_RESULT(no)
4402fi
4403],
4404[AC_MSG_RESULT(no value specified)])
Antoine Pitroub52ec782009-01-25 16:34:23 +00004405
Matthias Kloseb17289e2012-03-15 19:51:34 +01004406AC_MSG_CHECKING(whether $CC supports computed gotos)
4407AC_CACHE_VAL(ac_cv_computed_gotos,
4408AC_RUN_IFELSE([AC_LANG_SOURCE([[[
4409int main(int argc, char **argv)
4410{
4411 static void *targets[1] = { &&LABEL1 };
4412 goto LABEL2;
4413LABEL1:
4414 return 0;
4415LABEL2:
4416 goto *targets[0];
4417 return 1;
4418}
4419]]])],
4420[ac_cv_computed_gotos=yes],
4421[ac_cv_computed_gotos=no],
4422[if test "${with_computed_gotos+set}" = set; then
4423 ac_cv_computed_gotos="$with_computed_gotos -- configured --with(out)-computed-gotos"
4424 else
4425 ac_cv_computed_gotos=no
4426 fi]))
4427AC_MSG_RESULT($ac_cv_computed_gotos)
4428case "$ac_cv_computed_gotos" in yes*)
4429 AC_DEFINE(HAVE_COMPUTED_GOTOS, 1,
4430 [Define if the C compiler supports computed gotos.])
4431esac
4432
R. David Murraye16cda92010-10-15 23:12:57 +00004433case $ac_sys_system in
4434AIX*)
4435 AC_DEFINE(HAVE_BROKEN_PIPE_BUF, 1, [Define if the system reports an invalid PIPE_BUF value.]) ;;
4436esac
Antoine Pitroub52ec782009-01-25 16:34:23 +00004437
Jesus Cea6a792292010-05-03 21:18:48 +00004438
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004439AC_SUBST(THREADHEADERS)
4440
4441for h in `(cd $srcdir;echo Python/thread_*.h)`
4442do
4443 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4444done
4445
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004446AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00004447SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004448AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004449for dir in $SRCDIRS; do
4450 if test ! -d $dir; then
4451 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004452 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004453done
4454AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004455
Stefan Krah1919b7e2012-03-21 18:25:23 +01004456# Availability of -O2:
4457AC_MSG_CHECKING(for -O2)
4458saved_cflags="$CFLAGS"
4459CFLAGS="-O2"
4460AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
4461]])],[have_O2=yes],[have_O2=no])
4462AC_MSG_RESULT($have_O2)
4463CFLAGS="$saved_cflags"
4464
4465# _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect:
4466# http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html
4467AC_MSG_CHECKING(for glibc _FORTIFY_SOURCE/memmove bug)
4468saved_cflags="$CFLAGS"
4469CFLAGS="-O2 -D_FORTIFY_SOURCE=2"
4470if test "$have_O2" = no; then
4471 CFLAGS=""
4472fi
4473AC_RUN_IFELSE([AC_LANG_SOURCE([[
4474#include <stdio.h>
4475#include <stdlib.h>
4476#include <string.h>
4477void foo(void *p, void *q) { memmove(p, q, 19); }
4478int main() {
4479 char a[32] = "123456789000000000";
4480 foo(&a[9], a);
4481 if (strcmp(a, "123456789123456789000000000") != 0)
4482 return 1;
4483 foo(a, &a[9]);
4484 if (strcmp(a, "123456789000000000") != 0)
4485 return 1;
4486 return 0;
4487}
4488]])],
4489[have_glibc_memmove_bug=no],
4490[have_glibc_memmove_bug=yes],
4491[have_glibc_memmove_bug=undefined])
4492CFLAGS="$saved_cflags"
4493AC_MSG_RESULT($have_glibc_memmove_bug)
4494if test "$have_glibc_memmove_bug" = yes; then
4495 AC_DEFINE(HAVE_GLIBC_MEMMOVE_BUG, 1,
4496 [Define if glibc has incorrect _FORTIFY_SOURCE wrappers
4497 for memmove and bcopy.])
4498fi
4499
4500if test "$have_gcc_asm_for_x87" = yes; then
4501 # Some versions of gcc miscompile inline asm:
4502 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491
4503 # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html
4504 case $CC in
4505 *gcc*)
4506 AC_MSG_CHECKING(for gcc ipa-pure-const bug)
4507 saved_cflags="$CFLAGS"
4508 CFLAGS="-O2"
4509 AC_RUN_IFELSE([AC_LANG_SOURCE([[
4510 __attribute__((noinline)) int
4511 foo(int *p) {
4512 int r;
4513 asm ( "movl \$6, (%1)\n\t"
4514 "xorl %0, %0\n\t"
4515 : "=r" (r) : "r" (p) : "memory"
4516 );
4517 return r;
4518 }
4519 int main() {
4520 int p = 8;
4521 if ((foo(&p) ? : p) != 6)
4522 return 1;
4523 return 0;
4524 }
4525 ]])],
4526 [have_ipa_pure_const_bug=no],
4527 [have_ipa_pure_const_bug=yes],
4528 [have_ipa_pure_const_bug=undefined])
4529 CFLAGS="$saved_cflags"
4530 AC_MSG_RESULT($have_ipa_pure_const_bug)
4531 if test "$have_ipa_pure_const_bug" = yes; then
4532 AC_DEFINE(HAVE_IPA_PURE_CONST_BUG, 1,
4533 [Define if gcc has the ipa-pure-const bug.])
4534 fi
4535 ;;
4536 esac
4537fi
4538
Guido van Rossum627b2d71993-12-24 10:39:16 +00004539# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00004540AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Antoine Pitrou8e6b4072010-09-10 19:44:44 +00004541AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])
Martin v. Löwis88afe662002-10-26 13:47:44 +00004542AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004543
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004544echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004545if test ! -f Modules/Setup
4546then
4547 cp $srcdir/Modules/Setup.dist Modules/Setup
4548fi
4549
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004550echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004551if test ! -f Modules/Setup.local
4552then
4553 echo "# Edit this file for local setup changes" >Modules/Setup.local
4554fi
4555
4556echo "creating Makefile"
4557$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4558 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004559 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00004560mv config.c Modules