blob: f503a09ef03fe21072ec9725f4f7124235a0736a [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
Thomas Wouters477c8d52006-05-27 19:21:47 +000089AC_ARG_ENABLE(universalsdk,
Christian Heimes68f5fbe2008-02-14 08:27:37 +000090 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Thomas Wouters477c8d52006-05-27 19:21:47 +000091[
92 case $enableval in
93 yes)
94 enableval=/Developer/SDKs/MacOSX10.4u.sdk
95 ;;
96 esac
97 case $enableval in
98 no)
99 UNIVERSALSDK=
100 enable_universalsdk=
101 ;;
102 *)
103 UNIVERSALSDK=$enableval
104 ;;
105 esac
106],[
107 UNIVERSALSDK=
108 enable_universalsdk=
109])
110AC_SUBST(UNIVERSALSDK)
111
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000112ARCH_RUN_32BIT=
113AC_SUBST(ARCH_RUN_32BIT)
114
Georg Brandlfcaf9102008-07-16 02:17:56 +0000115UNIVERSAL_ARCHS="32-bit"
116AC_MSG_CHECKING(for --with-universal-archs)
117AC_ARG_WITH(universal-archs,
118 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit" or "all")),
119[
120 AC_MSG_RESULT($withval)
121 UNIVERSAL_ARCHS="$withval"
122],
123[
124 AC_MSG_RESULT(32-bit)
125])
126
127
128
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000129AC_ARG_WITH(framework-name,
130 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
131 specify an alternate name of the framework built with --enable-framework),
132[
133 PYTHONFRAMEWORK=${withval}
134 PYTHONFRAMEWORKDIR=${withval}.framework
135 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
136 ],[
137 PYTHONFRAMEWORK=Python
138 PYTHONFRAMEWORKDIR=Python.framework
139 PYTHONFRAMEWORKIDENTIFIER=org.python.python
140])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000141dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000142AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000143 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
144[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000145 case $enableval in
146 yes)
147 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000148 esac
149 case $enableval in
150 no)
151 PYTHONFRAMEWORK=
152 PYTHONFRAMEWORKDIR=no-framework
153 PYTHONFRAMEWORKPREFIX=
154 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000155 FRAMEWORKINSTALLFIRST=
156 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000157 FRAMEWORKALTINSTALLFIRST=
158 FRAMEWORKALTINSTALLLAST=
159 if test "x${prefix}" = "xNONE"; then
160 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
161 else
162 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
163 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000164 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000165 ;;
166 *)
167 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000168 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000169 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussorenf6ccbf62009-06-02 10:55:56 +0000170 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
Georg Brandlfcaf9102008-07-16 02:17:56 +0000171 if test "$UNIVERSAL_ARCHS" = "all"
172 then
173 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
Ronald Oussorene3918352009-03-30 18:00:28 +0000174 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkaltinstallunixtools4way"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000175 else
Ronald Oussorene3918352009-03-30 18:00:28 +0000176 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000177 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
178 fi
179
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000180 if test "x${prefix}" = "xNONE" ; then
181 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
182 else
183 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
184 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000185 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000186
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000187 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000188 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000189 AC_CONFIG_FILES(Mac/Makefile)
190 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000191 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
192 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000193 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000194 ],[
195 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000196 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000197 PYTHONFRAMEWORKPREFIX=
198 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000199 FRAMEWORKINSTALLFIRST=
200 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000201 FRAMEWORKALTINSTALLFIRST=
202 FRAMEWORKALTINSTALLLAST=
203 if test "x${prefix}" = "xNONE" ; then
204 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
205 else
206 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
207 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000208 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000209
210 if test "$UNIVERSAL_ARCHS" = "all"
211 then
212 FRAMEWORKINSTALLLAST=update4wayuniversal
213 FRAMEWORKALTINSTALLLAST=update4wayuniversal
214 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000215])
216AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000217AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000218AC_SUBST(PYTHONFRAMEWORKDIR)
219AC_SUBST(PYTHONFRAMEWORKPREFIX)
220AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000221AC_SUBST(FRAMEWORKINSTALLFIRST)
222AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000223AC_SUBST(FRAMEWORKALTINSTALLFIRST)
224AC_SUBST(FRAMEWORKALTINSTALLLAST)
225AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000226
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000227##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000228## AC_HELP_STRING(--with-dyld,
229## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000230##
Guido van Rossumb418f891996-07-30 18:06:02 +0000231# Set name for machine-dependent library files
232AC_SUBST(MACHDEP)
233AC_MSG_CHECKING(MACHDEP)
234if test -z "$MACHDEP"
235then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000236 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000237 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
238 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000239 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000240 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000241 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000242 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000243 ac_md_system=`echo $ac_sys_system |
244 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
245 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000246 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000247 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000248
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000249 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000250 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000251 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000252 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000253 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000254 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000255 esac
256fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000257
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000258# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
259# disable features if it is defined, without any means to access these
260# features as extensions. For these systems, we skip the definition of
261# _XOPEN_SOURCE. Before adding a system to the list to gain access to
262# some feature, make sure there is no alternative way to access this
263# feature. Also, when using wildcards, make sure you have verified the
264# need for not defining _XOPEN_SOURCE on all systems matching the
265# wildcard, and that the wildcard does not include future systems
266# (which may remove their limitations).
267dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
268case $ac_sys_system/$ac_sys_release in
269 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
270 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000271 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Georg Brandlf78e02b2008-06-10 17:40:04 +0000272 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000273 define_xopen_source=no
274 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
275 # also defined. This can be overridden by defining _BSD_SOURCE
276 # As this has a different meaning on Linux, only define it on OpenBSD
277 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
278 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000279 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
280 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
281 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000282 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 +0000283 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000284 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
285 # of union __?sigval. Reported by Stuart Bishop.
286 SunOS/5.6)
287 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000288 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
289 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000290 # Reconfirmed for 7.1.4 by Martin v. Loewis.
291 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000292 define_xopen_source=no;;
293 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000294 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000295 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000296 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000297 # On FreeBSD 4, the math functions C89 does not cover are never defined
298 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
299 FreeBSD/4.*)
300 define_xopen_source=no;;
301 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
302 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
303 # identifies itself as Darwin/7.*
304 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
305 # disables platform specific features beyond repair.
306 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
307 # has no effect, don't bother defining them
308 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000309 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000310 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
311 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
312 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000313 AIX/4)
314 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000315 AIX/5)
316 if test `uname -r` -eq 1; then
317 define_xopen_source=no
318 fi
319 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000320 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
321 # defining NI_NUMERICHOST.
322 QNX/6.3.2)
323 define_xopen_source=no
324 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000325
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000326esac
327
328if test $define_xopen_source = yes
329then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000330 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
331 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000332 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
333 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000334 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000335 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000336 AC_DEFINE(_XOPEN_SOURCE, 500,
337 Define to the level of X/Open that your system supports)
338 ;;
339 *)
340 AC_DEFINE(_XOPEN_SOURCE, 600,
341 Define to the level of X/Open that your system supports)
342 ;;
343 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000344
345 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
346 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
347 # several APIs are not declared. Since this is also needed in some
348 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000349 # except for Solaris 10, where it must not be defined,
350 # as it implies XPG4.2
351 case $ac_sys_system/$ac_sys_release in
352 SunOS/5.10)
353 ;;
354 *)
355 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
356 Define to activate Unix95-and-earlier features)
357 ;;
358 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000359
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000360 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
361
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000362fi
363
Guido van Rossum91922671997-10-09 20:24:13 +0000364#
365# SGI compilers allow the specification of the both the ABI and the
366# ISA on the command line. Depending on the values of these switches,
367# different and often incompatable code will be generated.
368#
369# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
370# thus supply support for various ABI/ISA combinations. The MACHDEP
371# variable is also adjusted.
372#
373AC_SUBST(SGI_ABI)
374if test ! -z "$SGI_ABI"
375then
376 CC="cc $SGI_ABI"
377 LDFLAGS="$SGI_ABI $LDFLAGS"
378 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
379fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000380AC_MSG_RESULT($MACHDEP)
381
Jack Jansen6b08a402004-06-03 12:41:45 +0000382# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
383# it may influence the way we can build extensions, so distutils
384# needs to check it
385AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000386AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000387CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000388EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000389
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000390AC_MSG_CHECKING(machine type as reported by uname -m)
391ac_sys_machine=`uname -m`
392AC_MSG_RESULT($ac_sys_machine)
393
Guido van Rossum627b2d71993-12-24 10:39:16 +0000394# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000395
396# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
397# for debug/optimization stuff. BASECFLAGS is for flags that are required
398# just to get things to compile and link. Users are free to override OPT
399# when running configure or make. The build should not break if they do.
400# BASECFLAGS should generally not be messed with, however.
401
402# XXX shouldn't some/most/all of this code be merged with the stuff later
403# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000404AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000405AC_ARG_WITH(gcc,
406 AC_HELP_STRING(--without-gcc,never use gcc),
407[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000408 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000409 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000410 without_gcc=yes;;
411 yes) CC=gcc
412 without_gcc=no;;
413 *) CC=$withval
414 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000415 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000416 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000417 AIX*) CC=cc_r
418 without_gcc=;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000419 Monterey*)
420 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000421 without_gcc=;;
422 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000423 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000424AC_MSG_RESULT($without_gcc)
425
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000426# If the user switches compilers, we can't believe the cache
427if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
428then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000429 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
430(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000431fi
432
Guido van Rossum627b2d71993-12-24 10:39:16 +0000433AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000434
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000435AC_SUBST(CXX)
436AC_SUBST(MAINCC)
437AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
438AC_ARG_WITH(cxx_main,
439 AC_HELP_STRING([--with-cxx-main=<compiler>],
440 [compile main() and link python executable with C++ compiler]),
441[
442
443 case $withval in
444 no) with_cxx_main=no
445 MAINCC='$(CC)';;
446 yes) with_cxx_main=yes
447 MAINCC='$(CXX)';;
448 *) with_cxx_main=yes
449 MAINCC=$withval
450 if test -z "$CXX"
451 then
452 CXX=$withval
453 fi;;
454 esac], [
455 with_cxx_main=no
456 MAINCC='$(CC)'
457])
458AC_MSG_RESULT($with_cxx_main)
459
460preset_cxx="$CXX"
461if test -z "$CXX"
462then
463 case "$CC" in
464 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
465 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
466 esac
467 if test "$CXX" = "notfound"
468 then
469 CXX=""
470 fi
471fi
472if test -z "$CXX"
473then
474 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
475 if test "$CXX" = "notfound"
476 then
477 CXX=""
478 fi
479fi
480if test "$preset_cxx" != "$CXX"
481then
482 AC_MSG_WARN([
483
484 By default, distutils will build C++ extension modules with "$CXX".
485 If this is not intended, then set CXX on the configure command line.
486 ])
487fi
488
489
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000490# checks for UNIX variants that set C preprocessor variables
491AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000492
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000493# Check for unsupported systems
494case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000495atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000496 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
497 echo See README for details.
498 exit 1;;
499esac
500
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000501AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000502AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000503AC_ARG_WITH(suffix,
504 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
505[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000506 case $withval in
507 no) EXEEXT=;;
508 yes) EXEEXT=.exe;;
509 *) EXEEXT=$withval;;
510 esac])
511AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000512
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000513# Test whether we're running on a non-case-sensitive system, in which
514# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000515AC_SUBST(BUILDEXEEXT)
516AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000517if test ! -d CaseSensitiveTestDir; then
518mkdir CaseSensitiveTestDir
519fi
520
521if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000522then
Jack Jansen1999ef42001-12-06 21:47:20 +0000523 AC_MSG_RESULT(yes)
524 BUILDEXEEXT=.exe
525else
526 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000527 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000528fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000529rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000530
Guido van Rossumdd997f71998-10-07 19:58:26 +0000531case $MACHDEP in
532bsdos*)
533 case $CC in
534 gcc) CC="$CC -D_HAVE_BSDI";;
535 esac;;
536esac
537
Guido van Rossum84561611997-08-21 00:08:11 +0000538case $ac_sys_system in
539hp*|HP*)
540 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000541 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000542 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000543Monterey*)
544 case $CC in
545 cc) CC="$CC -Wl,-Bexport";;
546 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000547SunOS*)
548 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000549 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000550 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000551esac
552
Martin v. Löwise8964d42001-03-06 12:09:07 +0000553
Neil Schemenauer61c51152001-01-26 16:18:16 +0000554AC_SUBST(LIBRARY)
555AC_MSG_CHECKING(LIBRARY)
556if test -z "$LIBRARY"
557then
558 LIBRARY='libpython$(VERSION).a'
559fi
560AC_MSG_RESULT($LIBRARY)
561
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000562# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000563# name of the library into which to insert object files). BLDLIBRARY is also
564# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
565# is blank as the main program is not linked directly against LDLIBRARY.
566# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
567# systems without shared libraries, LDLIBRARY is the same as LIBRARY
568# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
569# DLLLIBRARY is the shared (i.e., DLL) library.
570#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000571# RUNSHARED is used to run shared python without installed libraries
572#
573# INSTSONAME is the name of the shared library that will be use to install
574# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000575AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000576AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000577AC_SUBST(BLDLIBRARY)
578AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000579AC_SUBST(INSTSONAME)
580AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000581LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000582BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000583INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000584DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000585LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000586RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000587
Guido van Rossumfb842551997-08-06 23:42:07 +0000588# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000589# If CXX is set, and if it is needed to link a main function that was
590# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
591# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000592# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000593# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000594AC_SUBST(LINKCC)
595AC_MSG_CHECKING(LINKCC)
596if test -z "$LINKCC"
597then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000598 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000599 case $ac_sys_system in
600 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000601 exp_extra="\"\""
602 if test $ac_sys_release -ge 5 -o \
603 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
604 exp_extra="."
605 fi
606 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000607 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000608 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000609 QNX*)
610 # qcc must be used because the other compilers do not
611 # support -N.
612 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000613 esac
614fi
615AC_MSG_RESULT($LINKCC)
616
Tarek Ziadébe720e02009-05-09 11:55:12 +0000617# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
618# make sure we default having it set to "no": this is used by
619# distutils.unixccompiler to know if it should add --enable-new-dtags
620# to linker command lines, and failing to detect GNU ld simply results
621# in the same bahaviour as before.
622AC_SUBST(GNULD)
623AC_MSG_CHECKING(for GNU ld)
624ac_prog=ld
625if test "$GCC" = yes; then
626 ac_prog=`$CC -print-prog-name=ld`
627fi
628case `"$ac_prog" -V 2>&1 < /dev/null` in
629 *GNU*)
630 GNULD=yes;;
631 *)
632 GNULD=no;;
633esac
634AC_MSG_RESULT($GNULD)
635
Martin v. Löwis1142de32002-03-29 16:28:31 +0000636AC_MSG_CHECKING(for --enable-shared)
637AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000638 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000639
Martin v. Löwis1142de32002-03-29 16:28:31 +0000640if test -z "$enable_shared"
641then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000642 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000643 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000644 enable_shared="yes";;
645 *)
646 enable_shared="no";;
647 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000648fi
649AC_MSG_RESULT($enable_shared)
650
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000651AC_MSG_CHECKING(for --enable-profiling)
652AC_ARG_ENABLE(profiling,
653 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
654[ac_save_cc="$CC"
655 CC="$CC -pg"
656 AC_TRY_RUN([int main() { return 0; }],
657 ac_enable_profiling="yes",
658 ac_enable_profiling="no",
659 ac_enable_profiling="no")
660 CC="$ac_save_cc"])
661AC_MSG_RESULT($ac_enable_profiling)
662
663case "$ac_enable_profiling" in
664 "yes")
665 BASECFLAGS="-pg $BASECFLAGS"
666 LDFLAGS="-pg $LDFLAGS"
667 ;;
668esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000669
670AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000671
Guido van Rossumb8552162001-09-05 14:58:11 +0000672# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
673# library that we build, but we do not want to link against it (we
674# will find it with a -framework option). For this reason there is an
675# extra variable BLDLIBRARY against which Python and the extension
676# modules are linked, BLDLIBRARY. This is normally the same as
677# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000678if test "$enable_framework"
679then
680 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000681 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000682 BLDLIBRARY=''
683else
684 BLDLIBRARY='$(LDLIBRARY)'
685fi
686
Martin v. Löwis1142de32002-03-29 16:28:31 +0000687# Other platforms follow
688if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000689 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000690 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000691 CYGWIN*)
692 LDLIBRARY='libpython$(VERSION).dll.a'
693 DLLLIBRARY='libpython$(VERSION).dll'
694 ;;
695 SunOS*)
696 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000697 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000698 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000699 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000700 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000701 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000702 LDLIBRARY='libpython$(VERSION).so'
703 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000704 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000705 case $ac_sys_system in
706 FreeBSD*)
707 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
708 ;;
709 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000710 INSTSONAME="$LDLIBRARY".$SOVERSION
711 ;;
712 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000713 case `uname -m` in
714 ia64)
715 LDLIBRARY='libpython$(VERSION).so'
716 ;;
717 *)
718 LDLIBRARY='libpython$(VERSION).sl'
719 ;;
720 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000721 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000722 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000723 ;;
724 OSF*)
725 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000726 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000727 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000728 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000729 atheos*)
730 LDLIBRARY='libpython$(VERSION).so'
731 BLDLIBRARY='-L. -lpython$(VERSION)'
732 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
733 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000734 Darwin*)
735 LDLIBRARY='libpython$(VERSION).dylib'
736 BLDLIBRARY='-L. -lpython$(VERSION)'
737 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
738 ;;
739
Martin v. Löwis1142de32002-03-29 16:28:31 +0000740 esac
Jason Tishler30765592003-09-04 11:04:06 +0000741else # shared is disabled
742 case $ac_sys_system in
743 CYGWIN*)
744 BLDLIBRARY='$(LIBRARY)'
745 LDLIBRARY='libpython$(VERSION).dll.a'
746 ;;
747 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000748fi
749
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000750AC_MSG_RESULT($LDLIBRARY)
751
Guido van Rossum627b2d71993-12-24 10:39:16 +0000752AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000753AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000754AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000755
Tarek Ziadé5662d3e2009-05-07 21:24:43 +0000756# tweak ARFLAGS only if the user didn't set it on the command line
757AC_SUBST(ARFLAGS)
758if test -z "$ARFLAGS"
759then
760 ARFLAGS="rc"
761fi
762
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000763AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000764AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000765if test $SVNVERSION = found
766then
767 SVNVERSION="svnversion \$(srcdir)"
768else
Benjamin Petersonf53eec82009-05-23 19:36:27 +0000769 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000770fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000771
Neil Schemenauera42c8272001-03-31 00:01:55 +0000772case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000773bsdos*|hp*|HP*)
774 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000775 if test -z "$INSTALL"
776 then
777 INSTALL="${srcdir}/install-sh -c"
778 fi
779esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000780AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000781
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000782# Not every filesystem supports hard links
783AC_SUBST(LN)
784if test -z "$LN" ; then
785 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000786 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000787 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000788 *) LN=ln;;
789 esac
790fi
791
Fred Drake9f715822001-07-11 06:27:00 +0000792# Check for --with-pydebug
793AC_MSG_CHECKING(for --with-pydebug)
794AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000795 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
796[
Fred Drake9f715822001-07-11 06:27:00 +0000797if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000798then
799 AC_DEFINE(Py_DEBUG, 1,
800 [Define if you want to build an interpreter with many run-time checks.])
801 AC_MSG_RESULT(yes);
802 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000803else AC_MSG_RESULT(no); Py_DEBUG='false'
804fi],
805[AC_MSG_RESULT(no)])
806
Skip Montanarodecc6a42003-01-01 20:07:49 +0000807# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
808# merged with this chunk of code?
809
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000810# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000811# ------------------------
812# (The following bit of code is complicated enough - please keep things
813# indented properly. Just pretend you're editing Python code. ;-)
814
815# There are two parallel sets of case statements below, one that checks to
816# see if OPT was set and one that does BASECFLAGS setting based upon
817# compiler and platform. BASECFLAGS tweaks need to be made even if the
818# user set OPT.
819
820# tweak OPT based on compiler and platform, only if the user didn't set
821# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000822AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000823if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000824then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000825 case $GCC in
826 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000827 if test "$CC" != 'g++' ; then
828 STRICT_PROTO="-Wstrict-prototypes"
829 fi
Christian Heimes38053212007-12-14 01:24:44 +0000830 # For gcc 4.x we need to use -fwrapv so lets check if its supported
831 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
832 WRAP="-fwrapv"
833 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000834 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000835 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000836 if test "$Py_DEBUG" = 'true' ; then
837 # Optimization messes up debuggers, so turn it off for
838 # debug builds.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000839 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000840 else
Christian Heimes38053212007-12-14 01:24:44 +0000841 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000842 fi
843 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000844 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000845 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000846 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000847 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000848 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000849 SCO_SV*) OPT="$OPT -m486 -DSCO5"
850 ;;
851 esac
Fred Drake9f715822001-07-11 06:27:00 +0000852 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000853
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000854 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000855 OPT="-O"
856 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000857 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000858
859 # The current (beta) Monterey compiler dies with optimizations
860 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000861 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000862 Monterey*)
863 OPT=""
864 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000865 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000866
Guido van Rossum4e8af441994-08-19 15:33:54 +0000867fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000868
Skip Montanarodecc6a42003-01-01 20:07:49 +0000869AC_SUBST(BASECFLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000870
871# The -arch flags for universal builds on OSX
872UNIVERSAL_ARCH_FLAGS=
873AC_SUBST(UNIVERSAL_ARCH_FLAGS)
874
Skip Montanarodecc6a42003-01-01 20:07:49 +0000875# tweak BASECFLAGS based on compiler and platform
876case $GCC in
877yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000878 # Python violates C99 rules, by casting between incompatible
879 # pointer types. GCC may generate bad code as a result of that,
880 # so use -fno-strict-aliasing if supported.
881 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
882 ac_save_cc="$CC"
883 CC="$CC -fno-strict-aliasing"
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +0000884 AC_CACHE_VAL(ac_cv_no_strict_aliasing_ok,
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000885 AC_TRY_RUN([int main() { return 0; }],
886 ac_cv_no_strict_aliasing_ok=yes,
887 ac_cv_no_strict_aliasing_ok=no,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +0000888 ac_cv_no_strict_aliasing_ok=no))
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000889 CC="$ac_save_cc"
890 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
891 if test $ac_cv_no_strict_aliasing_ok = yes
892 then
893 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
894 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000895
896 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
897 # support. Without this, treatment of subnormals doesn't follow
898 # the standard.
899 case $ac_sys_machine in
900 alpha*)
901 BASECFLAGS="$BASECFLAGS -mieee"
902 ;;
903 esac
904
Skip Montanarodecc6a42003-01-01 20:07:49 +0000905 case $ac_sys_system in
906 SCO_SV*)
907 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
908 ;;
909 # is there any other compiler on Darwin besides gcc?
910 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +0000911 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
912 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000913
914
Thomas Wouters477c8d52006-05-27 19:21:47 +0000915 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +0000916 UNIVERSAL_ARCH_FLAGS=""
917 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
918 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000919 ARCH_RUN_32BIT=""
Georg Brandlfcaf9102008-07-16 02:17:56 +0000920
921 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
922 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
923
924 elif test "$UNIVERSAL_ARCHS" = "all" ; then
925 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Benjamin Peterson3ad7ba12008-08-19 17:16:56 +0000926 ARCH_RUN_32BIT="arch -i386 -ppc"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000927
928 else
929 AC_MSG_ERROR([proper usage is --with-universalarch=32-bit|64-bit|all])
930
931 fi
932
933
934 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Georg Brandl3dbca812008-07-23 16:10:53 +0000935 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000936 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
937 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
938 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000939 fi
940
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000941 # Calculate the right deployment target for this build.
942 #
943 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
944 if test ${cur_target} '>' 10.2; then
945 cur_target=10.3
946 fi
947 if test "${UNIVERSAL_ARCHS}" = "all"; then
948 # Ensure that the default platform for a 4-way
949 # universal build is OSX 10.5, that's the first
950 # OS release where 4-way builds make sense.
951 cur_target='10.5'
952 fi
953 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
954
955 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
956 # environment with a value that is the same as what we'll use
957 # in the Makefile to ensure that we'll get the same compiler
958 # environment during configure and build time.
959 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
960 export MACOSX_DEPLOYMENT_TARGET
961 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
962
Skip Montanarodecc6a42003-01-01 20:07:49 +0000963 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000964 OSF*)
965 BASECFLAGS="$BASECFLAGS -mieee"
966 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000967 esac
968 ;;
969
970*)
971 case $ac_sys_system in
972 OpenUNIX*|UnixWare*)
973 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
974 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000975 OSF*)
976 BASECFLAGS="$BASECFLAGS -ieee -std"
977 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000978 SCO_SV*)
979 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
980 ;;
981 esac
982 ;;
983esac
984
Fred Drakee1ceaa02001-12-04 20:55:47 +0000985if test "$Py_DEBUG" = 'true'; then
986 :
987else
988 OPT="-DNDEBUG $OPT"
989fi
990
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000991if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000992then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000993 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000994fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000995
Neal Norwitz020c46a2006-01-07 21:39:28 +0000996# disable check for icc since it seems to pass, but generates a warning
997if test "$CC" = icc
998then
999 ac_cv_opt_olimit_ok=no
1000fi
1001
Guido van Rossum91922671997-10-09 20:24:13 +00001002AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1003AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1004[ac_save_cc="$CC"
1005CC="$CC -OPT:Olimit=0"
1006AC_TRY_RUN([int main() { return 0; }],
1007 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001008 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +00001009 ac_cv_opt_olimit_ok=no)
1010CC="$ac_save_cc"])
1011AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001012if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001013 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001014 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1015 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1016 # environment?
1017 Darwin*)
1018 ;;
1019 *)
1020 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1021 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001022 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001023else
1024 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1025 AC_CACHE_VAL(ac_cv_olimit_ok,
1026 [ac_save_cc="$CC"
1027 CC="$CC -Olimit 1500"
1028 AC_TRY_RUN([int main() { return 0; }],
1029 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001030 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +00001031 ac_cv_olimit_ok=no)
1032 CC="$ac_save_cc"])
1033 AC_MSG_RESULT($ac_cv_olimit_ok)
1034 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001035 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001036 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001037fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001038
Thomas Wouters89f507f2006-12-13 04:49:30 +00001039# Check whether GCC supports PyArg_ParseTuple format
1040if test "$GCC" = "yes"
1041then
1042 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1043 save_CFLAGS=$CFLAGS
1044 CFLAGS="$CFLAGS -Werror"
1045 AC_TRY_COMPILE([
1046 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1047 ],,
1048 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1049 AC_MSG_RESULT(yes),
1050 AC_MSG_RESULT(no)
1051 )
1052 CFLAGS=$save_CFLAGS
1053fi
1054
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001055# On some compilers, pthreads are available without further options
1056# (e.g. MacOS X). On some of these systems, the compiler will not
1057# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1058# So we have to see first whether pthreads are available without
1059# options before we can check whether -Kpthread improves anything.
1060AC_MSG_CHECKING(whether pthreads are available without options)
1061AC_CACHE_VAL(ac_cv_pthread_is_default,
1062[AC_TRY_RUN([
1063#include <pthread.h>
1064
1065void* routine(void* p){return NULL;}
1066
1067int main(){
1068 pthread_t p;
1069 if(pthread_create(&p,NULL,routine,NULL)!=0)
1070 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001071 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001072 return 0;
1073}
1074],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001075[
1076 ac_cv_pthread_is_default=yes
1077 ac_cv_kthread=no
1078 ac_cv_pthread=no
1079],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001080 ac_cv_pthread_is_default=no,
1081 ac_cv_pthread_is_default=no)
1082])
1083AC_MSG_RESULT($ac_cv_pthread_is_default)
1084
1085
1086if test $ac_cv_pthread_is_default = yes
1087then
1088 ac_cv_kpthread=no
1089else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001090# -Kpthread, if available, provides the right #defines
1091# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001092# Some compilers won't report that they do not support -Kpthread,
1093# so we need to run a program to see whether it really made the
1094# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001095AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1096AC_CACHE_VAL(ac_cv_kpthread,
1097[ac_save_cc="$CC"
1098CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001099AC_TRY_RUN([
1100#include <pthread.h>
1101
1102void* routine(void* p){return NULL;}
1103
1104int main(){
1105 pthread_t p;
1106 if(pthread_create(&p,NULL,routine,NULL)!=0)
1107 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001108 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001109 return 0;
1110}
1111],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001112 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001113 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001114 ac_cv_kpthread=no)
1115CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001116AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001117fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001118
Skip Montanarod8d39a02003-07-10 20:44:10 +00001119if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001120then
1121# -Kthread, if available, provides the right #defines
1122# and linker options to make pthread_create available
1123# Some compilers won't report that they do not support -Kthread,
1124# so we need to run a program to see whether it really made the
1125# function available.
1126AC_MSG_CHECKING(whether $CC accepts -Kthread)
1127AC_CACHE_VAL(ac_cv_kthread,
1128[ac_save_cc="$CC"
1129CC="$CC -Kthread"
1130AC_TRY_RUN([
1131#include <pthread.h>
1132
1133void* routine(void* p){return NULL;}
1134
1135int main(){
1136 pthread_t p;
1137 if(pthread_create(&p,NULL,routine,NULL)!=0)
1138 return 1;
1139 (void)pthread_detach(p);
1140 return 0;
1141}
1142],
1143 ac_cv_kthread=yes,
1144 ac_cv_kthread=no,
1145 ac_cv_kthread=no)
1146CC="$ac_save_cc"])
1147AC_MSG_RESULT($ac_cv_kthread)
1148fi
1149
Skip Montanarod8d39a02003-07-10 20:44:10 +00001150if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001151then
1152# -pthread, if available, provides the right #defines
1153# and linker options to make pthread_create available
1154# Some compilers won't report that they do not support -pthread,
1155# so we need to run a program to see whether it really made the
1156# function available.
1157AC_MSG_CHECKING(whether $CC accepts -pthread)
1158AC_CACHE_VAL(ac_cv_thread,
1159[ac_save_cc="$CC"
1160CC="$CC -pthread"
1161AC_TRY_RUN([
1162#include <pthread.h>
1163
1164void* routine(void* p){return NULL;}
1165
1166int main(){
1167 pthread_t p;
1168 if(pthread_create(&p,NULL,routine,NULL)!=0)
1169 return 1;
1170 (void)pthread_detach(p);
1171 return 0;
1172}
1173],
1174 ac_cv_pthread=yes,
1175 ac_cv_pthread=no,
1176 ac_cv_pthread=no)
1177CC="$ac_save_cc"])
1178AC_MSG_RESULT($ac_cv_pthread)
1179fi
1180
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001181# If we have set a CC compiler flag for thread support then
1182# check if it works for CXX, too.
1183ac_cv_cxx_thread=no
1184if test ! -z "$CXX"
1185then
1186AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1187ac_save_cxx="$CXX"
1188
1189if test "$ac_cv_kpthread" = "yes"
1190then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001191 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001192 ac_cv_cxx_thread=yes
1193elif test "$ac_cv_kthread" = "yes"
1194then
1195 CXX="$CXX -Kthread"
1196 ac_cv_cxx_thread=yes
1197elif test "$ac_cv_pthread" = "yes"
1198then
1199 CXX="$CXX -pthread"
1200 ac_cv_cxx_thread=yes
1201fi
1202
1203if test $ac_cv_cxx_thread = yes
1204then
1205 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1206 $CXX -c conftest.$ac_ext 2>&5
1207 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1208 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1209 then
1210 ac_cv_cxx_thread=yes
1211 else
1212 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001213 fi
1214 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001215fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001216AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001217fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001218CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001219
Fred Drakece81d592000-07-09 14:39:29 +00001220dnl # check for ANSI or K&R ("traditional") preprocessor
1221dnl AC_MSG_CHECKING(for C preprocessor type)
1222dnl AC_TRY_COMPILE([
1223dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1224dnl int foo;
1225dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1226dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1227dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001228
Guido van Rossum627b2d71993-12-24 10:39:16 +00001229# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001230AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001231AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1232fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001233ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001234shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001235unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001236sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1237sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001238sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Georg Brandlf78e02b2008-06-10 17:40:04 +00001239sys/termio.h sys/time.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001240sys/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 +00001241sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimes043d6f62008-01-07 17:19:16 +00001242bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001243AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001244AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001245
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001246# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001247AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001248#ifdef HAVE_CURSES_H
1249#include <curses.h>
1250#endif
1251])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001252
Martin v. Löwis11017b12006-01-14 18:12:57 +00001253# On Linux, netlink.h requires asm/types.h
1254AC_CHECK_HEADERS(linux/netlink.h,,,[
1255#ifdef HAVE_ASM_TYPES_H
1256#include <asm/types.h>
1257#endif
1258#ifdef HAVE_SYS_SOCKET_H
1259#include <sys/socket.h>
1260#endif
1261])
1262
Guido van Rossum627b2d71993-12-24 10:39:16 +00001263# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001264was_it_defined=no
1265AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001266AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1267 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1268])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001269AC_MSG_RESULT($was_it_defined)
1270
Neal Norwitz11690112002-07-30 01:08:28 +00001271# Check whether using makedev requires defining _OSF_SOURCE
1272AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001273AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001274 [ makedev(0, 0) ],
1275 ac_cv_has_makedev=yes,
1276 ac_cv_has_makedev=no)
1277if test "$ac_cv_has_makedev" = "no"; then
1278 # we didn't link, try if _OSF_SOURCE will allow us to link
1279 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001280#define _OSF_SOURCE 1
1281#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001282 ],
1283 [ makedev(0, 0) ],
1284 ac_cv_has_makedev=yes,
1285 ac_cv_has_makedev=no)
1286 if test "$ac_cv_has_makedev" = "yes"; then
1287 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1288 fi
1289fi
1290AC_MSG_RESULT($ac_cv_has_makedev)
1291if test "$ac_cv_has_makedev" = "yes"; then
1292 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1293fi
1294
Martin v. Löwis399a6892002-10-04 10:22:02 +00001295# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1296# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1297# defined, but the compiler does not support pragma redefine_extname,
1298# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1299# structures (such as rlimit64) without declaring them. As a
1300# work-around, disable LFS on such configurations
1301
1302use_lfs=yes
1303AC_MSG_CHECKING(Solaris LFS bug)
1304AC_TRY_COMPILE([
1305#define _LARGEFILE_SOURCE 1
1306#define _FILE_OFFSET_BITS 64
1307#include <sys/resource.h>
1308],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1309AC_MSG_RESULT($sol_lfs_bug)
1310if test "$sol_lfs_bug" = "yes"; then
1311 use_lfs=no
1312fi
1313
1314if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001315# Two defines needed to enable largefile support on various platforms
1316# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001317AC_DEFINE(_LARGEFILE_SOURCE, 1,
1318[This must be defined on some systems to enable large file support.])
1319AC_DEFINE(_FILE_OFFSET_BITS, 64,
1320[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001321fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001322
Guido van Rossum300fda71996-08-19 21:58:16 +00001323# Add some code to confdefs.h so that the test for off_t works on SCO
1324cat >> confdefs.h <<\EOF
1325#if defined(SCO_DS)
1326#undef _OFF_T
1327#endif
1328EOF
1329
Guido van Rossumef2255b2000-03-10 22:30:29 +00001330# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001331AC_TYPE_MODE_T
1332AC_TYPE_OFF_T
1333AC_TYPE_PID_T
1334AC_TYPE_SIGNAL
1335AC_TYPE_SIZE_T
1336AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001337AC_TYPE_UINT32_T
1338AC_TYPE_UINT64_T
1339AC_TYPE_INT32_T
1340AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001341AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001342 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001343
Guido van Rossumef2255b2000-03-10 22:30:29 +00001344# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001345# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001346AC_CHECK_SIZEOF(int, 4)
1347AC_CHECK_SIZEOF(long, 4)
1348AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001349AC_CHECK_SIZEOF(short, 2)
1350AC_CHECK_SIZEOF(float, 4)
1351AC_CHECK_SIZEOF(double, 8)
1352AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001353AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001354AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001355
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001356AC_MSG_CHECKING(for long long support)
1357have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001358AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1359 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1360 have_long_long=yes
1361])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001362AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001363if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001364AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001365fi
1366
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001367AC_MSG_CHECKING(for long double support)
1368have_long_double=no
1369AC_TRY_COMPILE([], [long double x; x = (long double)0;], [
1370 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1371 have_long_double=yes
1372])
1373AC_MSG_RESULT($have_long_double)
1374if test "$have_long_double" = yes ; then
1375AC_CHECK_SIZEOF(long double, 16)
1376fi
1377
1378
Thomas Woutersb2137042007-02-01 18:02:27 +00001379AC_MSG_CHECKING(for _Bool support)
1380have_c99_bool=no
1381AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1382 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1383 have_c99_bool=yes
1384])
1385AC_MSG_RESULT($have_c99_bool)
1386if test "$have_c99_bool" = yes ; then
1387AC_CHECK_SIZEOF(_Bool, 1)
1388fi
1389
Thomas Wouters89f507f2006-12-13 04:49:30 +00001390AC_CHECK_TYPES(uintptr_t,
1391 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1392 [], [#ifdef HAVE_STDINT_H
1393 #include <stdint.h>
1394 #endif])
1395
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001396AC_CHECK_SIZEOF(off_t, [], [
1397#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001398#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001399#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001400])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001401
1402AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001403if test "$have_long_long" = yes -a \
1404 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1405 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001406 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1407 [Defined to enable large file support when an off_t is bigger than a long
1408 and long long is available and at least as big as an off_t. You may need
1409 to add some flags for configuration and compilation to enable this mode.
1410 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001411 AC_MSG_RESULT(yes)
1412else
1413 AC_MSG_RESULT(no)
1414fi
1415
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001416AC_CHECK_SIZEOF(time_t, [], [
1417#ifdef HAVE_SYS_TYPES_H
1418#include <sys/types.h>
1419#endif
1420#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00001421#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001422#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001423])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001424
Trent Mick635f6fb2000-08-23 21:33:05 +00001425# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001426ac_save_cc="$CC"
1427if test "$ac_cv_kpthread" = "yes"
1428then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001429elif test "$ac_cv_kthread" = "yes"
1430then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001431elif test "$ac_cv_pthread" = "yes"
1432then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001433fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001434
Trent Mick635f6fb2000-08-23 21:33:05 +00001435AC_MSG_CHECKING(for pthread_t)
1436have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001437AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001438AC_MSG_RESULT($have_pthread_t)
1439if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001440 AC_CHECK_SIZEOF(pthread_t, [], [
1441#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001442#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001443#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001444 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001445fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001446CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001447
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001448AC_SUBST(OTHER_LIBTOOL_OPT)
1449case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001450 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001451 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1452 ;;
1453 Darwin/*)
1454 OTHER_LIBTOOL_OPT=""
1455 ;;
1456esac
1457
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001458AC_SUBST(LIBTOOL_CRUFT)
1459case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001460 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001461 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1462 if test "${enable_universalsdk}"; then
1463 :
1464 else
1465 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1466 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001467 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001468 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001469 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001470 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1471 if test ${gcc_version} '<' 4.0
1472 then
1473 LIBTOOL_CRUFT="-lcc_dynamic"
1474 else
1475 LIBTOOL_CRUFT=""
1476 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001477 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001478 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001479 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001480esac
1481
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001482AC_MSG_CHECKING(for --enable-framework)
1483if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001484then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001485 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001486 # -F. is needed to allow linking to the framework while
1487 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001488 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1489 [Define if you want to produce an OpenStep/Rhapsody framework
1490 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001491 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001492 if test $enable_shared = "yes"
1493 then
1494 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1495 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001496else
1497 AC_MSG_RESULT(no)
1498fi
1499
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001500AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001501case $ac_sys_system/$ac_sys_release in
1502 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001503 AC_DEFINE(WITH_DYLD, 1,
1504 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1505 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1506 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001507 AC_MSG_RESULT(always on for Darwin)
1508 ;;
1509 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001510 AC_MSG_RESULT(no)
1511 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001512esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001513
Guido van Rossumac405f61994-09-12 10:56:06 +00001514# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001515AC_SUBST(SO)
1516AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001517AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001518AC_SUBST(CCSHARED)
1519AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001520# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001521# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001522AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001523if test -z "$SO"
1524then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001525 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001526 hp*|HP*)
1527 case `uname -m` in
1528 ia64) SO=.so;;
1529 *) SO=.sl;;
1530 esac
1531 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001532 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001533 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001534 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001535else
1536 # this might also be a termcap variable, see #610332
1537 echo
1538 echo '====================================================================='
1539 echo '+ +'
1540 echo '+ WARNING: You have set SO in your environment. +'
1541 echo '+ Do you really mean to change the extension for shared libraries? +'
1542 echo '+ Continuing in 10 seconds to let you to ponder. +'
1543 echo '+ +'
1544 echo '====================================================================='
1545 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001546fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001547AC_MSG_RESULT($SO)
Georg Brandlb1441c72009-01-03 22:33:39 +00001548
Thomas Wouters477c8d52006-05-27 19:21:47 +00001549AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001550# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001551# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001552# (Shared libraries in this instance are shared modules to be loaded into
1553# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001554AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001555if test -z "$LDSHARED"
1556then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001557 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001558 AIX*)
1559 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001560 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001561 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001562 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001563 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001564 SunOS/5*)
1565 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001566 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001567 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001568 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001569 hp*|HP*)
1570 if test "$GCC" = "yes"
1571 then LDSHARED='$(CC) -shared'
1572 else LDSHARED='ld -b';
1573 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001574 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001575 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001576 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1577 if test "$enable_framework" ; then
1578 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001579 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1580 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001581 else
1582 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001583 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001584 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001585 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001586 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1587 if test "$enable_framework" ; then
1588 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001589 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1590 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001591 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001592 # No framework, use the Python app as bundle-loader
1593 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001594 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001595 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001596 Darwin/*)
1597 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1598 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001599
Georg Brandlfcaf9102008-07-16 02:17:56 +00001600 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001601 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001602 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001603 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001604 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001605 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1606 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001607 else
1608 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1609 if test "$enable_framework" ; then
1610 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001611 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1612 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001613 else
1614 # No framework, use the Python app as bundle-loader
1615 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1616 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1617 fi
1618 fi
1619 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001620 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001621 BSD/OS*/4*) LDSHARED="gcc -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001622 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001623 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001624 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001625 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001626 else
1627 LDSHARED="ld -Bshareable ${LDFLAGS}"
1628 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001629 OpenBSD*)
1630 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1631 then
1632 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1633 else
1634 case `uname -r` in
1635 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1636 LDSHARED="ld -Bshareable ${LDFLAGS}"
1637 ;;
1638 *)
1639 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1640 ;;
1641 esac
1642 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001643 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001644 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001645 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001646 then LDSHARED='$(CC) -shared'
1647 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001648 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001649 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001650 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001651 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001652 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001653 *) LDSHARED="ld";;
1654 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001655fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001656AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001657BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001658# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001659# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001660AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001661if test -z "$CCSHARED"
1662then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001663 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001664 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001665 then CCSHARED="-fPIC";
1666 elif test `uname -p` = sparc;
1667 then CCSHARED="-xcode=pic32";
1668 else CCSHARED="-Kpic";
1669 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001670 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001671 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001672 else CCSHARED="+z";
1673 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001674 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001675 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001676 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001677 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001678 if test "$GCC" = "yes"
1679 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001680 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001681 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001682 SCO_SV*)
1683 if test "$GCC" = "yes"
1684 then CCSHARED="-fPIC"
1685 else CCSHARED="-Kpic -belf"
1686 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001687 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001688 IRIX*/6*) case $CC in
1689 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001690 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001691 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001692 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001693 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001694fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001695AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001696# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001697# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001698AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001699if test -z "$LINKFORSHARED"
1700then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001701 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001702 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001703 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001704 LINKFORSHARED="-Wl,-E -Wl,+s";;
1705# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001706 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001707 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001708 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001709 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00001710 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001711 if test "$enable_framework"
1712 then
Jack Jansenda49e192005-01-07 13:08:22 +00001713 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001714 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001715 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001716 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001717 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001718 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001719 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001720 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1721 then
1722 LINKFORSHARED="-Wl,--export-dynamic"
1723 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001724 SunOS/5*) case $CC in
1725 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001726 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001727 then
1728 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001729 fi;;
1730 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001731 CYGWIN*)
1732 if test $enable_shared = "no"
1733 then
1734 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1735 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001736 QNX*)
1737 # -Wl,-E causes the symbols to be added to the dynamic
1738 # symbol table so that they can be found when a module
1739 # is loaded. -N 2048K causes the stack size to be set
1740 # to 2048 kilobytes so that the stack doesn't overflow
1741 # when running test_compile.py.
1742 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001743 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001744fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001745AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001746
Georg Brandl93de2162008-07-16 02:21:06 +00001747
Neil Schemenauer61c51152001-01-26 16:18:16 +00001748AC_SUBST(CFLAGSFORSHARED)
1749AC_MSG_CHECKING(CFLAGSFORSHARED)
1750if test ! "$LIBRARY" = "$LDLIBRARY"
1751then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001752 case $ac_sys_system in
1753 CYGWIN*)
1754 # Cygwin needs CCSHARED when building extension DLLs
1755 # but not when building the interpreter DLL.
1756 CFLAGSFORSHARED='';;
1757 *)
1758 CFLAGSFORSHARED='$(CCSHARED)'
1759 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001760fi
1761AC_MSG_RESULT($CFLAGSFORSHARED)
1762
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001763# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1764# library (with --enable-shared).
1765# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001766# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1767# if it is not required, since it creates a dependency of the shared library
1768# to LIBS. This, in turn, means that applications linking the shared libpython
1769# don't need to link LIBS explicitly. The default should be only changed
1770# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001771AC_SUBST(SHLIBS)
1772AC_MSG_CHECKING(SHLIBS)
1773case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001774 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001775 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001776esac
1777AC_MSG_RESULT($SHLIBS)
1778
1779
Guido van Rossum627b2d71993-12-24 10:39:16 +00001780# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001781AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1782AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001783
Georg Brandleee31162008-12-07 15:15:22 +00001784# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001785if test "$with_threads" = "yes" -o -z "$with_threads"; then
1786 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1787 # posix4 on Solaris 2.6
1788 # pthread (first!) on Linux
1789fi
1790
Martin v. Löwis19d17342003-06-14 21:03:05 +00001791# check if we need libintl for locale functions
1792AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00001793 [AC_DEFINE(WITH_LIBINTL, 1,
1794 [Define to 1 if libintl is needed for locale functions.])
1795 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001796
1797# checks for system dependent C++ extensions support
1798case "$ac_sys_system" in
1799 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1800 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1801 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001802 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1803 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1804 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001805 AC_MSG_RESULT(yes)],
1806 [AC_MSG_RESULT(no)]);;
1807 *) ;;
1808esac
1809
Guido van Rossum70c7f481998-03-26 18:44:10 +00001810# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001811AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001812AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001813
Guido van Rossumc5a39031996-07-31 17:35:03 +00001814AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001815AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001816 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1817[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001818AC_MSG_RESULT($withval)
1819LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001820],
1821[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001822
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001823# Check for use of the system libffi library
1824AC_MSG_CHECKING(for --with-system-ffi)
1825AC_ARG_WITH(system_ffi,
1826 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1827
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001828AC_MSG_RESULT($with_system_ffi)
1829
Matthias Klose55708cc2009-04-30 08:06:49 +00001830# Check for --with-dbmliborder
1831AC_MSG_CHECKING(for --with-dbmliborder)
1832AC_ARG_WITH(dbmliborder,
1833 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'.]),
1834[
1835if test x$with_dbmliborder = xyes
1836then
1837AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1838else
1839 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
1840 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
1841 then
1842 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1843 fi
1844 done
1845fi])
1846AC_MSG_RESULT($with_dbmliborder)
1847
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001848# Determine if signalmodule should be used.
1849AC_SUBST(USE_SIGNAL_MODULE)
1850AC_SUBST(SIGNAL_OBJS)
1851AC_MSG_CHECKING(for --with-signal-module)
1852AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001853 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001854
1855if test -z "$with_signal_module"
1856then with_signal_module="yes"
1857fi
1858AC_MSG_RESULT($with_signal_module)
1859
1860if test "${with_signal_module}" = "yes"; then
1861 USE_SIGNAL_MODULE=""
1862 SIGNAL_OBJS=""
1863else
1864 USE_SIGNAL_MODULE="#"
1865 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1866fi
1867
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001868# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001869AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001870USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001871
Guido van Rossum54d93d41997-01-22 20:51:58 +00001872AC_MSG_CHECKING(for --with-dec-threads)
1873AC_SUBST(LDLAST)
1874AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001875 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1876[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001877AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001878LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001879if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001880 with_thread="$withval";
1881fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001882[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001883
Martin v. Löwis11437992002-04-12 09:54:03 +00001884# Templates for things AC_DEFINEd more than once.
1885# For a single AC_DEFINE, no template is needed.
1886AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1887AH_TEMPLATE(_REENTRANT,
1888 [Define to force use of thread-safe errno, h_errno, and other functions])
1889AH_TEMPLATE(WITH_THREAD,
1890 [Define if you want to compile in rudimentary thread support])
1891
Guido van Rossum54d93d41997-01-22 20:51:58 +00001892AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001893dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001894AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001895 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001896
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001897# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001898dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001899AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001900 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1901 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001902
1903if test -z "$with_threads"
1904then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001905fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001906AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001907
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001908AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001909if test "$with_threads" = "no"
1910then
1911 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001912elif test "$ac_cv_pthread_is_default" = yes
1913then
1914 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001915 # Defining _REENTRANT on system with POSIX threads should not hurt.
1916 AC_DEFINE(_REENTRANT)
1917 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001918 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001919elif test "$ac_cv_kpthread" = "yes"
1920then
1921 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001922 if test "$ac_cv_cxx_thread" = "yes"; then
1923 CXX="$CXX -Kpthread"
1924 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001925 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001926 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001927 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001928elif test "$ac_cv_kthread" = "yes"
1929then
1930 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001931 if test "$ac_cv_cxx_thread" = "yes"; then
1932 CXX="$CXX -Kthread"
1933 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001934 AC_DEFINE(WITH_THREAD)
1935 posix_threads=yes
1936 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001937elif test "$ac_cv_pthread" = "yes"
1938then
1939 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001940 if test "$ac_cv_cxx_thread" = "yes"; then
1941 CXX="$CXX -pthread"
1942 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001943 AC_DEFINE(WITH_THREAD)
1944 posix_threads=yes
1945 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001946else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001947 if test ! -z "$with_threads" -a -d "$with_threads"
1948 then LDFLAGS="$LDFLAGS -L$with_threads"
1949 fi
1950 if test ! -z "$withval" -a -d "$withval"
1951 then LDFLAGS="$LDFLAGS -L$withval"
1952 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001953
1954 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001955 # define _POSIX_THREADS in unistd.h. Some apparently don't
1956 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001957 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1958 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001959 [
1960#include <unistd.h>
1961#ifdef _POSIX_THREADS
1962yes
1963#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001964 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1965 AC_MSG_RESULT($unistd_defines_pthreads)
1966
Martin v. Löwis130fb172001-07-19 11:00:41 +00001967 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001968 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1969 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001970 AC_DEFINE(HURD_C_THREADS, 1,
1971 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001972 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001973 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001974 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1975 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001976 AC_DEFINE(MACH_C_THREADS, 1,
1977 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001978 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001979 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001980 AC_ARG_WITH([pth],
1981 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1982 [AC_MSG_RESULT($withval)
1983 AC_DEFINE([WITH_THREAD])
1984 AC_DEFINE([HAVE_PTH], 1,
1985 [Define if you have GNU PTH threads.])
1986 LIBS="-lpth $LIBS"
1987 THREADOBJ="Python/thread.o"],
1988 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001989
1990 # Just looking for pthread_create in libpthread is not enough:
1991 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1992 # So we really have to include pthread.h, and then link.
1993 _libs=$LIBS
1994 LIBS="$LIBS -lpthread"
1995 AC_MSG_CHECKING([for pthread_create in -lpthread])
1996 AC_TRY_LINK([#include <pthread.h>
1997
1998void * start_routine (void *arg) { exit (0); }], [
1999pthread_create (NULL, NULL, start_routine, NULL)], [
2000 AC_MSG_RESULT(yes)
2001 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002002 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002003 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002004 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002005 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002006 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002007 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002008 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2009 AC_DEFINE(ATHEOS_THREADS, 1,
2010 [Define this if you have AtheOS threads.])
2011 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002012 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002013 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002014 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002015 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002016 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002017 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002018 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002019 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002020 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002021 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002022 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002023 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002024 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002025 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002026 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002027 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002028 USE_THREAD_MODULE="#"])
Skip Montanaroeb33e5a2007-08-17 12:57:41 +00002029 ])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002030
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002031 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2032 LIBS="$LIBS -lmpc"
2033 THREADOBJ="Python/thread.o"
2034 USE_THREAD_MODULE=""])
2035
2036 if test "$posix_threads" != "yes"; then
2037 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2038 LIBS="$LIBS -lthread"
2039 THREADOBJ="Python/thread.o"
2040 USE_THREAD_MODULE=""])
2041 fi
2042
2043 if test "$USE_THREAD_MODULE" != "#"
2044 then
2045 # If the above checks didn't disable threads, (at least) OSF1
2046 # needs this '-threads' argument during linking.
2047 case $ac_sys_system in
2048 OSF1) LDLAST=-threads;;
2049 esac
2050 fi
2051fi
2052
2053if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002054 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002055 AC_DEFINE(_POSIX_THREADS, 1,
2056 [Define if you have POSIX threads,
2057 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002058 fi
2059
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002060 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2061 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002062 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2063 Defined for Solaris 2.6 bug in pthread header.)
2064 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002065 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002066 Define if the Posix semaphores do not work on your system)
2067 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002068 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2069 Define if the Posix semaphores do not work on your system)
2070 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002071 esac
2072
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002073 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2074 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2075 [AC_TRY_RUN([#include <pthread.h>
2076 void *foo(void *parm) {
2077 return NULL;
2078 }
2079 main() {
2080 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002081 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002082 if (pthread_attr_init(&attr)) exit(-1);
2083 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002084 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002085 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002086 }],
2087 ac_cv_pthread_system_supported=yes,
2088 ac_cv_pthread_system_supported=no,
2089 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002090 ])
2091 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2092 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002093 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002094 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002095 AC_CHECK_FUNCS(pthread_sigmask,
2096 [case $ac_sys_system in
2097 CYGWIN*)
2098 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2099 [Define if pthread_sigmask() does not work on your system.])
2100 ;;
2101 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002102fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002103
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002104
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002105# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002106AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002107AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002108AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002109[ --enable-ipv6 Enable ipv6 (with ipv4) support
2110 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002111[ case "$enableval" in
2112 no)
2113 AC_MSG_RESULT(no)
2114 ipv6=no
2115 ;;
2116 *) AC_MSG_RESULT(yes)
2117 AC_DEFINE(ENABLE_IPV6)
2118 ipv6=yes
2119 ;;
2120 esac ],
2121
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002122[
2123dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002124 AC_TRY_RUN([ /* AF_INET6 available check */
2125#include <sys/types.h>
2126#include <sys/socket.h>
2127main()
2128{
2129 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2130 exit(1);
2131 else
2132 exit(0);
2133}
2134],
2135 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002136 ipv6=yes,
2137 AC_MSG_RESULT(no)
2138 ipv6=no,
2139 AC_MSG_RESULT(no)
2140 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002141)
2142
2143if test "$ipv6" = "yes"; then
2144 AC_MSG_CHECKING(if RFC2553 API is available)
2145 AC_TRY_COMPILE([#include <sys/types.h>
2146#include <netinet/in.h>],
2147 [struct sockaddr_in6 x;
2148x.sin6_scope_id;],
2149 AC_MSG_RESULT(yes)
2150 ipv6=yes,
2151 AC_MSG_RESULT(no, IPv6 disabled)
2152 ipv6=no)
2153fi
2154
2155if test "$ipv6" = "yes"; then
2156 AC_DEFINE(ENABLE_IPV6)
2157fi
2158])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002159
2160ipv6type=unknown
2161ipv6lib=none
2162ipv6trylibc=no
2163
2164if test "$ipv6" = "yes"; then
2165 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002166 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2167 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002168 case $i in
2169 inria)
2170 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002171 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002172#include <netinet/in.h>
2173#ifdef IPV6_INRIA_VERSION
2174yes
2175#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002176 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002177 ;;
2178 kame)
2179 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002180 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002181#include <netinet/in.h>
2182#ifdef __KAME__
2183yes
2184#endif],
2185 [ipv6type=$i;
2186 ipv6lib=inet6
2187 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002188 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002189 ;;
2190 linux-glibc)
2191 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002192 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002193#include <features.h>
2194#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2195yes
2196#endif],
2197 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002198 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002199 ;;
2200 linux-inet6)
2201 dnl http://www.v6.linux.or.jp/
2202 if test -d /usr/inet6; then
2203 ipv6type=$i
2204 ipv6lib=inet6
2205 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002206 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002207 fi
2208 ;;
2209 solaris)
2210 if test -f /etc/netconfig; then
2211 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2212 ipv6type=$i
2213 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002214 fi
2215 fi
2216 ;;
2217 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002218 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002219#include <sys/param.h>
2220#ifdef _TOSHIBA_INET6
2221yes
2222#endif],
2223 [ipv6type=$i;
2224 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002225 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002226 ;;
2227 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002228 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002229#include </usr/local/v6/include/sys/v6config.h>
2230#ifdef __V6D__
2231yes
2232#endif],
2233 [ipv6type=$i;
2234 ipv6lib=v6;
2235 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002236 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002237 ;;
2238 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002239 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002240#include <sys/param.h>
2241#ifdef _ZETA_MINAMI_INET6
2242yes
2243#endif],
2244 [ipv6type=$i;
2245 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002246 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002247 ;;
2248 esac
2249 if test "$ipv6type" != "unknown"; then
2250 break
2251 fi
2252 done
2253 AC_MSG_RESULT($ipv6type)
2254fi
2255
2256if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2257 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2258 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2259 echo "using lib$ipv6lib"
2260 else
2261 if test $ipv6trylibc = "yes"; then
2262 echo "using libc"
2263 else
2264 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2265 echo "You need to fetch lib$ipv6lib.a from appropriate"
2266 echo 'ipv6 kit and compile beforehand.'
2267 exit 1
2268 fi
2269 fi
2270fi
2271
Georg Brandl93de2162008-07-16 02:21:06 +00002272AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2273AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2274 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2275 AC_MSG_RESULT(yes),
2276 AC_MSG_RESULT(no)
2277)
2278
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002279# Check for --with-doc-strings
2280AC_MSG_CHECKING(for --with-doc-strings)
2281AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002282 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002283
2284if test -z "$with_doc_strings"
2285then with_doc_strings="yes"
2286fi
2287if test "$with_doc_strings" != "no"
2288then
2289 AC_DEFINE(WITH_DOC_STRINGS, 1,
2290 [Define if you want documentation strings in extension modules])
2291fi
2292AC_MSG_RESULT($with_doc_strings)
2293
Neil Schemenauera35c6882001-02-27 04:45:05 +00002294# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002295AC_MSG_CHECKING(for --with-tsc)
2296AC_ARG_WITH(tsc,
2297[ --with(out)-tsc enable/disable timestamp counter profile], [
2298if test "$withval" != no
2299then
2300 AC_DEFINE(WITH_TSC, 1,
2301 [Define to profile with the Pentium timestamp counter])
2302 AC_MSG_RESULT(yes)
2303else AC_MSG_RESULT(no)
2304fi],
2305[AC_MSG_RESULT(no)])
2306
2307# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002308AC_MSG_CHECKING(for --with-pymalloc)
2309AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002310 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002311
2312if test -z "$with_pymalloc"
2313then with_pymalloc="yes"
2314fi
2315if test "$with_pymalloc" != "no"
2316then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002317 AC_DEFINE(WITH_PYMALLOC, 1,
2318 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002319fi
2320AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002321
Barry Warsawef82cd72000-06-30 16:21:01 +00002322# Check for --with-wctype-functions
2323AC_MSG_CHECKING(for --with-wctype-functions)
2324AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002325 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2326[
Barry Warsawef82cd72000-06-30 16:21:01 +00002327if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002328then
2329 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2330 [Define if you want wctype.h functions to be used instead of the
2331 one supplied by Python itself. (see Include/unicodectype.h).])
2332 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002333else AC_MSG_RESULT(no)
2334fi],
2335[AC_MSG_RESULT(no)])
2336
Guido van Rossum68242b51996-05-28 22:53:03 +00002337# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002338AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002339DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002340
Guido van Rossume97ee181999-12-20 21:27:22 +00002341# the dlopen() function means we might want to use dynload_shlib.o. some
2342# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002343AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002344
2345# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2346# loading of modules.
2347AC_SUBST(DYNLOADFILE)
2348AC_MSG_CHECKING(DYNLOADFILE)
2349if test -z "$DYNLOADFILE"
2350then
2351 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002352 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2353 if test "$ac_cv_func_dlopen" = yes
2354 then DYNLOADFILE="dynload_shlib.o"
2355 else DYNLOADFILE="dynload_aix.o"
2356 fi
2357 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002358 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002359 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2360 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002361 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002362 *)
2363 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2364 # out any dynamic loading
2365 if test "$ac_cv_func_dlopen" = yes
2366 then DYNLOADFILE="dynload_shlib.o"
2367 else DYNLOADFILE="dynload_stub.o"
2368 fi
2369 ;;
2370 esac
2371fi
2372AC_MSG_RESULT($DYNLOADFILE)
2373if test "$DYNLOADFILE" != "dynload_stub.o"
2374then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002375 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2376 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002377fi
2378
Jack Jansenc49e5b72001-06-19 15:00:23 +00002379# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2380
2381AC_SUBST(MACHDEP_OBJS)
2382AC_MSG_CHECKING(MACHDEP_OBJS)
2383if test -z "$MACHDEP_OBJS"
2384then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002385 MACHDEP_OBJS=$extra_machdep_objs
2386else
2387 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002388fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002389AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002390
Guido van Rossum627b2d71993-12-24 10:39:16 +00002391# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002392AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2393 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002394 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002395 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwis011e8422009-05-05 04:43:17 +00002396 kill killpg lchmod lchown lstat mbrtowc mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002397 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002398 putenv readlink realpath \
Benjamin Peterson965ce872009-04-05 21:24:58 +00002399 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2400 setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002401 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Gregory P. Smith6c357262007-09-03 16:44:06 +00002402 sigaction siginterrupt sigrelse strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002403 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis113a0852009-05-29 17:25:39 +00002404 truncate uname unsetenv utimes waitpid wait3 wait4 \
2405 wcscoll wcsftime wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002406
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002407# For some functions, having a definition is not sufficient, since
2408# we want to take their address.
2409AC_MSG_CHECKING(for chroot)
2410AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2411 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2412 AC_MSG_RESULT(yes),
2413 AC_MSG_RESULT(no)
2414)
2415AC_MSG_CHECKING(for link)
2416AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2417 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2418 AC_MSG_RESULT(yes),
2419 AC_MSG_RESULT(no)
2420)
2421AC_MSG_CHECKING(for symlink)
2422AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2423 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2424 AC_MSG_RESULT(yes),
2425 AC_MSG_RESULT(no)
2426)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002427AC_MSG_CHECKING(for fchdir)
2428AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2429 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2430 AC_MSG_RESULT(yes),
2431 AC_MSG_RESULT(no)
2432)
2433AC_MSG_CHECKING(for fsync)
2434AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002435 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002436 AC_MSG_RESULT(yes),
2437 AC_MSG_RESULT(no)
2438)
2439AC_MSG_CHECKING(for fdatasync)
2440AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2441 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2442 AC_MSG_RESULT(yes),
2443 AC_MSG_RESULT(no)
2444)
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002445AC_MSG_CHECKING(for epoll)
2446AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2447 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2448 AC_MSG_RESULT(yes),
2449 AC_MSG_RESULT(no)
2450)
2451AC_MSG_CHECKING(for kqueue)
2452AC_TRY_COMPILE([
2453#include <sys/types.h>
2454#include <sys/event.h>
2455 ], int x=kqueue(),
2456 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2457 AC_MSG_RESULT(yes),
2458 AC_MSG_RESULT(no)
2459)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002460# On some systems (eg. FreeBSD 5), we would find a definition of the
2461# functions ctermid_r, setgroups in the library, but no prototype
2462# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2463# address to avoid compiler warnings and potential miscompilations
2464# because of the missing prototypes.
2465
2466AC_MSG_CHECKING(for ctermid_r)
2467AC_TRY_COMPILE([
2468#include "confdefs.h"
2469#include <stdio.h>
2470], void* p = ctermid_r,
2471 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2472 AC_MSG_RESULT(yes),
2473 AC_MSG_RESULT(no)
2474)
2475
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002476AC_MSG_CHECKING(for flock)
2477AC_TRY_COMPILE([
2478#include "confdefs.h"
2479#include <sys/file.h>
2480], void* p = flock,
2481 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2482 AC_MSG_RESULT(yes),
2483 AC_MSG_RESULT(no)
2484)
2485
2486AC_MSG_CHECKING(for getpagesize)
2487AC_TRY_COMPILE([
2488#include "confdefs.h"
2489#include <unistd.h>
2490], void* p = getpagesize,
2491 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2492 AC_MSG_RESULT(yes),
2493 AC_MSG_RESULT(no)
2494)
2495
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002496dnl check for true
2497AC_CHECK_PROGS(TRUE, true, /bin/true)
2498
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002499dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2500dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002501AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002502 AC_CHECK_LIB(resolv, inet_aton)
2503)
2504
Christian Heimesd0764e22007-12-04 15:00:33 +00002505# On Tru64, chflags seems to be present, but calling it will
2506# exit Python
2507AC_MSG_CHECKING(for chflags)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002508AC_CACHE_VAL(ac_cv_have_chflags,
2509AC_TRY_RUN([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002510#include <sys/stat.h>
2511#include <unistd.h>
2512int main(int argc, char*argv[])
2513{
2514 if(chflags(argv[0], 0) != 0)
2515 return 1;
2516 return 0;
2517}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002518]], ac_cv_have_chflags=yes,
2519 ac_cv_have_chflags=no,
2520 ac_cv_have_chflags=no)
Christian Heimesd0764e22007-12-04 15:00:33 +00002521)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002522AC_MSG_RESULT($ac_cv_have_chflags)
2523if test $ac_cv_have_chflags = yes
2524then
2525 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2526fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002527
2528AC_MSG_CHECKING(for lchflags)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002529AC_CACHE_VAL(ac_cv_have_lchflags,
2530AC_TRY_RUN([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002531#include <sys/stat.h>
2532#include <unistd.h>
2533int main(int argc, char*argv[])
2534{
2535 if(lchflags(argv[0], 0) != 0)
2536 return 1;
2537 return 0;
2538}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002539]], ac_cv_have_lchflags=yes,
2540 ac_cv_have_lchflags=no,
2541 ac_cv_have_lchflags=no)
Christian Heimesd0764e22007-12-04 15:00:33 +00002542)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002543AC_MSG_RESULT($ac_cv_have_lchflags)
2544if test $ac_cv_have_lchflags = yes
2545then
2546 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2547fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002548
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002549dnl Check if system zlib has *Copy() functions
2550dnl
2551dnl On MacOSX the linker will search for dylibs on the entire linker path
2552dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2553dnl to revert to a more traditional unix behaviour and make it possible to
2554dnl override the system libz with a local static library of libz. Temporarily
2555dnl add that flag to our CFLAGS as well to ensure that we check the version
2556dnl of libz that will be used by setup.py.
2557dnl The -L/usr/local/lib is needed as wel to get the same compilation
2558dnl environment as setup.py (and leaving it out can cause configure to use the
2559dnl wrong version of the library)
2560case $ac_sys_system/$ac_sys_release in
2561Darwin/*)
2562 _CUR_CFLAGS="${CFLAGS}"
2563 _CUR_LDFLAGS="${LDFLAGS}"
2564 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2565 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2566 ;;
2567esac
2568
2569AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2570
2571case $ac_sys_system/$ac_sys_release in
2572Darwin/*)
2573 CFLAGS="${_CUR_CFLAGS}"
2574 LDFLAGS="${_CUR_LDFLAGS}"
2575 ;;
2576esac
2577
Martin v. Löwise9416172003-05-03 10:12:45 +00002578AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002579AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002580#include "confdefs.h"
2581#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002582], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002583 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2584 AC_MSG_RESULT(yes),
2585 AC_MSG_RESULT(no)
2586)
2587
2588AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002589AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002590#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002591#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002592#include <sys/socket.h>
2593#include <netinet/in.h>
2594#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002595], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002596 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2597 AC_MSG_RESULT(yes),
2598 AC_MSG_RESULT(no)
2599)
2600
2601AC_MSG_CHECKING(for inet_pton)
2602AC_TRY_COMPILE([
2603#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002604#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002605#include <sys/socket.h>
2606#include <netinet/in.h>
2607#include <arpa/inet.h>
2608], void* p = inet_pton,
2609 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2610 AC_MSG_RESULT(yes),
2611 AC_MSG_RESULT(no)
2612)
2613
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002614# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002615AC_MSG_CHECKING(for setgroups)
2616AC_TRY_COMPILE([
2617#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002618#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002619#ifdef HAVE_GRP_H
2620#include <grp.h>
2621#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002622],
2623void* p = setgroups,
2624 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2625 AC_MSG_RESULT(yes),
2626 AC_MSG_RESULT(no)
2627)
2628
Fred Drake8cef4cf2000-06-28 16:40:38 +00002629# check for openpty and forkpty
2630
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002631AC_CHECK_FUNCS(openpty,,
2632 AC_CHECK_LIB(util,openpty,
2633 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2634 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2635 )
2636)
2637AC_CHECK_FUNCS(forkpty,,
2638 AC_CHECK_LIB(util,forkpty,
2639 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2640 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2641 )
2642)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002643
Christian Heimesb186d002008-03-18 15:15:01 +00002644# Stuff for expat.
2645AC_CHECK_FUNCS(memmove)
2646
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002647# check for long file support functions
2648AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2649
Christian Heimesb186d002008-03-18 15:15:01 +00002650AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002651AC_CHECK_FUNCS(getpgrp,
2652 AC_TRY_COMPILE([#include <unistd.h>],
2653 [getpgrp(0);],
2654 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2655 [Define if getpgrp() must be called as getpgrp(0).])
2656 )
2657)
Jack Jansen150753c2003-03-29 22:07:47 +00002658AC_CHECK_FUNCS(setpgrp,
2659 AC_TRY_COMPILE([#include <unistd.h>],
2660 [setpgrp(0,0);],
2661 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2662 [Define if setpgrp() must be called as setpgrp(0, 0).])
2663 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002664)
2665AC_CHECK_FUNCS(gettimeofday,
2666 AC_TRY_COMPILE([#include <sys/time.h>],
2667 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2668 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2669 [Define if gettimeofday() does not have second (timezone) argument
2670 This is the case on Motorola V4 (R40V4.2)])
2671 )
2672)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002673
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002674AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002675AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002676#if defined(MAJOR_IN_MKDEV)
2677#include <sys/mkdev.h>
2678#elif defined(MAJOR_IN_SYSMACROS)
2679#include <sys/sysmacros.h>
2680#else
2681#include <sys/types.h>
2682#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002683],[
2684 makedev(major(0),minor(0));
2685],[
2686 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2687 [Define to 1 if you have the device macros.])
2688 AC_MSG_RESULT(yes)
2689],[
2690 AC_MSG_RESULT(no)
2691])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002692
2693# On OSF/1 V5.1, getaddrinfo is available, but a define
2694# for [no]getaddrinfo in netdb.h.
2695AC_MSG_CHECKING(for getaddrinfo)
2696AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002697#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002698#include <sys/socket.h>
2699#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002700#include <stdio.h>
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002701], [getaddrinfo(NULL, NULL, NULL, NULL);],
2702have_getaddrinfo=yes,
2703have_getaddrinfo=no)
2704AC_MSG_RESULT($have_getaddrinfo)
2705if test $have_getaddrinfo = yes
2706then
2707 AC_MSG_CHECKING(getaddrinfo bug)
2708 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
2709 AC_TRY_RUN([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002710#include <sys/types.h>
2711#include <netdb.h>
2712#include <string.h>
2713#include <sys/socket.h>
2714#include <netinet/in.h>
2715
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002716int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002717{
2718 int passive, gaierr, inet4 = 0, inet6 = 0;
2719 struct addrinfo hints, *ai, *aitop;
2720 char straddr[INET6_ADDRSTRLEN], strport[16];
2721
2722 for (passive = 0; passive <= 1; passive++) {
2723 memset(&hints, 0, sizeof(hints));
2724 hints.ai_family = AF_UNSPEC;
2725 hints.ai_flags = passive ? AI_PASSIVE : 0;
2726 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002727 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002728 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2729 (void)gai_strerror(gaierr);
2730 goto bad;
2731 }
2732 for (ai = aitop; ai; ai = ai->ai_next) {
2733 if (ai->ai_addr == NULL ||
2734 ai->ai_addrlen == 0 ||
2735 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2736 straddr, sizeof(straddr), strport, sizeof(strport),
2737 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2738 goto bad;
2739 }
2740 switch (ai->ai_family) {
2741 case AF_INET:
2742 if (strcmp(strport, "54321") != 0) {
2743 goto bad;
2744 }
2745 if (passive) {
2746 if (strcmp(straddr, "0.0.0.0") != 0) {
2747 goto bad;
2748 }
2749 } else {
2750 if (strcmp(straddr, "127.0.0.1") != 0) {
2751 goto bad;
2752 }
2753 }
2754 inet4++;
2755 break;
2756 case AF_INET6:
2757 if (strcmp(strport, "54321") != 0) {
2758 goto bad;
2759 }
2760 if (passive) {
2761 if (strcmp(straddr, "::") != 0) {
2762 goto bad;
2763 }
2764 } else {
2765 if (strcmp(straddr, "::1") != 0) {
2766 goto bad;
2767 }
2768 }
2769 inet6++;
2770 break;
2771 case AF_UNSPEC:
2772 goto bad;
2773 break;
2774 default:
2775 /* another family support? */
2776 break;
2777 }
2778 }
2779 }
2780
2781 if (!(inet4 == 0 || inet4 == 2))
2782 goto bad;
2783 if (!(inet6 == 0 || inet6 == 2))
2784 goto bad;
2785
2786 if (aitop)
2787 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002788 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002789
2790 bad:
2791 if (aitop)
2792 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002793 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002794}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002795]], ac_cv_buggy_getaddrinfo=no,
2796 ac_cv_buggy_getaddrinfo=yes,
2797 ac_cv_buggy_getaddrinfo=yes))
2798fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002799
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002800if test $have_getaddrinfo = no -o $ac_cv_buggy_getaddrinfo = yes
2801then
2802 if test $ipv6 = yes
2803 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002804 echo 'Fatal: You must get working getaddrinfo() function.'
2805 echo ' or you can specify "--disable-ipv6"'.
2806 exit 1
2807 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002808else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002809 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002810fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002811AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002812
Guido van Rossum627b2d71993-12-24 10:39:16 +00002813# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002814AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002815AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002816AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002817AC_CHECK_MEMBERS([struct stat.st_rdev])
2818AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002819AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002820AC_CHECK_MEMBERS([struct stat.st_gen])
2821AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002822AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002823
2824AC_MSG_CHECKING(for time.h that defines altzone)
2825AC_CACHE_VAL(ac_cv_header_time_altzone,
2826[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2827 ac_cv_header_time_altzone=yes,
2828 ac_cv_header_time_altzone=no)])
2829AC_MSG_RESULT($ac_cv_header_time_altzone)
2830if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002831 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002832fi
2833
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002834was_it_defined=no
2835AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002836AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002837#include <sys/types.h>
2838#include <sys/select.h>
2839#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002840], [;], [
2841 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2842 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2843 (which you can't on SCO ODT 3.0).])
2844 was_it_defined=yes
2845])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002846AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002847
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002848AC_MSG_CHECKING(for addrinfo)
2849AC_CACHE_VAL(ac_cv_struct_addrinfo,
2850AC_TRY_COMPILE([
2851# include <netdb.h>],
2852 [struct addrinfo a],
2853 ac_cv_struct_addrinfo=yes,
2854 ac_cv_struct_addrinfo=no))
2855AC_MSG_RESULT($ac_cv_struct_addrinfo)
2856if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002857 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002858fi
2859
2860AC_MSG_CHECKING(for sockaddr_storage)
2861AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2862AC_TRY_COMPILE([
2863# include <sys/types.h>
2864# include <sys/socket.h>],
2865 [struct sockaddr_storage s],
2866 ac_cv_struct_sockaddr_storage=yes,
2867 ac_cv_struct_sockaddr_storage=no))
2868AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2869if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002870 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002871fi
2872
Guido van Rossum627b2d71993-12-24 10:39:16 +00002873# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002874
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002875AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002876AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002877
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002878works=no
2879AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002880AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2881 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2882)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002883AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002884
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002885works=no
2886AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002887AC_TRY_COMPILE([], [signed char c;], works=yes,
2888 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2889)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002890AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002891
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002892have_prototypes=no
2893AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002894AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2895 AC_DEFINE(HAVE_PROTOTYPES, 1,
2896 [Define if your compiler supports function prototype])
2897 have_prototypes=yes
2898])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002899AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002900
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002901works=no
2902AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002903AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002904#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002905int foo(int x, ...) {
2906 va_list va;
2907 va_start(va, x);
2908 va_arg(va, int);
2909 va_arg(va, char *);
2910 va_arg(va, double);
2911 return 0;
2912}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002913], [return foo(10, "", 3.14);], [
2914 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2915 [Define if your compiler supports variable length function prototypes
2916 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2917 works=yes
2918])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002919AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002920
Dave Cole331708b2004-08-09 04:51:41 +00002921# check for socketpair
2922AC_MSG_CHECKING(for socketpair)
2923AC_TRY_COMPILE([
2924#include <sys/types.h>
2925#include <sys/socket.h>
2926], void *x=socketpair,
2927 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2928 AC_MSG_RESULT(yes),
2929 AC_MSG_RESULT(no)
2930)
2931
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002932# check if sockaddr has sa_len member
2933AC_MSG_CHECKING(if sockaddr has sa_len member)
2934AC_TRY_COMPILE([#include <sys/types.h>
2935#include <sys/socket.h>],
2936[struct sockaddr x;
2937x.sa_len = 0;],
2938 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002939 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002940 AC_MSG_RESULT(no))
2941
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002942va_list_is_array=no
2943AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002944AC_TRY_COMPILE([
2945#ifdef HAVE_STDARG_PROTOTYPES
2946#include <stdarg.h>
2947#else
2948#include <varargs.h>
2949#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002950], [va_list list1, list2; list1 = list2;], , [
2951 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2952 va_list_is_array=yes
2953])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002954AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002955
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002956# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002957AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2958 [Define this if you have some version of gethostbyname_r()])
2959
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002960AC_CHECK_FUNC(gethostbyname_r, [
2961 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2962 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2963 OLD_CFLAGS=$CFLAGS
2964 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2965 AC_TRY_COMPILE([
2966# include <netdb.h>
2967 ], [
2968 char *name;
2969 struct hostent *he, *res;
2970 char buffer[2048];
2971 int buflen = 2048;
2972 int h_errnop;
2973
2974 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2975 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002976 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002977 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2978 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002979 AC_MSG_RESULT(yes)
2980 ], [
2981 AC_MSG_RESULT(no)
2982 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2983 AC_TRY_COMPILE([
2984# include <netdb.h>
2985 ], [
2986 char *name;
2987 struct hostent *he;
2988 char buffer[2048];
2989 int buflen = 2048;
2990 int h_errnop;
2991
2992 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2993 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002994 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002995 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2996 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002997 AC_MSG_RESULT(yes)
2998 ], [
2999 AC_MSG_RESULT(no)
3000 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3001 AC_TRY_COMPILE([
3002# include <netdb.h>
3003 ], [
3004 char *name;
3005 struct hostent *he;
3006 struct hostent_data data;
3007
3008 (void) gethostbyname_r(name, he, &data);
3009 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003010 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003011 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3012 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003013 AC_MSG_RESULT(yes)
3014 ], [
3015 AC_MSG_RESULT(no)
3016 ])
3017 ])
3018 ])
3019 CFLAGS=$OLD_CFLAGS
3020], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003021 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003022])
3023AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3024AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3025AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003026AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003027AC_SUBST(HAVE_GETHOSTBYNAME)
3028
Guido van Rossum627b2d71993-12-24 10:39:16 +00003029# checks for system services
3030# (none yet)
3031
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003032# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003033AC_CHECK_FUNC(__fpu_control,
3034 [],
3035 [AC_CHECK_LIB(ieee, __fpu_control)
3036])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003037
Guido van Rossum93274221997-05-09 02:42:00 +00003038# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003039AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003040AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003041 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3042[
Guido van Rossum93274221997-05-09 02:42:00 +00003043if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003044then
3045 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3046 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3047 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003048else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003049fi],
3050[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003051
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003052# check for --with-libm=...
3053AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003054case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003055Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003056*) LIBM=-lm
3057esac
Guido van Rossum93274221997-05-09 02:42:00 +00003058AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003059AC_ARG_WITH(libm,
3060 AC_HELP_STRING(--with-libm=STRING, math library),
3061[
Guido van Rossum93274221997-05-09 02:42:00 +00003062if test "$withval" = no
3063then LIBM=
3064 AC_MSG_RESULT(force LIBM empty)
3065elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003066then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003067 AC_MSG_RESULT(set LIBM="$withval")
3068else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003069fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003070[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003071
3072# check for --with-libc=...
3073AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003074AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003075AC_ARG_WITH(libc,
3076 AC_HELP_STRING(--with-libc=STRING, C library),
3077[
Guido van Rossum93274221997-05-09 02:42:00 +00003078if test "$withval" = no
3079then LIBC=
3080 AC_MSG_RESULT(force LIBC empty)
3081elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003082then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003083 AC_MSG_RESULT(set LIBC="$withval")
3084else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003085fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003086[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003087
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003088# **************************************************
3089# * Check for various properties of floating point *
3090# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003091
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003092AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3093AC_CACHE_VAL(ac_cv_little_endian_double, [
3094AC_TRY_RUN([
3095#include <string.h>
3096int main() {
3097 double x = 9006104071832581.0;
3098 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3099 return 0;
3100 else
3101 return 1;
3102}
3103],
3104ac_cv_little_endian_double=yes,
3105ac_cv_little_endian_double=no,
3106ac_cv_little_endian_double=no)])
3107AC_MSG_RESULT($ac_cv_little_endian_double)
3108if test "$ac_cv_little_endian_double" = yes
3109then
3110 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3111 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3112 with the least significant byte first])
3113fi
3114
3115AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3116AC_CACHE_VAL(ac_cv_big_endian_double, [
3117AC_TRY_RUN([
3118#include <string.h>
3119int main() {
3120 double x = 9006104071832581.0;
3121 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3122 return 0;
3123 else
3124 return 1;
3125}
3126],
3127ac_cv_big_endian_double=yes,
3128ac_cv_big_endian_double=no,
3129ac_cv_big_endian_double=no)])
3130AC_MSG_RESULT($ac_cv_big_endian_double)
3131if test "$ac_cv_big_endian_double" = yes
3132then
3133 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3134 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3135 with the most significant byte first])
3136fi
3137
3138# Some ARM platforms use a mixed-endian representation for doubles.
3139# While Python doesn't currently have full support for these platforms
3140# (see e.g., issue 1762561), we can at least make sure that float <-> string
3141# conversions work.
3142AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3143AC_CACHE_VAL(ac_cv_mixed_endian_double, [
3144AC_TRY_RUN([
3145#include <string.h>
3146int main() {
3147 double x = 9006104071832581.0;
3148 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3149 return 0;
3150 else
3151 return 1;
3152}
3153],
3154ac_cv_mixed_endian_double=yes,
3155ac_cv_mixed_endian_double=no,
3156ac_cv_mixed_endian_double=no)])
3157AC_MSG_RESULT($ac_cv_mixed_endian_double)
3158if test "$ac_cv_mixed_endian_double" = yes
3159then
3160 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3161 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3162 in ARM mixed-endian order (byte order 45670123)])
3163fi
3164
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003165# The short float repr introduced in Python 3.1 requires the
3166# correctly-rounded string <-> double conversion functions from
3167# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3168# rounding; this is a problem on x86, where the x87 FPU has a default
3169# rounding precision of 64 bits. For gcc/x86, we try to fix this by
3170# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003171if test "$GCC" = yes && test -n "`$CC -dM -E - </dev/null | grep i386`"
3172then
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003173 # Check that it's okay to use gcc inline assembler to get and set
3174 # x87 control word. It should be, but you never know...
3175 AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
3176 AC_TRY_COMPILE([], [
3177 unsigned short cw;
3178 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3179 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
3180 ],
3181 [have_gcc_asm_for_x87=yes], [have_gcc_asm_for_x87=no])
3182 AC_MSG_RESULT($have_gcc_asm_for_x87)
3183 if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003184 then
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003185 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3186 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003187 fi
3188fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003189
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003190# Detect whether system arithmetic is subject to x87-style double
3191# rounding issues. The result of this test has little meaning on non
3192# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3193# mode is round-to-nearest and double rounding issues are present, and
3194# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3195AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003196# $BASECFLAGS may affect the result
3197ac_save_cc="$CC"
3198CC="$CC $BASECFLAGS"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003199AC_TRY_RUN([
3200#include <stdlib.h>
3201#include <math.h>
3202int main() {
3203 volatile double x, y, z;
3204 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3205 x = 0.99999999999999989; /* 1-2**-53 */
3206 y = 1./x;
3207 if (y != 1.)
3208 exit(0);
3209 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3210 x = 1e16;
3211 y = 2.99999;
3212 z = x + y;
3213 if (z != 1e16+4.)
3214 exit(0);
3215 /* both tests show evidence of double rounding */
3216 exit(1);
3217}
3218],
3219ac_cv_x87_double_rounding=no,
3220ac_cv_x87_double_rounding=yes,
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003221ac_cv_x87_double_rounding=no)
3222CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003223AC_MSG_RESULT($ac_cv_x87_double_rounding)
3224if test "$ac_cv_x87_double_rounding" = yes
3225then
3226 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3227 [Define if arithmetic is subject to x87-style double rounding issue])
3228fi
3229
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003230# ************************************
3231# * Check for mathematical functions *
3232# ************************************
3233
3234LIBS_SAVE=$LIBS
3235LIBS="$LIBS $LIBM"
3236
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003237# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3238# -0. on some architectures.
3239AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3240AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3241AC_TRY_RUN([
3242#include <math.h>
3243#include <stdlib.h>
3244int main() {
3245 /* return 0 if either negative zeros don't exist
3246 on this platform or if negative zeros exist
3247 and tanh(-0.) == -0. */
3248 if (atan2(0., -1.) == atan2(-0., -1.) ||
3249 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3250 else exit(1);
3251}
3252],
3253ac_cv_tanh_preserves_zero_sign=yes,
3254ac_cv_tanh_preserves_zero_sign=no,
3255ac_cv_tanh_preserves_zero_sign=no)])
3256AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3257if test "$ac_cv_tanh_preserves_zero_sign" = yes
3258then
3259 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3260 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3261fi
3262
Mark Dickinsonf2537862009-04-18 13:58:18 +00003263AC_CHECK_FUNCS([acosh asinh atanh copysign expm1 finite hypot log1p round])
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003264AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes99170a52007-12-19 02:07:34 +00003265
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003266LIBS=$LIBS_SAVE
3267
Mark Dickinson10683072009-04-18 21:18:19 +00003268# Multiprocessing check for broken sem_getvalue
3269AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003270AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Mark Dickinson10683072009-04-18 21:18:19 +00003271AC_TRY_RUN([
3272#include <unistd.h>
3273#include <fcntl.h>
3274#include <stdio.h>
3275#include <semaphore.h>
3276#include <sys/stat.h>
3277
3278int main(void){
3279 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3280 int count;
3281 int res;
3282 if(a==SEM_FAILED){
3283 perror("sem_open");
3284 return 1;
3285
3286 }
3287 res = sem_getvalue(a, &count);
3288 sem_close(a);
3289 return res==-1 ? 1 : 0;
3290}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003291], ac_cv_broken_sem_getvalue=no,
3292 ac_cv_broken_sem_getvalue=yes,
3293 ac_cv_broken_sem_getvalue=yes)
Mark Dickinson10683072009-04-18 21:18:19 +00003294)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003295AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3296if test $ac_cv_broken_sem_getvalue = yes
3297then
3298 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3299 [define to 1 if your sem_getvalue is broken.])
3300fi
Mark Dickinson10683072009-04-18 21:18:19 +00003301
Mark Dickinsonbd792642009-03-18 20:06:12 +00003302# determine what size digit to use for Python's longs
3303AC_MSG_CHECKING([digit size for Python's longs])
3304AC_ARG_ENABLE(big-digits,
3305AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3306[case $enable_big_digits in
3307yes)
3308 enable_big_digits=30 ;;
3309no)
3310 enable_big_digits=15 ;;
3311[15|30])
3312 ;;
3313*)
3314 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3315esac
3316AC_MSG_RESULT($enable_big_digits)
3317AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3318],
3319[AC_MSG_RESULT(no value specified)])
3320
Guido van Rossumef2255b2000-03-10 22:30:29 +00003321# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003322AC_CHECK_HEADER(wchar.h, [
3323 AC_DEFINE(HAVE_WCHAR_H, 1,
3324 [Define if the compiler provides a wchar.h header file.])
3325 wchar_h="yes"
3326],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003327wchar_h="no"
3328)
3329
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003330# determine wchar_t size
3331if test "$wchar_h" = yes
3332then
Guido van Rossum67b26592001-10-20 14:21:45 +00003333 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003334fi
3335
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003336AC_MSG_CHECKING(for UCS-4 tcl)
3337have_ucs4_tcl=no
3338AC_TRY_COMPILE([
3339#include <tcl.h>
3340#if TCL_UTF_MAX != 6
3341# error "NOT UCS4_TCL"
3342#endif], [], [
3343 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3344 have_ucs4_tcl=yes
3345])
3346AC_MSG_RESULT($have_ucs4_tcl)
3347
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003348# check whether wchar_t is signed or not
3349if test "$wchar_h" = yes
3350then
3351 # check whether wchar_t is signed or not
3352 AC_MSG_CHECKING(whether wchar_t is signed)
3353 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3354 AC_TRY_RUN([
3355 #include <wchar.h>
3356 int main()
3357 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003358 /* Success: exit code 0 */
3359 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003360 }
3361 ],
3362 ac_cv_wchar_t_signed=yes,
3363 ac_cv_wchar_t_signed=no,
3364 ac_cv_wchar_t_signed=yes)])
3365 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3366fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003367
Georg Brandl52d168a2008-01-07 18:10:24 +00003368AC_MSG_CHECKING(what type to use for str)
3369AC_ARG_WITH(wide-unicode,
3370 AC_HELP_STRING(--with-wide-unicode, Use 4-byte Unicode characters (default is 2 bytes)),
3371[
3372if test "$withval" != no
3373then unicode_size="4"
3374else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003375fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003376],
3377[
3378case "$have_ucs4_tcl" in
3379 yes) unicode_size="4" ;;
3380 *) unicode_size="2" ;;
3381esac
3382])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003383
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003384AH_TEMPLATE(Py_UNICODE_SIZE,
3385 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003386case "$unicode_size" in
3387 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3388 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003389esac
3390
Martin v. Löwis11437992002-04-12 09:54:03 +00003391AH_TEMPLATE(PY_UNICODE_TYPE,
3392 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003393
Georg Brandl52d168a2008-01-07 18:10:24 +00003394# wchar_t is only usable if it maps to an unsigned type
3395if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003396 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003397then
3398 PY_UNICODE_TYPE="wchar_t"
3399 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3400 [Define if you have a useable wchar_t type defined in wchar.h; useable
3401 means wchar_t must be an unsigned type with at least 16 bits. (see
3402 Include/unicodeobject.h).])
3403 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3404elif test "$ac_cv_sizeof_short" = "$unicode_size"
3405then
3406 PY_UNICODE_TYPE="unsigned short"
3407 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3408elif test "$ac_cv_sizeof_long" = "$unicode_size"
3409then
3410 PY_UNICODE_TYPE="unsigned long"
3411 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3412else
3413 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003414fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003415AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003416
3417# check for endianness
3418AC_C_BIGENDIAN
3419
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003420# Check whether right shifting a negative integer extends the sign bit
3421# or fills with zeros (like the Cray J90, according to Tim Peters).
3422AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003423AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003424AC_TRY_RUN([
3425int main()
3426{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003427 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003428}
Guido van Rossum3065c942001-09-17 04:03:14 +00003429],
3430ac_cv_rshift_extends_sign=yes,
3431ac_cv_rshift_extends_sign=no,
3432ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003433AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3434if test "$ac_cv_rshift_extends_sign" = no
3435then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003436 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3437 [Define if i>>j for signed int i does not extend the sign bit
3438 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003439fi
3440
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003441# check for getc_unlocked and related locking functions
3442AC_MSG_CHECKING(for getc_unlocked() and friends)
3443AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3444AC_TRY_LINK([#include <stdio.h>],[
3445 FILE *f = fopen("/dev/null", "r");
3446 flockfile(f);
3447 getc_unlocked(f);
3448 funlockfile(f);
3449], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3450AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3451if test "$ac_cv_have_getc_unlocked" = yes
3452then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003453 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3454 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003455fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003456
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003457# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003458# save the value of LIBS so we don't actually link Python with readline
3459LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003460
3461# On some systems we need to link readline to a termcap compatible
3462# library. NOTE: Keep the precedence of listed libraries synchronised
3463# with setup.py.
3464py_cv_lib_readline=no
3465AC_MSG_CHECKING([how to link readline libs])
3466for py_libtermcap in "" ncursesw ncurses curses termcap; do
3467 if test -z "$py_libtermcap"; then
3468 READLINE_LIBS="-lreadline"
3469 else
3470 READLINE_LIBS="-lreadline -l$py_libtermcap"
3471 fi
3472 LIBS="$READLINE_LIBS $LIBS_no_readline"
3473 AC_LINK_IFELSE(
3474 [AC_LANG_CALL([],[readline])],
3475 [py_cv_lib_readline=yes])
3476 if test $py_cv_lib_readline = yes; then
3477 break
3478 fi
3479done
3480# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3481#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003482if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003483 AC_MSG_RESULT([none])
3484else
3485 AC_MSG_RESULT([$READLINE_LIBS])
3486 AC_DEFINE(HAVE_LIBREADLINE, 1,
3487 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003488fi
3489
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003490# check for readline 2.1
3491AC_CHECK_LIB(readline, rl_callback_handler_install,
3492 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003493 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003494
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003495# check for readline 2.2
3496AC_TRY_CPP([#include <readline/readline.h>],
3497have_readline=yes, have_readline=no)
3498if test $have_readline = yes
3499then
3500 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3501 [readline/readline.h],
3502 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3503 [Define if you have readline 2.2]), )
3504fi
3505
Martin v. Löwis0daad592001-09-30 21:09:59 +00003506# check for readline 4.0
3507AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003508 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003509 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003510
Thomas Wouters89d996e2007-09-08 17:39:28 +00003511# also in 4.0
3512AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3513 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003514 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003515
Guido van Rossum353ae582001-07-10 16:45:32 +00003516# check for readline 4.2
3517AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003518 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003519 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003520
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003521# also in readline 4.2
3522AC_TRY_CPP([#include <readline/readline.h>],
3523have_readline=yes, have_readline=no)
3524if test $have_readline = yes
3525then
3526 AC_EGREP_HEADER([extern int rl_catch_signals;],
3527 [readline/readline.h],
3528 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3529 [Define if you can turn off readline's signal handling.]), )
3530fi
3531
Martin v. Löwis82bca632006-02-10 20:49:30 +00003532# End of readline checks: restore LIBS
3533LIBS=$LIBS_no_readline
3534
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003535AC_MSG_CHECKING(for broken nice())
3536AC_CACHE_VAL(ac_cv_broken_nice, [
3537AC_TRY_RUN([
3538int main()
3539{
3540 int val1 = nice(1);
3541 if (val1 != -1 && val1 == nice(2))
3542 exit(0);
3543 exit(1);
3544}
Guido van Rossum3065c942001-09-17 04:03:14 +00003545],
3546ac_cv_broken_nice=yes,
3547ac_cv_broken_nice=no,
3548ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003549AC_MSG_RESULT($ac_cv_broken_nice)
3550if test "$ac_cv_broken_nice" = yes
3551then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003552 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3553 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003554fi
3555
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003556AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003557AC_CACHE_VAL(ac_cv_broken_poll,
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003558AC_TRY_RUN([
3559#include <poll.h>
3560
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003561int main()
3562{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003563 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003564 int poll_test;
3565
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003566 close (42);
3567
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003568 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003569 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003570 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003571 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003572 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003573 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003574 return 1;
3575}
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003576],
3577ac_cv_broken_poll=yes,
3578ac_cv_broken_poll=no,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003579ac_cv_broken_poll=no))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003580AC_MSG_RESULT($ac_cv_broken_poll)
3581if test "$ac_cv_broken_poll" = yes
3582then
3583 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3584 [Define if poll() sets errno on invalid file descriptors.])
3585fi
3586
Brett Cannon43802422005-02-10 20:48:03 +00003587# Before we can test tzset, we need to check if struct tm has a tm_zone
3588# (which is not required by ISO C or UNIX spec) and/or if we support
3589# tzname[]
3590AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003591
Brett Cannon43802422005-02-10 20:48:03 +00003592# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003593AC_MSG_CHECKING(for working tzset())
3594AC_CACHE_VAL(ac_cv_working_tzset, [
3595AC_TRY_RUN([
3596#include <stdlib.h>
3597#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003598#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003599
3600#if HAVE_TZNAME
3601extern char *tzname[];
3602#endif
3603
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003604int main()
3605{
Brett Cannon18367812003-09-19 00:59:16 +00003606 /* Note that we need to ensure that not only does tzset(3)
3607 do 'something' with localtime, but it works as documented
3608 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003609 This includes making sure that tzname is set properly if
3610 tm->tm_zone does not exist since it is the alternative way
3611 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003612
3613 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003614 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003615 */
3616
Brett Cannon43802422005-02-10 20:48:03 +00003617 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003618 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3619
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003620 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003621 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003622 if (localtime(&groundhogday)->tm_hour != 0)
3623 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003624#if HAVE_TZNAME
3625 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3626 if (strcmp(tzname[0], "UTC") ||
3627 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3628 exit(1);
3629#endif
Brett Cannon18367812003-09-19 00:59:16 +00003630
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003631 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003632 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003633 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003634 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003635#if HAVE_TZNAME
3636 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3637 exit(1);
3638#endif
Brett Cannon18367812003-09-19 00:59:16 +00003639
3640 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3641 tzset();
3642 if (localtime(&groundhogday)->tm_hour != 11)
3643 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003644#if HAVE_TZNAME
3645 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3646 exit(1);
3647#endif
3648
3649#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003650 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3651 exit(1);
3652 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3653 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003654#endif
Brett Cannon18367812003-09-19 00:59:16 +00003655
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003656 exit(0);
3657}
3658],
3659ac_cv_working_tzset=yes,
3660ac_cv_working_tzset=no,
3661ac_cv_working_tzset=no)])
3662AC_MSG_RESULT($ac_cv_working_tzset)
3663if test "$ac_cv_working_tzset" = yes
3664then
3665 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3666 [Define if tzset() actually switches the local timezone in a meaningful way.])
3667fi
3668
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003669# Look for subsecond timestamps in struct stat
3670AC_MSG_CHECKING(for tv_nsec in struct stat)
3671AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3672AC_TRY_COMPILE([#include <sys/stat.h>], [
3673struct stat st;
3674st.st_mtim.tv_nsec = 1;
3675],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003676ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003677ac_cv_stat_tv_nsec=no,
3678ac_cv_stat_tv_nsec=no))
3679AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3680if test "$ac_cv_stat_tv_nsec" = yes
3681then
3682 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3683 [Define if you have struct stat.st_mtim.tv_nsec])
3684fi
3685
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003686# Look for BSD style subsecond timestamps in struct stat
3687AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3688AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3689AC_TRY_COMPILE([#include <sys/stat.h>], [
3690struct stat st;
3691st.st_mtimespec.tv_nsec = 1;
3692],
3693ac_cv_stat_tv_nsec2=yes,
3694ac_cv_stat_tv_nsec2=no,
3695ac_cv_stat_tv_nsec2=no))
3696AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3697if test "$ac_cv_stat_tv_nsec2" = yes
3698then
3699 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3700 [Define if you have struct stat.st_mtimensec])
3701fi
3702
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003703# On HP/UX 11.0, mvwdelch is a block with a return statement
3704AC_MSG_CHECKING(whether mvwdelch is an expression)
3705AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3706AC_TRY_COMPILE([#include <curses.h>], [
3707 int rtn;
3708 rtn = mvwdelch(0,0,0);
3709], ac_cv_mvwdelch_is_expression=yes,
3710 ac_cv_mvwdelch_is_expression=no,
3711 ac_cv_mvwdelch_is_expression=yes))
3712AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3713
3714if test "$ac_cv_mvwdelch_is_expression" = yes
3715then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003716 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3717 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003718fi
3719
3720AC_MSG_CHECKING(whether WINDOW has _flags)
3721AC_CACHE_VAL(ac_cv_window_has_flags,
3722AC_TRY_COMPILE([#include <curses.h>], [
3723 WINDOW *w;
3724 w->_flags = 0;
3725], ac_cv_window_has_flags=yes,
3726 ac_cv_window_has_flags=no,
3727 ac_cv_window_has_flags=no))
3728AC_MSG_RESULT($ac_cv_window_has_flags)
3729
3730
3731if test "$ac_cv_window_has_flags" = yes
3732then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003733 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3734 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003735fi
3736
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003737AC_MSG_CHECKING(for is_term_resized)
3738AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3739 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3740 AC_MSG_RESULT(yes),
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003741 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003742)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003743
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003744AC_MSG_CHECKING(for resize_term)
3745AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3746 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3747 AC_MSG_RESULT(yes),
Neal Norwitz865400f2003-03-21 01:42:58 +00003748 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003749)
3750
3751AC_MSG_CHECKING(for resizeterm)
3752AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3753 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3754 AC_MSG_RESULT(yes),
3755 AC_MSG_RESULT(no)
3756)
3757
Thomas Wouters89f507f2006-12-13 04:49:30 +00003758AC_MSG_CHECKING(for /dev/ptmx)
3759
3760if test -r /dev/ptmx
3761then
3762 AC_MSG_RESULT(yes)
3763 AC_DEFINE(HAVE_DEV_PTMX, 1,
3764 [Define if we have /dev/ptmx.])
3765else
3766 AC_MSG_RESULT(no)
3767fi
3768
3769AC_MSG_CHECKING(for /dev/ptc)
3770
3771if test -r /dev/ptc
3772then
3773 AC_MSG_RESULT(yes)
3774 AC_DEFINE(HAVE_DEV_PTC, 1,
3775 [Define if we have /dev/ptc.])
3776else
3777 AC_MSG_RESULT(no)
3778fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003779
Thomas Wouters477c8d52006-05-27 19:21:47 +00003780AC_MSG_CHECKING(for %zd printf() format support)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003781AC_CACHE_VAL(ac_cv_have_size_t_format,
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00003782AC_TRY_RUN([[
3783#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00003784#include <stddef.h>
3785#include <string.h>
3786
Christian Heimes2c181612007-12-17 20:04:13 +00003787#ifdef HAVE_SYS_TYPES_H
3788#include <sys/types.h>
3789#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00003790
3791#ifdef HAVE_SSIZE_T
3792typedef ssize_t Py_ssize_t;
3793#elif SIZEOF_VOID_P == SIZEOF_LONG
3794typedef long Py_ssize_t;
3795#else
3796typedef int Py_ssize_t;
3797#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00003798
Christian Heimes2c181612007-12-17 20:04:13 +00003799int main()
3800{
3801 char buffer[256];
3802
Thomas Wouters477c8d52006-05-27 19:21:47 +00003803 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3804 return 1;
3805
Thomas Wouters89f507f2006-12-13 04:49:30 +00003806 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00003807 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00003808
3809 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3810 return 1;
3811
3812 if (strcmp(buffer, "-123"))
3813 return 1;
3814
Thomas Wouters477c8d52006-05-27 19:21:47 +00003815 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003816}
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00003817]], ac_cv_have_size_t_format=yes,
3818 ac_cv_have_size_t_format=no,
3819 ac_cv_have_size_t_format=no)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003820)
3821AC_MSG_RESULT($ac_cv_have_size_t_format)
3822if test $ac_cv_have_size_t_format = yes
3823then
3824 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
3825 [Define to printf format modifier for Py_ssize_t])
3826fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00003827
Martin v. Löwis01c04012002-11-11 14:58:44 +00003828AC_CHECK_TYPE(socklen_t,,
3829 AC_DEFINE(socklen_t,int,
3830 Define to `int' if <sys/socket.h> does not define.),[
3831#ifdef HAVE_SYS_TYPES_H
3832#include <sys/types.h>
3833#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003834#ifdef HAVE_SYS_SOCKET_H
3835#include <sys/socket.h>
3836#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003837])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003838
Antoine Pitroufff95302008-09-03 18:58:51 +00003839AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003840AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Antoine Pitroufff95302008-09-03 18:58:51 +00003841AC_TRY_RUN([
3842#include<stdlib.h>
3843int main() {
3844 size_t len = -1;
3845 const char *str = "text";
3846 len = mbstowcs(NULL, str, 0);
3847 return (len != 4);
3848}
3849],
3850ac_cv_broken_mbstowcs=no,
3851ac_cv_broken_mbstowcs=yes,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003852ac_cv_broken_mbstowcs=no))
Antoine Pitroufff95302008-09-03 18:58:51 +00003853AC_MSG_RESULT($ac_cv_broken_mbstowcs)
3854if test "$ac_cv_broken_mbstowcs" = yes
3855then
3856 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
3857 [Define if mbstowcs(NULL, "text", 0) does not return the number of
3858 wide chars that would be converted.])
3859fi
3860
Antoine Pitroub52ec782009-01-25 16:34:23 +00003861# Check for --with-computed-gotos
3862AC_MSG_CHECKING(for --with-computed-gotos)
3863AC_ARG_WITH(computed-gotos,
3864 AC_HELP_STRING(--with-computed-gotos,
3865 Use computed gotos / threaded dispatch in evaluation loop (not available on all compilers)),
3866[
3867if test "$withval" != no
3868then
3869 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
3870 [Define if you want to use computed gotos in ceval.c.])
3871 AC_MSG_RESULT(yes)
3872else AC_MSG_RESULT(no)
3873fi],
3874[AC_MSG_RESULT(no)])
3875
3876
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003877AC_SUBST(THREADHEADERS)
3878
3879for h in `(cd $srcdir;echo Python/thread_*.h)`
3880do
3881 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3882done
3883
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003884AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003885SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003886AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003887for dir in $SRCDIRS; do
3888 if test ! -d $dir; then
3889 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003890 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003891done
3892AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003893
Guido van Rossum627b2d71993-12-24 10:39:16 +00003894# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00003895AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00003896AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003897
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003898echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003899if test ! -f Modules/Setup
3900then
3901 cp $srcdir/Modules/Setup.dist Modules/Setup
3902fi
3903
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003904echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003905if test ! -f Modules/Setup.local
3906then
3907 echo "# Edit this file for local setup changes" >Modules/Setup.local
3908fi
3909
3910echo "creating Makefile"
3911$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3912 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003913 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003914mv config.c Modules