blob: f240ee691eea40c47448f84dcf36c15cad44a8e8 [file] [log] [blame]
Benjamin Petersonfbeb6b62008-05-26 16:04:49 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Benjamin Peterson4469d0c2008-11-30 22:46:23 +00004dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.61).
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
6# Set VERSION so we only need to edit in one place (i.e., here)
Benjamin Peterson46ea4f72009-06-27 21:40:27 +00007m4_define(PYTHON_VERSION, 3.2)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008
Alexandre Vassalottib89910f2009-07-18 00:33:23 +00009dnl Some m4 magic to ensure that the configure script is generated
10dnl by the correct autoconf version.
11m4_define([version_required],
12[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), [$1]), 0,
13 [],
14 [m4_fatal([Autoconf version $1 is required for Python], 63)])
15])
16version_required(2.61)
17
Guido van Rossum76be6ed1995-01-02 18:33:54 +000018AC_REVISION($Revision$)
Georg Brandle2e15612009-05-20 18:25:10 +000019AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
Martin v. Löwis88afe662002-10-26 13:47:44 +000020AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000021AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000022
Benjamin Petersond23f8222009-04-05 19:13:16 +000023dnl Ensure that if prefix is specified, it does not end in a slash. If
24dnl it does, we get path names containing '//' which is both ugly and
25dnl can cause trouble.
26
27dnl Last slash shouldn't be stripped if prefix=/
28if test "$prefix" != "/"; then
29 prefix=`echo "$prefix" | sed -e 's/\/$//g'`
30fi
31
Martin v. Löwis8316feb2003-06-14 07:48:07 +000032dnl This is for stuff that absolutely must end up in pyconfig.h.
33dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000034AH_TOP([
35#ifndef Py_PYCONFIG_H
36#define Py_PYCONFIG_H
37])
Martin v. Löwis11437992002-04-12 09:54:03 +000038AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000039/* Define the macros needed if on a UnixWare 7.x system. */
40#if defined(__USLC__) && defined(__SCO_VERSION__)
41#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
42#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000043
44#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000045])
46
Martin v. Löwis8316feb2003-06-14 07:48:07 +000047# We don't use PACKAGE_ variables, and they cause conflicts
48# with other autoconf-based packages that include Python.h
49grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
50rm confdefs.h
51mv confdefs.h.new confdefs.h
52
Guido van Rossum642b6781997-07-19 19:35:41 +000053AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000054VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000055
Martin v. Löwis1142de32002-03-29 16:28:31 +000056AC_SUBST(SOVERSION)
57SOVERSION=1.0
58
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000059# The later defininition of _XOPEN_SOURCE disables certain features
60# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
61AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
62
Martin v. Löwisbcd93962003-05-03 10:32:18 +000063# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
64# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
65# them.
66AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
67
Andrew MacIntyreabccf412003-07-02 13:53:25 +000068# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
69# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
70# them.
71AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
72
Martin v. Löwisd6320502004-08-12 13:45:08 +000073# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
74# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
75AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
76
Georg Brandlfcaf9102008-07-16 02:17:56 +000077# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
78# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
79# them.
80AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
81
82
Martin v. Löwise981a4e2002-11-11 13:26:51 +000083define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000084
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000085# Arguments passed to configure.
86AC_SUBST(CONFIG_ARGS)
87CONFIG_ARGS="$ac_configure_args"
88
Ronald Oussoren8af24c12010-02-07 12:03:42 +000089AC_MSG_CHECKING([for --enable-universalsdk])
Thomas Wouters477c8d52006-05-27 19:21:47 +000090AC_ARG_ENABLE(universalsdk,
Christian Heimes68f5fbe2008-02-14 08:27:37 +000091 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Thomas Wouters477c8d52006-05-27 19:21:47 +000092[
93 case $enableval in
94 yes)
95 enableval=/Developer/SDKs/MacOSX10.4u.sdk
Ronald Oussoren8af24c12010-02-07 12:03:42 +000096 if test ! -d "${enableval}"
97 then
98 enableval=/
99 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000100 ;;
101 esac
102 case $enableval in
103 no)
104 UNIVERSALSDK=
105 enable_universalsdk=
106 ;;
107 *)
108 UNIVERSALSDK=$enableval
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000109 if test ! -d "${UNIVERSALSDK}"
110 then
111 AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
112 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000113 ;;
114 esac
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000115
Thomas Wouters477c8d52006-05-27 19:21:47 +0000116],[
117 UNIVERSALSDK=
118 enable_universalsdk=
119])
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000120if test -n "${UNIVERSALSDK}"
121then
122 AC_MSG_RESULT(${UNIVERSALSDK})
123else
124 AC_MSG_RESULT(no)
125fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000126AC_SUBST(UNIVERSALSDK)
127
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000128AC_SUBST(ARCH_RUN_32BIT)
129
Georg Brandlfcaf9102008-07-16 02:17:56 +0000130UNIVERSAL_ARCHS="32-bit"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000131AC_SUBST(LIPO_32BIT_FLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000132AC_MSG_CHECKING(for --with-universal-archs)
133AC_ARG_WITH(universal-archs,
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000134 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")),
Georg Brandlfcaf9102008-07-16 02:17:56 +0000135[
136 AC_MSG_RESULT($withval)
137 UNIVERSAL_ARCHS="$withval"
138],
139[
140 AC_MSG_RESULT(32-bit)
141])
142
143
144
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000145AC_ARG_WITH(framework-name,
146 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
147 specify an alternate name of the framework built with --enable-framework),
148[
149 PYTHONFRAMEWORK=${withval}
150 PYTHONFRAMEWORKDIR=${withval}.framework
151 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
152 ],[
153 PYTHONFRAMEWORK=Python
154 PYTHONFRAMEWORKDIR=Python.framework
155 PYTHONFRAMEWORKIDENTIFIER=org.python.python
156])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000157dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000158AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000159 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
160[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000161 case $enableval in
162 yes)
163 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000164 esac
165 case $enableval in
166 no)
167 PYTHONFRAMEWORK=
168 PYTHONFRAMEWORKDIR=no-framework
169 PYTHONFRAMEWORKPREFIX=
170 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000171 FRAMEWORKINSTALLFIRST=
172 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000173 FRAMEWORKALTINSTALLFIRST=
174 FRAMEWORKALTINSTALLLAST=
175 if test "x${prefix}" = "xNONE"; then
176 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
177 else
178 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
179 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000180 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000181 ;;
182 *)
183 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000184 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000185 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussorenf6ccbf62009-06-02 10:55:56 +0000186 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000187 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
188 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000189
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000190 if test "x${prefix}" = "xNONE" ; then
191 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
192 else
193 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
194 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000195 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000196
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000197 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000198 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000199 AC_CONFIG_FILES(Mac/Makefile)
200 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000201 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
202 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000203 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000204 ],[
205 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000206 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000207 PYTHONFRAMEWORKPREFIX=
208 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000209 FRAMEWORKINSTALLFIRST=
210 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000211 FRAMEWORKALTINSTALLFIRST=
212 FRAMEWORKALTINSTALLLAST=
213 if test "x${prefix}" = "xNONE" ; then
214 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
215 else
216 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
217 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000218 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000219
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000220])
221AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000222AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000223AC_SUBST(PYTHONFRAMEWORKDIR)
224AC_SUBST(PYTHONFRAMEWORKPREFIX)
225AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000226AC_SUBST(FRAMEWORKINSTALLFIRST)
227AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000228AC_SUBST(FRAMEWORKALTINSTALLFIRST)
229AC_SUBST(FRAMEWORKALTINSTALLLAST)
230AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000231
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000232##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000233## AC_HELP_STRING(--with-dyld,
234## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000235##
Guido van Rossumb418f891996-07-30 18:06:02 +0000236# Set name for machine-dependent library files
237AC_SUBST(MACHDEP)
238AC_MSG_CHECKING(MACHDEP)
239if test -z "$MACHDEP"
240then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000241 ac_sys_system=`uname -s`
Benjamin Peterson8719ad52009-09-11 22:24:02 +0000242 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000243 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000244 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000245 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000246 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000247 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000248 ac_md_system=`echo $ac_sys_system |
249 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
250 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000251 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000252 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000253
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000254 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000255 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000256 darwin*) MACHDEP="darwin";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000257 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000258 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000259 esac
260fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000261
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000262# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
263# disable features if it is defined, without any means to access these
264# features as extensions. For these systems, we skip the definition of
265# _XOPEN_SOURCE. Before adding a system to the list to gain access to
266# some feature, make sure there is no alternative way to access this
267# feature. Also, when using wildcards, make sure you have verified the
268# need for not defining _XOPEN_SOURCE on all systems matching the
269# wildcard, and that the wildcard does not include future systems
270# (which may remove their limitations).
271dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
272case $ac_sys_system/$ac_sys_release in
273 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
274 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000275 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Martin v. Löwis19ed3c82010-02-15 21:45:06 +0000276 # In addition, Stefan Krah confirms that issue #1244610 exists through
277 # OpenBSD 4.6, but is fixed in 4.7.
278 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123456@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000279 define_xopen_source=no
280 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
281 # also defined. This can be overridden by defining _BSD_SOURCE
282 # As this has a different meaning on Linux, only define it on OpenBSD
283 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
284 ;;
Martin v. Löwis19ed3c82010-02-15 21:45:06 +0000285 OpenBSD/4.@<:@789@:>@)
Martin v. Löwis7671efc2010-02-15 08:35:16 +0000286 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
287 # also defined. This can be overridden by defining _BSD_SOURCE
288 # As this has a different meaning on Linux, only define it on OpenBSD
289 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
290 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000291 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
292 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
293 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000294 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 +0000295 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000296 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
297 # of union __?sigval. Reported by Stuart Bishop.
298 SunOS/5.6)
299 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000300 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
301 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000302 # Reconfirmed for 7.1.4 by Martin v. Loewis.
303 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000304 define_xopen_source=no;;
305 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000306 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000307 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000308 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000309 # On FreeBSD 4, the math functions C89 does not cover are never defined
310 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
311 FreeBSD/4.*)
312 define_xopen_source=no;;
313 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
314 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
315 # identifies itself as Darwin/7.*
316 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
317 # disables platform specific features beyond repair.
318 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
319 # has no effect, don't bother defining them
320 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000321 define_xopen_source=no;;
Ronald Oussoren92fb9412010-03-09 06:40:19 +0000322 Darwin/1@<:@0-9@:>@.*)
Ronald Oussorenb8f11a62010-03-08 07:02:03 +0000323 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000324 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
325 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
326 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000327 AIX/4)
328 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000329 AIX/5)
330 if test `uname -r` -eq 1; then
331 define_xopen_source=no
332 fi
333 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000334 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
335 # defining NI_NUMERICHOST.
336 QNX/6.3.2)
337 define_xopen_source=no
338 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000339
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000340esac
341
342if test $define_xopen_source = yes
343then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000344 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
345 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000346 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
347 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000348 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000349 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000350 AC_DEFINE(_XOPEN_SOURCE, 500,
351 Define to the level of X/Open that your system supports)
352 ;;
353 *)
354 AC_DEFINE(_XOPEN_SOURCE, 600,
355 Define to the level of X/Open that your system supports)
356 ;;
357 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000358
359 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
360 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
361 # several APIs are not declared. Since this is also needed in some
362 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000363 # except for Solaris 10, where it must not be defined,
364 # as it implies XPG4.2
365 case $ac_sys_system/$ac_sys_release in
366 SunOS/5.10)
367 ;;
368 *)
369 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
370 Define to activate Unix95-and-earlier features)
371 ;;
372 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000373
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000374 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
375
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000376fi
377
Guido van Rossum91922671997-10-09 20:24:13 +0000378#
379# SGI compilers allow the specification of the both the ABI and the
380# ISA on the command line. Depending on the values of these switches,
381# different and often incompatable code will be generated.
382#
383# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
384# thus supply support for various ABI/ISA combinations. The MACHDEP
385# variable is also adjusted.
386#
387AC_SUBST(SGI_ABI)
388if test ! -z "$SGI_ABI"
389then
390 CC="cc $SGI_ABI"
391 LDFLAGS="$SGI_ABI $LDFLAGS"
392 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
393fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000394AC_MSG_RESULT($MACHDEP)
395
Jack Jansen6b08a402004-06-03 12:41:45 +0000396# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
397# it may influence the way we can build extensions, so distutils
398# needs to check it
399AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000400AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000401CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000402EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000403
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000404AC_MSG_CHECKING(machine type as reported by uname -m)
405ac_sys_machine=`uname -m`
406AC_MSG_RESULT($ac_sys_machine)
407
Guido van Rossum627b2d71993-12-24 10:39:16 +0000408# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000409
410# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
411# for debug/optimization stuff. BASECFLAGS is for flags that are required
412# just to get things to compile and link. Users are free to override OPT
413# when running configure or make. The build should not break if they do.
414# BASECFLAGS should generally not be messed with, however.
415
416# XXX shouldn't some/most/all of this code be merged with the stuff later
417# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000418AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000419AC_ARG_WITH(gcc,
420 AC_HELP_STRING(--without-gcc,never use gcc),
421[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000422 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000423 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000424 without_gcc=yes;;
425 yes) CC=gcc
426 without_gcc=no;;
427 *) CC=$withval
428 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000429 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000430 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000431 AIX*) CC=cc_r
432 without_gcc=;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000433 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000434 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000435AC_MSG_RESULT($without_gcc)
436
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000437# If the user switches compilers, we can't believe the cache
438if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
439then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000440 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
441(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000442fi
443
Victor Stinner00d6a1d2010-03-25 01:02:29 +0000444save_CFLAGS=$CFLAGS
Guido van Rossum627b2d71993-12-24 10:39:16 +0000445AC_PROG_CC
Victor Stinner00d6a1d2010-03-25 01:02:29 +0000446CFLAGS=$save_CFLAGS
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000447
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000448AC_SUBST(CXX)
449AC_SUBST(MAINCC)
450AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
451AC_ARG_WITH(cxx_main,
452 AC_HELP_STRING([--with-cxx-main=<compiler>],
453 [compile main() and link python executable with C++ compiler]),
454[
455
456 case $withval in
457 no) with_cxx_main=no
458 MAINCC='$(CC)';;
459 yes) with_cxx_main=yes
460 MAINCC='$(CXX)';;
461 *) with_cxx_main=yes
462 MAINCC=$withval
463 if test -z "$CXX"
464 then
465 CXX=$withval
466 fi;;
467 esac], [
468 with_cxx_main=no
469 MAINCC='$(CC)'
470])
471AC_MSG_RESULT($with_cxx_main)
472
473preset_cxx="$CXX"
474if test -z "$CXX"
475then
476 case "$CC" in
477 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
478 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
479 esac
480 if test "$CXX" = "notfound"
481 then
482 CXX=""
483 fi
484fi
485if test -z "$CXX"
486then
487 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
488 if test "$CXX" = "notfound"
489 then
490 CXX=""
491 fi
492fi
493if test "$preset_cxx" != "$CXX"
494then
495 AC_MSG_WARN([
496
497 By default, distutils will build C++ extension modules with "$CXX".
498 If this is not intended, then set CXX on the configure command line.
499 ])
500fi
501
502
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000503# checks for UNIX variants that set C preprocessor variables
504AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000505
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000506# Check for unsupported systems
507case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000508atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000509 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
510 echo See README for details.
511 exit 1;;
512esac
513
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000514AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000515AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000516AC_ARG_WITH(suffix,
517 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
518[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000519 case $withval in
520 no) EXEEXT=;;
521 yes) EXEEXT=.exe;;
522 *) EXEEXT=$withval;;
523 esac])
524AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000525
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000526# Test whether we're running on a non-case-sensitive system, in which
527# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000528AC_SUBST(BUILDEXEEXT)
529AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000530if test ! -d CaseSensitiveTestDir; then
531mkdir CaseSensitiveTestDir
532fi
533
534if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000535then
Jack Jansen1999ef42001-12-06 21:47:20 +0000536 AC_MSG_RESULT(yes)
537 BUILDEXEEXT=.exe
538else
539 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000540 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000541fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000542rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000543
Guido van Rossumdd997f71998-10-07 19:58:26 +0000544case $MACHDEP in
545bsdos*)
546 case $CC in
547 gcc) CC="$CC -D_HAVE_BSDI";;
548 esac;;
549esac
550
Guido van Rossum84561611997-08-21 00:08:11 +0000551case $ac_sys_system in
552hp*|HP*)
553 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000554 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000555 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000556SunOS*)
557 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000558 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000559 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000560esac
561
Martin v. Löwise8964d42001-03-06 12:09:07 +0000562
Neil Schemenauer61c51152001-01-26 16:18:16 +0000563AC_SUBST(LIBRARY)
564AC_MSG_CHECKING(LIBRARY)
565if test -z "$LIBRARY"
566then
567 LIBRARY='libpython$(VERSION).a'
568fi
569AC_MSG_RESULT($LIBRARY)
570
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000571# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000572# name of the library into which to insert object files). BLDLIBRARY is also
573# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
574# is blank as the main program is not linked directly against LDLIBRARY.
575# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
576# systems without shared libraries, LDLIBRARY is the same as LIBRARY
577# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
578# DLLLIBRARY is the shared (i.e., DLL) library.
579#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000580# RUNSHARED is used to run shared python without installed libraries
581#
582# INSTSONAME is the name of the shared library that will be use to install
583# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000584AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000585AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000586AC_SUBST(BLDLIBRARY)
587AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000588AC_SUBST(INSTSONAME)
589AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000590LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000591BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000592INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000593DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000594LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000595RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000596
Guido van Rossumfb842551997-08-06 23:42:07 +0000597# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000598# If CXX is set, and if it is needed to link a main function that was
599# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
600# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000601# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000602# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000603AC_SUBST(LINKCC)
604AC_MSG_CHECKING(LINKCC)
605if test -z "$LINKCC"
606then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000607 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000608 case $ac_sys_system in
609 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000610 exp_extra="\"\""
611 if test $ac_sys_release -ge 5 -o \
612 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
613 exp_extra="."
614 fi
615 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000616 QNX*)
617 # qcc must be used because the other compilers do not
618 # support -N.
619 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000620 esac
621fi
622AC_MSG_RESULT($LINKCC)
623
Tarek Ziadébe720e02009-05-09 11:55:12 +0000624# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
625# make sure we default having it set to "no": this is used by
626# distutils.unixccompiler to know if it should add --enable-new-dtags
627# to linker command lines, and failing to detect GNU ld simply results
628# in the same bahaviour as before.
629AC_SUBST(GNULD)
630AC_MSG_CHECKING(for GNU ld)
631ac_prog=ld
632if test "$GCC" = yes; then
633 ac_prog=`$CC -print-prog-name=ld`
634fi
635case `"$ac_prog" -V 2>&1 < /dev/null` in
636 *GNU*)
637 GNULD=yes;;
638 *)
639 GNULD=no;;
640esac
641AC_MSG_RESULT($GNULD)
642
Martin v. Löwis1142de32002-03-29 16:28:31 +0000643AC_MSG_CHECKING(for --enable-shared)
644AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000645 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000646
Martin v. Löwis1142de32002-03-29 16:28:31 +0000647if test -z "$enable_shared"
648then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000649 case $ac_sys_system in
Antoine Pitrou6103ab12009-10-24 20:11:21 +0000650 CYGWIN*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000651 enable_shared="yes";;
652 *)
653 enable_shared="no";;
654 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000655fi
656AC_MSG_RESULT($enable_shared)
657
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000658AC_MSG_CHECKING(for --enable-profiling)
659AC_ARG_ENABLE(profiling,
660 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
661[ac_save_cc="$CC"
662 CC="$CC -pg"
663 AC_TRY_RUN([int main() { return 0; }],
664 ac_enable_profiling="yes",
665 ac_enable_profiling="no",
666 ac_enable_profiling="no")
667 CC="$ac_save_cc"])
668AC_MSG_RESULT($ac_enable_profiling)
669
670case "$ac_enable_profiling" in
671 "yes")
672 BASECFLAGS="-pg $BASECFLAGS"
673 LDFLAGS="-pg $LDFLAGS"
674 ;;
675esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000676
677AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000678
Guido van Rossumb8552162001-09-05 14:58:11 +0000679# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
680# library that we build, but we do not want to link against it (we
681# will find it with a -framework option). For this reason there is an
682# extra variable BLDLIBRARY against which Python and the extension
683# modules are linked, BLDLIBRARY. This is normally the same as
684# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000685if test "$enable_framework"
686then
687 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000688 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000689 BLDLIBRARY=''
690else
691 BLDLIBRARY='$(LDLIBRARY)'
692fi
693
Martin v. Löwis1142de32002-03-29 16:28:31 +0000694# Other platforms follow
695if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000696 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000697 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000698 CYGWIN*)
699 LDLIBRARY='libpython$(VERSION).dll.a'
700 DLLLIBRARY='libpython$(VERSION).dll'
701 ;;
702 SunOS*)
703 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000704 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000705 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000706 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000707 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000708 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000709 LDLIBRARY='libpython$(VERSION).so'
710 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000711 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000712 case $ac_sys_system in
713 FreeBSD*)
714 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
715 ;;
716 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000717 INSTSONAME="$LDLIBRARY".$SOVERSION
718 ;;
719 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000720 case `uname -m` in
721 ia64)
722 LDLIBRARY='libpython$(VERSION).so'
723 ;;
724 *)
725 LDLIBRARY='libpython$(VERSION).sl'
726 ;;
727 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000728 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000729 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000730 ;;
731 OSF*)
732 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000733 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000734 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000735 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000736 Darwin*)
737 LDLIBRARY='libpython$(VERSION).dylib'
738 BLDLIBRARY='-L. -lpython$(VERSION)'
739 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
740 ;;
741
Martin v. Löwis1142de32002-03-29 16:28:31 +0000742 esac
Jason Tishler30765592003-09-04 11:04:06 +0000743else # shared is disabled
744 case $ac_sys_system in
745 CYGWIN*)
746 BLDLIBRARY='$(LIBRARY)'
747 LDLIBRARY='libpython$(VERSION).dll.a'
748 ;;
749 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000750fi
751
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000752AC_MSG_RESULT($LDLIBRARY)
753
Guido van Rossum627b2d71993-12-24 10:39:16 +0000754AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000755AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000756AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000757
Tarek Ziadé5662d3e2009-05-07 21:24:43 +0000758# tweak ARFLAGS only if the user didn't set it on the command line
759AC_SUBST(ARFLAGS)
760if test -z "$ARFLAGS"
761then
762 ARFLAGS="rc"
763fi
764
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000765AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000766AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000767if test $SVNVERSION = found
768then
769 SVNVERSION="svnversion \$(srcdir)"
770else
Benjamin Petersonf53eec82009-05-23 19:36:27 +0000771 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000772fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000773
Neil Schemenauera42c8272001-03-31 00:01:55 +0000774case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000775bsdos*|hp*|HP*)
776 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000777 if test -z "$INSTALL"
778 then
779 INSTALL="${srcdir}/install-sh -c"
780 fi
781esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000782AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000783
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000784# Not every filesystem supports hard links
785AC_SUBST(LN)
786if test -z "$LN" ; then
787 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000788 CYGWIN*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000789 *) LN=ln;;
790 esac
791fi
792
Fred Drake9f715822001-07-11 06:27:00 +0000793# Check for --with-pydebug
794AC_MSG_CHECKING(for --with-pydebug)
795AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000796 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
797[
Fred Drake9f715822001-07-11 06:27:00 +0000798if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000799then
800 AC_DEFINE(Py_DEBUG, 1,
801 [Define if you want to build an interpreter with many run-time checks.])
802 AC_MSG_RESULT(yes);
803 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000804else AC_MSG_RESULT(no); Py_DEBUG='false'
805fi],
806[AC_MSG_RESULT(no)])
807
Skip Montanarodecc6a42003-01-01 20:07:49 +0000808# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
809# merged with this chunk of code?
810
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000811# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000812# ------------------------
813# (The following bit of code is complicated enough - please keep things
814# indented properly. Just pretend you're editing Python code. ;-)
815
816# There are two parallel sets of case statements below, one that checks to
817# see if OPT was set and one that does BASECFLAGS setting based upon
818# compiler and platform. BASECFLAGS tweaks need to be made even if the
819# user set OPT.
820
821# tweak OPT based on compiler and platform, only if the user didn't set
822# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000823AC_SUBST(OPT)
Benjamin Peterson65b4ec52010-03-23 21:02:34 +0000824if test "${OPT-unset}" = "unset"
Guido van Rossumb418f891996-07-30 18:06:02 +0000825then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000826 case $GCC in
827 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000828 if test "$CC" != 'g++' ; then
829 STRICT_PROTO="-Wstrict-prototypes"
830 fi
Christian Heimes38053212007-12-14 01:24:44 +0000831 # For gcc 4.x we need to use -fwrapv so lets check if its supported
832 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
833 WRAP="-fwrapv"
834 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000835 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000836 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000837 if test "$Py_DEBUG" = 'true' ; then
838 # Optimization messes up debuggers, so turn it off for
839 # debug builds.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000840 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000841 else
Christian Heimes38053212007-12-14 01:24:44 +0000842 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000843 fi
844 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000845 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000846 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000847 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000848 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000849 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000850 SCO_SV*) OPT="$OPT -m486 -DSCO5"
851 ;;
852 esac
Fred Drake9f715822001-07-11 06:27:00 +0000853 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000854
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000855 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000856 OPT="-O"
857 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000858 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +0000859fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000860
Skip Montanarodecc6a42003-01-01 20:07:49 +0000861AC_SUBST(BASECFLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000862
863# The -arch flags for universal builds on OSX
864UNIVERSAL_ARCH_FLAGS=
865AC_SUBST(UNIVERSAL_ARCH_FLAGS)
866
Skip Montanarodecc6a42003-01-01 20:07:49 +0000867# tweak BASECFLAGS based on compiler and platform
868case $GCC in
869yes)
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000870 # Python doesn't violate C99 aliasing rules, but older versions of
871 # GCC produce warnings for legal Python code. Enable
872 # -fno-strict-aliasing on versions of GCC that support but produce
873 # warnings. See Issue3326
874 AC_MSG_CHECKING(whether $CC accepts and needs -fno-strict-aliasing)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000875 ac_save_cc="$CC"
876 CC="$CC -fno-strict-aliasing"
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000877 save_CFLAGS="$CFLAGS"
878 AC_CACHE_VAL(ac_cv_no_strict_aliasing,
879 AC_TRY_COMPILE([],[int main() { return 0; }],
880 CC="$ac_save_cc -fstrict-aliasing"
881 CFLAGS="$CFLAGS -Werror -Wstrict-aliasing"
882 AC_TRY_COMPILE([],[void f(int **x) {} int main() { double *x; f((int **) &x); return 0; }],
883 ac_cv_no_strict_aliasing=no,
884 ac_cv_no_strict_aliasing=yes),
885 ac_cv_no_strict_aliasing=no))
886 CFLAGS="$save_CFLAGS"
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000887 CC="$ac_save_cc"
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000888 AC_MSG_RESULT($ac_cv_no_strict_aliasing)
889 if test $ac_cv_no_strict_aliasing = yes
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000890 then
891 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
892 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000893
894 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
895 # support. Without this, treatment of subnormals doesn't follow
896 # the standard.
897 case $ac_sys_machine in
898 alpha*)
899 BASECFLAGS="$BASECFLAGS -mieee"
900 ;;
901 esac
902
Skip Montanarodecc6a42003-01-01 20:07:49 +0000903 case $ac_sys_system in
904 SCO_SV*)
905 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
906 ;;
907 # is there any other compiler on Darwin besides gcc?
908 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +0000909 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
910 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000911
912
Thomas Wouters477c8d52006-05-27 19:21:47 +0000913 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +0000914 UNIVERSAL_ARCH_FLAGS=""
915 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
916 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000917 ARCH_RUN_32BIT=""
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000918 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000919
Ronald Oussoren755740f2010-02-07 19:56:39 +0000920 # You have to use different flags on various versions of
921 # OSX to extract PPC code from an universal binary, basically
922 # '-arch ppc' on OSX 10.4 and '-arch ppc7400' on anything
923 # newer.
924 # Because '-arch pp7400' works on OSX 10.5 or higher this
925 # test is only present in the '32-bit' branch, all other
926 # branches require OSX 10.5 to compile.
927
928 AC_MSG_CHECKING(lipo flag for extracting ppc code)
929 FN="test.$$"
930 cat >${FN}.c <<-EOF
931 int main() { return 0; }
932EOF
933 ${CC} ${CFLAGS} -arch ppc -arch i386 -o ${FN} ${FN}.c -isysroot ${UNIVERSALSDK}
934 if test $? != 0 ; then
935 rm ${FN} ${FN}.c
936 AC_MSG_RESULT([failed, assumee -extract ppc7400])
937 else
938 lipo "${FN}" -extract ppc7400 -output "${FN}.out" 2>/dev/null
939 if test $? != 0 ; then
940 LIPO_32BIT_FLAGS="-extract ppc -extract i386"
941 AC_MSG_RESULT("'-extract ppc'")
942 else
943 AC_MSG_RESULT("'-extract ppc7400'")
944 fi
945 rm -f ${FN} ${FN}.c ${FN}.out
946 fi
947
Georg Brandlfcaf9102008-07-16 02:17:56 +0000948 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
949 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000950 LIPO_32BIT_FLAGS=""
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000951 ARCH_RUN_32BIT="true"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000952
953 elif test "$UNIVERSAL_ARCHS" = "all" ; then
954 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000955 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000956 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000957
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000958 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
959 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000960 LIPO_32BIT_FLAGS="-extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000961 ARCH_RUN_32BIT="/usr/bin/arch -i386"
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000962
963 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
964 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000965 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000966 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000967
Georg Brandlfcaf9102008-07-16 02:17:56 +0000968 else
Ronald Oussoren74f29b42009-09-20 20:09:26 +0000969 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Georg Brandlfcaf9102008-07-16 02:17:56 +0000970
971 fi
972
973
974 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Georg Brandl3dbca812008-07-23 16:10:53 +0000975 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000976 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
977 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
978 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000979 fi
980
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000981 # Calculate the right deployment target for this build.
982 #
983 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
984 if test ${cur_target} '>' 10.2; then
985 cur_target=10.3
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000986 if test ${enable_universalsdk}; then
987 if test "${UNIVERSAL_ARCHS}" = "all"; then
988 # Ensure that the default platform for a
989 # 4-way universal build is OSX 10.5,
990 # that's the first OS release where
991 # 4-way builds make sense.
992 cur_target='10.5'
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000993
994 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
995 cur_target='10.5'
996
997 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
998 cur_target='10.5'
999
1000 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
1001 cur_target='10.5'
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001002 fi
1003 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001004 if test `/usr/bin/arch` = "i386"; then
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001005 # On Intel macs default to a deployment
1006 # target of 10.4, that's the first OSX
1007 # release with Intel support.
1008 cur_target="10.4"
1009 fi
1010 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001011 fi
1012 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1013
1014 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1015 # environment with a value that is the same as what we'll use
1016 # in the Makefile to ensure that we'll get the same compiler
1017 # environment during configure and build time.
1018 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1019 export MACOSX_DEPLOYMENT_TARGET
1020 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1021
Skip Montanarodecc6a42003-01-01 20:07:49 +00001022 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001023 OSF*)
1024 BASECFLAGS="$BASECFLAGS -mieee"
1025 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001026 esac
1027 ;;
1028
1029*)
1030 case $ac_sys_system in
1031 OpenUNIX*|UnixWare*)
1032 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1033 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001034 OSF*)
1035 BASECFLAGS="$BASECFLAGS -ieee -std"
1036 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001037 SCO_SV*)
1038 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1039 ;;
1040 esac
1041 ;;
1042esac
1043
Fred Drakee1ceaa02001-12-04 20:55:47 +00001044if test "$Py_DEBUG" = 'true'; then
1045 :
1046else
1047 OPT="-DNDEBUG $OPT"
1048fi
1049
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001050if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001051then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001052 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001053fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001054
Neal Norwitz020c46a2006-01-07 21:39:28 +00001055# disable check for icc since it seems to pass, but generates a warning
1056if test "$CC" = icc
1057then
1058 ac_cv_opt_olimit_ok=no
1059fi
1060
Guido van Rossum91922671997-10-09 20:24:13 +00001061AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1062AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1063[ac_save_cc="$CC"
1064CC="$CC -OPT:Olimit=0"
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001065AC_TRY_COMPILE([],[int main() { return 0; }],
Guido van Rossum91922671997-10-09 20:24:13 +00001066 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001067 ac_cv_opt_olimit_ok=no,
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001068 )
Guido van Rossum91922671997-10-09 20:24:13 +00001069CC="$ac_save_cc"])
1070AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001071if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001072 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001073 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1074 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1075 # environment?
1076 Darwin*)
1077 ;;
1078 *)
1079 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1080 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001081 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001082else
1083 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1084 AC_CACHE_VAL(ac_cv_olimit_ok,
1085 [ac_save_cc="$CC"
1086 CC="$CC -Olimit 1500"
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001087 AC_TRY_COMPILE([],[int main() { return 0; }],
Guido van Rossumf8678121998-07-07 21:05:09 +00001088 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001089 ac_cv_olimit_ok=no,
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001090 )
Guido van Rossumf8678121998-07-07 21:05:09 +00001091 CC="$ac_save_cc"])
1092 AC_MSG_RESULT($ac_cv_olimit_ok)
1093 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001094 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001095 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001096fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001097
Thomas Wouters89f507f2006-12-13 04:49:30 +00001098# Check whether GCC supports PyArg_ParseTuple format
1099if test "$GCC" = "yes"
1100then
1101 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1102 save_CFLAGS=$CFLAGS
1103 CFLAGS="$CFLAGS -Werror"
1104 AC_TRY_COMPILE([
1105 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1106 ],,
1107 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1108 AC_MSG_RESULT(yes),
1109 AC_MSG_RESULT(no)
1110 )
1111 CFLAGS=$save_CFLAGS
1112fi
1113
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001114# On some compilers, pthreads are available without further options
1115# (e.g. MacOS X). On some of these systems, the compiler will not
1116# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1117# So we have to see first whether pthreads are available without
1118# options before we can check whether -Kpthread improves anything.
1119AC_MSG_CHECKING(whether pthreads are available without options)
1120AC_CACHE_VAL(ac_cv_pthread_is_default,
1121[AC_TRY_RUN([
1122#include <pthread.h>
1123
1124void* routine(void* p){return NULL;}
1125
1126int main(){
1127 pthread_t p;
1128 if(pthread_create(&p,NULL,routine,NULL)!=0)
1129 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001130 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001131 return 0;
1132}
1133],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001134[
1135 ac_cv_pthread_is_default=yes
1136 ac_cv_kthread=no
1137 ac_cv_pthread=no
1138],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001139 ac_cv_pthread_is_default=no,
1140 ac_cv_pthread_is_default=no)
1141])
1142AC_MSG_RESULT($ac_cv_pthread_is_default)
1143
1144
1145if test $ac_cv_pthread_is_default = yes
1146then
1147 ac_cv_kpthread=no
1148else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001149# -Kpthread, if available, provides the right #defines
1150# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001151# Some compilers won't report that they do not support -Kpthread,
1152# so we need to run a program to see whether it really made the
1153# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001154AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1155AC_CACHE_VAL(ac_cv_kpthread,
1156[ac_save_cc="$CC"
1157CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001158AC_TRY_RUN([
1159#include <pthread.h>
1160
1161void* routine(void* p){return NULL;}
1162
1163int main(){
1164 pthread_t p;
1165 if(pthread_create(&p,NULL,routine,NULL)!=0)
1166 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001167 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001168 return 0;
1169}
1170],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001171 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001172 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001173 ac_cv_kpthread=no)
1174CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001175AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001176fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001177
Skip Montanarod8d39a02003-07-10 20:44:10 +00001178if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001179then
1180# -Kthread, if available, provides the right #defines
1181# and linker options to make pthread_create available
1182# Some compilers won't report that they do not support -Kthread,
1183# so we need to run a program to see whether it really made the
1184# function available.
1185AC_MSG_CHECKING(whether $CC accepts -Kthread)
1186AC_CACHE_VAL(ac_cv_kthread,
1187[ac_save_cc="$CC"
1188CC="$CC -Kthread"
1189AC_TRY_RUN([
1190#include <pthread.h>
1191
1192void* routine(void* p){return NULL;}
1193
1194int main(){
1195 pthread_t p;
1196 if(pthread_create(&p,NULL,routine,NULL)!=0)
1197 return 1;
1198 (void)pthread_detach(p);
1199 return 0;
1200}
1201],
1202 ac_cv_kthread=yes,
1203 ac_cv_kthread=no,
1204 ac_cv_kthread=no)
1205CC="$ac_save_cc"])
1206AC_MSG_RESULT($ac_cv_kthread)
1207fi
1208
Skip Montanarod8d39a02003-07-10 20:44:10 +00001209if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001210then
1211# -pthread, if available, provides the right #defines
1212# and linker options to make pthread_create available
1213# Some compilers won't report that they do not support -pthread,
1214# so we need to run a program to see whether it really made the
1215# function available.
1216AC_MSG_CHECKING(whether $CC accepts -pthread)
1217AC_CACHE_VAL(ac_cv_thread,
1218[ac_save_cc="$CC"
1219CC="$CC -pthread"
1220AC_TRY_RUN([
1221#include <pthread.h>
1222
1223void* routine(void* p){return NULL;}
1224
1225int main(){
1226 pthread_t p;
1227 if(pthread_create(&p,NULL,routine,NULL)!=0)
1228 return 1;
1229 (void)pthread_detach(p);
1230 return 0;
1231}
1232],
1233 ac_cv_pthread=yes,
1234 ac_cv_pthread=no,
1235 ac_cv_pthread=no)
1236CC="$ac_save_cc"])
1237AC_MSG_RESULT($ac_cv_pthread)
1238fi
1239
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001240# If we have set a CC compiler flag for thread support then
1241# check if it works for CXX, too.
1242ac_cv_cxx_thread=no
1243if test ! -z "$CXX"
1244then
1245AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1246ac_save_cxx="$CXX"
1247
1248if test "$ac_cv_kpthread" = "yes"
1249then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001250 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001251 ac_cv_cxx_thread=yes
1252elif test "$ac_cv_kthread" = "yes"
1253then
1254 CXX="$CXX -Kthread"
1255 ac_cv_cxx_thread=yes
1256elif test "$ac_cv_pthread" = "yes"
1257then
1258 CXX="$CXX -pthread"
1259 ac_cv_cxx_thread=yes
1260fi
1261
1262if test $ac_cv_cxx_thread = yes
1263then
1264 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1265 $CXX -c conftest.$ac_ext 2>&5
1266 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1267 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1268 then
1269 ac_cv_cxx_thread=yes
1270 else
1271 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001272 fi
1273 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001274fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001275AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001276fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001277CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001278
Fred Drakece81d592000-07-09 14:39:29 +00001279dnl # check for ANSI or K&R ("traditional") preprocessor
1280dnl AC_MSG_CHECKING(for C preprocessor type)
1281dnl AC_TRY_COMPILE([
1282dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1283dnl int foo;
1284dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1285dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1286dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001287
Guido van Rossum627b2d71993-12-24 10:39:16 +00001288# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001289AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001290AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1291fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001292ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001293shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001294unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001295sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1296sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001297sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Georg Brandlf78e02b2008-06-10 17:40:04 +00001298sys/termio.h sys/time.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001299sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001300sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Ronald Oussoren755740f2010-02-07 19:56:39 +00001301bluetooth/bluetooth.h linux/tipc.h spawn.h util.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001302AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001303AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001304
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001305# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001306AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001307#ifdef HAVE_CURSES_H
1308#include <curses.h>
1309#endif
1310])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001311
Martin v. Löwis11017b12006-01-14 18:12:57 +00001312# On Linux, netlink.h requires asm/types.h
1313AC_CHECK_HEADERS(linux/netlink.h,,,[
1314#ifdef HAVE_ASM_TYPES_H
1315#include <asm/types.h>
1316#endif
1317#ifdef HAVE_SYS_SOCKET_H
1318#include <sys/socket.h>
1319#endif
1320])
1321
Guido van Rossum627b2d71993-12-24 10:39:16 +00001322# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001323was_it_defined=no
1324AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001325AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1326 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1327])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001328AC_MSG_RESULT($was_it_defined)
1329
Neal Norwitz11690112002-07-30 01:08:28 +00001330# Check whether using makedev requires defining _OSF_SOURCE
1331AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001332AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001333 [ makedev(0, 0) ],
1334 ac_cv_has_makedev=yes,
1335 ac_cv_has_makedev=no)
1336if test "$ac_cv_has_makedev" = "no"; then
1337 # we didn't link, try if _OSF_SOURCE will allow us to link
1338 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001339#define _OSF_SOURCE 1
1340#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001341 ],
1342 [ makedev(0, 0) ],
1343 ac_cv_has_makedev=yes,
1344 ac_cv_has_makedev=no)
1345 if test "$ac_cv_has_makedev" = "yes"; then
1346 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1347 fi
1348fi
1349AC_MSG_RESULT($ac_cv_has_makedev)
1350if test "$ac_cv_has_makedev" = "yes"; then
1351 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1352fi
1353
Martin v. Löwis399a6892002-10-04 10:22:02 +00001354# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1355# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1356# defined, but the compiler does not support pragma redefine_extname,
1357# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1358# structures (such as rlimit64) without declaring them. As a
1359# work-around, disable LFS on such configurations
1360
1361use_lfs=yes
1362AC_MSG_CHECKING(Solaris LFS bug)
1363AC_TRY_COMPILE([
1364#define _LARGEFILE_SOURCE 1
1365#define _FILE_OFFSET_BITS 64
1366#include <sys/resource.h>
1367],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1368AC_MSG_RESULT($sol_lfs_bug)
1369if test "$sol_lfs_bug" = "yes"; then
1370 use_lfs=no
1371fi
1372
1373if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001374# Two defines needed to enable largefile support on various platforms
1375# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001376AC_DEFINE(_LARGEFILE_SOURCE, 1,
1377[This must be defined on some systems to enable large file support.])
1378AC_DEFINE(_FILE_OFFSET_BITS, 64,
1379[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001380fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001381
Guido van Rossum300fda71996-08-19 21:58:16 +00001382# Add some code to confdefs.h so that the test for off_t works on SCO
1383cat >> confdefs.h <<\EOF
1384#if defined(SCO_DS)
1385#undef _OFF_T
1386#endif
1387EOF
1388
Guido van Rossumef2255b2000-03-10 22:30:29 +00001389# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001390AC_TYPE_MODE_T
1391AC_TYPE_OFF_T
1392AC_TYPE_PID_T
1393AC_TYPE_SIGNAL
1394AC_TYPE_SIZE_T
1395AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001396AC_TYPE_UINT32_T
1397AC_TYPE_UINT64_T
1398AC_TYPE_INT32_T
1399AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001400AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001401 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001402
Guido van Rossumef2255b2000-03-10 22:30:29 +00001403# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001404# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001405AC_CHECK_SIZEOF(int, 4)
1406AC_CHECK_SIZEOF(long, 4)
1407AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001408AC_CHECK_SIZEOF(short, 2)
1409AC_CHECK_SIZEOF(float, 4)
1410AC_CHECK_SIZEOF(double, 8)
1411AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001412AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001413AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001414
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001415AC_MSG_CHECKING(for long long support)
1416have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001417AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1418 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1419 have_long_long=yes
1420])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001421AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001422if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001423AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001424fi
1425
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001426AC_MSG_CHECKING(for long double support)
1427have_long_double=no
1428AC_TRY_COMPILE([], [long double x; x = (long double)0;], [
1429 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1430 have_long_double=yes
1431])
1432AC_MSG_RESULT($have_long_double)
1433if test "$have_long_double" = yes ; then
1434AC_CHECK_SIZEOF(long double, 16)
1435fi
1436
1437
Thomas Woutersb2137042007-02-01 18:02:27 +00001438AC_MSG_CHECKING(for _Bool support)
1439have_c99_bool=no
1440AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1441 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1442 have_c99_bool=yes
1443])
1444AC_MSG_RESULT($have_c99_bool)
1445if test "$have_c99_bool" = yes ; then
1446AC_CHECK_SIZEOF(_Bool, 1)
1447fi
1448
Thomas Wouters89f507f2006-12-13 04:49:30 +00001449AC_CHECK_TYPES(uintptr_t,
1450 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1451 [], [#ifdef HAVE_STDINT_H
1452 #include <stdint.h>
1453 #endif])
1454
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001455AC_CHECK_SIZEOF(off_t, [], [
1456#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001457#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001458#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001459])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001460
1461AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson2df5d282009-12-31 21:22:50 +00001462if test "$have_long_long" = yes
1463then
1464if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001465 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001466 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1467 [Defined to enable large file support when an off_t is bigger than a long
1468 and long long is available and at least as big as an off_t. You may need
1469 to add some flags for configuration and compilation to enable this mode.
1470 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001471 AC_MSG_RESULT(yes)
1472else
1473 AC_MSG_RESULT(no)
1474fi
Mark Dickinson2df5d282009-12-31 21:22:50 +00001475else
1476 AC_MSG_RESULT(no)
1477fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001478
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001479AC_CHECK_SIZEOF(time_t, [], [
1480#ifdef HAVE_SYS_TYPES_H
1481#include <sys/types.h>
1482#endif
1483#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00001484#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001485#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001486])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001487
Trent Mick635f6fb2000-08-23 21:33:05 +00001488# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001489ac_save_cc="$CC"
1490if test "$ac_cv_kpthread" = "yes"
1491then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001492elif test "$ac_cv_kthread" = "yes"
1493then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001494elif test "$ac_cv_pthread" = "yes"
1495then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001496fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001497
Trent Mick635f6fb2000-08-23 21:33:05 +00001498AC_MSG_CHECKING(for pthread_t)
1499have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001500AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001501AC_MSG_RESULT($have_pthread_t)
1502if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001503 AC_CHECK_SIZEOF(pthread_t, [], [
1504#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001505#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001506#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001507 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001508fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001509CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001510
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001511AC_SUBST(OTHER_LIBTOOL_OPT)
1512case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001513 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001514 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1515 ;;
1516 Darwin/*)
1517 OTHER_LIBTOOL_OPT=""
1518 ;;
1519esac
1520
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001521
1522ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001523AC_SUBST(LIBTOOL_CRUFT)
1524case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001525 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001526 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1527 if test "${enable_universalsdk}"; then
1528 :
1529 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001530 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001531 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001532 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001533 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001534 Darwin/*)
Ronald Oussoren9812a6c2010-02-07 11:53:18 +00001535 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001536 if test ${gcc_version} '<' 4.0
1537 then
1538 LIBTOOL_CRUFT="-lcc_dynamic"
1539 else
1540 LIBTOOL_CRUFT=""
1541 fi
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001542 AC_TRY_RUN([
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001543 #include <unistd.h>
1544 int main(int argc, char*argv[])
1545 {
1546 if (sizeof(long) == 4) {
1547 return 0;
1548 } else {
1549 return 1;
1550 }
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001551 }
1552 ], ac_osx_32bit=yes,
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001553 ac_osx_32bit=no,
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001554 ac_osx_32bit=yes)
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001555
1556 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001557 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001558 i386)
1559 MACOSX_DEFAULT_ARCH="i386"
1560 ;;
1561 ppc)
1562 MACOSX_DEFAULT_ARCH="ppc"
1563 ;;
1564 *)
1565 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1566 ;;
1567 esac
1568 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001569 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001570 i386)
1571 MACOSX_DEFAULT_ARCH="x86_64"
1572 ;;
1573 ppc)
1574 MACOSX_DEFAULT_ARCH="ppc64"
1575 ;;
1576 *)
1577 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1578 ;;
1579 esac
1580
1581 #ARCH_RUN_32BIT="true"
1582 fi
1583
1584 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001585 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001586 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001587esac
1588
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001589AC_MSG_CHECKING(for --enable-framework)
1590if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001591then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001592 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001593 # -F. is needed to allow linking to the framework while
1594 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001595 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1596 [Define if you want to produce an OpenStep/Rhapsody framework
1597 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001598 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001599 if test $enable_shared = "yes"
1600 then
1601 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1602 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001603else
1604 AC_MSG_RESULT(no)
1605fi
1606
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001607AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001608case $ac_sys_system/$ac_sys_release in
1609 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001610 AC_DEFINE(WITH_DYLD, 1,
1611 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1612 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1613 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001614 AC_MSG_RESULT(always on for Darwin)
1615 ;;
1616 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001617 AC_MSG_RESULT(no)
1618 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001619esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001620
Guido van Rossumac405f61994-09-12 10:56:06 +00001621# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001622AC_SUBST(SO)
1623AC_SUBST(LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001624AC_SUBST(LDCXXSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001625AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001626AC_SUBST(CCSHARED)
1627AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001628# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001629# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001630AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001631if test -z "$SO"
1632then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001633 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001634 hp*|HP*)
1635 case `uname -m` in
1636 ia64) SO=.so;;
1637 *) SO=.sl;;
1638 esac
1639 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001640 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001641 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001642 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001643else
1644 # this might also be a termcap variable, see #610332
1645 echo
1646 echo '====================================================================='
1647 echo '+ +'
1648 echo '+ WARNING: You have set SO in your environment. +'
1649 echo '+ Do you really mean to change the extension for shared libraries? +'
1650 echo '+ Continuing in 10 seconds to let you to ponder. +'
1651 echo '+ +'
1652 echo '====================================================================='
1653 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001654fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001655AC_MSG_RESULT($SO)
Georg Brandlb1441c72009-01-03 22:33:39 +00001656
Thomas Wouters477c8d52006-05-27 19:21:47 +00001657AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001658# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001659# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001660# (Shared libraries in this instance are shared modules to be loaded into
1661# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001662AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001663if test -z "$LDSHARED"
1664then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001665 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001666 AIX*)
1667 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001668 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001669 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001670 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001671 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001672 SunOS/5*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001673 if test "$GCC" = "yes" ; then
1674 LDSHARED='$(CC) -shared'
1675 LDCXXSHARED='$(CXX) -shared'
1676 else
1677 LDSHARED='$(CC) -G'
1678 LDCXXSHARED='$(CXX) -G'
Greg Ward57c9a6632000-05-26 12:22:54 +00001679 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001680 hp*|HP*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001681 if test "$GCC" = "yes" ; then
1682 LDSHARED='$(CC) -shared'
1683 LDCXXSHARED='$(CXX) -shared'
1684 else
1685 LDSHARED='ld -b'
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001686 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001687 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001688 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001689 LDSHARED='$(CC) $(LDFLAGS) -bundle'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001690 LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle'
Jack Jansena3891ea2001-09-07 14:25:12 +00001691 if test "$enable_framework" ; then
1692 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001693 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1694 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001695 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001696 else
1697 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001698 LDSHARED="$LDSHARED -undefined suppress"
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001699 LDCXXSHARED="$LDCXXSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001700 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001701 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001702 LDSHARED='$(CC) $(LDFLAGS) -bundle'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001703 LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001704 if test "$enable_framework" ; then
1705 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001706 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1707 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001708 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001709 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001710 # No framework, use the Python app as bundle-loader
1711 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001712 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001713 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001714 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001715 Darwin/*)
1716 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1717 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001718
Georg Brandlfcaf9102008-07-16 02:17:56 +00001719 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001720 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001721 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001722 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001723 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001724 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001725 LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle -undefined dynamic_lookup'
Jack Jansen6b08a402004-06-03 12:41:45 +00001726 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001727 else
1728 LDSHARED='$(CC) $(LDFLAGS) -bundle'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001729 LDCXXSHARED='$(CXX) $(LDFLAGS) -bundle'
Jack Jansen6b08a402004-06-03 12:41:45 +00001730 if test "$enable_framework" ; then
1731 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001732 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1733 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001734 LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001735 else
1736 # No framework, use the Python app as bundle-loader
1737 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1738 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001739 LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001740 fi
1741 fi
1742 ;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001743 Linux*|GNU*|QNX*)
1744 LDSHARED='$(CC) -shared'
1745 LDCXXSHARED='$(CXX) -shared';;
1746 BSD/OS*/4*)
1747 LDSHARED="gcc -shared"
1748 LDCXXSHARED="g++ -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001749 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001750 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001751 then
Benjamin Petersonab0a7522010-03-14 15:18:25 +00001752 LDSHARED='$(CC) -shared ${LDFLAGS}'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001753 LDCXXSHARED='$(CXX) -shared ${LDFLAGS}'
Guido van Rossum0286ae82000-08-29 15:06:49 +00001754 else
1755 LDSHARED="ld -Bshareable ${LDFLAGS}"
1756 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001757 OpenBSD*)
1758 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1759 then
1760 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001761 LDCXXSHARED='$(CXX) -shared $(CCSHARED) ${LDFLAGS}'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001762 else
1763 case `uname -r` in
1764 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1765 LDSHARED="ld -Bshareable ${LDFLAGS}"
1766 ;;
1767 *)
1768 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001769 LDCXXSHARED='$(CXX) -shared $(CCSHARED) ${LDFLAGS}'
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001770 ;;
1771 esac
1772 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001773 NetBSD*|DragonFly*)
1774 LDSHARED="cc -shared ${LDFLAGS}"
1775 LDCXXSHARED="c++ -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001776 OpenUNIX*|UnixWare*)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001777 if test "$GCC" = "yes" ; then
1778 LDSHARED='$(CC) -shared'
1779 LDCXXSHARED='$(CXX) -shared'
1780 else
1781 LDSHARED='$(CC) -G'
1782 LDCXXSHARED='$(CXX) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001783 fi;;
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001784 SCO_SV*)
1785 LDSHARED='$(CC) -Wl,-G,-Bexport'
1786 LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
1787 CYGWIN*)
1788 LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
1789 LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001790 *) LDSHARED="ld";;
1791 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001792fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001793AC_MSG_RESULT($LDSHARED)
Tarek Ziadé03d788d2010-04-03 08:46:49 +00001794LDCXXSHARED=${LDCXXSHARED-$LDSHARED}
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001795BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001796# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001797# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001798AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001799if test -z "$CCSHARED"
1800then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001801 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001802 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001803 then CCSHARED="-fPIC";
1804 elif test `uname -p` = sparc;
1805 then CCSHARED="-xcode=pic32";
1806 else CCSHARED="-Kpic";
1807 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001808 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001809 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001810 else CCSHARED="+z";
1811 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001812 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001813 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001814 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001815 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001816 if test "$GCC" = "yes"
1817 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001818 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001819 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001820 SCO_SV*)
1821 if test "$GCC" = "yes"
1822 then CCSHARED="-fPIC"
1823 else CCSHARED="-Kpic -belf"
1824 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001825 IRIX*/6*) case $CC in
1826 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001827 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001828 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001829 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001830fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001831AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001832# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001833# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001834AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001835if test -z "$LINKFORSHARED"
1836then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001837 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001838 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001839 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001840 LINKFORSHARED="-Wl,-E -Wl,+s";;
1841# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001842 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001843 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001844 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001845 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00001846 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001847 if test "$enable_framework"
1848 then
Jack Jansenda49e192005-01-07 13:08:22 +00001849 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001850 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001851 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001852 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001853 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001854 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001855 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001856 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1857 then
1858 LINKFORSHARED="-Wl,--export-dynamic"
1859 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001860 SunOS/5*) case $CC in
1861 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001862 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001863 then
1864 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001865 fi;;
1866 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001867 CYGWIN*)
1868 if test $enable_shared = "no"
1869 then
1870 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1871 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001872 QNX*)
1873 # -Wl,-E causes the symbols to be added to the dynamic
1874 # symbol table so that they can be found when a module
1875 # is loaded. -N 2048K causes the stack size to be set
1876 # to 2048 kilobytes so that the stack doesn't overflow
1877 # when running test_compile.py.
1878 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001879 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001880fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001881AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001882
Georg Brandl93de2162008-07-16 02:21:06 +00001883
Neil Schemenauer61c51152001-01-26 16:18:16 +00001884AC_SUBST(CFLAGSFORSHARED)
1885AC_MSG_CHECKING(CFLAGSFORSHARED)
1886if test ! "$LIBRARY" = "$LDLIBRARY"
1887then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001888 case $ac_sys_system in
1889 CYGWIN*)
1890 # Cygwin needs CCSHARED when building extension DLLs
1891 # but not when building the interpreter DLL.
1892 CFLAGSFORSHARED='';;
1893 *)
1894 CFLAGSFORSHARED='$(CCSHARED)'
1895 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001896fi
1897AC_MSG_RESULT($CFLAGSFORSHARED)
1898
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001899# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1900# library (with --enable-shared).
1901# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001902# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1903# if it is not required, since it creates a dependency of the shared library
1904# to LIBS. This, in turn, means that applications linking the shared libpython
1905# don't need to link LIBS explicitly. The default should be only changed
1906# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001907AC_SUBST(SHLIBS)
1908AC_MSG_CHECKING(SHLIBS)
1909case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001910 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001911 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001912esac
1913AC_MSG_RESULT($SHLIBS)
1914
1915
Guido van Rossum627b2d71993-12-24 10:39:16 +00001916# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001917AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1918AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001919
Georg Brandleee31162008-12-07 15:15:22 +00001920# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001921if test "$with_threads" = "yes" -o -z "$with_threads"; then
1922 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1923 # posix4 on Solaris 2.6
1924 # pthread (first!) on Linux
1925fi
1926
Martin v. Löwis19d17342003-06-14 21:03:05 +00001927# check if we need libintl for locale functions
1928AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00001929 [AC_DEFINE(WITH_LIBINTL, 1,
1930 [Define to 1 if libintl is needed for locale functions.])
1931 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001932
1933# checks for system dependent C++ extensions support
1934case "$ac_sys_system" in
1935 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1936 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1937 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001938 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1939 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1940 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001941 AC_MSG_RESULT(yes)],
1942 [AC_MSG_RESULT(no)]);;
1943 *) ;;
1944esac
1945
Guido van Rossum70c7f481998-03-26 18:44:10 +00001946# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001947AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001948AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001949
Guido van Rossumc5a39031996-07-31 17:35:03 +00001950AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001951AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001952 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1953[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001954AC_MSG_RESULT($withval)
1955LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001956],
1957[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001958
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00001959AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
1960
Benjamin Petersonb2d90462009-12-31 03:23:10 +00001961# Check for use of the system expat library
1962AC_MSG_CHECKING(for --with-system-expat)
1963AC_ARG_WITH(system_expat,
1964 AC_HELP_STRING(--with-system-expat, build pyexpat module using an installed expat library))
1965
1966AC_MSG_RESULT($with_system_expat)
1967
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001968# Check for use of the system libffi library
1969AC_MSG_CHECKING(for --with-system-ffi)
1970AC_ARG_WITH(system_ffi,
1971 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1972
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00001973if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
Benjamin Petersond78735d2010-01-01 16:04:23 +00001974 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
1975else
1976 LIBFFI_INCLUDEDIR=""
1977fi
1978AC_SUBST(LIBFFI_INCLUDEDIR)
1979
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001980AC_MSG_RESULT($with_system_ffi)
1981
Matthias Klose55708cc2009-04-30 08:06:49 +00001982# Check for --with-dbmliborder
1983AC_MSG_CHECKING(for --with-dbmliborder)
1984AC_ARG_WITH(dbmliborder,
1985 AC_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'.]),
1986[
1987if test x$with_dbmliborder = xyes
1988then
1989AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1990else
1991 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
1992 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
1993 then
1994 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1995 fi
1996 done
1997fi])
1998AC_MSG_RESULT($with_dbmliborder)
1999
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002000# Determine if signalmodule should be used.
2001AC_SUBST(USE_SIGNAL_MODULE)
2002AC_SUBST(SIGNAL_OBJS)
2003AC_MSG_CHECKING(for --with-signal-module)
2004AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002005 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002006
2007if test -z "$with_signal_module"
2008then with_signal_module="yes"
2009fi
2010AC_MSG_RESULT($with_signal_module)
2011
2012if test "${with_signal_module}" = "yes"; then
2013 USE_SIGNAL_MODULE=""
2014 SIGNAL_OBJS=""
2015else
2016 USE_SIGNAL_MODULE="#"
2017 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2018fi
2019
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002020# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002021AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002022USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002023
Guido van Rossum54d93d41997-01-22 20:51:58 +00002024AC_MSG_CHECKING(for --with-dec-threads)
2025AC_SUBST(LDLAST)
2026AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002027 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
2028[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002029AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002030LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00002031if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00002032 with_thread="$withval";
2033fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002034[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00002035
Martin v. Löwis11437992002-04-12 09:54:03 +00002036# Templates for things AC_DEFINEd more than once.
2037# For a single AC_DEFINE, no template is needed.
2038AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
2039AH_TEMPLATE(_REENTRANT,
2040 [Define to force use of thread-safe errno, h_errno, and other functions])
2041AH_TEMPLATE(WITH_THREAD,
2042 [Define if you want to compile in rudimentary thread support])
2043
Guido van Rossum54d93d41997-01-22 20:51:58 +00002044AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002045dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002046AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002047 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002048
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002049# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002050dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002051AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002052 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
2053 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002054
2055if test -z "$with_threads"
2056then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002057fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002058AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002059
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002060AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002061if test "$with_threads" = "no"
2062then
2063 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002064elif test "$ac_cv_pthread_is_default" = yes
2065then
2066 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002067 # Defining _REENTRANT on system with POSIX threads should not hurt.
2068 AC_DEFINE(_REENTRANT)
2069 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002070 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002071elif test "$ac_cv_kpthread" = "yes"
2072then
2073 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002074 if test "$ac_cv_cxx_thread" = "yes"; then
2075 CXX="$CXX -Kpthread"
2076 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002077 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002078 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002079 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002080elif test "$ac_cv_kthread" = "yes"
2081then
2082 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002083 if test "$ac_cv_cxx_thread" = "yes"; then
2084 CXX="$CXX -Kthread"
2085 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002086 AC_DEFINE(WITH_THREAD)
2087 posix_threads=yes
2088 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002089elif test "$ac_cv_pthread" = "yes"
2090then
2091 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002092 if test "$ac_cv_cxx_thread" = "yes"; then
2093 CXX="$CXX -pthread"
2094 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002095 AC_DEFINE(WITH_THREAD)
2096 posix_threads=yes
2097 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002098else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002099 if test ! -z "$with_threads" -a -d "$with_threads"
2100 then LDFLAGS="$LDFLAGS -L$with_threads"
2101 fi
2102 if test ! -z "$withval" -a -d "$withval"
2103 then LDFLAGS="$LDFLAGS -L$withval"
2104 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002105
2106 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002107 # define _POSIX_THREADS in unistd.h. Some apparently don't
2108 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002109 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2110 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002111 [
2112#include <unistd.h>
2113#ifdef _POSIX_THREADS
2114yes
2115#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002116 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2117 AC_MSG_RESULT($unistd_defines_pthreads)
2118
Martin v. Löwis130fb172001-07-19 11:00:41 +00002119 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002120 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2121 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002122 AC_DEFINE(HURD_C_THREADS, 1,
2123 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002124 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002125 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002126 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2127 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002128 AC_DEFINE(MACH_C_THREADS, 1,
2129 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002130 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002131 # Just looking for pthread_create in libpthread is not enough:
2132 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2133 # So we really have to include pthread.h, and then link.
2134 _libs=$LIBS
2135 LIBS="$LIBS -lpthread"
2136 AC_MSG_CHECKING([for pthread_create in -lpthread])
2137 AC_TRY_LINK([#include <pthread.h>
2138
2139void * start_routine (void *arg) { exit (0); }], [
2140pthread_create (NULL, NULL, start_routine, NULL)], [
2141 AC_MSG_RESULT(yes)
2142 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002143 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002144 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002145 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002146 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002147 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002148 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002149 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002150 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002151 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002152 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002153 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002154 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002155 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002156 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002157 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002158 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002159 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002160 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002161 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002162 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002163 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002164 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002165 USE_THREAD_MODULE="#"])
Antoine Pitroudb6c5672009-10-24 20:35:52 +00002166 ])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002167
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002168 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2169 LIBS="$LIBS -lmpc"
2170 THREADOBJ="Python/thread.o"
2171 USE_THREAD_MODULE=""])
2172
2173 if test "$posix_threads" != "yes"; then
2174 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2175 LIBS="$LIBS -lthread"
2176 THREADOBJ="Python/thread.o"
2177 USE_THREAD_MODULE=""])
2178 fi
2179
2180 if test "$USE_THREAD_MODULE" != "#"
2181 then
2182 # If the above checks didn't disable threads, (at least) OSF1
2183 # needs this '-threads' argument during linking.
2184 case $ac_sys_system in
2185 OSF1) LDLAST=-threads;;
2186 esac
2187 fi
2188fi
2189
2190if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002191 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002192 AC_DEFINE(_POSIX_THREADS, 1,
2193 [Define if you have POSIX threads,
2194 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002195 fi
2196
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002197 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2198 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002199 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2200 Defined for Solaris 2.6 bug in pthread header.)
2201 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002202 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002203 Define if the Posix semaphores do not work on your system)
2204 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002205 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2206 Define if the Posix semaphores do not work on your system)
2207 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002208 esac
2209
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002210 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2211 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2212 [AC_TRY_RUN([#include <pthread.h>
2213 void *foo(void *parm) {
2214 return NULL;
2215 }
2216 main() {
2217 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002218 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002219 if (pthread_attr_init(&attr)) exit(-1);
2220 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002221 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002222 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002223 }],
2224 ac_cv_pthread_system_supported=yes,
2225 ac_cv_pthread_system_supported=no,
2226 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002227 ])
2228 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2229 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002230 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002231 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002232 AC_CHECK_FUNCS(pthread_sigmask,
2233 [case $ac_sys_system in
2234 CYGWIN*)
2235 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2236 [Define if pthread_sigmask() does not work on your system.])
2237 ;;
2238 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002239fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002240
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002241
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002242# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002243AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002244AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002245AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002246[ --enable-ipv6 Enable ipv6 (with ipv4) support
2247 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002248[ case "$enableval" in
2249 no)
2250 AC_MSG_RESULT(no)
2251 ipv6=no
2252 ;;
2253 *) AC_MSG_RESULT(yes)
2254 AC_DEFINE(ENABLE_IPV6)
2255 ipv6=yes
2256 ;;
2257 esac ],
2258
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002259[
2260dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002261 AC_TRY_RUN([ /* AF_INET6 available check */
2262#include <sys/types.h>
2263#include <sys/socket.h>
2264main()
2265{
2266 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2267 exit(1);
2268 else
2269 exit(0);
2270}
2271],
2272 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002273 ipv6=yes,
2274 AC_MSG_RESULT(no)
2275 ipv6=no,
2276 AC_MSG_RESULT(no)
2277 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002278)
2279
2280if test "$ipv6" = "yes"; then
2281 AC_MSG_CHECKING(if RFC2553 API is available)
2282 AC_TRY_COMPILE([#include <sys/types.h>
2283#include <netinet/in.h>],
2284 [struct sockaddr_in6 x;
2285x.sin6_scope_id;],
2286 AC_MSG_RESULT(yes)
2287 ipv6=yes,
2288 AC_MSG_RESULT(no, IPv6 disabled)
2289 ipv6=no)
2290fi
2291
2292if test "$ipv6" = "yes"; then
2293 AC_DEFINE(ENABLE_IPV6)
2294fi
2295])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002296
2297ipv6type=unknown
2298ipv6lib=none
2299ipv6trylibc=no
2300
2301if test "$ipv6" = "yes"; then
2302 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002303 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2304 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002305 case $i in
2306 inria)
2307 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002308 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002309#include <netinet/in.h>
2310#ifdef IPV6_INRIA_VERSION
2311yes
2312#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002313 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002314 ;;
2315 kame)
2316 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002317 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002318#include <netinet/in.h>
2319#ifdef __KAME__
2320yes
2321#endif],
2322 [ipv6type=$i;
2323 ipv6lib=inet6
2324 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002325 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002326 ;;
2327 linux-glibc)
2328 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002329 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002330#include <features.h>
2331#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2332yes
2333#endif],
2334 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002335 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002336 ;;
2337 linux-inet6)
2338 dnl http://www.v6.linux.or.jp/
2339 if test -d /usr/inet6; then
2340 ipv6type=$i
2341 ipv6lib=inet6
2342 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002343 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002344 fi
2345 ;;
2346 solaris)
2347 if test -f /etc/netconfig; then
2348 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2349 ipv6type=$i
2350 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002351 fi
2352 fi
2353 ;;
2354 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002355 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002356#include <sys/param.h>
2357#ifdef _TOSHIBA_INET6
2358yes
2359#endif],
2360 [ipv6type=$i;
2361 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002362 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002363 ;;
2364 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002365 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002366#include </usr/local/v6/include/sys/v6config.h>
2367#ifdef __V6D__
2368yes
2369#endif],
2370 [ipv6type=$i;
2371 ipv6lib=v6;
2372 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002373 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002374 ;;
2375 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002376 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002377#include <sys/param.h>
2378#ifdef _ZETA_MINAMI_INET6
2379yes
2380#endif],
2381 [ipv6type=$i;
2382 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002383 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002384 ;;
2385 esac
2386 if test "$ipv6type" != "unknown"; then
2387 break
2388 fi
2389 done
2390 AC_MSG_RESULT($ipv6type)
2391fi
2392
2393if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2394 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2395 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2396 echo "using lib$ipv6lib"
2397 else
2398 if test $ipv6trylibc = "yes"; then
2399 echo "using libc"
2400 else
2401 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2402 echo "You need to fetch lib$ipv6lib.a from appropriate"
2403 echo 'ipv6 kit and compile beforehand.'
2404 exit 1
2405 fi
2406 fi
2407fi
2408
Georg Brandl93de2162008-07-16 02:21:06 +00002409AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2410AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2411 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2412 AC_MSG_RESULT(yes),
2413 AC_MSG_RESULT(no)
2414)
2415
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002416# Check for --with-doc-strings
2417AC_MSG_CHECKING(for --with-doc-strings)
2418AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002419 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002420
2421if test -z "$with_doc_strings"
2422then with_doc_strings="yes"
2423fi
2424if test "$with_doc_strings" != "no"
2425then
2426 AC_DEFINE(WITH_DOC_STRINGS, 1,
2427 [Define if you want documentation strings in extension modules])
2428fi
2429AC_MSG_RESULT($with_doc_strings)
2430
Neil Schemenauera35c6882001-02-27 04:45:05 +00002431# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002432AC_MSG_CHECKING(for --with-tsc)
2433AC_ARG_WITH(tsc,
2434[ --with(out)-tsc enable/disable timestamp counter profile], [
2435if test "$withval" != no
2436then
2437 AC_DEFINE(WITH_TSC, 1,
2438 [Define to profile with the Pentium timestamp counter])
2439 AC_MSG_RESULT(yes)
2440else AC_MSG_RESULT(no)
2441fi],
2442[AC_MSG_RESULT(no)])
2443
2444# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002445AC_MSG_CHECKING(for --with-pymalloc)
2446AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002447 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002448
2449if test -z "$with_pymalloc"
2450then with_pymalloc="yes"
2451fi
2452if test "$with_pymalloc" != "no"
2453then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002454 AC_DEFINE(WITH_PYMALLOC, 1,
2455 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002456fi
2457AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002458
Benjamin Peterson05159c42009-12-03 03:01:27 +00002459# Check for Valgrind support
2460AC_MSG_CHECKING([for --with-valgrind])
2461AC_ARG_WITH([valgrind],
2462 AC_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
2463 with_valgrind=no)
2464AC_MSG_RESULT([$with_valgrind])
2465if test "$with_valgrind" != no; then
2466 AC_CHECK_HEADER([valgrind/valgrind.h],
2467 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
2468 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
2469 )
2470fi
2471
Barry Warsawef82cd72000-06-30 16:21:01 +00002472# Check for --with-wctype-functions
2473AC_MSG_CHECKING(for --with-wctype-functions)
2474AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002475 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2476[
Barry Warsawef82cd72000-06-30 16:21:01 +00002477if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002478then
2479 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2480 [Define if you want wctype.h functions to be used instead of the
2481 one supplied by Python itself. (see Include/unicodectype.h).])
2482 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002483else AC_MSG_RESULT(no)
2484fi],
2485[AC_MSG_RESULT(no)])
2486
Guido van Rossum68242b51996-05-28 22:53:03 +00002487# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002488AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002489DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002490
Guido van Rossume97ee181999-12-20 21:27:22 +00002491# the dlopen() function means we might want to use dynload_shlib.o. some
2492# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002493AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002494
2495# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2496# loading of modules.
2497AC_SUBST(DYNLOADFILE)
2498AC_MSG_CHECKING(DYNLOADFILE)
2499if test -z "$DYNLOADFILE"
2500then
2501 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002502 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2503 if test "$ac_cv_func_dlopen" = yes
2504 then DYNLOADFILE="dynload_shlib.o"
2505 else DYNLOADFILE="dynload_aix.o"
2506 fi
2507 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002508 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002509 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2510 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002511 *)
2512 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2513 # out any dynamic loading
2514 if test "$ac_cv_func_dlopen" = yes
2515 then DYNLOADFILE="dynload_shlib.o"
2516 else DYNLOADFILE="dynload_stub.o"
2517 fi
2518 ;;
2519 esac
2520fi
2521AC_MSG_RESULT($DYNLOADFILE)
2522if test "$DYNLOADFILE" != "dynload_stub.o"
2523then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002524 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2525 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002526fi
2527
Jack Jansenc49e5b72001-06-19 15:00:23 +00002528# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2529
2530AC_SUBST(MACHDEP_OBJS)
2531AC_MSG_CHECKING(MACHDEP_OBJS)
2532if test -z "$MACHDEP_OBJS"
2533then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002534 MACHDEP_OBJS=$extra_machdep_objs
2535else
2536 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002537fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002538AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002539
Guido van Rossum627b2d71993-12-24 10:39:16 +00002540# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002541AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2542 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002543 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002544 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Antoine Pitroub7572f02009-12-02 20:46:48 +00002545 initgroups kill killpg lchmod lchown lstat mbrtowc mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002546 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002547 putenv readlink realpath \
Benjamin Peterson965ce872009-04-05 21:24:58 +00002548 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2549 setgid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002550 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setuid setvbuf \
2551 sigaction siginterrupt sigrelse snprintf strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002552 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis113a0852009-05-29 17:25:39 +00002553 truncate uname unsetenv utimes waitpid wait3 wait4 \
2554 wcscoll wcsftime wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002555
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002556# For some functions, having a definition is not sufficient, since
2557# we want to take their address.
2558AC_MSG_CHECKING(for chroot)
2559AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2560 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2561 AC_MSG_RESULT(yes),
2562 AC_MSG_RESULT(no)
2563)
2564AC_MSG_CHECKING(for link)
2565AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2566 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2567 AC_MSG_RESULT(yes),
2568 AC_MSG_RESULT(no)
2569)
2570AC_MSG_CHECKING(for symlink)
2571AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2572 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2573 AC_MSG_RESULT(yes),
2574 AC_MSG_RESULT(no)
2575)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002576AC_MSG_CHECKING(for fchdir)
2577AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2578 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2579 AC_MSG_RESULT(yes),
2580 AC_MSG_RESULT(no)
2581)
2582AC_MSG_CHECKING(for fsync)
2583AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002584 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002585 AC_MSG_RESULT(yes),
2586 AC_MSG_RESULT(no)
2587)
2588AC_MSG_CHECKING(for fdatasync)
2589AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2590 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2591 AC_MSG_RESULT(yes),
2592 AC_MSG_RESULT(no)
2593)
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002594AC_MSG_CHECKING(for epoll)
2595AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2596 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2597 AC_MSG_RESULT(yes),
2598 AC_MSG_RESULT(no)
2599)
2600AC_MSG_CHECKING(for kqueue)
2601AC_TRY_COMPILE([
2602#include <sys/types.h>
2603#include <sys/event.h>
2604 ], int x=kqueue(),
2605 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2606 AC_MSG_RESULT(yes),
2607 AC_MSG_RESULT(no)
2608)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002609# On some systems (eg. FreeBSD 5), we would find a definition of the
2610# functions ctermid_r, setgroups in the library, but no prototype
2611# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2612# address to avoid compiler warnings and potential miscompilations
2613# because of the missing prototypes.
2614
2615AC_MSG_CHECKING(for ctermid_r)
2616AC_TRY_COMPILE([
2617#include "confdefs.h"
2618#include <stdio.h>
2619], void* p = ctermid_r,
2620 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2621 AC_MSG_RESULT(yes),
2622 AC_MSG_RESULT(no)
2623)
2624
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002625AC_MSG_CHECKING(for flock)
2626AC_TRY_COMPILE([
2627#include "confdefs.h"
2628#include <sys/file.h>
2629], void* p = flock,
2630 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2631 AC_MSG_RESULT(yes),
2632 AC_MSG_RESULT(no)
2633)
2634
2635AC_MSG_CHECKING(for getpagesize)
2636AC_TRY_COMPILE([
2637#include "confdefs.h"
2638#include <unistd.h>
2639], void* p = getpagesize,
2640 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2641 AC_MSG_RESULT(yes),
2642 AC_MSG_RESULT(no)
2643)
2644
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002645dnl check for true
2646AC_CHECK_PROGS(TRUE, true, /bin/true)
2647
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002648dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2649dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002650AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002651 AC_CHECK_LIB(resolv, inet_aton)
2652)
2653
Christian Heimesd0764e22007-12-04 15:00:33 +00002654# On Tru64, chflags seems to be present, but calling it will
2655# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002656AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002657AC_TRY_RUN([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002658#include <sys/stat.h>
2659#include <unistd.h>
2660int main(int argc, char*argv[])
2661{
2662 if(chflags(argv[0], 0) != 0)
2663 return 1;
2664 return 0;
2665}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002666]], ac_cv_have_chflags=yes,
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002667 ac_cv_have_chflags=no,
2668 ac_cv_have_chflags=cross)
2669])
2670if test "$ac_cv_have_chflags" = cross ; then
2671 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2672fi
2673if test "$ac_cv_have_chflags" = yes ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002674 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2675fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002676
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002677AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002678AC_TRY_RUN([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002679#include <sys/stat.h>
2680#include <unistd.h>
2681int main(int argc, char*argv[])
2682{
2683 if(lchflags(argv[0], 0) != 0)
2684 return 1;
2685 return 0;
2686}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002687]], ac_cv_have_lchflags=yes,
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002688 ac_cv_have_lchflags=no,
2689 ac_cv_have_lchflags=cross)
2690])
2691if test "$ac_cv_have_lchflags" = cross ; then
2692 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2693fi
2694if test "$ac_cv_have_lchflags" = yes ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002695 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2696fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002697
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002698dnl Check if system zlib has *Copy() functions
2699dnl
2700dnl On MacOSX the linker will search for dylibs on the entire linker path
2701dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2702dnl to revert to a more traditional unix behaviour and make it possible to
2703dnl override the system libz with a local static library of libz. Temporarily
2704dnl add that flag to our CFLAGS as well to ensure that we check the version
2705dnl of libz that will be used by setup.py.
2706dnl The -L/usr/local/lib is needed as wel to get the same compilation
2707dnl environment as setup.py (and leaving it out can cause configure to use the
2708dnl wrong version of the library)
2709case $ac_sys_system/$ac_sys_release in
2710Darwin/*)
2711 _CUR_CFLAGS="${CFLAGS}"
2712 _CUR_LDFLAGS="${LDFLAGS}"
2713 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2714 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2715 ;;
2716esac
2717
2718AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2719
2720case $ac_sys_system/$ac_sys_release in
2721Darwin/*)
2722 CFLAGS="${_CUR_CFLAGS}"
2723 LDFLAGS="${_CUR_LDFLAGS}"
2724 ;;
2725esac
2726
Martin v. Löwise9416172003-05-03 10:12:45 +00002727AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002728AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002729#include "confdefs.h"
2730#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002731], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002732 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2733 AC_MSG_RESULT(yes),
2734 AC_MSG_RESULT(no)
2735)
2736
2737AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002738AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002739#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002740#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002741#include <sys/socket.h>
2742#include <netinet/in.h>
2743#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002744], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002745 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2746 AC_MSG_RESULT(yes),
2747 AC_MSG_RESULT(no)
2748)
2749
2750AC_MSG_CHECKING(for inet_pton)
2751AC_TRY_COMPILE([
2752#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002753#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002754#include <sys/socket.h>
2755#include <netinet/in.h>
2756#include <arpa/inet.h>
2757], void* p = inet_pton,
2758 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2759 AC_MSG_RESULT(yes),
2760 AC_MSG_RESULT(no)
2761)
2762
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002763# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002764AC_MSG_CHECKING(for setgroups)
2765AC_TRY_COMPILE([
2766#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002767#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002768#ifdef HAVE_GRP_H
2769#include <grp.h>
2770#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002771],
2772void* p = setgroups,
2773 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2774 AC_MSG_RESULT(yes),
2775 AC_MSG_RESULT(no)
2776)
2777
Fred Drake8cef4cf2000-06-28 16:40:38 +00002778# check for openpty and forkpty
2779
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002780AC_CHECK_FUNCS(openpty,,
2781 AC_CHECK_LIB(util,openpty,
2782 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2783 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2784 )
2785)
2786AC_CHECK_FUNCS(forkpty,,
2787 AC_CHECK_LIB(util,forkpty,
2788 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2789 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2790 )
2791)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002792
Christian Heimesb186d002008-03-18 15:15:01 +00002793# Stuff for expat.
2794AC_CHECK_FUNCS(memmove)
2795
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002796# check for long file support functions
2797AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2798
Christian Heimesb186d002008-03-18 15:15:01 +00002799AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002800AC_CHECK_FUNCS(getpgrp,
2801 AC_TRY_COMPILE([#include <unistd.h>],
2802 [getpgrp(0);],
2803 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2804 [Define if getpgrp() must be called as getpgrp(0).])
2805 )
2806)
Jack Jansen150753c2003-03-29 22:07:47 +00002807AC_CHECK_FUNCS(setpgrp,
2808 AC_TRY_COMPILE([#include <unistd.h>],
2809 [setpgrp(0,0);],
2810 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2811 [Define if setpgrp() must be called as setpgrp(0, 0).])
2812 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002813)
2814AC_CHECK_FUNCS(gettimeofday,
2815 AC_TRY_COMPILE([#include <sys/time.h>],
2816 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2817 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2818 [Define if gettimeofday() does not have second (timezone) argument
2819 This is the case on Motorola V4 (R40V4.2)])
2820 )
2821)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002822
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002823AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002824AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002825#if defined(MAJOR_IN_MKDEV)
2826#include <sys/mkdev.h>
2827#elif defined(MAJOR_IN_SYSMACROS)
2828#include <sys/sysmacros.h>
2829#else
2830#include <sys/types.h>
2831#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002832],[
2833 makedev(major(0),minor(0));
2834],[
2835 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2836 [Define to 1 if you have the device macros.])
2837 AC_MSG_RESULT(yes)
2838],[
2839 AC_MSG_RESULT(no)
2840])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002841
2842# On OSF/1 V5.1, getaddrinfo is available, but a define
2843# for [no]getaddrinfo in netdb.h.
2844AC_MSG_CHECKING(for getaddrinfo)
2845AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002846#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002847#include <sys/socket.h>
2848#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002849#include <stdio.h>
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002850], [getaddrinfo(NULL, NULL, NULL, NULL);],
2851have_getaddrinfo=yes,
2852have_getaddrinfo=no)
2853AC_MSG_RESULT($have_getaddrinfo)
2854if test $have_getaddrinfo = yes
2855then
2856 AC_MSG_CHECKING(getaddrinfo bug)
2857 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
2858 AC_TRY_RUN([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002859#include <sys/types.h>
2860#include <netdb.h>
2861#include <string.h>
2862#include <sys/socket.h>
2863#include <netinet/in.h>
2864
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002865int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002866{
2867 int passive, gaierr, inet4 = 0, inet6 = 0;
2868 struct addrinfo hints, *ai, *aitop;
2869 char straddr[INET6_ADDRSTRLEN], strport[16];
2870
2871 for (passive = 0; passive <= 1; passive++) {
2872 memset(&hints, 0, sizeof(hints));
2873 hints.ai_family = AF_UNSPEC;
2874 hints.ai_flags = passive ? AI_PASSIVE : 0;
2875 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002876 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002877 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2878 (void)gai_strerror(gaierr);
2879 goto bad;
2880 }
2881 for (ai = aitop; ai; ai = ai->ai_next) {
2882 if (ai->ai_addr == NULL ||
2883 ai->ai_addrlen == 0 ||
2884 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2885 straddr, sizeof(straddr), strport, sizeof(strport),
2886 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2887 goto bad;
2888 }
2889 switch (ai->ai_family) {
2890 case AF_INET:
2891 if (strcmp(strport, "54321") != 0) {
2892 goto bad;
2893 }
2894 if (passive) {
2895 if (strcmp(straddr, "0.0.0.0") != 0) {
2896 goto bad;
2897 }
2898 } else {
2899 if (strcmp(straddr, "127.0.0.1") != 0) {
2900 goto bad;
2901 }
2902 }
2903 inet4++;
2904 break;
2905 case AF_INET6:
2906 if (strcmp(strport, "54321") != 0) {
2907 goto bad;
2908 }
2909 if (passive) {
2910 if (strcmp(straddr, "::") != 0) {
2911 goto bad;
2912 }
2913 } else {
2914 if (strcmp(straddr, "::1") != 0) {
2915 goto bad;
2916 }
2917 }
2918 inet6++;
2919 break;
2920 case AF_UNSPEC:
2921 goto bad;
2922 break;
2923 default:
2924 /* another family support? */
2925 break;
2926 }
2927 }
2928 }
2929
2930 if (!(inet4 == 0 || inet4 == 2))
2931 goto bad;
2932 if (!(inet6 == 0 || inet6 == 2))
2933 goto bad;
2934
2935 if (aitop)
2936 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002937 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002938
2939 bad:
2940 if (aitop)
2941 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002942 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002943}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002944]], ac_cv_buggy_getaddrinfo=no,
2945 ac_cv_buggy_getaddrinfo=yes,
2946 ac_cv_buggy_getaddrinfo=yes))
2947fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002948
Mark Dickinson2df5d282009-12-31 21:22:50 +00002949if test $have_getaddrinfo = no -o "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002950then
2951 if test $ipv6 = yes
2952 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002953 echo 'Fatal: You must get working getaddrinfo() function.'
2954 echo ' or you can specify "--disable-ipv6"'.
2955 exit 1
2956 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002957else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002958 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002959fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002960AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002961
Guido van Rossum627b2d71993-12-24 10:39:16 +00002962# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002963AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002964AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002965AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002966AC_CHECK_MEMBERS([struct stat.st_rdev])
2967AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002968AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002969AC_CHECK_MEMBERS([struct stat.st_gen])
2970AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002971AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002972
2973AC_MSG_CHECKING(for time.h that defines altzone)
2974AC_CACHE_VAL(ac_cv_header_time_altzone,
2975[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2976 ac_cv_header_time_altzone=yes,
2977 ac_cv_header_time_altzone=no)])
2978AC_MSG_RESULT($ac_cv_header_time_altzone)
2979if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002980 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002981fi
2982
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002983was_it_defined=no
2984AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002985AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002986#include <sys/types.h>
2987#include <sys/select.h>
2988#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002989], [;], [
2990 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2991 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2992 (which you can't on SCO ODT 3.0).])
2993 was_it_defined=yes
2994])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002995AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002996
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002997AC_MSG_CHECKING(for addrinfo)
2998AC_CACHE_VAL(ac_cv_struct_addrinfo,
2999AC_TRY_COMPILE([
3000# include <netdb.h>],
3001 [struct addrinfo a],
3002 ac_cv_struct_addrinfo=yes,
3003 ac_cv_struct_addrinfo=no))
3004AC_MSG_RESULT($ac_cv_struct_addrinfo)
3005if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003006 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003007fi
3008
3009AC_MSG_CHECKING(for sockaddr_storage)
3010AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
3011AC_TRY_COMPILE([
3012# include <sys/types.h>
3013# include <sys/socket.h>],
3014 [struct sockaddr_storage s],
3015 ac_cv_struct_sockaddr_storage=yes,
3016 ac_cv_struct_sockaddr_storage=no))
3017AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3018if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003019 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003020fi
3021
Guido van Rossum627b2d71993-12-24 10:39:16 +00003022# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003023
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003024AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003025AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003026
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003027works=no
3028AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003029AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
3030 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
3031)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003032AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003033
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003034works=no
3035AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003036AC_TRY_COMPILE([], [signed char c;], works=yes,
3037 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
3038)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003039AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003040
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003041have_prototypes=no
3042AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003043AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
3044 AC_DEFINE(HAVE_PROTOTYPES, 1,
3045 [Define if your compiler supports function prototype])
3046 have_prototypes=yes
3047])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003048AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003049
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003050works=no
3051AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003052AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003053#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003054int foo(int x, ...) {
3055 va_list va;
3056 va_start(va, x);
3057 va_arg(va, int);
3058 va_arg(va, char *);
3059 va_arg(va, double);
3060 return 0;
3061}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003062], [return foo(10, "", 3.14);], [
3063 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3064 [Define if your compiler supports variable length function prototypes
3065 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3066 works=yes
3067])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003068AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003069
Dave Cole331708b2004-08-09 04:51:41 +00003070# check for socketpair
3071AC_MSG_CHECKING(for socketpair)
3072AC_TRY_COMPILE([
3073#include <sys/types.h>
3074#include <sys/socket.h>
3075], void *x=socketpair,
3076 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3077 AC_MSG_RESULT(yes),
3078 AC_MSG_RESULT(no)
3079)
3080
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003081# check if sockaddr has sa_len member
3082AC_MSG_CHECKING(if sockaddr has sa_len member)
3083AC_TRY_COMPILE([#include <sys/types.h>
3084#include <sys/socket.h>],
3085[struct sockaddr x;
3086x.sa_len = 0;],
3087 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003088 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003089 AC_MSG_RESULT(no))
3090
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003091va_list_is_array=no
3092AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003093AC_TRY_COMPILE([
3094#ifdef HAVE_STDARG_PROTOTYPES
3095#include <stdarg.h>
3096#else
3097#include <varargs.h>
3098#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003099], [va_list list1, list2; list1 = list2;], , [
3100 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3101 va_list_is_array=yes
3102])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003103AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003104
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003105# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003106AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3107 [Define this if you have some version of gethostbyname_r()])
3108
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003109AC_CHECK_FUNC(gethostbyname_r, [
3110 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3111 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3112 OLD_CFLAGS=$CFLAGS
3113 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3114 AC_TRY_COMPILE([
3115# include <netdb.h>
3116 ], [
3117 char *name;
3118 struct hostent *he, *res;
3119 char buffer[2048];
3120 int buflen = 2048;
3121 int h_errnop;
3122
3123 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3124 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003125 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003126 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3127 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003128 AC_MSG_RESULT(yes)
3129 ], [
3130 AC_MSG_RESULT(no)
3131 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3132 AC_TRY_COMPILE([
3133# include <netdb.h>
3134 ], [
3135 char *name;
3136 struct hostent *he;
3137 char buffer[2048];
3138 int buflen = 2048;
3139 int h_errnop;
3140
3141 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3142 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003143 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003144 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3145 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003146 AC_MSG_RESULT(yes)
3147 ], [
3148 AC_MSG_RESULT(no)
3149 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3150 AC_TRY_COMPILE([
3151# include <netdb.h>
3152 ], [
3153 char *name;
3154 struct hostent *he;
3155 struct hostent_data data;
3156
3157 (void) gethostbyname_r(name, he, &data);
3158 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003159 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003160 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3161 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003162 AC_MSG_RESULT(yes)
3163 ], [
3164 AC_MSG_RESULT(no)
3165 ])
3166 ])
3167 ])
3168 CFLAGS=$OLD_CFLAGS
3169], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003170 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003171])
3172AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3173AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3174AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003175AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003176AC_SUBST(HAVE_GETHOSTBYNAME)
3177
Guido van Rossum627b2d71993-12-24 10:39:16 +00003178# checks for system services
3179# (none yet)
3180
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003181# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003182AC_CHECK_FUNC(__fpu_control,
3183 [],
3184 [AC_CHECK_LIB(ieee, __fpu_control)
3185])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003186
Guido van Rossum93274221997-05-09 02:42:00 +00003187# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003188AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003189AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003190 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3191[
Guido van Rossum93274221997-05-09 02:42:00 +00003192if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003193then
3194 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3195 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3196 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003197else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003198fi],
3199[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003200
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003201# check for --with-libm=...
3202AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003203case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003204Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003205*) LIBM=-lm
3206esac
Guido van Rossum93274221997-05-09 02:42:00 +00003207AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003208AC_ARG_WITH(libm,
3209 AC_HELP_STRING(--with-libm=STRING, math library),
3210[
Guido van Rossum93274221997-05-09 02:42:00 +00003211if test "$withval" = no
3212then LIBM=
3213 AC_MSG_RESULT(force LIBM empty)
3214elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003215then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003216 AC_MSG_RESULT(set LIBM="$withval")
3217else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003218fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003219[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003220
3221# check for --with-libc=...
3222AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003223AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003224AC_ARG_WITH(libc,
3225 AC_HELP_STRING(--with-libc=STRING, C library),
3226[
Guido van Rossum93274221997-05-09 02:42:00 +00003227if test "$withval" = no
3228then LIBC=
3229 AC_MSG_RESULT(force LIBC empty)
3230elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003231then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003232 AC_MSG_RESULT(set LIBC="$withval")
3233else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003234fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003235[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003236
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003237# **************************************************
3238# * Check for various properties of floating point *
3239# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003240
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003241AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3242AC_CACHE_VAL(ac_cv_little_endian_double, [
3243AC_TRY_RUN([
3244#include <string.h>
3245int main() {
3246 double x = 9006104071832581.0;
3247 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3248 return 0;
3249 else
3250 return 1;
3251}
3252],
3253ac_cv_little_endian_double=yes,
3254ac_cv_little_endian_double=no,
3255ac_cv_little_endian_double=no)])
3256AC_MSG_RESULT($ac_cv_little_endian_double)
3257if test "$ac_cv_little_endian_double" = yes
3258then
3259 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3260 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3261 with the least significant byte first])
3262fi
3263
3264AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3265AC_CACHE_VAL(ac_cv_big_endian_double, [
3266AC_TRY_RUN([
3267#include <string.h>
3268int main() {
3269 double x = 9006104071832581.0;
3270 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3271 return 0;
3272 else
3273 return 1;
3274}
3275],
3276ac_cv_big_endian_double=yes,
3277ac_cv_big_endian_double=no,
3278ac_cv_big_endian_double=no)])
3279AC_MSG_RESULT($ac_cv_big_endian_double)
3280if test "$ac_cv_big_endian_double" = yes
3281then
3282 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3283 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3284 with the most significant byte first])
3285fi
3286
3287# Some ARM platforms use a mixed-endian representation for doubles.
3288# While Python doesn't currently have full support for these platforms
3289# (see e.g., issue 1762561), we can at least make sure that float <-> string
3290# conversions work.
3291AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3292AC_CACHE_VAL(ac_cv_mixed_endian_double, [
3293AC_TRY_RUN([
3294#include <string.h>
3295int main() {
3296 double x = 9006104071832581.0;
3297 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3298 return 0;
3299 else
3300 return 1;
3301}
3302],
3303ac_cv_mixed_endian_double=yes,
3304ac_cv_mixed_endian_double=no,
3305ac_cv_mixed_endian_double=no)])
3306AC_MSG_RESULT($ac_cv_mixed_endian_double)
3307if test "$ac_cv_mixed_endian_double" = yes
3308then
3309 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3310 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3311 in ARM mixed-endian order (byte order 45670123)])
3312fi
3313
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003314# The short float repr introduced in Python 3.1 requires the
3315# correctly-rounded string <-> double conversion functions from
3316# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3317# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003318# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003319# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003320
3321# This inline assembler syntax may also work for suncc and icc,
3322# so we try it on all platforms.
3323
3324AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
3325AC_TRY_COMPILE([], [
3326 unsigned short cw;
3327 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3328 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
3329],
3330[have_gcc_asm_for_x87=yes], [have_gcc_asm_for_x87=no])
3331AC_MSG_RESULT($have_gcc_asm_for_x87)
3332if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003333then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003334 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3335 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003336fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003337
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003338# Detect whether system arithmetic is subject to x87-style double
3339# rounding issues. The result of this test has little meaning on non
3340# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3341# mode is round-to-nearest and double rounding issues are present, and
3342# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3343AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003344# $BASECFLAGS may affect the result
3345ac_save_cc="$CC"
3346CC="$CC $BASECFLAGS"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003347AC_TRY_RUN([
3348#include <stdlib.h>
3349#include <math.h>
3350int main() {
3351 volatile double x, y, z;
3352 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3353 x = 0.99999999999999989; /* 1-2**-53 */
3354 y = 1./x;
3355 if (y != 1.)
3356 exit(0);
3357 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3358 x = 1e16;
3359 y = 2.99999;
3360 z = x + y;
3361 if (z != 1e16+4.)
3362 exit(0);
3363 /* both tests show evidence of double rounding */
3364 exit(1);
3365}
3366],
3367ac_cv_x87_double_rounding=no,
3368ac_cv_x87_double_rounding=yes,
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003369ac_cv_x87_double_rounding=no)
3370CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003371AC_MSG_RESULT($ac_cv_x87_double_rounding)
3372if test "$ac_cv_x87_double_rounding" = yes
3373then
3374 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3375 [Define if arithmetic is subject to x87-style double rounding issue])
3376fi
3377
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003378# ************************************
3379# * Check for mathematical functions *
3380# ************************************
3381
3382LIBS_SAVE=$LIBS
3383LIBS="$LIBS $LIBM"
3384
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003385# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3386# -0. on some architectures.
3387AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3388AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3389AC_TRY_RUN([
3390#include <math.h>
3391#include <stdlib.h>
3392int main() {
3393 /* return 0 if either negative zeros don't exist
3394 on this platform or if negative zeros exist
3395 and tanh(-0.) == -0. */
3396 if (atan2(0., -1.) == atan2(-0., -1.) ||
3397 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3398 else exit(1);
3399}
3400],
3401ac_cv_tanh_preserves_zero_sign=yes,
3402ac_cv_tanh_preserves_zero_sign=no,
3403ac_cv_tanh_preserves_zero_sign=no)])
3404AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3405if test "$ac_cv_tanh_preserves_zero_sign" = yes
3406then
3407 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3408 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3409fi
3410
Mark Dickinson9c113362009-09-05 10:36:23 +00003411AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
3412AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003413AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes99170a52007-12-19 02:07:34 +00003414
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003415LIBS=$LIBS_SAVE
3416
Mark Dickinsona614f042009-11-28 12:48:43 +00003417# For multiprocessing module, check that sem_open
3418# actually works. For FreeBSD versions <= 7.2,
3419# the kernel module that provides POSIX semaphores
3420# isn't loaded by default, so an attempt to call
3421# sem_open results in a 'Signal 12' error.
3422AC_MSG_CHECKING(whether POSIX semaphores are enabled)
3423AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
3424AC_TRY_RUN([
3425#include <unistd.h>
3426#include <fcntl.h>
3427#include <stdio.h>
3428#include <semaphore.h>
3429#include <sys/stat.h>
3430
3431int main(void) {
3432 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3433 if (a == SEM_FAILED) {
3434 perror("sem_open");
3435 return 1;
3436 }
3437 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003438 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00003439 return 0;
3440}
3441], ac_cv_posix_semaphores_enabled=yes,
3442 ac_cv_posix_semaphores_enabled=no,
3443 ac_cv_posix_semaphores_enabled=yes)
3444)
3445AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
3446if test $ac_cv_posix_semaphores_enabled = no
3447then
3448 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
3449 [Define if POSIX semaphores aren't enabled on your system])
3450fi
3451
Mark Dickinson10683072009-04-18 21:18:19 +00003452# Multiprocessing check for broken sem_getvalue
3453AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003454AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Mark Dickinson10683072009-04-18 21:18:19 +00003455AC_TRY_RUN([
3456#include <unistd.h>
3457#include <fcntl.h>
3458#include <stdio.h>
3459#include <semaphore.h>
3460#include <sys/stat.h>
3461
3462int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00003463 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00003464 int count;
3465 int res;
3466 if(a==SEM_FAILED){
3467 perror("sem_open");
3468 return 1;
3469
3470 }
3471 res = sem_getvalue(a, &count);
3472 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003473 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00003474 return res==-1 ? 1 : 0;
3475}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003476], ac_cv_broken_sem_getvalue=no,
3477 ac_cv_broken_sem_getvalue=yes,
3478 ac_cv_broken_sem_getvalue=yes)
Mark Dickinson10683072009-04-18 21:18:19 +00003479)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003480AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3481if test $ac_cv_broken_sem_getvalue = yes
3482then
3483 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3484 [define to 1 if your sem_getvalue is broken.])
3485fi
Mark Dickinson10683072009-04-18 21:18:19 +00003486
Mark Dickinsonbd792642009-03-18 20:06:12 +00003487# determine what size digit to use for Python's longs
3488AC_MSG_CHECKING([digit size for Python's longs])
3489AC_ARG_ENABLE(big-digits,
3490AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3491[case $enable_big_digits in
3492yes)
3493 enable_big_digits=30 ;;
3494no)
3495 enable_big_digits=15 ;;
3496[15|30])
3497 ;;
3498*)
3499 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3500esac
3501AC_MSG_RESULT($enable_big_digits)
3502AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3503],
3504[AC_MSG_RESULT(no value specified)])
3505
Guido van Rossumef2255b2000-03-10 22:30:29 +00003506# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003507AC_CHECK_HEADER(wchar.h, [
3508 AC_DEFINE(HAVE_WCHAR_H, 1,
3509 [Define if the compiler provides a wchar.h header file.])
3510 wchar_h="yes"
3511],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003512wchar_h="no"
3513)
3514
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003515# determine wchar_t size
3516if test "$wchar_h" = yes
3517then
Guido van Rossum67b26592001-10-20 14:21:45 +00003518 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003519fi
3520
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003521AC_MSG_CHECKING(for UCS-4 tcl)
3522have_ucs4_tcl=no
3523AC_TRY_COMPILE([
3524#include <tcl.h>
3525#if TCL_UTF_MAX != 6
3526# error "NOT UCS4_TCL"
3527#endif], [], [
3528 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3529 have_ucs4_tcl=yes
3530])
3531AC_MSG_RESULT($have_ucs4_tcl)
3532
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003533# check whether wchar_t is signed or not
3534if test "$wchar_h" = yes
3535then
3536 # check whether wchar_t is signed or not
3537 AC_MSG_CHECKING(whether wchar_t is signed)
3538 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3539 AC_TRY_RUN([
3540 #include <wchar.h>
3541 int main()
3542 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003543 /* Success: exit code 0 */
3544 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003545 }
3546 ],
3547 ac_cv_wchar_t_signed=yes,
3548 ac_cv_wchar_t_signed=no,
3549 ac_cv_wchar_t_signed=yes)])
3550 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3551fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003552
Georg Brandl52d168a2008-01-07 18:10:24 +00003553AC_MSG_CHECKING(what type to use for str)
3554AC_ARG_WITH(wide-unicode,
3555 AC_HELP_STRING(--with-wide-unicode, Use 4-byte Unicode characters (default is 2 bytes)),
3556[
3557if test "$withval" != no
3558then unicode_size="4"
3559else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003560fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003561],
3562[
3563case "$have_ucs4_tcl" in
3564 yes) unicode_size="4" ;;
3565 *) unicode_size="2" ;;
3566esac
3567])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003568
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003569AH_TEMPLATE(Py_UNICODE_SIZE,
3570 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003571case "$unicode_size" in
3572 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3573 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003574esac
3575
Martin v. Löwis11437992002-04-12 09:54:03 +00003576AH_TEMPLATE(PY_UNICODE_TYPE,
3577 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003578
Georg Brandl52d168a2008-01-07 18:10:24 +00003579# wchar_t is only usable if it maps to an unsigned type
3580if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003581 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003582then
3583 PY_UNICODE_TYPE="wchar_t"
3584 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3585 [Define if you have a useable wchar_t type defined in wchar.h; useable
3586 means wchar_t must be an unsigned type with at least 16 bits. (see
3587 Include/unicodeobject.h).])
3588 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3589elif test "$ac_cv_sizeof_short" = "$unicode_size"
3590then
3591 PY_UNICODE_TYPE="unsigned short"
3592 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3593elif test "$ac_cv_sizeof_long" = "$unicode_size"
3594then
3595 PY_UNICODE_TYPE="unsigned long"
3596 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3597else
3598 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003599fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003600AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003601
3602# check for endianness
3603AC_C_BIGENDIAN
3604
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003605# Check whether right shifting a negative integer extends the sign bit
3606# or fills with zeros (like the Cray J90, according to Tim Peters).
3607AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003608AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003609AC_TRY_RUN([
3610int main()
3611{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003612 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003613}
Guido van Rossum3065c942001-09-17 04:03:14 +00003614],
3615ac_cv_rshift_extends_sign=yes,
3616ac_cv_rshift_extends_sign=no,
3617ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003618AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3619if test "$ac_cv_rshift_extends_sign" = no
3620then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003621 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3622 [Define if i>>j for signed int i does not extend the sign bit
3623 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003624fi
3625
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003626# check for getc_unlocked and related locking functions
3627AC_MSG_CHECKING(for getc_unlocked() and friends)
3628AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3629AC_TRY_LINK([#include <stdio.h>],[
3630 FILE *f = fopen("/dev/null", "r");
3631 flockfile(f);
3632 getc_unlocked(f);
3633 funlockfile(f);
3634], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3635AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3636if test "$ac_cv_have_getc_unlocked" = yes
3637then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003638 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3639 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003640fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003641
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003642# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003643# save the value of LIBS so we don't actually link Python with readline
3644LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003645
3646# On some systems we need to link readline to a termcap compatible
3647# library. NOTE: Keep the precedence of listed libraries synchronised
3648# with setup.py.
3649py_cv_lib_readline=no
3650AC_MSG_CHECKING([how to link readline libs])
3651for py_libtermcap in "" ncursesw ncurses curses termcap; do
3652 if test -z "$py_libtermcap"; then
3653 READLINE_LIBS="-lreadline"
3654 else
3655 READLINE_LIBS="-lreadline -l$py_libtermcap"
3656 fi
3657 LIBS="$READLINE_LIBS $LIBS_no_readline"
3658 AC_LINK_IFELSE(
3659 [AC_LANG_CALL([],[readline])],
3660 [py_cv_lib_readline=yes])
3661 if test $py_cv_lib_readline = yes; then
3662 break
3663 fi
3664done
3665# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3666#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003667if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003668 AC_MSG_RESULT([none])
3669else
3670 AC_MSG_RESULT([$READLINE_LIBS])
3671 AC_DEFINE(HAVE_LIBREADLINE, 1,
3672 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003673fi
3674
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003675# check for readline 2.1
3676AC_CHECK_LIB(readline, rl_callback_handler_install,
3677 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003678 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003679
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003680# check for readline 2.2
3681AC_TRY_CPP([#include <readline/readline.h>],
3682have_readline=yes, have_readline=no)
3683if test $have_readline = yes
3684then
3685 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3686 [readline/readline.h],
3687 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3688 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00003689 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3690 [readline/readline.h],
3691 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3692 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003693fi
3694
Martin v. Löwis0daad592001-09-30 21:09:59 +00003695# check for readline 4.0
3696AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003697 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003698 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003699
Thomas Wouters89d996e2007-09-08 17:39:28 +00003700# also in 4.0
3701AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3702 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003703 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003704
Guido van Rossum353ae582001-07-10 16:45:32 +00003705# check for readline 4.2
3706AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003707 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003708 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003709
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003710# also in readline 4.2
3711AC_TRY_CPP([#include <readline/readline.h>],
3712have_readline=yes, have_readline=no)
3713if test $have_readline = yes
3714then
3715 AC_EGREP_HEADER([extern int rl_catch_signals;],
3716 [readline/readline.h],
3717 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3718 [Define if you can turn off readline's signal handling.]), )
3719fi
3720
Martin v. Löwis82bca632006-02-10 20:49:30 +00003721# End of readline checks: restore LIBS
3722LIBS=$LIBS_no_readline
3723
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003724AC_MSG_CHECKING(for broken nice())
3725AC_CACHE_VAL(ac_cv_broken_nice, [
3726AC_TRY_RUN([
3727int main()
3728{
3729 int val1 = nice(1);
3730 if (val1 != -1 && val1 == nice(2))
3731 exit(0);
3732 exit(1);
3733}
Guido van Rossum3065c942001-09-17 04:03:14 +00003734],
3735ac_cv_broken_nice=yes,
3736ac_cv_broken_nice=no,
3737ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003738AC_MSG_RESULT($ac_cv_broken_nice)
3739if test "$ac_cv_broken_nice" = yes
3740then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003741 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3742 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003743fi
3744
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003745AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003746AC_CACHE_VAL(ac_cv_broken_poll,
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003747AC_TRY_RUN([
3748#include <poll.h>
3749
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003750int main()
3751{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003752 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003753 int poll_test;
3754
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003755 close (42);
3756
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003757 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003758 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003759 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003760 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003761 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003762 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003763 return 1;
3764}
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003765],
3766ac_cv_broken_poll=yes,
3767ac_cv_broken_poll=no,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003768ac_cv_broken_poll=no))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003769AC_MSG_RESULT($ac_cv_broken_poll)
3770if test "$ac_cv_broken_poll" = yes
3771then
3772 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3773 [Define if poll() sets errno on invalid file descriptors.])
3774fi
3775
Brett Cannon43802422005-02-10 20:48:03 +00003776# Before we can test tzset, we need to check if struct tm has a tm_zone
3777# (which is not required by ISO C or UNIX spec) and/or if we support
3778# tzname[]
3779AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003780
Brett Cannon43802422005-02-10 20:48:03 +00003781# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003782AC_MSG_CHECKING(for working tzset())
3783AC_CACHE_VAL(ac_cv_working_tzset, [
3784AC_TRY_RUN([
3785#include <stdlib.h>
3786#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003787#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003788
3789#if HAVE_TZNAME
3790extern char *tzname[];
3791#endif
3792
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003793int main()
3794{
Brett Cannon18367812003-09-19 00:59:16 +00003795 /* Note that we need to ensure that not only does tzset(3)
3796 do 'something' with localtime, but it works as documented
3797 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003798 This includes making sure that tzname is set properly if
3799 tm->tm_zone does not exist since it is the alternative way
3800 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003801
3802 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003803 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003804 */
3805
Brett Cannon43802422005-02-10 20:48:03 +00003806 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003807 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3808
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003809 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003810 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003811 if (localtime(&groundhogday)->tm_hour != 0)
3812 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003813#if HAVE_TZNAME
3814 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3815 if (strcmp(tzname[0], "UTC") ||
3816 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3817 exit(1);
3818#endif
Brett Cannon18367812003-09-19 00:59:16 +00003819
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003820 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003821 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003822 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003823 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003824#if HAVE_TZNAME
3825 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3826 exit(1);
3827#endif
Brett Cannon18367812003-09-19 00:59:16 +00003828
3829 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3830 tzset();
3831 if (localtime(&groundhogday)->tm_hour != 11)
3832 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003833#if HAVE_TZNAME
3834 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3835 exit(1);
3836#endif
3837
3838#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003839 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3840 exit(1);
3841 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3842 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003843#endif
Brett Cannon18367812003-09-19 00:59:16 +00003844
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003845 exit(0);
3846}
3847],
3848ac_cv_working_tzset=yes,
3849ac_cv_working_tzset=no,
3850ac_cv_working_tzset=no)])
3851AC_MSG_RESULT($ac_cv_working_tzset)
3852if test "$ac_cv_working_tzset" = yes
3853then
3854 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3855 [Define if tzset() actually switches the local timezone in a meaningful way.])
3856fi
3857
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003858# Look for subsecond timestamps in struct stat
3859AC_MSG_CHECKING(for tv_nsec in struct stat)
3860AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3861AC_TRY_COMPILE([#include <sys/stat.h>], [
3862struct stat st;
3863st.st_mtim.tv_nsec = 1;
3864],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003865ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003866ac_cv_stat_tv_nsec=no,
3867ac_cv_stat_tv_nsec=no))
3868AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3869if test "$ac_cv_stat_tv_nsec" = yes
3870then
3871 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3872 [Define if you have struct stat.st_mtim.tv_nsec])
3873fi
3874
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003875# Look for BSD style subsecond timestamps in struct stat
3876AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3877AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3878AC_TRY_COMPILE([#include <sys/stat.h>], [
3879struct stat st;
3880st.st_mtimespec.tv_nsec = 1;
3881],
3882ac_cv_stat_tv_nsec2=yes,
3883ac_cv_stat_tv_nsec2=no,
3884ac_cv_stat_tv_nsec2=no))
3885AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3886if test "$ac_cv_stat_tv_nsec2" = yes
3887then
3888 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3889 [Define if you have struct stat.st_mtimensec])
3890fi
3891
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003892# On HP/UX 11.0, mvwdelch is a block with a return statement
3893AC_MSG_CHECKING(whether mvwdelch is an expression)
3894AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3895AC_TRY_COMPILE([#include <curses.h>], [
3896 int rtn;
3897 rtn = mvwdelch(0,0,0);
3898], ac_cv_mvwdelch_is_expression=yes,
3899 ac_cv_mvwdelch_is_expression=no,
3900 ac_cv_mvwdelch_is_expression=yes))
3901AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3902
3903if test "$ac_cv_mvwdelch_is_expression" = yes
3904then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003905 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3906 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003907fi
3908
3909AC_MSG_CHECKING(whether WINDOW has _flags)
3910AC_CACHE_VAL(ac_cv_window_has_flags,
3911AC_TRY_COMPILE([#include <curses.h>], [
3912 WINDOW *w;
3913 w->_flags = 0;
3914], ac_cv_window_has_flags=yes,
3915 ac_cv_window_has_flags=no,
3916 ac_cv_window_has_flags=no))
3917AC_MSG_RESULT($ac_cv_window_has_flags)
3918
3919
3920if test "$ac_cv_window_has_flags" = yes
3921then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003922 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3923 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003924fi
3925
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003926AC_MSG_CHECKING(for is_term_resized)
3927AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3928 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3929 AC_MSG_RESULT(yes),
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003930 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003931)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003932
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003933AC_MSG_CHECKING(for resize_term)
3934AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3935 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3936 AC_MSG_RESULT(yes),
Neal Norwitz865400f2003-03-21 01:42:58 +00003937 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003938)
3939
3940AC_MSG_CHECKING(for resizeterm)
3941AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3942 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3943 AC_MSG_RESULT(yes),
3944 AC_MSG_RESULT(no)
3945)
3946
Thomas Wouters89f507f2006-12-13 04:49:30 +00003947AC_MSG_CHECKING(for /dev/ptmx)
3948
3949if test -r /dev/ptmx
3950then
3951 AC_MSG_RESULT(yes)
3952 AC_DEFINE(HAVE_DEV_PTMX, 1,
3953 [Define if we have /dev/ptmx.])
3954else
3955 AC_MSG_RESULT(no)
3956fi
3957
3958AC_MSG_CHECKING(for /dev/ptc)
3959
3960if test -r /dev/ptc
3961then
3962 AC_MSG_RESULT(yes)
3963 AC_DEFINE(HAVE_DEV_PTC, 1,
3964 [Define if we have /dev/ptc.])
3965else
3966 AC_MSG_RESULT(no)
3967fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003968
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003969if test "$have_long_long" = yes
3970then
3971 AC_MSG_CHECKING(for %lld and %llu printf() format support)
3972 AC_CACHE_VAL(ac_cv_have_long_long_format,
3973 AC_TRY_RUN([[
3974 #include <stdio.h>
3975 #include <stddef.h>
3976 #include <string.h>
3977
3978 #ifdef HAVE_SYS_TYPES_H
3979 #include <sys/types.h>
3980 #endif
3981
3982 int main()
3983 {
3984 char buffer[256];
3985
3986 if (sprintf(buffer, "%lld", (long long)123) < 0)
3987 return 1;
3988 if (strcmp(buffer, "123"))
3989 return 1;
3990
3991 if (sprintf(buffer, "%lld", (long long)-123) < 0)
3992 return 1;
3993 if (strcmp(buffer, "-123"))
3994 return 1;
3995
3996 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
3997 return 1;
3998 if (strcmp(buffer, "123"))
3999 return 1;
4000
4001 return 0;
4002 }
4003 ]], ac_cv_have_long_long_format=yes,
4004 ac_cv_have_long_long_format=no,
4005 ac_cv_have_long_long_format=no)
4006 )
4007 AC_MSG_RESULT($ac_cv_have_long_long_format)
4008fi
4009
Mark Dickinson89d7d412009-12-31 20:50:59 +00004010if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004011then
4012 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
4013 [Define to printf format modifier for long long type])
4014fi
4015
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00004016if test $ac_sys_system = Darwin
4017then
4018 LIBS="$LIBS -framework CoreFoundation"
4019fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00004020
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004021AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
4022AC_TRY_RUN([
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00004023#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00004024#include <stddef.h>
4025#include <string.h>
4026
Christian Heimes2c181612007-12-17 20:04:13 +00004027#ifdef HAVE_SYS_TYPES_H
4028#include <sys/types.h>
4029#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00004030
4031#ifdef HAVE_SSIZE_T
4032typedef ssize_t Py_ssize_t;
4033#elif SIZEOF_VOID_P == SIZEOF_LONG
4034typedef long Py_ssize_t;
4035#else
4036typedef int Py_ssize_t;
4037#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00004038
Christian Heimes2c181612007-12-17 20:04:13 +00004039int main()
4040{
4041 char buffer[256];
4042
Thomas Wouters477c8d52006-05-27 19:21:47 +00004043 if(sprintf(buffer, "%zd", (size_t)123) < 0)
4044 return 1;
4045
Thomas Wouters89f507f2006-12-13 04:49:30 +00004046 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00004047 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00004048
4049 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
4050 return 1;
4051
4052 if (strcmp(buffer, "-123"))
4053 return 1;
4054
Thomas Wouters477c8d52006-05-27 19:21:47 +00004055 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004056}
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004057], ac_cv_have_size_t_format=yes,
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00004058 ac_cv_have_size_t_format=no,
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004059 [ac_cv_have_size_t_format="cross -- assuming yes"]
4060)])
4061if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004062 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
4063 [Define to printf format modifier for Py_ssize_t])
4064fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00004065
Martin v. Löwis01c04012002-11-11 14:58:44 +00004066AC_CHECK_TYPE(socklen_t,,
4067 AC_DEFINE(socklen_t,int,
4068 Define to `int' if <sys/socket.h> does not define.),[
4069#ifdef HAVE_SYS_TYPES_H
4070#include <sys/types.h>
4071#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00004072#ifdef HAVE_SYS_SOCKET_H
4073#include <sys/socket.h>
4074#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00004075])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004076
Antoine Pitroufff95302008-09-03 18:58:51 +00004077AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004078AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Antoine Pitroufff95302008-09-03 18:58:51 +00004079AC_TRY_RUN([
4080#include<stdlib.h>
4081int main() {
4082 size_t len = -1;
4083 const char *str = "text";
4084 len = mbstowcs(NULL, str, 0);
4085 return (len != 4);
4086}
4087],
4088ac_cv_broken_mbstowcs=no,
4089ac_cv_broken_mbstowcs=yes,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004090ac_cv_broken_mbstowcs=no))
Antoine Pitroufff95302008-09-03 18:58:51 +00004091AC_MSG_RESULT($ac_cv_broken_mbstowcs)
4092if test "$ac_cv_broken_mbstowcs" = yes
4093then
4094 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
4095 [Define if mbstowcs(NULL, "text", 0) does not return the number of
4096 wide chars that would be converted.])
4097fi
4098
Antoine Pitroub52ec782009-01-25 16:34:23 +00004099# Check for --with-computed-gotos
4100AC_MSG_CHECKING(for --with-computed-gotos)
4101AC_ARG_WITH(computed-gotos,
4102 AC_HELP_STRING(--with-computed-gotos,
4103 Use computed gotos / threaded dispatch in evaluation loop (not available on all compilers)),
4104[
4105if test "$withval" != no
4106then
4107 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
4108 [Define if you want to use computed gotos in ceval.c.])
4109 AC_MSG_RESULT(yes)
4110else AC_MSG_RESULT(no)
4111fi],
4112[AC_MSG_RESULT(no)])
4113
4114
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004115AC_SUBST(THREADHEADERS)
4116
4117for h in `(cd $srcdir;echo Python/thread_*.h)`
4118do
4119 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4120done
4121
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004122AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00004123SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004124AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004125for dir in $SRCDIRS; do
4126 if test ! -d $dir; then
4127 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004128 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004129done
4130AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004131
Guido van Rossum627b2d71993-12-24 10:39:16 +00004132# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00004133AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00004134AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004135
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004136echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004137if test ! -f Modules/Setup
4138then
4139 cp $srcdir/Modules/Setup.dist Modules/Setup
4140fi
4141
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004142echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004143if test ! -f Modules/Setup.local
4144then
4145 echo "# Edit this file for local setup changes" >Modules/Setup.local
4146fi
4147
4148echo "creating Makefile"
4149$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4150 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004151 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00004152mv config.c Modules