blob: f5acbf47a7e37ab4e09afcfee038b7593f083e4c [file] [log] [blame]
Benjamin Petersonfbeb6b62008-05-26 16:04:49 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Benjamin Peterson4469d0c2008-11-30 22:46:23 +00004dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.61).
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
6# Set VERSION so we only need to edit in one place (i.e., here)
Benjamin Peterson46ea4f72009-06-27 21:40:27 +00007m4_define(PYTHON_VERSION, 3.2)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008
Alexandre Vassalottib89910f2009-07-18 00:33:23 +00009dnl Some m4 magic to ensure that the configure script is generated
10dnl by the correct autoconf version.
11m4_define([version_required],
12[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), [$1]), 0,
13 [],
14 [m4_fatal([Autoconf version $1 is required for Python], 63)])
15])
16version_required(2.61)
17
Guido van Rossum76be6ed1995-01-02 18:33:54 +000018AC_REVISION($Revision$)
Georg Brandle2e15612009-05-20 18:25:10 +000019AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
Martin v. Löwis88afe662002-10-26 13:47:44 +000020AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000021AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000022
Benjamin Petersond23f8222009-04-05 19:13:16 +000023dnl Ensure that if prefix is specified, it does not end in a slash. If
24dnl it does, we get path names containing '//' which is both ugly and
25dnl can cause trouble.
26
27dnl Last slash shouldn't be stripped if prefix=/
28if test "$prefix" != "/"; then
29 prefix=`echo "$prefix" | sed -e 's/\/$//g'`
30fi
31
Martin v. Löwis8316feb2003-06-14 07:48:07 +000032dnl This is for stuff that absolutely must end up in pyconfig.h.
33dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000034AH_TOP([
35#ifndef Py_PYCONFIG_H
36#define Py_PYCONFIG_H
37])
Martin v. Löwis11437992002-04-12 09:54:03 +000038AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000039/* Define the macros needed if on a UnixWare 7.x system. */
40#if defined(__USLC__) && defined(__SCO_VERSION__)
41#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
42#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000043
44#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000045])
46
Martin v. Löwis8316feb2003-06-14 07:48:07 +000047# We don't use PACKAGE_ variables, and they cause conflicts
48# with other autoconf-based packages that include Python.h
49grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
50rm confdefs.h
51mv confdefs.h.new confdefs.h
52
Guido van Rossum642b6781997-07-19 19:35:41 +000053AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000054VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000055
Martin v. Löwis1142de32002-03-29 16:28:31 +000056AC_SUBST(SOVERSION)
57SOVERSION=1.0
58
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000059# The later defininition of _XOPEN_SOURCE disables certain features
60# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
61AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
62
Martin v. Löwisbcd93962003-05-03 10:32:18 +000063# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
64# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
65# them.
66AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
67
Andrew MacIntyreabccf412003-07-02 13:53:25 +000068# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
69# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
70# them.
71AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
72
Martin v. Löwisd6320502004-08-12 13:45:08 +000073# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
74# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
75AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
76
Georg Brandlfcaf9102008-07-16 02:17:56 +000077# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
78# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
79# them.
80AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
81
82
Martin v. Löwise981a4e2002-11-11 13:26:51 +000083define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000084
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000085# Arguments passed to configure.
86AC_SUBST(CONFIG_ARGS)
87CONFIG_ARGS="$ac_configure_args"
88
Ronald Oussoren8af24c12010-02-07 12:03:42 +000089AC_MSG_CHECKING([for --enable-universalsdk])
Thomas Wouters477c8d52006-05-27 19:21:47 +000090AC_ARG_ENABLE(universalsdk,
Christian Heimes68f5fbe2008-02-14 08:27:37 +000091 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Thomas Wouters477c8d52006-05-27 19:21:47 +000092[
93 case $enableval in
94 yes)
95 enableval=/Developer/SDKs/MacOSX10.4u.sdk
Ronald Oussoren8af24c12010-02-07 12:03:42 +000096 if test ! -d "${enableval}"
97 then
98 enableval=/
99 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000100 ;;
101 esac
102 case $enableval in
103 no)
104 UNIVERSALSDK=
105 enable_universalsdk=
106 ;;
107 *)
108 UNIVERSALSDK=$enableval
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000109 if test ! -d "${UNIVERSALSDK}"
110 then
111 AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
112 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000113 ;;
114 esac
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000115
Thomas Wouters477c8d52006-05-27 19:21:47 +0000116],[
117 UNIVERSALSDK=
118 enable_universalsdk=
119])
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000120if test -n "${UNIVERSALSDK}"
121then
122 AC_MSG_RESULT(${UNIVERSALSDK})
123else
124 AC_MSG_RESULT(no)
125fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000126AC_SUBST(UNIVERSALSDK)
127
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000128AC_SUBST(ARCH_RUN_32BIT)
129
Georg Brandlfcaf9102008-07-16 02:17:56 +0000130UNIVERSAL_ARCHS="32-bit"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000131AC_SUBST(LIPO_32BIT_FLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000132AC_MSG_CHECKING(for --with-universal-archs)
133AC_ARG_WITH(universal-archs,
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000134 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")),
Georg Brandlfcaf9102008-07-16 02:17:56 +0000135[
136 AC_MSG_RESULT($withval)
137 UNIVERSAL_ARCHS="$withval"
138],
139[
140 AC_MSG_RESULT(32-bit)
141])
142
143
144
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000145AC_ARG_WITH(framework-name,
146 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
147 specify an alternate name of the framework built with --enable-framework),
148[
149 PYTHONFRAMEWORK=${withval}
150 PYTHONFRAMEWORKDIR=${withval}.framework
151 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
152 ],[
153 PYTHONFRAMEWORK=Python
154 PYTHONFRAMEWORKDIR=Python.framework
155 PYTHONFRAMEWORKIDENTIFIER=org.python.python
156])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000157dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000158AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000159 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
160[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000161 case $enableval in
162 yes)
163 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000164 esac
165 case $enableval in
166 no)
167 PYTHONFRAMEWORK=
168 PYTHONFRAMEWORKDIR=no-framework
169 PYTHONFRAMEWORKPREFIX=
170 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000171 FRAMEWORKINSTALLFIRST=
172 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000173 FRAMEWORKALTINSTALLFIRST=
174 FRAMEWORKALTINSTALLLAST=
175 if test "x${prefix}" = "xNONE"; then
176 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
177 else
178 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
179 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000180 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000181 ;;
182 *)
183 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000184 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000185 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussorenf6ccbf62009-06-02 10:55:56 +0000186 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000187 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
188 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000189
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000190 if test "x${prefix}" = "xNONE" ; then
191 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
192 else
193 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
194 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000195 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000196
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000197 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000198 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000199 AC_CONFIG_FILES(Mac/Makefile)
200 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000201 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
202 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000203 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000204 ],[
205 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000206 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000207 PYTHONFRAMEWORKPREFIX=
208 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000209 FRAMEWORKINSTALLFIRST=
210 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000211 FRAMEWORKALTINSTALLFIRST=
212 FRAMEWORKALTINSTALLLAST=
213 if test "x${prefix}" = "xNONE" ; then
214 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
215 else
216 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
217 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000218 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000219
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000220])
221AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000222AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000223AC_SUBST(PYTHONFRAMEWORKDIR)
224AC_SUBST(PYTHONFRAMEWORKPREFIX)
225AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000226AC_SUBST(FRAMEWORKINSTALLFIRST)
227AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000228AC_SUBST(FRAMEWORKALTINSTALLFIRST)
229AC_SUBST(FRAMEWORKALTINSTALLLAST)
230AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000231
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000232##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000233## AC_HELP_STRING(--with-dyld,
234## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000235##
Guido van Rossumb418f891996-07-30 18:06:02 +0000236# Set name for machine-dependent library files
237AC_SUBST(MACHDEP)
238AC_MSG_CHECKING(MACHDEP)
239if test -z "$MACHDEP"
240then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000241 ac_sys_system=`uname -s`
Benjamin Peterson8719ad52009-09-11 22:24:02 +0000242 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000243 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000244 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000245 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000246 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000247 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000248 ac_md_system=`echo $ac_sys_system |
249 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
250 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000251 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000252 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000253
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000254 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000255 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000256 darwin*) MACHDEP="darwin";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000257 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000258 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000259 esac
260fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000261
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000262# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
263# disable features if it is defined, without any means to access these
264# features as extensions. For these systems, we skip the definition of
265# _XOPEN_SOURCE. Before adding a system to the list to gain access to
266# some feature, make sure there is no alternative way to access this
267# feature. Also, when using wildcards, make sure you have verified the
268# need for not defining _XOPEN_SOURCE on all systems matching the
269# wildcard, and that the wildcard does not include future systems
270# (which may remove their limitations).
271dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
272case $ac_sys_system/$ac_sys_release in
273 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
274 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000275 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Georg Brandlf78e02b2008-06-10 17:40:04 +0000276 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000277 define_xopen_source=no
278 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
279 # also defined. This can be overridden by defining _BSD_SOURCE
280 # As this has a different meaning on Linux, only define it on OpenBSD
281 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
282 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000283 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
284 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
285 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000286 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 +0000287 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000288 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
289 # of union __?sigval. Reported by Stuart Bishop.
290 SunOS/5.6)
291 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000292 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
293 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000294 # Reconfirmed for 7.1.4 by Martin v. Loewis.
295 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000296 define_xopen_source=no;;
297 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000298 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000299 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000300 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000301 # On FreeBSD 4, the math functions C89 does not cover are never defined
302 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
303 FreeBSD/4.*)
304 define_xopen_source=no;;
305 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
306 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
307 # identifies itself as Darwin/7.*
308 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
309 # disables platform specific features beyond repair.
310 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
311 # has no effect, don't bother defining them
312 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000313 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000314 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
315 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
316 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000317 AIX/4)
318 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000319 AIX/5)
320 if test `uname -r` -eq 1; then
321 define_xopen_source=no
322 fi
323 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000324 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
325 # defining NI_NUMERICHOST.
326 QNX/6.3.2)
327 define_xopen_source=no
328 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000329
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000330esac
331
332if test $define_xopen_source = yes
333then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000334 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
335 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000336 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
337 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000338 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000339 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000340 AC_DEFINE(_XOPEN_SOURCE, 500,
341 Define to the level of X/Open that your system supports)
342 ;;
343 *)
344 AC_DEFINE(_XOPEN_SOURCE, 600,
345 Define to the level of X/Open that your system supports)
346 ;;
347 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000348
349 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
350 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
351 # several APIs are not declared. Since this is also needed in some
352 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000353 # except for Solaris 10, where it must not be defined,
354 # as it implies XPG4.2
355 case $ac_sys_system/$ac_sys_release in
356 SunOS/5.10)
357 ;;
358 *)
359 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
360 Define to activate Unix95-and-earlier features)
361 ;;
362 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000363
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000364 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
365
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000366fi
367
Guido van Rossum91922671997-10-09 20:24:13 +0000368#
369# SGI compilers allow the specification of the both the ABI and the
370# ISA on the command line. Depending on the values of these switches,
371# different and often incompatable code will be generated.
372#
373# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
374# thus supply support for various ABI/ISA combinations. The MACHDEP
375# variable is also adjusted.
376#
377AC_SUBST(SGI_ABI)
378if test ! -z "$SGI_ABI"
379then
380 CC="cc $SGI_ABI"
381 LDFLAGS="$SGI_ABI $LDFLAGS"
382 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
383fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000384AC_MSG_RESULT($MACHDEP)
385
Jack Jansen6b08a402004-06-03 12:41:45 +0000386# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
387# it may influence the way we can build extensions, so distutils
388# needs to check it
389AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000390AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000391CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000392EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000393
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000394AC_MSG_CHECKING(machine type as reported by uname -m)
395ac_sys_machine=`uname -m`
396AC_MSG_RESULT($ac_sys_machine)
397
Guido van Rossum627b2d71993-12-24 10:39:16 +0000398# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000399
400# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
401# for debug/optimization stuff. BASECFLAGS is for flags that are required
402# just to get things to compile and link. Users are free to override OPT
403# when running configure or make. The build should not break if they do.
404# BASECFLAGS should generally not be messed with, however.
405
406# XXX shouldn't some/most/all of this code be merged with the stuff later
407# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000408AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000409AC_ARG_WITH(gcc,
410 AC_HELP_STRING(--without-gcc,never use gcc),
411[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000412 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000413 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000414 without_gcc=yes;;
415 yes) CC=gcc
416 without_gcc=no;;
417 *) CC=$withval
418 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000419 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000420 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000421 AIX*) CC=cc_r
422 without_gcc=;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000423 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000424 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000425AC_MSG_RESULT($without_gcc)
426
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000427# If the user switches compilers, we can't believe the cache
428if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
429then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000430 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
431(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000432fi
433
Guido van Rossum627b2d71993-12-24 10:39:16 +0000434AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000435
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000436AC_SUBST(CXX)
437AC_SUBST(MAINCC)
438AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
439AC_ARG_WITH(cxx_main,
440 AC_HELP_STRING([--with-cxx-main=<compiler>],
441 [compile main() and link python executable with C++ compiler]),
442[
443
444 case $withval in
445 no) with_cxx_main=no
446 MAINCC='$(CC)';;
447 yes) with_cxx_main=yes
448 MAINCC='$(CXX)';;
449 *) with_cxx_main=yes
450 MAINCC=$withval
451 if test -z "$CXX"
452 then
453 CXX=$withval
454 fi;;
455 esac], [
456 with_cxx_main=no
457 MAINCC='$(CC)'
458])
459AC_MSG_RESULT($with_cxx_main)
460
461preset_cxx="$CXX"
462if test -z "$CXX"
463then
464 case "$CC" in
465 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
466 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
467 esac
468 if test "$CXX" = "notfound"
469 then
470 CXX=""
471 fi
472fi
473if test -z "$CXX"
474then
475 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
476 if test "$CXX" = "notfound"
477 then
478 CXX=""
479 fi
480fi
481if test "$preset_cxx" != "$CXX"
482then
483 AC_MSG_WARN([
484
485 By default, distutils will build C++ extension modules with "$CXX".
486 If this is not intended, then set CXX on the configure command line.
487 ])
488fi
489
490
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000491# checks for UNIX variants that set C preprocessor variables
492AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000493
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000494# Check for unsupported systems
495case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000496atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000497 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
498 echo See README for details.
499 exit 1;;
500esac
501
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000502AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000503AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000504AC_ARG_WITH(suffix,
505 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
506[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000507 case $withval in
508 no) EXEEXT=;;
509 yes) EXEEXT=.exe;;
510 *) EXEEXT=$withval;;
511 esac])
512AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000513
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000514# Test whether we're running on a non-case-sensitive system, in which
515# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000516AC_SUBST(BUILDEXEEXT)
517AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000518if test ! -d CaseSensitiveTestDir; then
519mkdir CaseSensitiveTestDir
520fi
521
522if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000523then
Jack Jansen1999ef42001-12-06 21:47:20 +0000524 AC_MSG_RESULT(yes)
525 BUILDEXEEXT=.exe
526else
527 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000528 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000529fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000530rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000531
Guido van Rossumdd997f71998-10-07 19:58:26 +0000532case $MACHDEP in
533bsdos*)
534 case $CC in
535 gcc) CC="$CC -D_HAVE_BSDI";;
536 esac;;
537esac
538
Guido van Rossum84561611997-08-21 00:08:11 +0000539case $ac_sys_system in
540hp*|HP*)
541 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000542 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000543 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000544SunOS*)
545 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000546 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000547 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000548esac
549
Martin v. Löwise8964d42001-03-06 12:09:07 +0000550
Neil Schemenauer61c51152001-01-26 16:18:16 +0000551AC_SUBST(LIBRARY)
552AC_MSG_CHECKING(LIBRARY)
553if test -z "$LIBRARY"
554then
555 LIBRARY='libpython$(VERSION).a'
556fi
557AC_MSG_RESULT($LIBRARY)
558
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000559# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000560# name of the library into which to insert object files). BLDLIBRARY is also
561# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
562# is blank as the main program is not linked directly against LDLIBRARY.
563# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
564# systems without shared libraries, LDLIBRARY is the same as LIBRARY
565# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
566# DLLLIBRARY is the shared (i.e., DLL) library.
567#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000568# RUNSHARED is used to run shared python without installed libraries
569#
570# INSTSONAME is the name of the shared library that will be use to install
571# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000572AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000573AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000574AC_SUBST(BLDLIBRARY)
575AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000576AC_SUBST(INSTSONAME)
577AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000578LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000579BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000580INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000581DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000582LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000583RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000584
Guido van Rossumfb842551997-08-06 23:42:07 +0000585# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000586# If CXX is set, and if it is needed to link a main function that was
587# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
588# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000589# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000590# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000591AC_SUBST(LINKCC)
592AC_MSG_CHECKING(LINKCC)
593if test -z "$LINKCC"
594then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000595 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000596 case $ac_sys_system in
597 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000598 exp_extra="\"\""
599 if test $ac_sys_release -ge 5 -o \
600 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
601 exp_extra="."
602 fi
603 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000604 QNX*)
605 # qcc must be used because the other compilers do not
606 # support -N.
607 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000608 esac
609fi
610AC_MSG_RESULT($LINKCC)
611
Tarek Ziadébe720e02009-05-09 11:55:12 +0000612# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
613# make sure we default having it set to "no": this is used by
614# distutils.unixccompiler to know if it should add --enable-new-dtags
615# to linker command lines, and failing to detect GNU ld simply results
616# in the same bahaviour as before.
617AC_SUBST(GNULD)
618AC_MSG_CHECKING(for GNU ld)
619ac_prog=ld
620if test "$GCC" = yes; then
621 ac_prog=`$CC -print-prog-name=ld`
622fi
623case `"$ac_prog" -V 2>&1 < /dev/null` in
624 *GNU*)
625 GNULD=yes;;
626 *)
627 GNULD=no;;
628esac
629AC_MSG_RESULT($GNULD)
630
Martin v. Löwis1142de32002-03-29 16:28:31 +0000631AC_MSG_CHECKING(for --enable-shared)
632AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000633 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000634
Martin v. Löwis1142de32002-03-29 16:28:31 +0000635if test -z "$enable_shared"
636then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000637 case $ac_sys_system in
Antoine Pitrou6103ab12009-10-24 20:11:21 +0000638 CYGWIN*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000639 enable_shared="yes";;
640 *)
641 enable_shared="no";;
642 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000643fi
644AC_MSG_RESULT($enable_shared)
645
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000646AC_MSG_CHECKING(for --enable-profiling)
647AC_ARG_ENABLE(profiling,
648 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
649[ac_save_cc="$CC"
650 CC="$CC -pg"
651 AC_TRY_RUN([int main() { return 0; }],
652 ac_enable_profiling="yes",
653 ac_enable_profiling="no",
654 ac_enable_profiling="no")
655 CC="$ac_save_cc"])
656AC_MSG_RESULT($ac_enable_profiling)
657
658case "$ac_enable_profiling" in
659 "yes")
660 BASECFLAGS="-pg $BASECFLAGS"
661 LDFLAGS="-pg $LDFLAGS"
662 ;;
663esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000664
665AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000666
Guido van Rossumb8552162001-09-05 14:58:11 +0000667# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
668# library that we build, but we do not want to link against it (we
669# will find it with a -framework option). For this reason there is an
670# extra variable BLDLIBRARY against which Python and the extension
671# modules are linked, BLDLIBRARY. This is normally the same as
672# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000673if test "$enable_framework"
674then
675 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000676 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000677 BLDLIBRARY=''
678else
679 BLDLIBRARY='$(LDLIBRARY)'
680fi
681
Martin v. Löwis1142de32002-03-29 16:28:31 +0000682# Other platforms follow
683if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000684 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000685 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000686 CYGWIN*)
687 LDLIBRARY='libpython$(VERSION).dll.a'
688 DLLLIBRARY='libpython$(VERSION).dll'
689 ;;
690 SunOS*)
691 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000692 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000693 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000694 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000695 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000696 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000697 LDLIBRARY='libpython$(VERSION).so'
698 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000699 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000700 case $ac_sys_system in
701 FreeBSD*)
702 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
703 ;;
704 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000705 INSTSONAME="$LDLIBRARY".$SOVERSION
706 ;;
707 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000708 case `uname -m` in
709 ia64)
710 LDLIBRARY='libpython$(VERSION).so'
711 ;;
712 *)
713 LDLIBRARY='libpython$(VERSION).sl'
714 ;;
715 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000716 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000717 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000718 ;;
719 OSF*)
720 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000721 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000722 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000723 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000724 Darwin*)
725 LDLIBRARY='libpython$(VERSION).dylib'
726 BLDLIBRARY='-L. -lpython$(VERSION)'
727 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
728 ;;
729
Martin v. Löwis1142de32002-03-29 16:28:31 +0000730 esac
Jason Tishler30765592003-09-04 11:04:06 +0000731else # shared is disabled
732 case $ac_sys_system in
733 CYGWIN*)
734 BLDLIBRARY='$(LIBRARY)'
735 LDLIBRARY='libpython$(VERSION).dll.a'
736 ;;
737 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000738fi
739
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000740AC_MSG_RESULT($LDLIBRARY)
741
Guido van Rossum627b2d71993-12-24 10:39:16 +0000742AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000743AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000744AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000745
Tarek Ziadé5662d3e2009-05-07 21:24:43 +0000746# tweak ARFLAGS only if the user didn't set it on the command line
747AC_SUBST(ARFLAGS)
748if test -z "$ARFLAGS"
749then
750 ARFLAGS="rc"
751fi
752
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000753AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000754AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000755if test $SVNVERSION = found
756then
757 SVNVERSION="svnversion \$(srcdir)"
758else
Benjamin Petersonf53eec82009-05-23 19:36:27 +0000759 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000760fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000761
Neil Schemenauera42c8272001-03-31 00:01:55 +0000762case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000763bsdos*|hp*|HP*)
764 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000765 if test -z "$INSTALL"
766 then
767 INSTALL="${srcdir}/install-sh -c"
768 fi
769esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000770AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000771
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000772# Not every filesystem supports hard links
773AC_SUBST(LN)
774if test -z "$LN" ; then
775 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000776 CYGWIN*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000777 *) LN=ln;;
778 esac
779fi
780
Fred Drake9f715822001-07-11 06:27:00 +0000781# Check for --with-pydebug
782AC_MSG_CHECKING(for --with-pydebug)
783AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000784 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
785[
Fred Drake9f715822001-07-11 06:27:00 +0000786if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000787then
788 AC_DEFINE(Py_DEBUG, 1,
789 [Define if you want to build an interpreter with many run-time checks.])
790 AC_MSG_RESULT(yes);
791 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000792else AC_MSG_RESULT(no); Py_DEBUG='false'
793fi],
794[AC_MSG_RESULT(no)])
795
Skip Montanarodecc6a42003-01-01 20:07:49 +0000796# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
797# merged with this chunk of code?
798
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000799# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000800# ------------------------
801# (The following bit of code is complicated enough - please keep things
802# indented properly. Just pretend you're editing Python code. ;-)
803
804# There are two parallel sets of case statements below, one that checks to
805# see if OPT was set and one that does BASECFLAGS setting based upon
806# compiler and platform. BASECFLAGS tweaks need to be made even if the
807# user set OPT.
808
809# tweak OPT based on compiler and platform, only if the user didn't set
810# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000811AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000812if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000813then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000814 case $GCC in
815 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000816 if test "$CC" != 'g++' ; then
817 STRICT_PROTO="-Wstrict-prototypes"
818 fi
Christian Heimes38053212007-12-14 01:24:44 +0000819 # For gcc 4.x we need to use -fwrapv so lets check if its supported
820 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
821 WRAP="-fwrapv"
822 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000823 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000824 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000825 if test "$Py_DEBUG" = 'true' ; then
826 # Optimization messes up debuggers, so turn it off for
827 # debug builds.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000828 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000829 else
Christian Heimes38053212007-12-14 01:24:44 +0000830 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000831 fi
832 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000833 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000834 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000835 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000836 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000837 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000838 SCO_SV*) OPT="$OPT -m486 -DSCO5"
839 ;;
840 esac
Fred Drake9f715822001-07-11 06:27:00 +0000841 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000842
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000843 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000844 OPT="-O"
845 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000846 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +0000847fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000848
Skip Montanarodecc6a42003-01-01 20:07:49 +0000849AC_SUBST(BASECFLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000850
851# The -arch flags for universal builds on OSX
852UNIVERSAL_ARCH_FLAGS=
853AC_SUBST(UNIVERSAL_ARCH_FLAGS)
854
Skip Montanarodecc6a42003-01-01 20:07:49 +0000855# tweak BASECFLAGS based on compiler and platform
856case $GCC in
857yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000858 # Python violates C99 rules, by casting between incompatible
859 # pointer types. GCC may generate bad code as a result of that,
860 # so use -fno-strict-aliasing if supported.
861 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
862 ac_save_cc="$CC"
863 CC="$CC -fno-strict-aliasing"
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +0000864 AC_CACHE_VAL(ac_cv_no_strict_aliasing_ok,
Gregory P. Smith4e3ed012009-11-01 21:09:10 +0000865 AC_TRY_COMPILE([],[int main() { return 0; }],
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000866 ac_cv_no_strict_aliasing_ok=yes,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +0000867 ac_cv_no_strict_aliasing_ok=no))
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000868 CC="$ac_save_cc"
869 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
870 if test $ac_cv_no_strict_aliasing_ok = yes
871 then
872 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
873 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000874
875 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
876 # support. Without this, treatment of subnormals doesn't follow
877 # the standard.
878 case $ac_sys_machine in
879 alpha*)
880 BASECFLAGS="$BASECFLAGS -mieee"
881 ;;
882 esac
883
Skip Montanarodecc6a42003-01-01 20:07:49 +0000884 case $ac_sys_system in
885 SCO_SV*)
886 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
887 ;;
888 # is there any other compiler on Darwin besides gcc?
889 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +0000890 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
891 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000892
893
Thomas Wouters477c8d52006-05-27 19:21:47 +0000894 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +0000895 UNIVERSAL_ARCH_FLAGS=""
896 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
897 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000898 ARCH_RUN_32BIT=""
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000899 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000900
Ronald Oussoren755740f2010-02-07 19:56:39 +0000901 # You have to use different flags on various versions of
902 # OSX to extract PPC code from an universal binary, basically
903 # '-arch ppc' on OSX 10.4 and '-arch ppc7400' on anything
904 # newer.
905 # Because '-arch pp7400' works on OSX 10.5 or higher this
906 # test is only present in the '32-bit' branch, all other
907 # branches require OSX 10.5 to compile.
908
909 AC_MSG_CHECKING(lipo flag for extracting ppc code)
910 FN="test.$$"
911 cat >${FN}.c <<-EOF
912 int main() { return 0; }
913EOF
914 ${CC} ${CFLAGS} -arch ppc -arch i386 -o ${FN} ${FN}.c -isysroot ${UNIVERSALSDK}
915 if test $? != 0 ; then
916 rm ${FN} ${FN}.c
917 AC_MSG_RESULT([failed, assumee -extract ppc7400])
918 else
919 lipo "${FN}" -extract ppc7400 -output "${FN}.out" 2>/dev/null
920 if test $? != 0 ; then
921 LIPO_32BIT_FLAGS="-extract ppc -extract i386"
922 AC_MSG_RESULT("'-extract ppc'")
923 else
924 AC_MSG_RESULT("'-extract ppc7400'")
925 fi
926 rm -f ${FN} ${FN}.c ${FN}.out
927 fi
928
Georg Brandlfcaf9102008-07-16 02:17:56 +0000929 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
930 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000931 LIPO_32BIT_FLAGS=""
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000932 ARCH_RUN_32BIT="true"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000933
934 elif test "$UNIVERSAL_ARCHS" = "all" ; then
935 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000936 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000937 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000938
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000939 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
940 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000941 LIPO_32BIT_FLAGS="-extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000942 ARCH_RUN_32BIT="/usr/bin/arch -i386"
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000943
944 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
945 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000946 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000947 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000948
Georg Brandlfcaf9102008-07-16 02:17:56 +0000949 else
Ronald Oussoren74f29b42009-09-20 20:09:26 +0000950 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Georg Brandlfcaf9102008-07-16 02:17:56 +0000951
952 fi
953
954
955 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Georg Brandl3dbca812008-07-23 16:10:53 +0000956 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000957 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
958 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
959 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000960 fi
961
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000962 # Calculate the right deployment target for this build.
963 #
964 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
965 if test ${cur_target} '>' 10.2; then
966 cur_target=10.3
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000967 if test ${enable_universalsdk}; then
968 if test "${UNIVERSAL_ARCHS}" = "all"; then
969 # Ensure that the default platform for a
970 # 4-way universal build is OSX 10.5,
971 # that's the first OS release where
972 # 4-way builds make sense.
973 cur_target='10.5'
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000974
975 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
976 cur_target='10.5'
977
978 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
979 cur_target='10.5'
980
981 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
982 cur_target='10.5'
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000983 fi
984 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +0000985 if test `/usr/bin/arch` = "i386"; then
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000986 # On Intel macs default to a deployment
987 # target of 10.4, that's the first OSX
988 # release with Intel support.
989 cur_target="10.4"
990 fi
991 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000992 fi
993 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
994
995 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
996 # environment with a value that is the same as what we'll use
997 # in the Makefile to ensure that we'll get the same compiler
998 # environment during configure and build time.
999 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1000 export MACOSX_DEPLOYMENT_TARGET
1001 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1002
Skip Montanarodecc6a42003-01-01 20:07:49 +00001003 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001004 OSF*)
1005 BASECFLAGS="$BASECFLAGS -mieee"
1006 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001007 esac
1008 ;;
1009
1010*)
1011 case $ac_sys_system in
1012 OpenUNIX*|UnixWare*)
1013 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1014 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001015 OSF*)
1016 BASECFLAGS="$BASECFLAGS -ieee -std"
1017 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001018 SCO_SV*)
1019 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1020 ;;
1021 esac
1022 ;;
1023esac
1024
Fred Drakee1ceaa02001-12-04 20:55:47 +00001025if test "$Py_DEBUG" = 'true'; then
1026 :
1027else
1028 OPT="-DNDEBUG $OPT"
1029fi
1030
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001031if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001032then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001033 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001034fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001035
Neal Norwitz020c46a2006-01-07 21:39:28 +00001036# disable check for icc since it seems to pass, but generates a warning
1037if test "$CC" = icc
1038then
1039 ac_cv_opt_olimit_ok=no
1040fi
1041
Guido van Rossum91922671997-10-09 20:24:13 +00001042AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1043AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1044[ac_save_cc="$CC"
1045CC="$CC -OPT:Olimit=0"
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001046AC_TRY_COMPILE([],[int main() { return 0; }],
Guido van Rossum91922671997-10-09 20:24:13 +00001047 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001048 ac_cv_opt_olimit_ok=no,
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001049 )
Guido van Rossum91922671997-10-09 20:24:13 +00001050CC="$ac_save_cc"])
1051AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001052if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001053 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001054 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1055 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1056 # environment?
1057 Darwin*)
1058 ;;
1059 *)
1060 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1061 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001062 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001063else
1064 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1065 AC_CACHE_VAL(ac_cv_olimit_ok,
1066 [ac_save_cc="$CC"
1067 CC="$CC -Olimit 1500"
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001068 AC_TRY_COMPILE([],[int main() { return 0; }],
Guido van Rossumf8678121998-07-07 21:05:09 +00001069 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001070 ac_cv_olimit_ok=no,
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001071 )
Guido van Rossumf8678121998-07-07 21:05:09 +00001072 CC="$ac_save_cc"])
1073 AC_MSG_RESULT($ac_cv_olimit_ok)
1074 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001075 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001076 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001077fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001078
Thomas Wouters89f507f2006-12-13 04:49:30 +00001079# Check whether GCC supports PyArg_ParseTuple format
1080if test "$GCC" = "yes"
1081then
1082 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1083 save_CFLAGS=$CFLAGS
1084 CFLAGS="$CFLAGS -Werror"
1085 AC_TRY_COMPILE([
1086 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1087 ],,
1088 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1089 AC_MSG_RESULT(yes),
1090 AC_MSG_RESULT(no)
1091 )
1092 CFLAGS=$save_CFLAGS
1093fi
1094
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001095# On some compilers, pthreads are available without further options
1096# (e.g. MacOS X). On some of these systems, the compiler will not
1097# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1098# So we have to see first whether pthreads are available without
1099# options before we can check whether -Kpthread improves anything.
1100AC_MSG_CHECKING(whether pthreads are available without options)
1101AC_CACHE_VAL(ac_cv_pthread_is_default,
1102[AC_TRY_RUN([
1103#include <pthread.h>
1104
1105void* routine(void* p){return NULL;}
1106
1107int main(){
1108 pthread_t p;
1109 if(pthread_create(&p,NULL,routine,NULL)!=0)
1110 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001111 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001112 return 0;
1113}
1114],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001115[
1116 ac_cv_pthread_is_default=yes
1117 ac_cv_kthread=no
1118 ac_cv_pthread=no
1119],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001120 ac_cv_pthread_is_default=no,
1121 ac_cv_pthread_is_default=no)
1122])
1123AC_MSG_RESULT($ac_cv_pthread_is_default)
1124
1125
1126if test $ac_cv_pthread_is_default = yes
1127then
1128 ac_cv_kpthread=no
1129else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001130# -Kpthread, if available, provides the right #defines
1131# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001132# Some compilers won't report that they do not support -Kpthread,
1133# so we need to run a program to see whether it really made the
1134# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001135AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1136AC_CACHE_VAL(ac_cv_kpthread,
1137[ac_save_cc="$CC"
1138CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001139AC_TRY_RUN([
1140#include <pthread.h>
1141
1142void* routine(void* p){return NULL;}
1143
1144int main(){
1145 pthread_t p;
1146 if(pthread_create(&p,NULL,routine,NULL)!=0)
1147 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001148 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001149 return 0;
1150}
1151],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001152 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001153 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001154 ac_cv_kpthread=no)
1155CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001156AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001157fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001158
Skip Montanarod8d39a02003-07-10 20:44:10 +00001159if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001160then
1161# -Kthread, if available, provides the right #defines
1162# and linker options to make pthread_create available
1163# Some compilers won't report that they do not support -Kthread,
1164# so we need to run a program to see whether it really made the
1165# function available.
1166AC_MSG_CHECKING(whether $CC accepts -Kthread)
1167AC_CACHE_VAL(ac_cv_kthread,
1168[ac_save_cc="$CC"
1169CC="$CC -Kthread"
1170AC_TRY_RUN([
1171#include <pthread.h>
1172
1173void* routine(void* p){return NULL;}
1174
1175int main(){
1176 pthread_t p;
1177 if(pthread_create(&p,NULL,routine,NULL)!=0)
1178 return 1;
1179 (void)pthread_detach(p);
1180 return 0;
1181}
1182],
1183 ac_cv_kthread=yes,
1184 ac_cv_kthread=no,
1185 ac_cv_kthread=no)
1186CC="$ac_save_cc"])
1187AC_MSG_RESULT($ac_cv_kthread)
1188fi
1189
Skip Montanarod8d39a02003-07-10 20:44:10 +00001190if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001191then
1192# -pthread, if available, provides the right #defines
1193# and linker options to make pthread_create available
1194# Some compilers won't report that they do not support -pthread,
1195# so we need to run a program to see whether it really made the
1196# function available.
1197AC_MSG_CHECKING(whether $CC accepts -pthread)
1198AC_CACHE_VAL(ac_cv_thread,
1199[ac_save_cc="$CC"
1200CC="$CC -pthread"
1201AC_TRY_RUN([
1202#include <pthread.h>
1203
1204void* routine(void* p){return NULL;}
1205
1206int main(){
1207 pthread_t p;
1208 if(pthread_create(&p,NULL,routine,NULL)!=0)
1209 return 1;
1210 (void)pthread_detach(p);
1211 return 0;
1212}
1213],
1214 ac_cv_pthread=yes,
1215 ac_cv_pthread=no,
1216 ac_cv_pthread=no)
1217CC="$ac_save_cc"])
1218AC_MSG_RESULT($ac_cv_pthread)
1219fi
1220
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001221# If we have set a CC compiler flag for thread support then
1222# check if it works for CXX, too.
1223ac_cv_cxx_thread=no
1224if test ! -z "$CXX"
1225then
1226AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1227ac_save_cxx="$CXX"
1228
1229if test "$ac_cv_kpthread" = "yes"
1230then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001231 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001232 ac_cv_cxx_thread=yes
1233elif test "$ac_cv_kthread" = "yes"
1234then
1235 CXX="$CXX -Kthread"
1236 ac_cv_cxx_thread=yes
1237elif test "$ac_cv_pthread" = "yes"
1238then
1239 CXX="$CXX -pthread"
1240 ac_cv_cxx_thread=yes
1241fi
1242
1243if test $ac_cv_cxx_thread = yes
1244then
1245 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1246 $CXX -c conftest.$ac_ext 2>&5
1247 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1248 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1249 then
1250 ac_cv_cxx_thread=yes
1251 else
1252 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001253 fi
1254 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001255fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001256AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001257fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001258CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001259
Fred Drakece81d592000-07-09 14:39:29 +00001260dnl # check for ANSI or K&R ("traditional") preprocessor
1261dnl AC_MSG_CHECKING(for C preprocessor type)
1262dnl AC_TRY_COMPILE([
1263dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1264dnl int foo;
1265dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1266dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1267dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001268
Guido van Rossum627b2d71993-12-24 10:39:16 +00001269# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001270AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001271AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1272fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001273ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001274shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001275unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001276sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1277sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001278sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Georg Brandlf78e02b2008-06-10 17:40:04 +00001279sys/termio.h sys/time.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001280sys/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 +00001281sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Ronald Oussoren755740f2010-02-07 19:56:39 +00001282bluetooth/bluetooth.h linux/tipc.h spawn.h util.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001283AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001284AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001285
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001286# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001287AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001288#ifdef HAVE_CURSES_H
1289#include <curses.h>
1290#endif
1291])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001292
Martin v. Löwis11017b12006-01-14 18:12:57 +00001293# On Linux, netlink.h requires asm/types.h
1294AC_CHECK_HEADERS(linux/netlink.h,,,[
1295#ifdef HAVE_ASM_TYPES_H
1296#include <asm/types.h>
1297#endif
1298#ifdef HAVE_SYS_SOCKET_H
1299#include <sys/socket.h>
1300#endif
1301])
1302
Guido van Rossum627b2d71993-12-24 10:39:16 +00001303# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001304was_it_defined=no
1305AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001306AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1307 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1308])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001309AC_MSG_RESULT($was_it_defined)
1310
Neal Norwitz11690112002-07-30 01:08:28 +00001311# Check whether using makedev requires defining _OSF_SOURCE
1312AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001313AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001314 [ makedev(0, 0) ],
1315 ac_cv_has_makedev=yes,
1316 ac_cv_has_makedev=no)
1317if test "$ac_cv_has_makedev" = "no"; then
1318 # we didn't link, try if _OSF_SOURCE will allow us to link
1319 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001320#define _OSF_SOURCE 1
1321#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001322 ],
1323 [ makedev(0, 0) ],
1324 ac_cv_has_makedev=yes,
1325 ac_cv_has_makedev=no)
1326 if test "$ac_cv_has_makedev" = "yes"; then
1327 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1328 fi
1329fi
1330AC_MSG_RESULT($ac_cv_has_makedev)
1331if test "$ac_cv_has_makedev" = "yes"; then
1332 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1333fi
1334
Martin v. Löwis399a6892002-10-04 10:22:02 +00001335# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1336# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1337# defined, but the compiler does not support pragma redefine_extname,
1338# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1339# structures (such as rlimit64) without declaring them. As a
1340# work-around, disable LFS on such configurations
1341
1342use_lfs=yes
1343AC_MSG_CHECKING(Solaris LFS bug)
1344AC_TRY_COMPILE([
1345#define _LARGEFILE_SOURCE 1
1346#define _FILE_OFFSET_BITS 64
1347#include <sys/resource.h>
1348],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1349AC_MSG_RESULT($sol_lfs_bug)
1350if test "$sol_lfs_bug" = "yes"; then
1351 use_lfs=no
1352fi
1353
1354if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001355# Two defines needed to enable largefile support on various platforms
1356# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001357AC_DEFINE(_LARGEFILE_SOURCE, 1,
1358[This must be defined on some systems to enable large file support.])
1359AC_DEFINE(_FILE_OFFSET_BITS, 64,
1360[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001361fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001362
Guido van Rossum300fda71996-08-19 21:58:16 +00001363# Add some code to confdefs.h so that the test for off_t works on SCO
1364cat >> confdefs.h <<\EOF
1365#if defined(SCO_DS)
1366#undef _OFF_T
1367#endif
1368EOF
1369
Guido van Rossumef2255b2000-03-10 22:30:29 +00001370# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001371AC_TYPE_MODE_T
1372AC_TYPE_OFF_T
1373AC_TYPE_PID_T
1374AC_TYPE_SIGNAL
1375AC_TYPE_SIZE_T
1376AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001377AC_TYPE_UINT32_T
1378AC_TYPE_UINT64_T
1379AC_TYPE_INT32_T
1380AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001381AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001382 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001383
Guido van Rossumef2255b2000-03-10 22:30:29 +00001384# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001385# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001386AC_CHECK_SIZEOF(int, 4)
1387AC_CHECK_SIZEOF(long, 4)
1388AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001389AC_CHECK_SIZEOF(short, 2)
1390AC_CHECK_SIZEOF(float, 4)
1391AC_CHECK_SIZEOF(double, 8)
1392AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001393AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001394AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001395
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001396AC_MSG_CHECKING(for long long support)
1397have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001398AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1399 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1400 have_long_long=yes
1401])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001402AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001403if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001404AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001405fi
1406
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001407AC_MSG_CHECKING(for long double support)
1408have_long_double=no
1409AC_TRY_COMPILE([], [long double x; x = (long double)0;], [
1410 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1411 have_long_double=yes
1412])
1413AC_MSG_RESULT($have_long_double)
1414if test "$have_long_double" = yes ; then
1415AC_CHECK_SIZEOF(long double, 16)
1416fi
1417
1418
Thomas Woutersb2137042007-02-01 18:02:27 +00001419AC_MSG_CHECKING(for _Bool support)
1420have_c99_bool=no
1421AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1422 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1423 have_c99_bool=yes
1424])
1425AC_MSG_RESULT($have_c99_bool)
1426if test "$have_c99_bool" = yes ; then
1427AC_CHECK_SIZEOF(_Bool, 1)
1428fi
1429
Thomas Wouters89f507f2006-12-13 04:49:30 +00001430AC_CHECK_TYPES(uintptr_t,
1431 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1432 [], [#ifdef HAVE_STDINT_H
1433 #include <stdint.h>
1434 #endif])
1435
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001436AC_CHECK_SIZEOF(off_t, [], [
1437#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001438#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001439#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001440])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001441
1442AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson2df5d282009-12-31 21:22:50 +00001443if test "$have_long_long" = yes
1444then
1445if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001446 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001447 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1448 [Defined to enable large file support when an off_t is bigger than a long
1449 and long long is available and at least as big as an off_t. You may need
1450 to add some flags for configuration and compilation to enable this mode.
1451 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001452 AC_MSG_RESULT(yes)
1453else
1454 AC_MSG_RESULT(no)
1455fi
Mark Dickinson2df5d282009-12-31 21:22:50 +00001456else
1457 AC_MSG_RESULT(no)
1458fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001459
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001460AC_CHECK_SIZEOF(time_t, [], [
1461#ifdef HAVE_SYS_TYPES_H
1462#include <sys/types.h>
1463#endif
1464#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00001465#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001466#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001467])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001468
Trent Mick635f6fb2000-08-23 21:33:05 +00001469# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001470ac_save_cc="$CC"
1471if test "$ac_cv_kpthread" = "yes"
1472then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001473elif test "$ac_cv_kthread" = "yes"
1474then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001475elif test "$ac_cv_pthread" = "yes"
1476then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001477fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001478
Trent Mick635f6fb2000-08-23 21:33:05 +00001479AC_MSG_CHECKING(for pthread_t)
1480have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001481AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001482AC_MSG_RESULT($have_pthread_t)
1483if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001484 AC_CHECK_SIZEOF(pthread_t, [], [
1485#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001486#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001487#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001488 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001489fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001490CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001491
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001492AC_SUBST(OTHER_LIBTOOL_OPT)
1493case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001494 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001495 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1496 ;;
1497 Darwin/*)
1498 OTHER_LIBTOOL_OPT=""
1499 ;;
1500esac
1501
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001502
1503ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001504AC_SUBST(LIBTOOL_CRUFT)
1505case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001506 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001507 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1508 if test "${enable_universalsdk}"; then
1509 :
1510 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001511 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001512 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001513 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001514 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001515 Darwin/*)
Ronald Oussoren9812a6c2010-02-07 11:53:18 +00001516 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001517 if test ${gcc_version} '<' 4.0
1518 then
1519 LIBTOOL_CRUFT="-lcc_dynamic"
1520 else
1521 LIBTOOL_CRUFT=""
1522 fi
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001523 AC_TRY_RUN([
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001524 #include <unistd.h>
1525 int main(int argc, char*argv[])
1526 {
1527 if (sizeof(long) == 4) {
1528 return 0;
1529 } else {
1530 return 1;
1531 }
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001532 }
1533 ], ac_osx_32bit=yes,
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001534 ac_osx_32bit=no,
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001535 ac_osx_32bit=yes)
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001536
1537 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001538 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001539 i386)
1540 MACOSX_DEFAULT_ARCH="i386"
1541 ;;
1542 ppc)
1543 MACOSX_DEFAULT_ARCH="ppc"
1544 ;;
1545 *)
1546 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1547 ;;
1548 esac
1549 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001550 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001551 i386)
1552 MACOSX_DEFAULT_ARCH="x86_64"
1553 ;;
1554 ppc)
1555 MACOSX_DEFAULT_ARCH="ppc64"
1556 ;;
1557 *)
1558 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1559 ;;
1560 esac
1561
1562 #ARCH_RUN_32BIT="true"
1563 fi
1564
1565 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001566 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001567 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001568esac
1569
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001570AC_MSG_CHECKING(for --enable-framework)
1571if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001572then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001573 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001574 # -F. is needed to allow linking to the framework while
1575 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001576 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1577 [Define if you want to produce an OpenStep/Rhapsody framework
1578 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001579 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001580 if test $enable_shared = "yes"
1581 then
1582 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1583 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001584else
1585 AC_MSG_RESULT(no)
1586fi
1587
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001588AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001589case $ac_sys_system/$ac_sys_release in
1590 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001591 AC_DEFINE(WITH_DYLD, 1,
1592 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1593 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1594 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001595 AC_MSG_RESULT(always on for Darwin)
1596 ;;
1597 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001598 AC_MSG_RESULT(no)
1599 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001600esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001601
Guido van Rossumac405f61994-09-12 10:56:06 +00001602# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001603AC_SUBST(SO)
1604AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001605AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001606AC_SUBST(CCSHARED)
1607AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001608# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001609# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001610AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001611if test -z "$SO"
1612then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001613 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001614 hp*|HP*)
1615 case `uname -m` in
1616 ia64) SO=.so;;
1617 *) SO=.sl;;
1618 esac
1619 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001620 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001621 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001622 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001623else
1624 # this might also be a termcap variable, see #610332
1625 echo
1626 echo '====================================================================='
1627 echo '+ +'
1628 echo '+ WARNING: You have set SO in your environment. +'
1629 echo '+ Do you really mean to change the extension for shared libraries? +'
1630 echo '+ Continuing in 10 seconds to let you to ponder. +'
1631 echo '+ +'
1632 echo '====================================================================='
1633 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001634fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001635AC_MSG_RESULT($SO)
Georg Brandlb1441c72009-01-03 22:33:39 +00001636
Thomas Wouters477c8d52006-05-27 19:21:47 +00001637AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001638# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001639# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001640# (Shared libraries in this instance are shared modules to be loaded into
1641# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001642AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001643if test -z "$LDSHARED"
1644then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001645 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001646 AIX*)
1647 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001648 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001649 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001650 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001651 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001652 SunOS/5*)
1653 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001654 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001655 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001656 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001657 hp*|HP*)
1658 if test "$GCC" = "yes"
1659 then LDSHARED='$(CC) -shared'
1660 else LDSHARED='ld -b';
1661 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001662 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001663 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001664 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1665 if test "$enable_framework" ; then
1666 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001667 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1668 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001669 else
1670 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001671 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001672 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001673 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001674 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1675 if test "$enable_framework" ; then
1676 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001677 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1678 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001679 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001680 # No framework, use the Python app as bundle-loader
1681 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001682 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001683 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001684 Darwin/*)
1685 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1686 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001687
Georg Brandlfcaf9102008-07-16 02:17:56 +00001688 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001689 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001690 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001691 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001692 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001693 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1694 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001695 else
1696 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1697 if test "$enable_framework" ; then
1698 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001699 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1700 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001701 else
1702 # No framework, use the Python app as bundle-loader
1703 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1704 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1705 fi
1706 fi
1707 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001708 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001709 BSD/OS*/4*) LDSHARED="gcc -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001710 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001711 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001712 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001713 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001714 else
1715 LDSHARED="ld -Bshareable ${LDFLAGS}"
1716 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001717 OpenBSD*)
1718 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1719 then
1720 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1721 else
1722 case `uname -r` in
1723 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1724 LDSHARED="ld -Bshareable ${LDFLAGS}"
1725 ;;
1726 *)
1727 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1728 ;;
1729 esac
1730 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001731 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001732 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001733 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001734 then LDSHARED='$(CC) -shared'
1735 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001736 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001737 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001738 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001739 *) LDSHARED="ld";;
1740 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001741fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001742AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001743BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001744# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001745# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001746AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001747if test -z "$CCSHARED"
1748then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001749 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001750 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001751 then CCSHARED="-fPIC";
1752 elif test `uname -p` = sparc;
1753 then CCSHARED="-xcode=pic32";
1754 else CCSHARED="-Kpic";
1755 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001756 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001757 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001758 else CCSHARED="+z";
1759 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001760 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001761 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001762 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001763 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001764 if test "$GCC" = "yes"
1765 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001766 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001767 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001768 SCO_SV*)
1769 if test "$GCC" = "yes"
1770 then CCSHARED="-fPIC"
1771 else CCSHARED="-Kpic -belf"
1772 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001773 IRIX*/6*) case $CC in
1774 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001775 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001776 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001777 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001778fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001779AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001780# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001781# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001782AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001783if test -z "$LINKFORSHARED"
1784then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001785 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001786 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001787 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001788 LINKFORSHARED="-Wl,-E -Wl,+s";;
1789# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001790 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001791 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001792 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001793 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00001794 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001795 if test "$enable_framework"
1796 then
Jack Jansenda49e192005-01-07 13:08:22 +00001797 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001798 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001799 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001800 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001801 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001802 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001803 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001804 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1805 then
1806 LINKFORSHARED="-Wl,--export-dynamic"
1807 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001808 SunOS/5*) case $CC in
1809 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001810 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001811 then
1812 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001813 fi;;
1814 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001815 CYGWIN*)
1816 if test $enable_shared = "no"
1817 then
1818 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1819 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001820 QNX*)
1821 # -Wl,-E causes the symbols to be added to the dynamic
1822 # symbol table so that they can be found when a module
1823 # is loaded. -N 2048K causes the stack size to be set
1824 # to 2048 kilobytes so that the stack doesn't overflow
1825 # when running test_compile.py.
1826 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001827 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001828fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001829AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001830
Georg Brandl93de2162008-07-16 02:21:06 +00001831
Neil Schemenauer61c51152001-01-26 16:18:16 +00001832AC_SUBST(CFLAGSFORSHARED)
1833AC_MSG_CHECKING(CFLAGSFORSHARED)
1834if test ! "$LIBRARY" = "$LDLIBRARY"
1835then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001836 case $ac_sys_system in
1837 CYGWIN*)
1838 # Cygwin needs CCSHARED when building extension DLLs
1839 # but not when building the interpreter DLL.
1840 CFLAGSFORSHARED='';;
1841 *)
1842 CFLAGSFORSHARED='$(CCSHARED)'
1843 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001844fi
1845AC_MSG_RESULT($CFLAGSFORSHARED)
1846
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001847# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1848# library (with --enable-shared).
1849# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001850# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1851# if it is not required, since it creates a dependency of the shared library
1852# to LIBS. This, in turn, means that applications linking the shared libpython
1853# don't need to link LIBS explicitly. The default should be only changed
1854# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001855AC_SUBST(SHLIBS)
1856AC_MSG_CHECKING(SHLIBS)
1857case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001858 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001859 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001860esac
1861AC_MSG_RESULT($SHLIBS)
1862
1863
Guido van Rossum627b2d71993-12-24 10:39:16 +00001864# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001865AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1866AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001867
Georg Brandleee31162008-12-07 15:15:22 +00001868# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001869if test "$with_threads" = "yes" -o -z "$with_threads"; then
1870 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1871 # posix4 on Solaris 2.6
1872 # pthread (first!) on Linux
1873fi
1874
Martin v. Löwis19d17342003-06-14 21:03:05 +00001875# check if we need libintl for locale functions
1876AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00001877 [AC_DEFINE(WITH_LIBINTL, 1,
1878 [Define to 1 if libintl is needed for locale functions.])
1879 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001880
1881# checks for system dependent C++ extensions support
1882case "$ac_sys_system" in
1883 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1884 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1885 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001886 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1887 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1888 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001889 AC_MSG_RESULT(yes)],
1890 [AC_MSG_RESULT(no)]);;
1891 *) ;;
1892esac
1893
Guido van Rossum70c7f481998-03-26 18:44:10 +00001894# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001895AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001896AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001897
Guido van Rossumc5a39031996-07-31 17:35:03 +00001898AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001899AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001900 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1901[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001902AC_MSG_RESULT($withval)
1903LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001904],
1905[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001906
Benjamin Petersonb2d90462009-12-31 03:23:10 +00001907# Check for use of the system expat library
1908AC_MSG_CHECKING(for --with-system-expat)
1909AC_ARG_WITH(system_expat,
1910 AC_HELP_STRING(--with-system-expat, build pyexpat module using an installed expat library))
1911
1912AC_MSG_RESULT($with_system_expat)
1913
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001914# Check for use of the system libffi library
1915AC_MSG_CHECKING(for --with-system-ffi)
1916AC_ARG_WITH(system_ffi,
1917 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1918
Benjamin Petersond78735d2010-01-01 16:04:23 +00001919if test "$with_system_ffi" = "yes"; then
1920 AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
1921 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
1922else
1923 LIBFFI_INCLUDEDIR=""
1924fi
1925AC_SUBST(LIBFFI_INCLUDEDIR)
1926
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001927AC_MSG_RESULT($with_system_ffi)
1928
Matthias Klose55708cc2009-04-30 08:06:49 +00001929# Check for --with-dbmliborder
1930AC_MSG_CHECKING(for --with-dbmliborder)
1931AC_ARG_WITH(dbmliborder,
1932 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'.]),
1933[
1934if test x$with_dbmliborder = xyes
1935then
1936AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1937else
1938 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
1939 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
1940 then
1941 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1942 fi
1943 done
1944fi])
1945AC_MSG_RESULT($with_dbmliborder)
1946
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001947# Determine if signalmodule should be used.
1948AC_SUBST(USE_SIGNAL_MODULE)
1949AC_SUBST(SIGNAL_OBJS)
1950AC_MSG_CHECKING(for --with-signal-module)
1951AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001952 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001953
1954if test -z "$with_signal_module"
1955then with_signal_module="yes"
1956fi
1957AC_MSG_RESULT($with_signal_module)
1958
1959if test "${with_signal_module}" = "yes"; then
1960 USE_SIGNAL_MODULE=""
1961 SIGNAL_OBJS=""
1962else
1963 USE_SIGNAL_MODULE="#"
1964 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1965fi
1966
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001967# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001968AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001969USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001970
Guido van Rossum54d93d41997-01-22 20:51:58 +00001971AC_MSG_CHECKING(for --with-dec-threads)
1972AC_SUBST(LDLAST)
1973AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001974 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1975[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001976AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001977LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001978if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001979 with_thread="$withval";
1980fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001981[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001982
Martin v. Löwis11437992002-04-12 09:54:03 +00001983# Templates for things AC_DEFINEd more than once.
1984# For a single AC_DEFINE, no template is needed.
1985AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1986AH_TEMPLATE(_REENTRANT,
1987 [Define to force use of thread-safe errno, h_errno, and other functions])
1988AH_TEMPLATE(WITH_THREAD,
1989 [Define if you want to compile in rudimentary thread support])
1990
Guido van Rossum54d93d41997-01-22 20:51:58 +00001991AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001992dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001993AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001994 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001995
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001996# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001997dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001998AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001999 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
2000 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002001
2002if test -z "$with_threads"
2003then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002004fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002005AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002006
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002007AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002008if test "$with_threads" = "no"
2009then
2010 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002011elif test "$ac_cv_pthread_is_default" = yes
2012then
2013 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002014 # Defining _REENTRANT on system with POSIX threads should not hurt.
2015 AC_DEFINE(_REENTRANT)
2016 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002017 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002018elif test "$ac_cv_kpthread" = "yes"
2019then
2020 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002021 if test "$ac_cv_cxx_thread" = "yes"; then
2022 CXX="$CXX -Kpthread"
2023 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002024 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002025 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002026 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002027elif test "$ac_cv_kthread" = "yes"
2028then
2029 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002030 if test "$ac_cv_cxx_thread" = "yes"; then
2031 CXX="$CXX -Kthread"
2032 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002033 AC_DEFINE(WITH_THREAD)
2034 posix_threads=yes
2035 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002036elif test "$ac_cv_pthread" = "yes"
2037then
2038 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002039 if test "$ac_cv_cxx_thread" = "yes"; then
2040 CXX="$CXX -pthread"
2041 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002042 AC_DEFINE(WITH_THREAD)
2043 posix_threads=yes
2044 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002045else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002046 if test ! -z "$with_threads" -a -d "$with_threads"
2047 then LDFLAGS="$LDFLAGS -L$with_threads"
2048 fi
2049 if test ! -z "$withval" -a -d "$withval"
2050 then LDFLAGS="$LDFLAGS -L$withval"
2051 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002052
2053 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002054 # define _POSIX_THREADS in unistd.h. Some apparently don't
2055 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002056 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2057 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002058 [
2059#include <unistd.h>
2060#ifdef _POSIX_THREADS
2061yes
2062#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002063 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2064 AC_MSG_RESULT($unistd_defines_pthreads)
2065
Martin v. Löwis130fb172001-07-19 11:00:41 +00002066 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002067 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2068 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002069 AC_DEFINE(HURD_C_THREADS, 1,
2070 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002071 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002072 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002073 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2074 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002075 AC_DEFINE(MACH_C_THREADS, 1,
2076 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002077 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002078 # Just looking for pthread_create in libpthread is not enough:
2079 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2080 # So we really have to include pthread.h, and then link.
2081 _libs=$LIBS
2082 LIBS="$LIBS -lpthread"
2083 AC_MSG_CHECKING([for pthread_create in -lpthread])
2084 AC_TRY_LINK([#include <pthread.h>
2085
2086void * start_routine (void *arg) { exit (0); }], [
2087pthread_create (NULL, NULL, start_routine, NULL)], [
2088 AC_MSG_RESULT(yes)
2089 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002090 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002091 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002092 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002093 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002094 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002095 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002096 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002097 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002098 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002099 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002100 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002101 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002102 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002103 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002104 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002105 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002106 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002107 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002108 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002109 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002110 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002111 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002112 USE_THREAD_MODULE="#"])
Antoine Pitroudb6c5672009-10-24 20:35:52 +00002113 ])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002114
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002115 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2116 LIBS="$LIBS -lmpc"
2117 THREADOBJ="Python/thread.o"
2118 USE_THREAD_MODULE=""])
2119
2120 if test "$posix_threads" != "yes"; then
2121 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2122 LIBS="$LIBS -lthread"
2123 THREADOBJ="Python/thread.o"
2124 USE_THREAD_MODULE=""])
2125 fi
2126
2127 if test "$USE_THREAD_MODULE" != "#"
2128 then
2129 # If the above checks didn't disable threads, (at least) OSF1
2130 # needs this '-threads' argument during linking.
2131 case $ac_sys_system in
2132 OSF1) LDLAST=-threads;;
2133 esac
2134 fi
2135fi
2136
2137if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002138 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002139 AC_DEFINE(_POSIX_THREADS, 1,
2140 [Define if you have POSIX threads,
2141 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002142 fi
2143
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002144 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2145 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002146 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2147 Defined for Solaris 2.6 bug in pthread header.)
2148 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002149 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002150 Define if the Posix semaphores do not work on your system)
2151 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002152 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2153 Define if the Posix semaphores do not work on your system)
2154 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002155 esac
2156
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002157 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2158 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2159 [AC_TRY_RUN([#include <pthread.h>
2160 void *foo(void *parm) {
2161 return NULL;
2162 }
2163 main() {
2164 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002165 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002166 if (pthread_attr_init(&attr)) exit(-1);
2167 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002168 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002169 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002170 }],
2171 ac_cv_pthread_system_supported=yes,
2172 ac_cv_pthread_system_supported=no,
2173 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002174 ])
2175 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2176 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002177 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002178 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002179 AC_CHECK_FUNCS(pthread_sigmask,
2180 [case $ac_sys_system in
2181 CYGWIN*)
2182 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2183 [Define if pthread_sigmask() does not work on your system.])
2184 ;;
2185 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002186fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002187
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002188
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002189# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002190AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002191AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002192AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002193[ --enable-ipv6 Enable ipv6 (with ipv4) support
2194 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002195[ case "$enableval" in
2196 no)
2197 AC_MSG_RESULT(no)
2198 ipv6=no
2199 ;;
2200 *) AC_MSG_RESULT(yes)
2201 AC_DEFINE(ENABLE_IPV6)
2202 ipv6=yes
2203 ;;
2204 esac ],
2205
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002206[
2207dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002208 AC_TRY_RUN([ /* AF_INET6 available check */
2209#include <sys/types.h>
2210#include <sys/socket.h>
2211main()
2212{
2213 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2214 exit(1);
2215 else
2216 exit(0);
2217}
2218],
2219 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002220 ipv6=yes,
2221 AC_MSG_RESULT(no)
2222 ipv6=no,
2223 AC_MSG_RESULT(no)
2224 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002225)
2226
2227if test "$ipv6" = "yes"; then
2228 AC_MSG_CHECKING(if RFC2553 API is available)
2229 AC_TRY_COMPILE([#include <sys/types.h>
2230#include <netinet/in.h>],
2231 [struct sockaddr_in6 x;
2232x.sin6_scope_id;],
2233 AC_MSG_RESULT(yes)
2234 ipv6=yes,
2235 AC_MSG_RESULT(no, IPv6 disabled)
2236 ipv6=no)
2237fi
2238
2239if test "$ipv6" = "yes"; then
2240 AC_DEFINE(ENABLE_IPV6)
2241fi
2242])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002243
2244ipv6type=unknown
2245ipv6lib=none
2246ipv6trylibc=no
2247
2248if test "$ipv6" = "yes"; then
2249 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002250 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2251 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002252 case $i in
2253 inria)
2254 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002255 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002256#include <netinet/in.h>
2257#ifdef IPV6_INRIA_VERSION
2258yes
2259#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002260 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002261 ;;
2262 kame)
2263 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002264 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002265#include <netinet/in.h>
2266#ifdef __KAME__
2267yes
2268#endif],
2269 [ipv6type=$i;
2270 ipv6lib=inet6
2271 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002272 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002273 ;;
2274 linux-glibc)
2275 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002276 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002277#include <features.h>
2278#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2279yes
2280#endif],
2281 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002282 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002283 ;;
2284 linux-inet6)
2285 dnl http://www.v6.linux.or.jp/
2286 if test -d /usr/inet6; then
2287 ipv6type=$i
2288 ipv6lib=inet6
2289 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002290 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002291 fi
2292 ;;
2293 solaris)
2294 if test -f /etc/netconfig; then
2295 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2296 ipv6type=$i
2297 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002298 fi
2299 fi
2300 ;;
2301 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002302 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002303#include <sys/param.h>
2304#ifdef _TOSHIBA_INET6
2305yes
2306#endif],
2307 [ipv6type=$i;
2308 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002309 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002310 ;;
2311 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002312 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002313#include </usr/local/v6/include/sys/v6config.h>
2314#ifdef __V6D__
2315yes
2316#endif],
2317 [ipv6type=$i;
2318 ipv6lib=v6;
2319 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002320 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002321 ;;
2322 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002323 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002324#include <sys/param.h>
2325#ifdef _ZETA_MINAMI_INET6
2326yes
2327#endif],
2328 [ipv6type=$i;
2329 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002330 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002331 ;;
2332 esac
2333 if test "$ipv6type" != "unknown"; then
2334 break
2335 fi
2336 done
2337 AC_MSG_RESULT($ipv6type)
2338fi
2339
2340if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2341 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2342 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2343 echo "using lib$ipv6lib"
2344 else
2345 if test $ipv6trylibc = "yes"; then
2346 echo "using libc"
2347 else
2348 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2349 echo "You need to fetch lib$ipv6lib.a from appropriate"
2350 echo 'ipv6 kit and compile beforehand.'
2351 exit 1
2352 fi
2353 fi
2354fi
2355
Georg Brandl93de2162008-07-16 02:21:06 +00002356AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2357AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2358 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2359 AC_MSG_RESULT(yes),
2360 AC_MSG_RESULT(no)
2361)
2362
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002363# Check for --with-doc-strings
2364AC_MSG_CHECKING(for --with-doc-strings)
2365AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002366 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002367
2368if test -z "$with_doc_strings"
2369then with_doc_strings="yes"
2370fi
2371if test "$with_doc_strings" != "no"
2372then
2373 AC_DEFINE(WITH_DOC_STRINGS, 1,
2374 [Define if you want documentation strings in extension modules])
2375fi
2376AC_MSG_RESULT($with_doc_strings)
2377
Neil Schemenauera35c6882001-02-27 04:45:05 +00002378# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002379AC_MSG_CHECKING(for --with-tsc)
2380AC_ARG_WITH(tsc,
2381[ --with(out)-tsc enable/disable timestamp counter profile], [
2382if test "$withval" != no
2383then
2384 AC_DEFINE(WITH_TSC, 1,
2385 [Define to profile with the Pentium timestamp counter])
2386 AC_MSG_RESULT(yes)
2387else AC_MSG_RESULT(no)
2388fi],
2389[AC_MSG_RESULT(no)])
2390
2391# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002392AC_MSG_CHECKING(for --with-pymalloc)
2393AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002394 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002395
2396if test -z "$with_pymalloc"
2397then with_pymalloc="yes"
2398fi
2399if test "$with_pymalloc" != "no"
2400then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002401 AC_DEFINE(WITH_PYMALLOC, 1,
2402 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002403fi
2404AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002405
Benjamin Peterson05159c42009-12-03 03:01:27 +00002406# Check for Valgrind support
2407AC_MSG_CHECKING([for --with-valgrind])
2408AC_ARG_WITH([valgrind],
2409 AC_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
2410 with_valgrind=no)
2411AC_MSG_RESULT([$with_valgrind])
2412if test "$with_valgrind" != no; then
2413 AC_CHECK_HEADER([valgrind/valgrind.h],
2414 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
2415 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
2416 )
2417fi
2418
Barry Warsawef82cd72000-06-30 16:21:01 +00002419# Check for --with-wctype-functions
2420AC_MSG_CHECKING(for --with-wctype-functions)
2421AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002422 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2423[
Barry Warsawef82cd72000-06-30 16:21:01 +00002424if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002425then
2426 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2427 [Define if you want wctype.h functions to be used instead of the
2428 one supplied by Python itself. (see Include/unicodectype.h).])
2429 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002430else AC_MSG_RESULT(no)
2431fi],
2432[AC_MSG_RESULT(no)])
2433
Guido van Rossum68242b51996-05-28 22:53:03 +00002434# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002435AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002436DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002437
Guido van Rossume97ee181999-12-20 21:27:22 +00002438# the dlopen() function means we might want to use dynload_shlib.o. some
2439# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002440AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002441
2442# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2443# loading of modules.
2444AC_SUBST(DYNLOADFILE)
2445AC_MSG_CHECKING(DYNLOADFILE)
2446if test -z "$DYNLOADFILE"
2447then
2448 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002449 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2450 if test "$ac_cv_func_dlopen" = yes
2451 then DYNLOADFILE="dynload_shlib.o"
2452 else DYNLOADFILE="dynload_aix.o"
2453 fi
2454 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002455 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002456 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2457 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002458 *)
2459 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2460 # out any dynamic loading
2461 if test "$ac_cv_func_dlopen" = yes
2462 then DYNLOADFILE="dynload_shlib.o"
2463 else DYNLOADFILE="dynload_stub.o"
2464 fi
2465 ;;
2466 esac
2467fi
2468AC_MSG_RESULT($DYNLOADFILE)
2469if test "$DYNLOADFILE" != "dynload_stub.o"
2470then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002471 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2472 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002473fi
2474
Jack Jansenc49e5b72001-06-19 15:00:23 +00002475# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2476
2477AC_SUBST(MACHDEP_OBJS)
2478AC_MSG_CHECKING(MACHDEP_OBJS)
2479if test -z "$MACHDEP_OBJS"
2480then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002481 MACHDEP_OBJS=$extra_machdep_objs
2482else
2483 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002484fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002485AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002486
Guido van Rossum627b2d71993-12-24 10:39:16 +00002487# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002488AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2489 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002490 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002491 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Antoine Pitroub7572f02009-12-02 20:46:48 +00002492 initgroups kill killpg lchmod lchown lstat mbrtowc mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002493 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002494 putenv readlink realpath \
Benjamin Peterson965ce872009-04-05 21:24:58 +00002495 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2496 setgid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002497 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setuid setvbuf \
2498 sigaction siginterrupt sigrelse snprintf strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002499 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis113a0852009-05-29 17:25:39 +00002500 truncate uname unsetenv utimes waitpid wait3 wait4 \
2501 wcscoll wcsftime wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002502
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002503# For some functions, having a definition is not sufficient, since
2504# we want to take their address.
2505AC_MSG_CHECKING(for chroot)
2506AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2507 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2508 AC_MSG_RESULT(yes),
2509 AC_MSG_RESULT(no)
2510)
2511AC_MSG_CHECKING(for link)
2512AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2513 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2514 AC_MSG_RESULT(yes),
2515 AC_MSG_RESULT(no)
2516)
2517AC_MSG_CHECKING(for symlink)
2518AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2519 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2520 AC_MSG_RESULT(yes),
2521 AC_MSG_RESULT(no)
2522)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002523AC_MSG_CHECKING(for fchdir)
2524AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2525 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2526 AC_MSG_RESULT(yes),
2527 AC_MSG_RESULT(no)
2528)
2529AC_MSG_CHECKING(for fsync)
2530AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002531 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002532 AC_MSG_RESULT(yes),
2533 AC_MSG_RESULT(no)
2534)
2535AC_MSG_CHECKING(for fdatasync)
2536AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2537 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2538 AC_MSG_RESULT(yes),
2539 AC_MSG_RESULT(no)
2540)
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002541AC_MSG_CHECKING(for epoll)
2542AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2543 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2544 AC_MSG_RESULT(yes),
2545 AC_MSG_RESULT(no)
2546)
2547AC_MSG_CHECKING(for kqueue)
2548AC_TRY_COMPILE([
2549#include <sys/types.h>
2550#include <sys/event.h>
2551 ], int x=kqueue(),
2552 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2553 AC_MSG_RESULT(yes),
2554 AC_MSG_RESULT(no)
2555)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002556# On some systems (eg. FreeBSD 5), we would find a definition of the
2557# functions ctermid_r, setgroups in the library, but no prototype
2558# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2559# address to avoid compiler warnings and potential miscompilations
2560# because of the missing prototypes.
2561
2562AC_MSG_CHECKING(for ctermid_r)
2563AC_TRY_COMPILE([
2564#include "confdefs.h"
2565#include <stdio.h>
2566], void* p = ctermid_r,
2567 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2568 AC_MSG_RESULT(yes),
2569 AC_MSG_RESULT(no)
2570)
2571
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002572AC_MSG_CHECKING(for flock)
2573AC_TRY_COMPILE([
2574#include "confdefs.h"
2575#include <sys/file.h>
2576], void* p = flock,
2577 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2578 AC_MSG_RESULT(yes),
2579 AC_MSG_RESULT(no)
2580)
2581
2582AC_MSG_CHECKING(for getpagesize)
2583AC_TRY_COMPILE([
2584#include "confdefs.h"
2585#include <unistd.h>
2586], void* p = getpagesize,
2587 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2588 AC_MSG_RESULT(yes),
2589 AC_MSG_RESULT(no)
2590)
2591
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002592dnl check for true
2593AC_CHECK_PROGS(TRUE, true, /bin/true)
2594
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002595dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2596dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002597AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002598 AC_CHECK_LIB(resolv, inet_aton)
2599)
2600
Christian Heimesd0764e22007-12-04 15:00:33 +00002601# On Tru64, chflags seems to be present, but calling it will
2602# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002603AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002604AC_TRY_RUN([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002605#include <sys/stat.h>
2606#include <unistd.h>
2607int main(int argc, char*argv[])
2608{
2609 if(chflags(argv[0], 0) != 0)
2610 return 1;
2611 return 0;
2612}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002613]], ac_cv_have_chflags=yes,
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002614 ac_cv_have_chflags=no,
2615 ac_cv_have_chflags=cross)
2616])
2617if test "$ac_cv_have_chflags" = cross ; then
2618 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2619fi
2620if test "$ac_cv_have_chflags" = yes ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002621 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2622fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002623
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002624AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002625AC_TRY_RUN([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002626#include <sys/stat.h>
2627#include <unistd.h>
2628int main(int argc, char*argv[])
2629{
2630 if(lchflags(argv[0], 0) != 0)
2631 return 1;
2632 return 0;
2633}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002634]], ac_cv_have_lchflags=yes,
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002635 ac_cv_have_lchflags=no,
2636 ac_cv_have_lchflags=cross)
2637])
2638if test "$ac_cv_have_lchflags" = cross ; then
2639 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2640fi
2641if test "$ac_cv_have_lchflags" = yes ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002642 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2643fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002644
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002645dnl Check if system zlib has *Copy() functions
2646dnl
2647dnl On MacOSX the linker will search for dylibs on the entire linker path
2648dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2649dnl to revert to a more traditional unix behaviour and make it possible to
2650dnl override the system libz with a local static library of libz. Temporarily
2651dnl add that flag to our CFLAGS as well to ensure that we check the version
2652dnl of libz that will be used by setup.py.
2653dnl The -L/usr/local/lib is needed as wel to get the same compilation
2654dnl environment as setup.py (and leaving it out can cause configure to use the
2655dnl wrong version of the library)
2656case $ac_sys_system/$ac_sys_release in
2657Darwin/*)
2658 _CUR_CFLAGS="${CFLAGS}"
2659 _CUR_LDFLAGS="${LDFLAGS}"
2660 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2661 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2662 ;;
2663esac
2664
2665AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2666
2667case $ac_sys_system/$ac_sys_release in
2668Darwin/*)
2669 CFLAGS="${_CUR_CFLAGS}"
2670 LDFLAGS="${_CUR_LDFLAGS}"
2671 ;;
2672esac
2673
Martin v. Löwise9416172003-05-03 10:12:45 +00002674AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002675AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002676#include "confdefs.h"
2677#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002678], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002679 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2680 AC_MSG_RESULT(yes),
2681 AC_MSG_RESULT(no)
2682)
2683
2684AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002685AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002686#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002687#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002688#include <sys/socket.h>
2689#include <netinet/in.h>
2690#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002691], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002692 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2693 AC_MSG_RESULT(yes),
2694 AC_MSG_RESULT(no)
2695)
2696
2697AC_MSG_CHECKING(for inet_pton)
2698AC_TRY_COMPILE([
2699#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002700#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002701#include <sys/socket.h>
2702#include <netinet/in.h>
2703#include <arpa/inet.h>
2704], void* p = inet_pton,
2705 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2706 AC_MSG_RESULT(yes),
2707 AC_MSG_RESULT(no)
2708)
2709
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002710# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002711AC_MSG_CHECKING(for setgroups)
2712AC_TRY_COMPILE([
2713#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002714#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002715#ifdef HAVE_GRP_H
2716#include <grp.h>
2717#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002718],
2719void* p = setgroups,
2720 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2721 AC_MSG_RESULT(yes),
2722 AC_MSG_RESULT(no)
2723)
2724
Fred Drake8cef4cf2000-06-28 16:40:38 +00002725# check for openpty and forkpty
2726
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002727AC_CHECK_FUNCS(openpty,,
2728 AC_CHECK_LIB(util,openpty,
2729 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2730 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2731 )
2732)
2733AC_CHECK_FUNCS(forkpty,,
2734 AC_CHECK_LIB(util,forkpty,
2735 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2736 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2737 )
2738)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002739
Christian Heimesb186d002008-03-18 15:15:01 +00002740# Stuff for expat.
2741AC_CHECK_FUNCS(memmove)
2742
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002743# check for long file support functions
2744AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2745
Christian Heimesb186d002008-03-18 15:15:01 +00002746AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002747AC_CHECK_FUNCS(getpgrp,
2748 AC_TRY_COMPILE([#include <unistd.h>],
2749 [getpgrp(0);],
2750 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2751 [Define if getpgrp() must be called as getpgrp(0).])
2752 )
2753)
Jack Jansen150753c2003-03-29 22:07:47 +00002754AC_CHECK_FUNCS(setpgrp,
2755 AC_TRY_COMPILE([#include <unistd.h>],
2756 [setpgrp(0,0);],
2757 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2758 [Define if setpgrp() must be called as setpgrp(0, 0).])
2759 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002760)
2761AC_CHECK_FUNCS(gettimeofday,
2762 AC_TRY_COMPILE([#include <sys/time.h>],
2763 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2764 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2765 [Define if gettimeofday() does not have second (timezone) argument
2766 This is the case on Motorola V4 (R40V4.2)])
2767 )
2768)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002769
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002770AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002771AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002772#if defined(MAJOR_IN_MKDEV)
2773#include <sys/mkdev.h>
2774#elif defined(MAJOR_IN_SYSMACROS)
2775#include <sys/sysmacros.h>
2776#else
2777#include <sys/types.h>
2778#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002779],[
2780 makedev(major(0),minor(0));
2781],[
2782 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2783 [Define to 1 if you have the device macros.])
2784 AC_MSG_RESULT(yes)
2785],[
2786 AC_MSG_RESULT(no)
2787])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002788
2789# On OSF/1 V5.1, getaddrinfo is available, but a define
2790# for [no]getaddrinfo in netdb.h.
2791AC_MSG_CHECKING(for getaddrinfo)
2792AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002793#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002794#include <sys/socket.h>
2795#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002796#include <stdio.h>
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002797], [getaddrinfo(NULL, NULL, NULL, NULL);],
2798have_getaddrinfo=yes,
2799have_getaddrinfo=no)
2800AC_MSG_RESULT($have_getaddrinfo)
2801if test $have_getaddrinfo = yes
2802then
2803 AC_MSG_CHECKING(getaddrinfo bug)
2804 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
2805 AC_TRY_RUN([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002806#include <sys/types.h>
2807#include <netdb.h>
2808#include <string.h>
2809#include <sys/socket.h>
2810#include <netinet/in.h>
2811
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002812int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002813{
2814 int passive, gaierr, inet4 = 0, inet6 = 0;
2815 struct addrinfo hints, *ai, *aitop;
2816 char straddr[INET6_ADDRSTRLEN], strport[16];
2817
2818 for (passive = 0; passive <= 1; passive++) {
2819 memset(&hints, 0, sizeof(hints));
2820 hints.ai_family = AF_UNSPEC;
2821 hints.ai_flags = passive ? AI_PASSIVE : 0;
2822 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002823 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002824 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2825 (void)gai_strerror(gaierr);
2826 goto bad;
2827 }
2828 for (ai = aitop; ai; ai = ai->ai_next) {
2829 if (ai->ai_addr == NULL ||
2830 ai->ai_addrlen == 0 ||
2831 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2832 straddr, sizeof(straddr), strport, sizeof(strport),
2833 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2834 goto bad;
2835 }
2836 switch (ai->ai_family) {
2837 case AF_INET:
2838 if (strcmp(strport, "54321") != 0) {
2839 goto bad;
2840 }
2841 if (passive) {
2842 if (strcmp(straddr, "0.0.0.0") != 0) {
2843 goto bad;
2844 }
2845 } else {
2846 if (strcmp(straddr, "127.0.0.1") != 0) {
2847 goto bad;
2848 }
2849 }
2850 inet4++;
2851 break;
2852 case AF_INET6:
2853 if (strcmp(strport, "54321") != 0) {
2854 goto bad;
2855 }
2856 if (passive) {
2857 if (strcmp(straddr, "::") != 0) {
2858 goto bad;
2859 }
2860 } else {
2861 if (strcmp(straddr, "::1") != 0) {
2862 goto bad;
2863 }
2864 }
2865 inet6++;
2866 break;
2867 case AF_UNSPEC:
2868 goto bad;
2869 break;
2870 default:
2871 /* another family support? */
2872 break;
2873 }
2874 }
2875 }
2876
2877 if (!(inet4 == 0 || inet4 == 2))
2878 goto bad;
2879 if (!(inet6 == 0 || inet6 == 2))
2880 goto bad;
2881
2882 if (aitop)
2883 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002884 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002885
2886 bad:
2887 if (aitop)
2888 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002889 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002890}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002891]], ac_cv_buggy_getaddrinfo=no,
2892 ac_cv_buggy_getaddrinfo=yes,
2893 ac_cv_buggy_getaddrinfo=yes))
2894fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002895
Mark Dickinson2df5d282009-12-31 21:22:50 +00002896if test $have_getaddrinfo = no -o "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002897then
2898 if test $ipv6 = yes
2899 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002900 echo 'Fatal: You must get working getaddrinfo() function.'
2901 echo ' or you can specify "--disable-ipv6"'.
2902 exit 1
2903 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002904else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002905 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002906fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002907AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002908
Guido van Rossum627b2d71993-12-24 10:39:16 +00002909# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002910AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002911AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002912AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002913AC_CHECK_MEMBERS([struct stat.st_rdev])
2914AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002915AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002916AC_CHECK_MEMBERS([struct stat.st_gen])
2917AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002918AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002919
2920AC_MSG_CHECKING(for time.h that defines altzone)
2921AC_CACHE_VAL(ac_cv_header_time_altzone,
2922[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2923 ac_cv_header_time_altzone=yes,
2924 ac_cv_header_time_altzone=no)])
2925AC_MSG_RESULT($ac_cv_header_time_altzone)
2926if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002927 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002928fi
2929
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002930was_it_defined=no
2931AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002932AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002933#include <sys/types.h>
2934#include <sys/select.h>
2935#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002936], [;], [
2937 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2938 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2939 (which you can't on SCO ODT 3.0).])
2940 was_it_defined=yes
2941])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002942AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002943
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002944AC_MSG_CHECKING(for addrinfo)
2945AC_CACHE_VAL(ac_cv_struct_addrinfo,
2946AC_TRY_COMPILE([
2947# include <netdb.h>],
2948 [struct addrinfo a],
2949 ac_cv_struct_addrinfo=yes,
2950 ac_cv_struct_addrinfo=no))
2951AC_MSG_RESULT($ac_cv_struct_addrinfo)
2952if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002953 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002954fi
2955
2956AC_MSG_CHECKING(for sockaddr_storage)
2957AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2958AC_TRY_COMPILE([
2959# include <sys/types.h>
2960# include <sys/socket.h>],
2961 [struct sockaddr_storage s],
2962 ac_cv_struct_sockaddr_storage=yes,
2963 ac_cv_struct_sockaddr_storage=no))
2964AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2965if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002966 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002967fi
2968
Guido van Rossum627b2d71993-12-24 10:39:16 +00002969# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002970
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002971AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002972AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002973
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002974works=no
2975AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002976AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2977 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2978)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002979AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002980
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002981works=no
2982AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002983AC_TRY_COMPILE([], [signed char c;], works=yes,
2984 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2985)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002986AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002987
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002988have_prototypes=no
2989AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002990AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2991 AC_DEFINE(HAVE_PROTOTYPES, 1,
2992 [Define if your compiler supports function prototype])
2993 have_prototypes=yes
2994])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002995AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002996
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002997works=no
2998AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002999AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003000#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003001int foo(int x, ...) {
3002 va_list va;
3003 va_start(va, x);
3004 va_arg(va, int);
3005 va_arg(va, char *);
3006 va_arg(va, double);
3007 return 0;
3008}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003009], [return foo(10, "", 3.14);], [
3010 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3011 [Define if your compiler supports variable length function prototypes
3012 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3013 works=yes
3014])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003015AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003016
Dave Cole331708b2004-08-09 04:51:41 +00003017# check for socketpair
3018AC_MSG_CHECKING(for socketpair)
3019AC_TRY_COMPILE([
3020#include <sys/types.h>
3021#include <sys/socket.h>
3022], void *x=socketpair,
3023 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3024 AC_MSG_RESULT(yes),
3025 AC_MSG_RESULT(no)
3026)
3027
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003028# check if sockaddr has sa_len member
3029AC_MSG_CHECKING(if sockaddr has sa_len member)
3030AC_TRY_COMPILE([#include <sys/types.h>
3031#include <sys/socket.h>],
3032[struct sockaddr x;
3033x.sa_len = 0;],
3034 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003035 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003036 AC_MSG_RESULT(no))
3037
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003038va_list_is_array=no
3039AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003040AC_TRY_COMPILE([
3041#ifdef HAVE_STDARG_PROTOTYPES
3042#include <stdarg.h>
3043#else
3044#include <varargs.h>
3045#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003046], [va_list list1, list2; list1 = list2;], , [
3047 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3048 va_list_is_array=yes
3049])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003050AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003051
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003052# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003053AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3054 [Define this if you have some version of gethostbyname_r()])
3055
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003056AC_CHECK_FUNC(gethostbyname_r, [
3057 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3058 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3059 OLD_CFLAGS=$CFLAGS
3060 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3061 AC_TRY_COMPILE([
3062# include <netdb.h>
3063 ], [
3064 char *name;
3065 struct hostent *he, *res;
3066 char buffer[2048];
3067 int buflen = 2048;
3068 int h_errnop;
3069
3070 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3071 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003072 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003073 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3074 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003075 AC_MSG_RESULT(yes)
3076 ], [
3077 AC_MSG_RESULT(no)
3078 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3079 AC_TRY_COMPILE([
3080# include <netdb.h>
3081 ], [
3082 char *name;
3083 struct hostent *he;
3084 char buffer[2048];
3085 int buflen = 2048;
3086 int h_errnop;
3087
3088 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3089 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003090 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003091 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3092 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003093 AC_MSG_RESULT(yes)
3094 ], [
3095 AC_MSG_RESULT(no)
3096 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3097 AC_TRY_COMPILE([
3098# include <netdb.h>
3099 ], [
3100 char *name;
3101 struct hostent *he;
3102 struct hostent_data data;
3103
3104 (void) gethostbyname_r(name, he, &data);
3105 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003106 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003107 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3108 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003109 AC_MSG_RESULT(yes)
3110 ], [
3111 AC_MSG_RESULT(no)
3112 ])
3113 ])
3114 ])
3115 CFLAGS=$OLD_CFLAGS
3116], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003117 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003118])
3119AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3120AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3121AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003122AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003123AC_SUBST(HAVE_GETHOSTBYNAME)
3124
Guido van Rossum627b2d71993-12-24 10:39:16 +00003125# checks for system services
3126# (none yet)
3127
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003128# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003129AC_CHECK_FUNC(__fpu_control,
3130 [],
3131 [AC_CHECK_LIB(ieee, __fpu_control)
3132])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003133
Guido van Rossum93274221997-05-09 02:42:00 +00003134# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003135AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003136AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003137 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3138[
Guido van Rossum93274221997-05-09 02:42:00 +00003139if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003140then
3141 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3142 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3143 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003144else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003145fi],
3146[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003147
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003148# check for --with-libm=...
3149AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003150case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003151Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003152*) LIBM=-lm
3153esac
Guido van Rossum93274221997-05-09 02:42:00 +00003154AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003155AC_ARG_WITH(libm,
3156 AC_HELP_STRING(--with-libm=STRING, math library),
3157[
Guido van Rossum93274221997-05-09 02:42:00 +00003158if test "$withval" = no
3159then LIBM=
3160 AC_MSG_RESULT(force LIBM empty)
3161elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003162then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003163 AC_MSG_RESULT(set LIBM="$withval")
3164else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003165fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003166[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003167
3168# check for --with-libc=...
3169AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003170AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003171AC_ARG_WITH(libc,
3172 AC_HELP_STRING(--with-libc=STRING, C library),
3173[
Guido van Rossum93274221997-05-09 02:42:00 +00003174if test "$withval" = no
3175then LIBC=
3176 AC_MSG_RESULT(force LIBC empty)
3177elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003178then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003179 AC_MSG_RESULT(set LIBC="$withval")
3180else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003181fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003182[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003183
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003184# **************************************************
3185# * Check for various properties of floating point *
3186# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003187
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003188AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3189AC_CACHE_VAL(ac_cv_little_endian_double, [
3190AC_TRY_RUN([
3191#include <string.h>
3192int main() {
3193 double x = 9006104071832581.0;
3194 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3195 return 0;
3196 else
3197 return 1;
3198}
3199],
3200ac_cv_little_endian_double=yes,
3201ac_cv_little_endian_double=no,
3202ac_cv_little_endian_double=no)])
3203AC_MSG_RESULT($ac_cv_little_endian_double)
3204if test "$ac_cv_little_endian_double" = yes
3205then
3206 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3207 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3208 with the least significant byte first])
3209fi
3210
3211AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3212AC_CACHE_VAL(ac_cv_big_endian_double, [
3213AC_TRY_RUN([
3214#include <string.h>
3215int main() {
3216 double x = 9006104071832581.0;
3217 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3218 return 0;
3219 else
3220 return 1;
3221}
3222],
3223ac_cv_big_endian_double=yes,
3224ac_cv_big_endian_double=no,
3225ac_cv_big_endian_double=no)])
3226AC_MSG_RESULT($ac_cv_big_endian_double)
3227if test "$ac_cv_big_endian_double" = yes
3228then
3229 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3230 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3231 with the most significant byte first])
3232fi
3233
3234# Some ARM platforms use a mixed-endian representation for doubles.
3235# While Python doesn't currently have full support for these platforms
3236# (see e.g., issue 1762561), we can at least make sure that float <-> string
3237# conversions work.
3238AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3239AC_CACHE_VAL(ac_cv_mixed_endian_double, [
3240AC_TRY_RUN([
3241#include <string.h>
3242int main() {
3243 double x = 9006104071832581.0;
3244 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3245 return 0;
3246 else
3247 return 1;
3248}
3249],
3250ac_cv_mixed_endian_double=yes,
3251ac_cv_mixed_endian_double=no,
3252ac_cv_mixed_endian_double=no)])
3253AC_MSG_RESULT($ac_cv_mixed_endian_double)
3254if test "$ac_cv_mixed_endian_double" = yes
3255then
3256 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3257 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3258 in ARM mixed-endian order (byte order 45670123)])
3259fi
3260
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003261# The short float repr introduced in Python 3.1 requires the
3262# correctly-rounded string <-> double conversion functions from
3263# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3264# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003265# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003266# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003267
3268# This inline assembler syntax may also work for suncc and icc,
3269# so we try it on all platforms.
3270
3271AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
3272AC_TRY_COMPILE([], [
3273 unsigned short cw;
3274 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3275 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
3276],
3277[have_gcc_asm_for_x87=yes], [have_gcc_asm_for_x87=no])
3278AC_MSG_RESULT($have_gcc_asm_for_x87)
3279if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003280then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003281 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3282 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003283fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003284
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003285# Detect whether system arithmetic is subject to x87-style double
3286# rounding issues. The result of this test has little meaning on non
3287# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3288# mode is round-to-nearest and double rounding issues are present, and
3289# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3290AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003291# $BASECFLAGS may affect the result
3292ac_save_cc="$CC"
3293CC="$CC $BASECFLAGS"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003294AC_TRY_RUN([
3295#include <stdlib.h>
3296#include <math.h>
3297int main() {
3298 volatile double x, y, z;
3299 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3300 x = 0.99999999999999989; /* 1-2**-53 */
3301 y = 1./x;
3302 if (y != 1.)
3303 exit(0);
3304 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3305 x = 1e16;
3306 y = 2.99999;
3307 z = x + y;
3308 if (z != 1e16+4.)
3309 exit(0);
3310 /* both tests show evidence of double rounding */
3311 exit(1);
3312}
3313],
3314ac_cv_x87_double_rounding=no,
3315ac_cv_x87_double_rounding=yes,
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003316ac_cv_x87_double_rounding=no)
3317CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003318AC_MSG_RESULT($ac_cv_x87_double_rounding)
3319if test "$ac_cv_x87_double_rounding" = yes
3320then
3321 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3322 [Define if arithmetic is subject to x87-style double rounding issue])
3323fi
3324
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003325# ************************************
3326# * Check for mathematical functions *
3327# ************************************
3328
3329LIBS_SAVE=$LIBS
3330LIBS="$LIBS $LIBM"
3331
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003332# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3333# -0. on some architectures.
3334AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3335AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3336AC_TRY_RUN([
3337#include <math.h>
3338#include <stdlib.h>
3339int main() {
3340 /* return 0 if either negative zeros don't exist
3341 on this platform or if negative zeros exist
3342 and tanh(-0.) == -0. */
3343 if (atan2(0., -1.) == atan2(-0., -1.) ||
3344 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3345 else exit(1);
3346}
3347],
3348ac_cv_tanh_preserves_zero_sign=yes,
3349ac_cv_tanh_preserves_zero_sign=no,
3350ac_cv_tanh_preserves_zero_sign=no)])
3351AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3352if test "$ac_cv_tanh_preserves_zero_sign" = yes
3353then
3354 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3355 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3356fi
3357
Mark Dickinson9c113362009-09-05 10:36:23 +00003358AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
3359AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003360AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes99170a52007-12-19 02:07:34 +00003361
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003362LIBS=$LIBS_SAVE
3363
Mark Dickinsona614f042009-11-28 12:48:43 +00003364# For multiprocessing module, check that sem_open
3365# actually works. For FreeBSD versions <= 7.2,
3366# the kernel module that provides POSIX semaphores
3367# isn't loaded by default, so an attempt to call
3368# sem_open results in a 'Signal 12' error.
3369AC_MSG_CHECKING(whether POSIX semaphores are enabled)
3370AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
3371AC_TRY_RUN([
3372#include <unistd.h>
3373#include <fcntl.h>
3374#include <stdio.h>
3375#include <semaphore.h>
3376#include <sys/stat.h>
3377
3378int main(void) {
3379 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3380 if (a == SEM_FAILED) {
3381 perror("sem_open");
3382 return 1;
3383 }
3384 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003385 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00003386 return 0;
3387}
3388], ac_cv_posix_semaphores_enabled=yes,
3389 ac_cv_posix_semaphores_enabled=no,
3390 ac_cv_posix_semaphores_enabled=yes)
3391)
3392AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
3393if test $ac_cv_posix_semaphores_enabled = no
3394then
3395 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
3396 [Define if POSIX semaphores aren't enabled on your system])
3397fi
3398
Mark Dickinson10683072009-04-18 21:18:19 +00003399# Multiprocessing check for broken sem_getvalue
3400AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003401AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Mark Dickinson10683072009-04-18 21:18:19 +00003402AC_TRY_RUN([
3403#include <unistd.h>
3404#include <fcntl.h>
3405#include <stdio.h>
3406#include <semaphore.h>
3407#include <sys/stat.h>
3408
3409int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00003410 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00003411 int count;
3412 int res;
3413 if(a==SEM_FAILED){
3414 perror("sem_open");
3415 return 1;
3416
3417 }
3418 res = sem_getvalue(a, &count);
3419 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003420 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00003421 return res==-1 ? 1 : 0;
3422}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003423], ac_cv_broken_sem_getvalue=no,
3424 ac_cv_broken_sem_getvalue=yes,
3425 ac_cv_broken_sem_getvalue=yes)
Mark Dickinson10683072009-04-18 21:18:19 +00003426)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003427AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3428if test $ac_cv_broken_sem_getvalue = yes
3429then
3430 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3431 [define to 1 if your sem_getvalue is broken.])
3432fi
Mark Dickinson10683072009-04-18 21:18:19 +00003433
Mark Dickinsonbd792642009-03-18 20:06:12 +00003434# determine what size digit to use for Python's longs
3435AC_MSG_CHECKING([digit size for Python's longs])
3436AC_ARG_ENABLE(big-digits,
3437AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3438[case $enable_big_digits in
3439yes)
3440 enable_big_digits=30 ;;
3441no)
3442 enable_big_digits=15 ;;
3443[15|30])
3444 ;;
3445*)
3446 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3447esac
3448AC_MSG_RESULT($enable_big_digits)
3449AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3450],
3451[AC_MSG_RESULT(no value specified)])
3452
Guido van Rossumef2255b2000-03-10 22:30:29 +00003453# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003454AC_CHECK_HEADER(wchar.h, [
3455 AC_DEFINE(HAVE_WCHAR_H, 1,
3456 [Define if the compiler provides a wchar.h header file.])
3457 wchar_h="yes"
3458],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003459wchar_h="no"
3460)
3461
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003462# determine wchar_t size
3463if test "$wchar_h" = yes
3464then
Guido van Rossum67b26592001-10-20 14:21:45 +00003465 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003466fi
3467
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003468AC_MSG_CHECKING(for UCS-4 tcl)
3469have_ucs4_tcl=no
3470AC_TRY_COMPILE([
3471#include <tcl.h>
3472#if TCL_UTF_MAX != 6
3473# error "NOT UCS4_TCL"
3474#endif], [], [
3475 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3476 have_ucs4_tcl=yes
3477])
3478AC_MSG_RESULT($have_ucs4_tcl)
3479
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003480# check whether wchar_t is signed or not
3481if test "$wchar_h" = yes
3482then
3483 # check whether wchar_t is signed or not
3484 AC_MSG_CHECKING(whether wchar_t is signed)
3485 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3486 AC_TRY_RUN([
3487 #include <wchar.h>
3488 int main()
3489 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003490 /* Success: exit code 0 */
3491 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003492 }
3493 ],
3494 ac_cv_wchar_t_signed=yes,
3495 ac_cv_wchar_t_signed=no,
3496 ac_cv_wchar_t_signed=yes)])
3497 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3498fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003499
Georg Brandl52d168a2008-01-07 18:10:24 +00003500AC_MSG_CHECKING(what type to use for str)
3501AC_ARG_WITH(wide-unicode,
3502 AC_HELP_STRING(--with-wide-unicode, Use 4-byte Unicode characters (default is 2 bytes)),
3503[
3504if test "$withval" != no
3505then unicode_size="4"
3506else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003507fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003508],
3509[
3510case "$have_ucs4_tcl" in
3511 yes) unicode_size="4" ;;
3512 *) unicode_size="2" ;;
3513esac
3514])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003515
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003516AH_TEMPLATE(Py_UNICODE_SIZE,
3517 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003518case "$unicode_size" in
3519 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3520 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003521esac
3522
Martin v. Löwis11437992002-04-12 09:54:03 +00003523AH_TEMPLATE(PY_UNICODE_TYPE,
3524 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003525
Georg Brandl52d168a2008-01-07 18:10:24 +00003526# wchar_t is only usable if it maps to an unsigned type
3527if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003528 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003529then
3530 PY_UNICODE_TYPE="wchar_t"
3531 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3532 [Define if you have a useable wchar_t type defined in wchar.h; useable
3533 means wchar_t must be an unsigned type with at least 16 bits. (see
3534 Include/unicodeobject.h).])
3535 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3536elif test "$ac_cv_sizeof_short" = "$unicode_size"
3537then
3538 PY_UNICODE_TYPE="unsigned short"
3539 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3540elif test "$ac_cv_sizeof_long" = "$unicode_size"
3541then
3542 PY_UNICODE_TYPE="unsigned long"
3543 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3544else
3545 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003546fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003547AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003548
3549# check for endianness
3550AC_C_BIGENDIAN
3551
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003552# Check whether right shifting a negative integer extends the sign bit
3553# or fills with zeros (like the Cray J90, according to Tim Peters).
3554AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003555AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003556AC_TRY_RUN([
3557int main()
3558{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003559 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003560}
Guido van Rossum3065c942001-09-17 04:03:14 +00003561],
3562ac_cv_rshift_extends_sign=yes,
3563ac_cv_rshift_extends_sign=no,
3564ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003565AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3566if test "$ac_cv_rshift_extends_sign" = no
3567then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003568 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3569 [Define if i>>j for signed int i does not extend the sign bit
3570 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003571fi
3572
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003573# check for getc_unlocked and related locking functions
3574AC_MSG_CHECKING(for getc_unlocked() and friends)
3575AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3576AC_TRY_LINK([#include <stdio.h>],[
3577 FILE *f = fopen("/dev/null", "r");
3578 flockfile(f);
3579 getc_unlocked(f);
3580 funlockfile(f);
3581], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3582AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3583if test "$ac_cv_have_getc_unlocked" = yes
3584then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003585 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3586 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003587fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003588
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003589# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003590# save the value of LIBS so we don't actually link Python with readline
3591LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003592
3593# On some systems we need to link readline to a termcap compatible
3594# library. NOTE: Keep the precedence of listed libraries synchronised
3595# with setup.py.
3596py_cv_lib_readline=no
3597AC_MSG_CHECKING([how to link readline libs])
3598for py_libtermcap in "" ncursesw ncurses curses termcap; do
3599 if test -z "$py_libtermcap"; then
3600 READLINE_LIBS="-lreadline"
3601 else
3602 READLINE_LIBS="-lreadline -l$py_libtermcap"
3603 fi
3604 LIBS="$READLINE_LIBS $LIBS_no_readline"
3605 AC_LINK_IFELSE(
3606 [AC_LANG_CALL([],[readline])],
3607 [py_cv_lib_readline=yes])
3608 if test $py_cv_lib_readline = yes; then
3609 break
3610 fi
3611done
3612# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3613#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003614if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003615 AC_MSG_RESULT([none])
3616else
3617 AC_MSG_RESULT([$READLINE_LIBS])
3618 AC_DEFINE(HAVE_LIBREADLINE, 1,
3619 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003620fi
3621
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003622# check for readline 2.1
3623AC_CHECK_LIB(readline, rl_callback_handler_install,
3624 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003625 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003626
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003627# check for readline 2.2
3628AC_TRY_CPP([#include <readline/readline.h>],
3629have_readline=yes, have_readline=no)
3630if test $have_readline = yes
3631then
3632 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3633 [readline/readline.h],
3634 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3635 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00003636 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3637 [readline/readline.h],
3638 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3639 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003640fi
3641
Martin v. Löwis0daad592001-09-30 21:09:59 +00003642# check for readline 4.0
3643AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003644 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003645 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003646
Thomas Wouters89d996e2007-09-08 17:39:28 +00003647# also in 4.0
3648AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3649 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003650 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003651
Guido van Rossum353ae582001-07-10 16:45:32 +00003652# check for readline 4.2
3653AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003654 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003655 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003656
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003657# also in readline 4.2
3658AC_TRY_CPP([#include <readline/readline.h>],
3659have_readline=yes, have_readline=no)
3660if test $have_readline = yes
3661then
3662 AC_EGREP_HEADER([extern int rl_catch_signals;],
3663 [readline/readline.h],
3664 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3665 [Define if you can turn off readline's signal handling.]), )
3666fi
3667
Martin v. Löwis82bca632006-02-10 20:49:30 +00003668# End of readline checks: restore LIBS
3669LIBS=$LIBS_no_readline
3670
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003671AC_MSG_CHECKING(for broken nice())
3672AC_CACHE_VAL(ac_cv_broken_nice, [
3673AC_TRY_RUN([
3674int main()
3675{
3676 int val1 = nice(1);
3677 if (val1 != -1 && val1 == nice(2))
3678 exit(0);
3679 exit(1);
3680}
Guido van Rossum3065c942001-09-17 04:03:14 +00003681],
3682ac_cv_broken_nice=yes,
3683ac_cv_broken_nice=no,
3684ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003685AC_MSG_RESULT($ac_cv_broken_nice)
3686if test "$ac_cv_broken_nice" = yes
3687then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003688 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3689 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003690fi
3691
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003692AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003693AC_CACHE_VAL(ac_cv_broken_poll,
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003694AC_TRY_RUN([
3695#include <poll.h>
3696
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003697int main()
3698{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003699 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003700 int poll_test;
3701
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003702 close (42);
3703
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003704 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003705 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003706 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003707 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003708 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003709 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003710 return 1;
3711}
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003712],
3713ac_cv_broken_poll=yes,
3714ac_cv_broken_poll=no,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003715ac_cv_broken_poll=no))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003716AC_MSG_RESULT($ac_cv_broken_poll)
3717if test "$ac_cv_broken_poll" = yes
3718then
3719 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3720 [Define if poll() sets errno on invalid file descriptors.])
3721fi
3722
Brett Cannon43802422005-02-10 20:48:03 +00003723# Before we can test tzset, we need to check if struct tm has a tm_zone
3724# (which is not required by ISO C or UNIX spec) and/or if we support
3725# tzname[]
3726AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003727
Brett Cannon43802422005-02-10 20:48:03 +00003728# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003729AC_MSG_CHECKING(for working tzset())
3730AC_CACHE_VAL(ac_cv_working_tzset, [
3731AC_TRY_RUN([
3732#include <stdlib.h>
3733#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003734#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003735
3736#if HAVE_TZNAME
3737extern char *tzname[];
3738#endif
3739
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003740int main()
3741{
Brett Cannon18367812003-09-19 00:59:16 +00003742 /* Note that we need to ensure that not only does tzset(3)
3743 do 'something' with localtime, but it works as documented
3744 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003745 This includes making sure that tzname is set properly if
3746 tm->tm_zone does not exist since it is the alternative way
3747 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003748
3749 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003750 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003751 */
3752
Brett Cannon43802422005-02-10 20:48:03 +00003753 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003754 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3755
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003756 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003757 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003758 if (localtime(&groundhogday)->tm_hour != 0)
3759 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003760#if HAVE_TZNAME
3761 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3762 if (strcmp(tzname[0], "UTC") ||
3763 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3764 exit(1);
3765#endif
Brett Cannon18367812003-09-19 00:59:16 +00003766
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003767 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003768 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003769 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003770 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003771#if HAVE_TZNAME
3772 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3773 exit(1);
3774#endif
Brett Cannon18367812003-09-19 00:59:16 +00003775
3776 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3777 tzset();
3778 if (localtime(&groundhogday)->tm_hour != 11)
3779 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003780#if HAVE_TZNAME
3781 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3782 exit(1);
3783#endif
3784
3785#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003786 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3787 exit(1);
3788 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3789 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003790#endif
Brett Cannon18367812003-09-19 00:59:16 +00003791
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003792 exit(0);
3793}
3794],
3795ac_cv_working_tzset=yes,
3796ac_cv_working_tzset=no,
3797ac_cv_working_tzset=no)])
3798AC_MSG_RESULT($ac_cv_working_tzset)
3799if test "$ac_cv_working_tzset" = yes
3800then
3801 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3802 [Define if tzset() actually switches the local timezone in a meaningful way.])
3803fi
3804
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003805# Look for subsecond timestamps in struct stat
3806AC_MSG_CHECKING(for tv_nsec in struct stat)
3807AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3808AC_TRY_COMPILE([#include <sys/stat.h>], [
3809struct stat st;
3810st.st_mtim.tv_nsec = 1;
3811],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003812ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003813ac_cv_stat_tv_nsec=no,
3814ac_cv_stat_tv_nsec=no))
3815AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3816if test "$ac_cv_stat_tv_nsec" = yes
3817then
3818 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3819 [Define if you have struct stat.st_mtim.tv_nsec])
3820fi
3821
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003822# Look for BSD style subsecond timestamps in struct stat
3823AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3824AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3825AC_TRY_COMPILE([#include <sys/stat.h>], [
3826struct stat st;
3827st.st_mtimespec.tv_nsec = 1;
3828],
3829ac_cv_stat_tv_nsec2=yes,
3830ac_cv_stat_tv_nsec2=no,
3831ac_cv_stat_tv_nsec2=no))
3832AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3833if test "$ac_cv_stat_tv_nsec2" = yes
3834then
3835 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3836 [Define if you have struct stat.st_mtimensec])
3837fi
3838
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003839# On HP/UX 11.0, mvwdelch is a block with a return statement
3840AC_MSG_CHECKING(whether mvwdelch is an expression)
3841AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3842AC_TRY_COMPILE([#include <curses.h>], [
3843 int rtn;
3844 rtn = mvwdelch(0,0,0);
3845], ac_cv_mvwdelch_is_expression=yes,
3846 ac_cv_mvwdelch_is_expression=no,
3847 ac_cv_mvwdelch_is_expression=yes))
3848AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3849
3850if test "$ac_cv_mvwdelch_is_expression" = yes
3851then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003852 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3853 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003854fi
3855
3856AC_MSG_CHECKING(whether WINDOW has _flags)
3857AC_CACHE_VAL(ac_cv_window_has_flags,
3858AC_TRY_COMPILE([#include <curses.h>], [
3859 WINDOW *w;
3860 w->_flags = 0;
3861], ac_cv_window_has_flags=yes,
3862 ac_cv_window_has_flags=no,
3863 ac_cv_window_has_flags=no))
3864AC_MSG_RESULT($ac_cv_window_has_flags)
3865
3866
3867if test "$ac_cv_window_has_flags" = yes
3868then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003869 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3870 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003871fi
3872
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003873AC_MSG_CHECKING(for is_term_resized)
3874AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3875 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3876 AC_MSG_RESULT(yes),
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003877 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003878)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003879
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003880AC_MSG_CHECKING(for resize_term)
3881AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3882 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3883 AC_MSG_RESULT(yes),
Neal Norwitz865400f2003-03-21 01:42:58 +00003884 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003885)
3886
3887AC_MSG_CHECKING(for resizeterm)
3888AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3889 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3890 AC_MSG_RESULT(yes),
3891 AC_MSG_RESULT(no)
3892)
3893
Thomas Wouters89f507f2006-12-13 04:49:30 +00003894AC_MSG_CHECKING(for /dev/ptmx)
3895
3896if test -r /dev/ptmx
3897then
3898 AC_MSG_RESULT(yes)
3899 AC_DEFINE(HAVE_DEV_PTMX, 1,
3900 [Define if we have /dev/ptmx.])
3901else
3902 AC_MSG_RESULT(no)
3903fi
3904
3905AC_MSG_CHECKING(for /dev/ptc)
3906
3907if test -r /dev/ptc
3908then
3909 AC_MSG_RESULT(yes)
3910 AC_DEFINE(HAVE_DEV_PTC, 1,
3911 [Define if we have /dev/ptc.])
3912else
3913 AC_MSG_RESULT(no)
3914fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003915
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003916if test "$have_long_long" = yes
3917then
3918 AC_MSG_CHECKING(for %lld and %llu printf() format support)
3919 AC_CACHE_VAL(ac_cv_have_long_long_format,
3920 AC_TRY_RUN([[
3921 #include <stdio.h>
3922 #include <stddef.h>
3923 #include <string.h>
3924
3925 #ifdef HAVE_SYS_TYPES_H
3926 #include <sys/types.h>
3927 #endif
3928
3929 int main()
3930 {
3931 char buffer[256];
3932
3933 if (sprintf(buffer, "%lld", (long long)123) < 0)
3934 return 1;
3935 if (strcmp(buffer, "123"))
3936 return 1;
3937
3938 if (sprintf(buffer, "%lld", (long long)-123) < 0)
3939 return 1;
3940 if (strcmp(buffer, "-123"))
3941 return 1;
3942
3943 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
3944 return 1;
3945 if (strcmp(buffer, "123"))
3946 return 1;
3947
3948 return 0;
3949 }
3950 ]], ac_cv_have_long_long_format=yes,
3951 ac_cv_have_long_long_format=no,
3952 ac_cv_have_long_long_format=no)
3953 )
3954 AC_MSG_RESULT($ac_cv_have_long_long_format)
3955fi
3956
Mark Dickinson89d7d412009-12-31 20:50:59 +00003957if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003958then
3959 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
3960 [Define to printf format modifier for long long type])
3961fi
3962
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00003963if test $ac_sys_system = Darwin
3964then
3965 LIBS="$LIBS -framework CoreFoundation"
3966fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003967
Benjamin Peterson8f326b22009-12-13 02:10:36 +00003968AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
3969AC_TRY_RUN([
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00003970#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00003971#include <stddef.h>
3972#include <string.h>
3973
Christian Heimes2c181612007-12-17 20:04:13 +00003974#ifdef HAVE_SYS_TYPES_H
3975#include <sys/types.h>
3976#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00003977
3978#ifdef HAVE_SSIZE_T
3979typedef ssize_t Py_ssize_t;
3980#elif SIZEOF_VOID_P == SIZEOF_LONG
3981typedef long Py_ssize_t;
3982#else
3983typedef int Py_ssize_t;
3984#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00003985
Christian Heimes2c181612007-12-17 20:04:13 +00003986int main()
3987{
3988 char buffer[256];
3989
Thomas Wouters477c8d52006-05-27 19:21:47 +00003990 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3991 return 1;
3992
Thomas Wouters89f507f2006-12-13 04:49:30 +00003993 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00003994 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00003995
3996 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3997 return 1;
3998
3999 if (strcmp(buffer, "-123"))
4000 return 1;
4001
Thomas Wouters477c8d52006-05-27 19:21:47 +00004002 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004003}
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004004], ac_cv_have_size_t_format=yes,
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00004005 ac_cv_have_size_t_format=no,
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004006 [ac_cv_have_size_t_format="cross -- assuming yes"]
4007)])
4008if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004009 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
4010 [Define to printf format modifier for Py_ssize_t])
4011fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00004012
Martin v. Löwis01c04012002-11-11 14:58:44 +00004013AC_CHECK_TYPE(socklen_t,,
4014 AC_DEFINE(socklen_t,int,
4015 Define to `int' if <sys/socket.h> does not define.),[
4016#ifdef HAVE_SYS_TYPES_H
4017#include <sys/types.h>
4018#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00004019#ifdef HAVE_SYS_SOCKET_H
4020#include <sys/socket.h>
4021#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00004022])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004023
Antoine Pitroufff95302008-09-03 18:58:51 +00004024AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004025AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Antoine Pitroufff95302008-09-03 18:58:51 +00004026AC_TRY_RUN([
4027#include<stdlib.h>
4028int main() {
4029 size_t len = -1;
4030 const char *str = "text";
4031 len = mbstowcs(NULL, str, 0);
4032 return (len != 4);
4033}
4034],
4035ac_cv_broken_mbstowcs=no,
4036ac_cv_broken_mbstowcs=yes,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004037ac_cv_broken_mbstowcs=no))
Antoine Pitroufff95302008-09-03 18:58:51 +00004038AC_MSG_RESULT($ac_cv_broken_mbstowcs)
4039if test "$ac_cv_broken_mbstowcs" = yes
4040then
4041 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
4042 [Define if mbstowcs(NULL, "text", 0) does not return the number of
4043 wide chars that would be converted.])
4044fi
4045
Antoine Pitroub52ec782009-01-25 16:34:23 +00004046# Check for --with-computed-gotos
4047AC_MSG_CHECKING(for --with-computed-gotos)
4048AC_ARG_WITH(computed-gotos,
4049 AC_HELP_STRING(--with-computed-gotos,
4050 Use computed gotos / threaded dispatch in evaluation loop (not available on all compilers)),
4051[
4052if test "$withval" != no
4053then
4054 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
4055 [Define if you want to use computed gotos in ceval.c.])
4056 AC_MSG_RESULT(yes)
4057else AC_MSG_RESULT(no)
4058fi],
4059[AC_MSG_RESULT(no)])
4060
4061
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004062AC_SUBST(THREADHEADERS)
4063
4064for h in `(cd $srcdir;echo Python/thread_*.h)`
4065do
4066 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4067done
4068
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004069AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00004070SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004071AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004072for dir in $SRCDIRS; do
4073 if test ! -d $dir; then
4074 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004075 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004076done
4077AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004078
Guido van Rossum627b2d71993-12-24 10:39:16 +00004079# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00004080AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00004081AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004082
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004083echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004084if test ! -f Modules/Setup
4085then
4086 cp $srcdir/Modules/Setup.dist Modules/Setup
4087fi
4088
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004089echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004090if test ! -f Modules/Setup.local
4091then
4092 echo "# Edit this file for local setup changes" >Modules/Setup.local
4093fi
4094
4095echo "creating Makefile"
4096$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4097 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004098 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00004099mv config.c Modules