blob: 6a69413a6ff8e3a6b060d571f2f1dc147e07ac8f [file] [log] [blame]
Benjamin Petersonfbeb6b62008-05-26 16:04:49 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Benjamin Peterson4469d0c2008-11-30 22:46:23 +00004dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.61).
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
6# Set VERSION so we only need to edit in one place (i.e., here)
Benjamin Peterson46ea4f72009-06-27 21:40:27 +00007m4_define(PYTHON_VERSION, 3.2)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008
Alexandre Vassalottib89910f2009-07-18 00:33:23 +00009dnl Some m4 magic to ensure that the configure script is generated
10dnl by the correct autoconf version.
11m4_define([version_required],
12[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), [$1]), 0,
13 [],
14 [m4_fatal([Autoconf version $1 is required for Python], 63)])
15])
16version_required(2.61)
17
Guido van Rossum76be6ed1995-01-02 18:33:54 +000018AC_REVISION($Revision$)
Georg Brandle2e15612009-05-20 18:25:10 +000019AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
Martin v. Löwis88afe662002-10-26 13:47:44 +000020AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000021AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000022
Benjamin Petersond23f8222009-04-05 19:13:16 +000023dnl Ensure that if prefix is specified, it does not end in a slash. If
24dnl it does, we get path names containing '//' which is both ugly and
25dnl can cause trouble.
26
27dnl Last slash shouldn't be stripped if prefix=/
28if test "$prefix" != "/"; then
29 prefix=`echo "$prefix" | sed -e 's/\/$//g'`
30fi
31
Martin v. Löwis8316feb2003-06-14 07:48:07 +000032dnl This is for stuff that absolutely must end up in pyconfig.h.
33dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000034AH_TOP([
35#ifndef Py_PYCONFIG_H
36#define Py_PYCONFIG_H
37])
Martin v. Löwis11437992002-04-12 09:54:03 +000038AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000039/* Define the macros needed if on a UnixWare 7.x system. */
40#if defined(__USLC__) && defined(__SCO_VERSION__)
41#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
42#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000043
44#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000045])
46
Martin v. Löwis8316feb2003-06-14 07:48:07 +000047# We don't use PACKAGE_ variables, and they cause conflicts
48# with other autoconf-based packages that include Python.h
49grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
50rm confdefs.h
51mv confdefs.h.new confdefs.h
52
Guido van Rossum642b6781997-07-19 19:35:41 +000053AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000054VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000055
Martin v. Löwis1142de32002-03-29 16:28:31 +000056AC_SUBST(SOVERSION)
57SOVERSION=1.0
58
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000059# The later defininition of _XOPEN_SOURCE disables certain features
60# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
61AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
62
Martin v. Löwisbcd93962003-05-03 10:32:18 +000063# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
64# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
65# them.
66AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
67
Andrew MacIntyreabccf412003-07-02 13:53:25 +000068# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
69# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
70# them.
71AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
72
Martin v. Löwisd6320502004-08-12 13:45:08 +000073# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
74# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
75AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
76
Georg Brandlfcaf9102008-07-16 02:17:56 +000077# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
78# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
79# them.
80AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
81
82
Martin v. Löwise981a4e2002-11-11 13:26:51 +000083define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000084
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000085# Arguments passed to configure.
86AC_SUBST(CONFIG_ARGS)
87CONFIG_ARGS="$ac_configure_args"
88
Ronald Oussoren8af24c12010-02-07 12:03:42 +000089AC_MSG_CHECKING([for --enable-universalsdk])
Thomas Wouters477c8d52006-05-27 19:21:47 +000090AC_ARG_ENABLE(universalsdk,
Christian Heimes68f5fbe2008-02-14 08:27:37 +000091 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Thomas Wouters477c8d52006-05-27 19:21:47 +000092[
93 case $enableval in
94 yes)
95 enableval=/Developer/SDKs/MacOSX10.4u.sdk
Ronald Oussoren8af24c12010-02-07 12:03:42 +000096 if test ! -d "${enableval}"
97 then
98 enableval=/
99 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000100 ;;
101 esac
102 case $enableval in
103 no)
104 UNIVERSALSDK=
105 enable_universalsdk=
106 ;;
107 *)
108 UNIVERSALSDK=$enableval
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000109 if test ! -d "${UNIVERSALSDK}"
110 then
111 AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
112 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000113 ;;
114 esac
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000115
Thomas Wouters477c8d52006-05-27 19:21:47 +0000116],[
117 UNIVERSALSDK=
118 enable_universalsdk=
119])
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000120if test -n "${UNIVERSALSDK}"
121then
122 AC_MSG_RESULT(${UNIVERSALSDK})
123else
124 AC_MSG_RESULT(no)
125fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000126AC_SUBST(UNIVERSALSDK)
127
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000128AC_SUBST(ARCH_RUN_32BIT)
129
Georg Brandlfcaf9102008-07-16 02:17:56 +0000130UNIVERSAL_ARCHS="32-bit"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000131AC_SUBST(LIPO_32BIT_FLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000132AC_MSG_CHECKING(for --with-universal-archs)
133AC_ARG_WITH(universal-archs,
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000134 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")),
Georg Brandlfcaf9102008-07-16 02:17:56 +0000135[
136 AC_MSG_RESULT($withval)
137 UNIVERSAL_ARCHS="$withval"
138],
139[
140 AC_MSG_RESULT(32-bit)
141])
142
143
144
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000145AC_ARG_WITH(framework-name,
146 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
147 specify an alternate name of the framework built with --enable-framework),
148[
149 PYTHONFRAMEWORK=${withval}
150 PYTHONFRAMEWORKDIR=${withval}.framework
151 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
152 ],[
153 PYTHONFRAMEWORK=Python
154 PYTHONFRAMEWORKDIR=Python.framework
155 PYTHONFRAMEWORKIDENTIFIER=org.python.python
156])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000157dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000158AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000159 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
160[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000161 case $enableval in
162 yes)
163 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000164 esac
165 case $enableval in
166 no)
167 PYTHONFRAMEWORK=
168 PYTHONFRAMEWORKDIR=no-framework
169 PYTHONFRAMEWORKPREFIX=
170 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000171 FRAMEWORKINSTALLFIRST=
172 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000173 FRAMEWORKALTINSTALLFIRST=
174 FRAMEWORKALTINSTALLLAST=
175 if test "x${prefix}" = "xNONE"; then
176 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
177 else
178 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
179 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000180 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000181 ;;
182 *)
183 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000184 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000185 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussorenf6ccbf62009-06-02 10:55:56 +0000186 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000187 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
188 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000189
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000190 if test "x${prefix}" = "xNONE" ; then
191 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
192 else
193 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
194 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000195 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000196
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000197 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000198 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000199 AC_CONFIG_FILES(Mac/Makefile)
200 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000201 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
202 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000203 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000204 ],[
205 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000206 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000207 PYTHONFRAMEWORKPREFIX=
208 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000209 FRAMEWORKINSTALLFIRST=
210 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000211 FRAMEWORKALTINSTALLFIRST=
212 FRAMEWORKALTINSTALLLAST=
213 if test "x${prefix}" = "xNONE" ; then
214 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
215 else
216 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
217 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000218 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000219
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000220])
221AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000222AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000223AC_SUBST(PYTHONFRAMEWORKDIR)
224AC_SUBST(PYTHONFRAMEWORKPREFIX)
225AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000226AC_SUBST(FRAMEWORKINSTALLFIRST)
227AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000228AC_SUBST(FRAMEWORKALTINSTALLFIRST)
229AC_SUBST(FRAMEWORKALTINSTALLLAST)
230AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000231
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000232##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000233## AC_HELP_STRING(--with-dyld,
234## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000235##
Guido van Rossumb418f891996-07-30 18:06:02 +0000236# Set name for machine-dependent library files
237AC_SUBST(MACHDEP)
238AC_MSG_CHECKING(MACHDEP)
239if test -z "$MACHDEP"
240then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000241 ac_sys_system=`uname -s`
Benjamin Peterson8719ad52009-09-11 22:24:02 +0000242 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000243 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000244 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000245 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000246 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000247 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000248 ac_md_system=`echo $ac_sys_system |
249 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
250 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000251 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000252 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000253
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000254 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000255 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000256 darwin*) MACHDEP="darwin";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000257 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000258 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000259 esac
260fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000261
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000262# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
263# disable features if it is defined, without any means to access these
264# features as extensions. For these systems, we skip the definition of
265# _XOPEN_SOURCE. Before adding a system to the list to gain access to
266# some feature, make sure there is no alternative way to access this
267# feature. Also, when using wildcards, make sure you have verified the
268# need for not defining _XOPEN_SOURCE on all systems matching the
269# wildcard, and that the wildcard does not include future systems
270# (which may remove their limitations).
271dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
272case $ac_sys_system/$ac_sys_release in
273 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
274 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000275 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Martin v. Löwis19ed3c82010-02-15 21:45:06 +0000276 # In addition, Stefan Krah confirms that issue #1244610 exists through
277 # OpenBSD 4.6, but is fixed in 4.7.
278 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123456@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000279 define_xopen_source=no
280 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
281 # also defined. This can be overridden by defining _BSD_SOURCE
282 # As this has a different meaning on Linux, only define it on OpenBSD
283 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
284 ;;
Martin v. Löwis19ed3c82010-02-15 21:45:06 +0000285 OpenBSD/4.@<:@789@:>@)
Martin v. Löwis7671efc2010-02-15 08:35:16 +0000286 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
287 # also defined. This can be overridden by defining _BSD_SOURCE
288 # As this has a different meaning on Linux, only define it on OpenBSD
289 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
290 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000291 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
292 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
293 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000294 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000295 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000296 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
297 # of union __?sigval. Reported by Stuart Bishop.
298 SunOS/5.6)
299 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000300 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
301 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000302 # Reconfirmed for 7.1.4 by Martin v. Loewis.
303 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000304 define_xopen_source=no;;
305 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000306 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000307 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000308 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000309 # On FreeBSD 4, the math functions C89 does not cover are never defined
310 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
311 FreeBSD/4.*)
312 define_xopen_source=no;;
313 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
314 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
315 # identifies itself as Darwin/7.*
316 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
317 # disables platform specific features beyond repair.
318 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
319 # has no effect, don't bother defining them
320 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000321 define_xopen_source=no;;
Ronald Oussoren92fb9412010-03-09 06:40:19 +0000322 Darwin/1@<:@0-9@:>@.*)
Ronald Oussorenb8f11a62010-03-08 07:02:03 +0000323 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000324 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
325 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
326 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000327 AIX/4)
328 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000329 AIX/5)
330 if test `uname -r` -eq 1; then
331 define_xopen_source=no
332 fi
333 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000334 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
335 # defining NI_NUMERICHOST.
336 QNX/6.3.2)
337 define_xopen_source=no
338 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000339
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000340esac
341
342if test $define_xopen_source = yes
343then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000344 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
345 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000346 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
347 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000348 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000349 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000350 AC_DEFINE(_XOPEN_SOURCE, 500,
351 Define to the level of X/Open that your system supports)
352 ;;
353 *)
354 AC_DEFINE(_XOPEN_SOURCE, 600,
355 Define to the level of X/Open that your system supports)
356 ;;
357 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000358
359 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
360 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
361 # several APIs are not declared. Since this is also needed in some
362 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000363 # except for Solaris 10, where it must not be defined,
364 # as it implies XPG4.2
365 case $ac_sys_system/$ac_sys_release in
366 SunOS/5.10)
367 ;;
368 *)
369 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
370 Define to activate Unix95-and-earlier features)
371 ;;
372 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000373
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000374 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
375
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000376fi
377
Guido van Rossum91922671997-10-09 20:24:13 +0000378#
379# SGI compilers allow the specification of the both the ABI and the
380# ISA on the command line. Depending on the values of these switches,
381# different and often incompatable code will be generated.
382#
383# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
384# thus supply support for various ABI/ISA combinations. The MACHDEP
385# variable is also adjusted.
386#
387AC_SUBST(SGI_ABI)
388if test ! -z "$SGI_ABI"
389then
390 CC="cc $SGI_ABI"
391 LDFLAGS="$SGI_ABI $LDFLAGS"
392 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
393fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000394AC_MSG_RESULT($MACHDEP)
395
Jack Jansen6b08a402004-06-03 12:41:45 +0000396# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
397# it may influence the way we can build extensions, so distutils
398# needs to check it
399AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000400AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000401CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000402EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000403
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000404AC_MSG_CHECKING(machine type as reported by uname -m)
405ac_sys_machine=`uname -m`
406AC_MSG_RESULT($ac_sys_machine)
407
Guido van Rossum627b2d71993-12-24 10:39:16 +0000408# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000409
410# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
411# for debug/optimization stuff. BASECFLAGS is for flags that are required
412# just to get things to compile and link. Users are free to override OPT
413# when running configure or make. The build should not break if they do.
414# BASECFLAGS should generally not be messed with, however.
415
416# XXX shouldn't some/most/all of this code be merged with the stuff later
417# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000418AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000419AC_ARG_WITH(gcc,
420 AC_HELP_STRING(--without-gcc,never use gcc),
421[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000422 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000423 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000424 without_gcc=yes;;
425 yes) CC=gcc
426 without_gcc=no;;
427 *) CC=$withval
428 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000429 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000430 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000431 AIX*) CC=cc_r
432 without_gcc=;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000433 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000434 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000435AC_MSG_RESULT($without_gcc)
436
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000437# If the user switches compilers, we can't believe the cache
438if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
439then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000440 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
441(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000442fi
443
Victor Stinner00d6a1d2010-03-25 01:02:29 +0000444save_CFLAGS=$CFLAGS
Guido van Rossum627b2d71993-12-24 10:39:16 +0000445AC_PROG_CC
Victor Stinner00d6a1d2010-03-25 01:02:29 +0000446CFLAGS=$save_CFLAGS
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000447
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000448AC_SUBST(CXX)
449AC_SUBST(MAINCC)
450AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
451AC_ARG_WITH(cxx_main,
452 AC_HELP_STRING([--with-cxx-main=<compiler>],
453 [compile main() and link python executable with C++ compiler]),
454[
455
456 case $withval in
457 no) with_cxx_main=no
458 MAINCC='$(CC)';;
459 yes) with_cxx_main=yes
460 MAINCC='$(CXX)';;
461 *) with_cxx_main=yes
462 MAINCC=$withval
463 if test -z "$CXX"
464 then
465 CXX=$withval
466 fi;;
467 esac], [
468 with_cxx_main=no
469 MAINCC='$(CC)'
470])
471AC_MSG_RESULT($with_cxx_main)
472
473preset_cxx="$CXX"
474if test -z "$CXX"
475then
476 case "$CC" in
477 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
478 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
479 esac
480 if test "$CXX" = "notfound"
481 then
482 CXX=""
483 fi
484fi
485if test -z "$CXX"
486then
487 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
488 if test "$CXX" = "notfound"
489 then
490 CXX=""
491 fi
492fi
493if test "$preset_cxx" != "$CXX"
494then
495 AC_MSG_WARN([
496
497 By default, distutils will build C++ extension modules with "$CXX".
498 If this is not intended, then set CXX on the configure command line.
499 ])
500fi
501
502
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000503# checks for UNIX variants that set C preprocessor variables
504AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000505
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000506# Check for unsupported systems
507case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000508atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000509 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
510 echo See README for details.
511 exit 1;;
512esac
513
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000514AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000515AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000516AC_ARG_WITH(suffix,
517 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
518[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000519 case $withval in
520 no) EXEEXT=;;
521 yes) EXEEXT=.exe;;
522 *) EXEEXT=$withval;;
523 esac])
524AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000525
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000526# Test whether we're running on a non-case-sensitive system, in which
527# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000528AC_SUBST(BUILDEXEEXT)
529AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000530if test ! -d CaseSensitiveTestDir; then
531mkdir CaseSensitiveTestDir
532fi
533
534if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000535then
Jack Jansen1999ef42001-12-06 21:47:20 +0000536 AC_MSG_RESULT(yes)
537 BUILDEXEEXT=.exe
538else
539 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000540 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000541fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000542rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000543
Guido van Rossumdd997f71998-10-07 19:58:26 +0000544case $MACHDEP in
545bsdos*)
546 case $CC in
547 gcc) CC="$CC -D_HAVE_BSDI";;
548 esac;;
549esac
550
Guido van Rossum84561611997-08-21 00:08:11 +0000551case $ac_sys_system in
552hp*|HP*)
553 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000554 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000555 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000556SunOS*)
557 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000558 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000559 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000560esac
561
Martin v. Löwise8964d42001-03-06 12:09:07 +0000562
Neil Schemenauer61c51152001-01-26 16:18:16 +0000563AC_SUBST(LIBRARY)
564AC_MSG_CHECKING(LIBRARY)
565if test -z "$LIBRARY"
566then
567 LIBRARY='libpython$(VERSION).a'
568fi
569AC_MSG_RESULT($LIBRARY)
570
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000571# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000572# name of the library into which to insert object files). BLDLIBRARY is also
573# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
574# is blank as the main program is not linked directly against LDLIBRARY.
575# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
576# systems without shared libraries, LDLIBRARY is the same as LIBRARY
577# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
578# DLLLIBRARY is the shared (i.e., DLL) library.
579#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000580# RUNSHARED is used to run shared python without installed libraries
581#
582# INSTSONAME is the name of the shared library that will be use to install
583# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000584AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000585AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000586AC_SUBST(BLDLIBRARY)
587AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000588AC_SUBST(INSTSONAME)
589AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000590LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000591BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000592INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000593DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000594LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000595RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000596
Guido van Rossumfb842551997-08-06 23:42:07 +0000597# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000598# If CXX is set, and if it is needed to link a main function that was
599# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
600# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000601# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000602# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000603AC_SUBST(LINKCC)
604AC_MSG_CHECKING(LINKCC)
605if test -z "$LINKCC"
606then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000607 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000608 case $ac_sys_system in
609 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000610 exp_extra="\"\""
611 if test $ac_sys_release -ge 5 -o \
612 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
613 exp_extra="."
614 fi
615 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000616 QNX*)
617 # qcc must be used because the other compilers do not
618 # support -N.
619 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000620 esac
621fi
622AC_MSG_RESULT($LINKCC)
623
Tarek Ziadébe720e02009-05-09 11:55:12 +0000624# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
625# make sure we default having it set to "no": this is used by
626# distutils.unixccompiler to know if it should add --enable-new-dtags
627# to linker command lines, and failing to detect GNU ld simply results
628# in the same bahaviour as before.
629AC_SUBST(GNULD)
630AC_MSG_CHECKING(for GNU ld)
631ac_prog=ld
632if test "$GCC" = yes; then
633 ac_prog=`$CC -print-prog-name=ld`
634fi
635case `"$ac_prog" -V 2>&1 < /dev/null` in
636 *GNU*)
637 GNULD=yes;;
638 *)
639 GNULD=no;;
640esac
641AC_MSG_RESULT($GNULD)
642
Martin v. Löwis1142de32002-03-29 16:28:31 +0000643AC_MSG_CHECKING(for --enable-shared)
644AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000645 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000646
Martin v. Löwis1142de32002-03-29 16:28:31 +0000647if test -z "$enable_shared"
648then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000649 case $ac_sys_system in
Antoine Pitrou6103ab12009-10-24 20:11:21 +0000650 CYGWIN*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000651 enable_shared="yes";;
652 *)
653 enable_shared="no";;
654 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000655fi
656AC_MSG_RESULT($enable_shared)
657
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000658AC_MSG_CHECKING(for --enable-profiling)
659AC_ARG_ENABLE(profiling,
660 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
661[ac_save_cc="$CC"
662 CC="$CC -pg"
663 AC_TRY_RUN([int main() { return 0; }],
664 ac_enable_profiling="yes",
665 ac_enable_profiling="no",
666 ac_enable_profiling="no")
667 CC="$ac_save_cc"])
668AC_MSG_RESULT($ac_enable_profiling)
669
670case "$ac_enable_profiling" in
671 "yes")
672 BASECFLAGS="-pg $BASECFLAGS"
673 LDFLAGS="-pg $LDFLAGS"
674 ;;
675esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000676
677AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000678
Guido van Rossumb8552162001-09-05 14:58:11 +0000679# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
680# library that we build, but we do not want to link against it (we
681# will find it with a -framework option). For this reason there is an
682# extra variable BLDLIBRARY against which Python and the extension
683# modules are linked, BLDLIBRARY. This is normally the same as
684# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000685if test "$enable_framework"
686then
687 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000688 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000689 BLDLIBRARY=''
690else
691 BLDLIBRARY='$(LDLIBRARY)'
692fi
693
Martin v. Löwis1142de32002-03-29 16:28:31 +0000694# Other platforms follow
695if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000696 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000697 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000698 CYGWIN*)
699 LDLIBRARY='libpython$(VERSION).dll.a'
700 DLLLIBRARY='libpython$(VERSION).dll'
701 ;;
702 SunOS*)
703 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000704 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000705 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000706 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000707 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000708 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000709 LDLIBRARY='libpython$(VERSION).so'
710 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000711 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000712 case $ac_sys_system in
713 FreeBSD*)
714 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
715 ;;
716 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000717 INSTSONAME="$LDLIBRARY".$SOVERSION
718 ;;
719 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000720 case `uname -m` in
721 ia64)
722 LDLIBRARY='libpython$(VERSION).so'
723 ;;
724 *)
725 LDLIBRARY='libpython$(VERSION).sl'
726 ;;
727 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000728 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000729 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000730 ;;
731 OSF*)
732 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000733 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000734 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000735 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000736 Darwin*)
737 LDLIBRARY='libpython$(VERSION).dylib'
738 BLDLIBRARY='-L. -lpython$(VERSION)'
739 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
740 ;;
741
Martin v. Löwis1142de32002-03-29 16:28:31 +0000742 esac
Jason Tishler30765592003-09-04 11:04:06 +0000743else # shared is disabled
744 case $ac_sys_system in
745 CYGWIN*)
746 BLDLIBRARY='$(LIBRARY)'
747 LDLIBRARY='libpython$(VERSION).dll.a'
748 ;;
749 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000750fi
751
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000752AC_MSG_RESULT($LDLIBRARY)
753
Guido van Rossum627b2d71993-12-24 10:39:16 +0000754AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000755AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000756AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000757
Tarek Ziadé5662d3e2009-05-07 21:24:43 +0000758# tweak ARFLAGS only if the user didn't set it on the command line
759AC_SUBST(ARFLAGS)
760if test -z "$ARFLAGS"
761then
762 ARFLAGS="rc"
763fi
764
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000765AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000766AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000767if test $SVNVERSION = found
768then
769 SVNVERSION="svnversion \$(srcdir)"
770else
Benjamin Petersonf53eec82009-05-23 19:36:27 +0000771 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000772fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000773
Neil Schemenauera42c8272001-03-31 00:01:55 +0000774case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000775bsdos*|hp*|HP*)
776 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000777 if test -z "$INSTALL"
778 then
779 INSTALL="${srcdir}/install-sh -c"
780 fi
781esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000782AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000783
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000784# Not every filesystem supports hard links
785AC_SUBST(LN)
786if test -z "$LN" ; then
787 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000788 CYGWIN*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000789 *) LN=ln;;
790 esac
791fi
792
Fred Drake9f715822001-07-11 06:27:00 +0000793# Check for --with-pydebug
794AC_MSG_CHECKING(for --with-pydebug)
795AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000796 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
797[
Fred Drake9f715822001-07-11 06:27:00 +0000798if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000799then
800 AC_DEFINE(Py_DEBUG, 1,
801 [Define if you want to build an interpreter with many run-time checks.])
802 AC_MSG_RESULT(yes);
803 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000804else AC_MSG_RESULT(no); Py_DEBUG='false'
805fi],
806[AC_MSG_RESULT(no)])
807
Skip Montanarodecc6a42003-01-01 20:07:49 +0000808# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
809# merged with this chunk of code?
810
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000811# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000812# ------------------------
813# (The following bit of code is complicated enough - please keep things
814# indented properly. Just pretend you're editing Python code. ;-)
815
816# There are two parallel sets of case statements below, one that checks to
817# see if OPT was set and one that does BASECFLAGS setting based upon
818# compiler and platform. BASECFLAGS tweaks need to be made even if the
819# user set OPT.
820
821# tweak OPT based on compiler and platform, only if the user didn't set
822# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000823AC_SUBST(OPT)
Benjamin Peterson65b4ec52010-03-23 21:02:34 +0000824if test "${OPT-unset}" = "unset"
Guido van Rossumb418f891996-07-30 18:06:02 +0000825then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000826 case $GCC in
827 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000828 if test "$CC" != 'g++' ; then
829 STRICT_PROTO="-Wstrict-prototypes"
830 fi
Christian Heimes38053212007-12-14 01:24:44 +0000831 # For gcc 4.x we need to use -fwrapv so lets check if its supported
832 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
833 WRAP="-fwrapv"
834 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000835 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000836 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000837 if test "$Py_DEBUG" = 'true' ; then
838 # Optimization messes up debuggers, so turn it off for
839 # debug builds.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000840 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000841 else
Christian Heimes38053212007-12-14 01:24:44 +0000842 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000843 fi
844 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000845 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000846 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000847 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000848 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000849 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000850 SCO_SV*) OPT="$OPT -m486 -DSCO5"
851 ;;
852 esac
Fred Drake9f715822001-07-11 06:27:00 +0000853 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000854
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000855 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000856 OPT="-O"
857 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000858 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +0000859fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000860
Skip Montanarodecc6a42003-01-01 20:07:49 +0000861AC_SUBST(BASECFLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000862
863# The -arch flags for universal builds on OSX
864UNIVERSAL_ARCH_FLAGS=
865AC_SUBST(UNIVERSAL_ARCH_FLAGS)
866
Skip Montanarodecc6a42003-01-01 20:07:49 +0000867# tweak BASECFLAGS based on compiler and platform
868case $GCC in
869yes)
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000870 # Python doesn't violate C99 aliasing rules, but older versions of
871 # GCC produce warnings for legal Python code. Enable
872 # -fno-strict-aliasing on versions of GCC that support but produce
873 # warnings. See Issue3326
874 AC_MSG_CHECKING(whether $CC accepts and needs -fno-strict-aliasing)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000875 ac_save_cc="$CC"
876 CC="$CC -fno-strict-aliasing"
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000877 save_CFLAGS="$CFLAGS"
878 AC_CACHE_VAL(ac_cv_no_strict_aliasing,
879 AC_TRY_COMPILE([],[int main() { return 0; }],
880 CC="$ac_save_cc -fstrict-aliasing"
881 CFLAGS="$CFLAGS -Werror -Wstrict-aliasing"
882 AC_TRY_COMPILE([],[void f(int **x) {} int main() { double *x; f((int **) &x); return 0; }],
883 ac_cv_no_strict_aliasing=no,
884 ac_cv_no_strict_aliasing=yes),
885 ac_cv_no_strict_aliasing=no))
886 CFLAGS="$save_CFLAGS"
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000887 CC="$ac_save_cc"
Benjamin Petersone6c9d242010-03-30 17:34:47 +0000888 AC_MSG_RESULT($ac_cv_no_strict_aliasing)
889 if test $ac_cv_no_strict_aliasing = yes
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000890 then
891 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
892 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000893
894 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
895 # support. Without this, treatment of subnormals doesn't follow
896 # the standard.
897 case $ac_sys_machine in
898 alpha*)
899 BASECFLAGS="$BASECFLAGS -mieee"
900 ;;
901 esac
902
Skip Montanarodecc6a42003-01-01 20:07:49 +0000903 case $ac_sys_system in
904 SCO_SV*)
905 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
906 ;;
907 # is there any other compiler on Darwin besides gcc?
908 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +0000909 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
910 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000911
912
Thomas Wouters477c8d52006-05-27 19:21:47 +0000913 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +0000914 UNIVERSAL_ARCH_FLAGS=""
915 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
916 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000917 ARCH_RUN_32BIT=""
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000918 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000919
Ronald Oussoren755740f2010-02-07 19:56:39 +0000920 # You have to use different flags on various versions of
921 # OSX to extract PPC code from an universal binary, basically
922 # '-arch ppc' on OSX 10.4 and '-arch ppc7400' on anything
923 # newer.
924 # Because '-arch pp7400' works on OSX 10.5 or higher this
925 # test is only present in the '32-bit' branch, all other
926 # branches require OSX 10.5 to compile.
927
928 AC_MSG_CHECKING(lipo flag for extracting ppc code)
929 FN="test.$$"
930 cat >${FN}.c <<-EOF
931 int main() { return 0; }
932EOF
933 ${CC} ${CFLAGS} -arch ppc -arch i386 -o ${FN} ${FN}.c -isysroot ${UNIVERSALSDK}
934 if test $? != 0 ; then
935 rm ${FN} ${FN}.c
936 AC_MSG_RESULT([failed, assumee -extract ppc7400])
937 else
938 lipo "${FN}" -extract ppc7400 -output "${FN}.out" 2>/dev/null
939 if test $? != 0 ; then
940 LIPO_32BIT_FLAGS="-extract ppc -extract i386"
941 AC_MSG_RESULT("'-extract ppc'")
942 else
943 AC_MSG_RESULT("'-extract ppc7400'")
944 fi
945 rm -f ${FN} ${FN}.c ${FN}.out
946 fi
947
Georg Brandlfcaf9102008-07-16 02:17:56 +0000948 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
949 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000950 LIPO_32BIT_FLAGS=""
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000951 ARCH_RUN_32BIT="true"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000952
953 elif test "$UNIVERSAL_ARCHS" = "all" ; then
954 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000955 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000956 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000957
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000958 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
959 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000960 LIPO_32BIT_FLAGS="-extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000961 ARCH_RUN_32BIT="/usr/bin/arch -i386"
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000962
963 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
964 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000965 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000966 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000967
Georg Brandlfcaf9102008-07-16 02:17:56 +0000968 else
Ronald Oussoren74f29b42009-09-20 20:09:26 +0000969 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Georg Brandlfcaf9102008-07-16 02:17:56 +0000970
971 fi
972
973
974 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Georg Brandl3dbca812008-07-23 16:10:53 +0000975 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000976 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
977 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
978 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000979 fi
980
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000981 # Calculate the right deployment target for this build.
982 #
983 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
984 if test ${cur_target} '>' 10.2; then
985 cur_target=10.3
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000986 if test ${enable_universalsdk}; then
987 if test "${UNIVERSAL_ARCHS}" = "all"; then
988 # Ensure that the default platform for a
989 # 4-way universal build is OSX 10.5,
990 # that's the first OS release where
991 # 4-way builds make sense.
992 cur_target='10.5'
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000993
994 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
995 cur_target='10.5'
996
997 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
998 cur_target='10.5'
999
1000 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
1001 cur_target='10.5'
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001002 fi
1003 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001004 if test `/usr/bin/arch` = "i386"; then
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001005 # On Intel macs default to a deployment
1006 # target of 10.4, that's the first OSX
1007 # release with Intel support.
1008 cur_target="10.4"
1009 fi
1010 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001011 fi
1012 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1013
1014 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1015 # environment with a value that is the same as what we'll use
1016 # in the Makefile to ensure that we'll get the same compiler
1017 # environment during configure and build time.
1018 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1019 export MACOSX_DEPLOYMENT_TARGET
1020 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1021
Skip Montanarodecc6a42003-01-01 20:07:49 +00001022 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001023 OSF*)
1024 BASECFLAGS="$BASECFLAGS -mieee"
1025 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001026 esac
1027 ;;
1028
1029*)
1030 case $ac_sys_system in
1031 OpenUNIX*|UnixWare*)
1032 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1033 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001034 OSF*)
1035 BASECFLAGS="$BASECFLAGS -ieee -std"
1036 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001037 SCO_SV*)
1038 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1039 ;;
1040 esac
1041 ;;
1042esac
1043
Fred Drakee1ceaa02001-12-04 20:55:47 +00001044if test "$Py_DEBUG" = 'true'; then
1045 :
1046else
1047 OPT="-DNDEBUG $OPT"
1048fi
1049
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001050if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001051then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001052 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001053fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001054
Neal Norwitz020c46a2006-01-07 21:39:28 +00001055# disable check for icc since it seems to pass, but generates a warning
1056if test "$CC" = icc
1057then
1058 ac_cv_opt_olimit_ok=no
1059fi
1060
Guido van Rossum91922671997-10-09 20:24:13 +00001061AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1062AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1063[ac_save_cc="$CC"
1064CC="$CC -OPT:Olimit=0"
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001065AC_TRY_COMPILE([],[int main() { return 0; }],
Guido van Rossum91922671997-10-09 20:24:13 +00001066 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001067 ac_cv_opt_olimit_ok=no,
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001068 )
Guido van Rossum91922671997-10-09 20:24:13 +00001069CC="$ac_save_cc"])
1070AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001071if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001072 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001073 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1074 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1075 # environment?
1076 Darwin*)
1077 ;;
1078 *)
1079 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1080 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001081 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001082else
1083 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1084 AC_CACHE_VAL(ac_cv_olimit_ok,
1085 [ac_save_cc="$CC"
1086 CC="$CC -Olimit 1500"
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001087 AC_TRY_COMPILE([],[int main() { return 0; }],
Guido van Rossumf8678121998-07-07 21:05:09 +00001088 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001089 ac_cv_olimit_ok=no,
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001090 )
Guido van Rossumf8678121998-07-07 21:05:09 +00001091 CC="$ac_save_cc"])
1092 AC_MSG_RESULT($ac_cv_olimit_ok)
1093 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001094 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001095 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001096fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001097
Thomas Wouters89f507f2006-12-13 04:49:30 +00001098# Check whether GCC supports PyArg_ParseTuple format
1099if test "$GCC" = "yes"
1100then
1101 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1102 save_CFLAGS=$CFLAGS
1103 CFLAGS="$CFLAGS -Werror"
1104 AC_TRY_COMPILE([
1105 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1106 ],,
1107 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1108 AC_MSG_RESULT(yes),
1109 AC_MSG_RESULT(no)
1110 )
1111 CFLAGS=$save_CFLAGS
1112fi
1113
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001114# On some compilers, pthreads are available without further options
1115# (e.g. MacOS X). On some of these systems, the compiler will not
1116# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1117# So we have to see first whether pthreads are available without
1118# options before we can check whether -Kpthread improves anything.
1119AC_MSG_CHECKING(whether pthreads are available without options)
1120AC_CACHE_VAL(ac_cv_pthread_is_default,
1121[AC_TRY_RUN([
1122#include <pthread.h>
1123
1124void* routine(void* p){return NULL;}
1125
1126int main(){
1127 pthread_t p;
1128 if(pthread_create(&p,NULL,routine,NULL)!=0)
1129 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001130 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001131 return 0;
1132}
1133],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001134[
1135 ac_cv_pthread_is_default=yes
1136 ac_cv_kthread=no
1137 ac_cv_pthread=no
1138],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001139 ac_cv_pthread_is_default=no,
1140 ac_cv_pthread_is_default=no)
1141])
1142AC_MSG_RESULT($ac_cv_pthread_is_default)
1143
1144
1145if test $ac_cv_pthread_is_default = yes
1146then
1147 ac_cv_kpthread=no
1148else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001149# -Kpthread, if available, provides the right #defines
1150# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001151# Some compilers won't report that they do not support -Kpthread,
1152# so we need to run a program to see whether it really made the
1153# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001154AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1155AC_CACHE_VAL(ac_cv_kpthread,
1156[ac_save_cc="$CC"
1157CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001158AC_TRY_RUN([
1159#include <pthread.h>
1160
1161void* routine(void* p){return NULL;}
1162
1163int main(){
1164 pthread_t p;
1165 if(pthread_create(&p,NULL,routine,NULL)!=0)
1166 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001167 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001168 return 0;
1169}
1170],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001171 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001172 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001173 ac_cv_kpthread=no)
1174CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001175AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001176fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001177
Skip Montanarod8d39a02003-07-10 20:44:10 +00001178if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001179then
1180# -Kthread, if available, provides the right #defines
1181# and linker options to make pthread_create available
1182# Some compilers won't report that they do not support -Kthread,
1183# so we need to run a program to see whether it really made the
1184# function available.
1185AC_MSG_CHECKING(whether $CC accepts -Kthread)
1186AC_CACHE_VAL(ac_cv_kthread,
1187[ac_save_cc="$CC"
1188CC="$CC -Kthread"
1189AC_TRY_RUN([
1190#include <pthread.h>
1191
1192void* routine(void* p){return NULL;}
1193
1194int main(){
1195 pthread_t p;
1196 if(pthread_create(&p,NULL,routine,NULL)!=0)
1197 return 1;
1198 (void)pthread_detach(p);
1199 return 0;
1200}
1201],
1202 ac_cv_kthread=yes,
1203 ac_cv_kthread=no,
1204 ac_cv_kthread=no)
1205CC="$ac_save_cc"])
1206AC_MSG_RESULT($ac_cv_kthread)
1207fi
1208
Skip Montanarod8d39a02003-07-10 20:44:10 +00001209if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001210then
1211# -pthread, if available, provides the right #defines
1212# and linker options to make pthread_create available
1213# Some compilers won't report that they do not support -pthread,
1214# so we need to run a program to see whether it really made the
1215# function available.
1216AC_MSG_CHECKING(whether $CC accepts -pthread)
1217AC_CACHE_VAL(ac_cv_thread,
1218[ac_save_cc="$CC"
1219CC="$CC -pthread"
1220AC_TRY_RUN([
1221#include <pthread.h>
1222
1223void* routine(void* p){return NULL;}
1224
1225int main(){
1226 pthread_t p;
1227 if(pthread_create(&p,NULL,routine,NULL)!=0)
1228 return 1;
1229 (void)pthread_detach(p);
1230 return 0;
1231}
1232],
1233 ac_cv_pthread=yes,
1234 ac_cv_pthread=no,
1235 ac_cv_pthread=no)
1236CC="$ac_save_cc"])
1237AC_MSG_RESULT($ac_cv_pthread)
1238fi
1239
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001240# If we have set a CC compiler flag for thread support then
1241# check if it works for CXX, too.
1242ac_cv_cxx_thread=no
1243if test ! -z "$CXX"
1244then
1245AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1246ac_save_cxx="$CXX"
1247
1248if test "$ac_cv_kpthread" = "yes"
1249then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001250 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001251 ac_cv_cxx_thread=yes
1252elif test "$ac_cv_kthread" = "yes"
1253then
1254 CXX="$CXX -Kthread"
1255 ac_cv_cxx_thread=yes
1256elif test "$ac_cv_pthread" = "yes"
1257then
1258 CXX="$CXX -pthread"
1259 ac_cv_cxx_thread=yes
1260fi
1261
1262if test $ac_cv_cxx_thread = yes
1263then
1264 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1265 $CXX -c conftest.$ac_ext 2>&5
1266 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1267 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1268 then
1269 ac_cv_cxx_thread=yes
1270 else
1271 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001272 fi
1273 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001274fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001275AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001276fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001277CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001278
Fred Drakece81d592000-07-09 14:39:29 +00001279dnl # check for ANSI or K&R ("traditional") preprocessor
1280dnl AC_MSG_CHECKING(for C preprocessor type)
1281dnl AC_TRY_COMPILE([
1282dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1283dnl int foo;
1284dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1285dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1286dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001287
Guido van Rossum627b2d71993-12-24 10:39:16 +00001288# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001289AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001290AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1291fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001292ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001293shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001294unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001295sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1296sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001297sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Georg Brandlf78e02b2008-06-10 17:40:04 +00001298sys/termio.h sys/time.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001299sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001300sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Ronald Oussoren755740f2010-02-07 19:56:39 +00001301bluetooth/bluetooth.h linux/tipc.h spawn.h util.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001302AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001303AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001304
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001305# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001306AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001307#ifdef HAVE_CURSES_H
1308#include <curses.h>
1309#endif
1310])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001311
Martin v. Löwis11017b12006-01-14 18:12:57 +00001312# On Linux, netlink.h requires asm/types.h
1313AC_CHECK_HEADERS(linux/netlink.h,,,[
1314#ifdef HAVE_ASM_TYPES_H
1315#include <asm/types.h>
1316#endif
1317#ifdef HAVE_SYS_SOCKET_H
1318#include <sys/socket.h>
1319#endif
1320])
1321
Guido van Rossum627b2d71993-12-24 10:39:16 +00001322# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001323was_it_defined=no
1324AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001325AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1326 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1327])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001328AC_MSG_RESULT($was_it_defined)
1329
Neal Norwitz11690112002-07-30 01:08:28 +00001330# Check whether using makedev requires defining _OSF_SOURCE
1331AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001332AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001333 [ makedev(0, 0) ],
1334 ac_cv_has_makedev=yes,
1335 ac_cv_has_makedev=no)
1336if test "$ac_cv_has_makedev" = "no"; then
1337 # we didn't link, try if _OSF_SOURCE will allow us to link
1338 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001339#define _OSF_SOURCE 1
1340#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001341 ],
1342 [ makedev(0, 0) ],
1343 ac_cv_has_makedev=yes,
1344 ac_cv_has_makedev=no)
1345 if test "$ac_cv_has_makedev" = "yes"; then
1346 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1347 fi
1348fi
1349AC_MSG_RESULT($ac_cv_has_makedev)
1350if test "$ac_cv_has_makedev" = "yes"; then
1351 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1352fi
1353
Martin v. Löwis399a6892002-10-04 10:22:02 +00001354# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1355# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1356# defined, but the compiler does not support pragma redefine_extname,
1357# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1358# structures (such as rlimit64) without declaring them. As a
1359# work-around, disable LFS on such configurations
1360
1361use_lfs=yes
1362AC_MSG_CHECKING(Solaris LFS bug)
1363AC_TRY_COMPILE([
1364#define _LARGEFILE_SOURCE 1
1365#define _FILE_OFFSET_BITS 64
1366#include <sys/resource.h>
1367],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1368AC_MSG_RESULT($sol_lfs_bug)
1369if test "$sol_lfs_bug" = "yes"; then
1370 use_lfs=no
1371fi
1372
1373if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001374# Two defines needed to enable largefile support on various platforms
1375# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001376AC_DEFINE(_LARGEFILE_SOURCE, 1,
1377[This must be defined on some systems to enable large file support.])
1378AC_DEFINE(_FILE_OFFSET_BITS, 64,
1379[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001380fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001381
Guido van Rossum300fda71996-08-19 21:58:16 +00001382# Add some code to confdefs.h so that the test for off_t works on SCO
1383cat >> confdefs.h <<\EOF
1384#if defined(SCO_DS)
1385#undef _OFF_T
1386#endif
1387EOF
1388
Guido van Rossumef2255b2000-03-10 22:30:29 +00001389# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001390AC_TYPE_MODE_T
1391AC_TYPE_OFF_T
1392AC_TYPE_PID_T
1393AC_TYPE_SIGNAL
1394AC_TYPE_SIZE_T
1395AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001396AC_TYPE_UINT32_T
1397AC_TYPE_UINT64_T
1398AC_TYPE_INT32_T
1399AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001400AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001401 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001402
Guido van Rossumef2255b2000-03-10 22:30:29 +00001403# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001404# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001405AC_CHECK_SIZEOF(int, 4)
1406AC_CHECK_SIZEOF(long, 4)
1407AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001408AC_CHECK_SIZEOF(short, 2)
1409AC_CHECK_SIZEOF(float, 4)
1410AC_CHECK_SIZEOF(double, 8)
1411AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001412AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001413AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001414
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001415AC_MSG_CHECKING(for long long support)
1416have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001417AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1418 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1419 have_long_long=yes
1420])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001421AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001422if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001423AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001424fi
1425
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001426AC_MSG_CHECKING(for long double support)
1427have_long_double=no
1428AC_TRY_COMPILE([], [long double x; x = (long double)0;], [
1429 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1430 have_long_double=yes
1431])
1432AC_MSG_RESULT($have_long_double)
1433if test "$have_long_double" = yes ; then
1434AC_CHECK_SIZEOF(long double, 16)
1435fi
1436
1437
Thomas Woutersb2137042007-02-01 18:02:27 +00001438AC_MSG_CHECKING(for _Bool support)
1439have_c99_bool=no
1440AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1441 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1442 have_c99_bool=yes
1443])
1444AC_MSG_RESULT($have_c99_bool)
1445if test "$have_c99_bool" = yes ; then
1446AC_CHECK_SIZEOF(_Bool, 1)
1447fi
1448
Thomas Wouters89f507f2006-12-13 04:49:30 +00001449AC_CHECK_TYPES(uintptr_t,
1450 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1451 [], [#ifdef HAVE_STDINT_H
1452 #include <stdint.h>
1453 #endif])
1454
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001455AC_CHECK_SIZEOF(off_t, [], [
1456#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001457#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001458#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001459])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001460
1461AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson2df5d282009-12-31 21:22:50 +00001462if test "$have_long_long" = yes
1463then
1464if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001465 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001466 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1467 [Defined to enable large file support when an off_t is bigger than a long
1468 and long long is available and at least as big as an off_t. You may need
1469 to add some flags for configuration and compilation to enable this mode.
1470 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001471 AC_MSG_RESULT(yes)
1472else
1473 AC_MSG_RESULT(no)
1474fi
Mark Dickinson2df5d282009-12-31 21:22:50 +00001475else
1476 AC_MSG_RESULT(no)
1477fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001478
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001479AC_CHECK_SIZEOF(time_t, [], [
1480#ifdef HAVE_SYS_TYPES_H
1481#include <sys/types.h>
1482#endif
1483#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00001484#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001485#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001486])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001487
Trent Mick635f6fb2000-08-23 21:33:05 +00001488# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001489ac_save_cc="$CC"
1490if test "$ac_cv_kpthread" = "yes"
1491then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001492elif test "$ac_cv_kthread" = "yes"
1493then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001494elif test "$ac_cv_pthread" = "yes"
1495then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001496fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001497
Trent Mick635f6fb2000-08-23 21:33:05 +00001498AC_MSG_CHECKING(for pthread_t)
1499have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001500AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001501AC_MSG_RESULT($have_pthread_t)
1502if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001503 AC_CHECK_SIZEOF(pthread_t, [], [
1504#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001505#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001506#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001507 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001508fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001509CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001510
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001511AC_SUBST(OTHER_LIBTOOL_OPT)
1512case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001513 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001514 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1515 ;;
1516 Darwin/*)
1517 OTHER_LIBTOOL_OPT=""
1518 ;;
1519esac
1520
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001521
1522ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001523AC_SUBST(LIBTOOL_CRUFT)
1524case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001525 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001526 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1527 if test "${enable_universalsdk}"; then
1528 :
1529 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001530 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001531 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001532 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001533 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001534 Darwin/*)
Ronald Oussoren9812a6c2010-02-07 11:53:18 +00001535 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001536 if test ${gcc_version} '<' 4.0
1537 then
1538 LIBTOOL_CRUFT="-lcc_dynamic"
1539 else
1540 LIBTOOL_CRUFT=""
1541 fi
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001542 AC_TRY_RUN([
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001543 #include <unistd.h>
1544 int main(int argc, char*argv[])
1545 {
1546 if (sizeof(long) == 4) {
1547 return 0;
1548 } else {
1549 return 1;
1550 }
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001551 }
1552 ], ac_osx_32bit=yes,
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001553 ac_osx_32bit=no,
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001554 ac_osx_32bit=yes)
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001555
1556 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001557 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001558 i386)
1559 MACOSX_DEFAULT_ARCH="i386"
1560 ;;
1561 ppc)
1562 MACOSX_DEFAULT_ARCH="ppc"
1563 ;;
1564 *)
1565 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1566 ;;
1567 esac
1568 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001569 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001570 i386)
1571 MACOSX_DEFAULT_ARCH="x86_64"
1572 ;;
1573 ppc)
1574 MACOSX_DEFAULT_ARCH="ppc64"
1575 ;;
1576 *)
1577 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1578 ;;
1579 esac
1580
1581 #ARCH_RUN_32BIT="true"
1582 fi
1583
1584 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001585 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001586 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001587esac
1588
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001589AC_MSG_CHECKING(for --enable-framework)
1590if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001591then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001592 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001593 # -F. is needed to allow linking to the framework while
1594 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001595 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1596 [Define if you want to produce an OpenStep/Rhapsody framework
1597 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001598 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001599 if test $enable_shared = "yes"
1600 then
1601 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1602 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001603else
1604 AC_MSG_RESULT(no)
1605fi
1606
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001607AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001608case $ac_sys_system/$ac_sys_release in
1609 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001610 AC_DEFINE(WITH_DYLD, 1,
1611 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1612 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1613 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001614 AC_MSG_RESULT(always on for Darwin)
1615 ;;
1616 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001617 AC_MSG_RESULT(no)
1618 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001619esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001620
Guido van Rossumac405f61994-09-12 10:56:06 +00001621# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001622AC_SUBST(SO)
1623AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001624AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001625AC_SUBST(CCSHARED)
1626AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001627# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001628# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001629AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001630if test -z "$SO"
1631then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001632 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001633 hp*|HP*)
1634 case `uname -m` in
1635 ia64) SO=.so;;
1636 *) SO=.sl;;
1637 esac
1638 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001639 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001640 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001641 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001642else
1643 # this might also be a termcap variable, see #610332
1644 echo
1645 echo '====================================================================='
1646 echo '+ +'
1647 echo '+ WARNING: You have set SO in your environment. +'
1648 echo '+ Do you really mean to change the extension for shared libraries? +'
1649 echo '+ Continuing in 10 seconds to let you to ponder. +'
1650 echo '+ +'
1651 echo '====================================================================='
1652 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001653fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001654AC_MSG_RESULT($SO)
Georg Brandlb1441c72009-01-03 22:33:39 +00001655
Thomas Wouters477c8d52006-05-27 19:21:47 +00001656AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001657# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001658# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001659# (Shared libraries in this instance are shared modules to be loaded into
1660# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001661AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001662if test -z "$LDSHARED"
1663then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001664 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001665 AIX*)
1666 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001667 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001668 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001669 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001670 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001671 SunOS/5*)
1672 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001673 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001674 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001675 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001676 hp*|HP*)
1677 if test "$GCC" = "yes"
1678 then LDSHARED='$(CC) -shared'
1679 else LDSHARED='ld -b';
1680 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001681 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001682 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001683 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1684 if test "$enable_framework" ; then
1685 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001686 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1687 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001688 else
1689 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001690 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001691 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001692 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001693 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1694 if test "$enable_framework" ; then
1695 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001696 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1697 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001698 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001699 # No framework, use the Python app as bundle-loader
1700 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001701 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001702 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001703 Darwin/*)
1704 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1705 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001706
Georg Brandlfcaf9102008-07-16 02:17:56 +00001707 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001708 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001709 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001710 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001711 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001712 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1713 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001714 else
1715 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1716 if test "$enable_framework" ; then
1717 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001718 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1719 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001720 else
1721 # No framework, use the Python app as bundle-loader
1722 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1723 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1724 fi
1725 fi
1726 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001727 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001728 BSD/OS*/4*) LDSHARED="gcc -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001729 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001730 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001731 then
Benjamin Petersonab0a7522010-03-14 15:18:25 +00001732 LDSHARED='$(CC) -shared ${LDFLAGS}'
Guido van Rossum0286ae82000-08-29 15:06:49 +00001733 else
1734 LDSHARED="ld -Bshareable ${LDFLAGS}"
1735 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001736 OpenBSD*)
1737 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1738 then
1739 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1740 else
1741 case `uname -r` in
1742 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1743 LDSHARED="ld -Bshareable ${LDFLAGS}"
1744 ;;
1745 *)
1746 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1747 ;;
1748 esac
1749 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001750 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001751 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001752 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001753 then LDSHARED='$(CC) -shared'
1754 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001755 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001756 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001757 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001758 *) LDSHARED="ld";;
1759 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001760fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001761AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001762BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001763# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001764# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001765AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001766if test -z "$CCSHARED"
1767then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001768 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001769 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001770 then CCSHARED="-fPIC";
1771 elif test `uname -p` = sparc;
1772 then CCSHARED="-xcode=pic32";
1773 else CCSHARED="-Kpic";
1774 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001775 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001776 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001777 else CCSHARED="+z";
1778 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001779 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001780 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001781 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001782 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001783 if test "$GCC" = "yes"
1784 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001785 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001786 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001787 SCO_SV*)
1788 if test "$GCC" = "yes"
1789 then CCSHARED="-fPIC"
1790 else CCSHARED="-Kpic -belf"
1791 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001792 IRIX*/6*) case $CC in
1793 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001794 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001795 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001796 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001797fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001798AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001799# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001800# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001801AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001802if test -z "$LINKFORSHARED"
1803then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001804 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001805 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001806 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001807 LINKFORSHARED="-Wl,-E -Wl,+s";;
1808# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001809 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001810 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001811 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001812 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00001813 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001814 if test "$enable_framework"
1815 then
Jack Jansenda49e192005-01-07 13:08:22 +00001816 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001817 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001818 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001819 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001820 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001821 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001822 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001823 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1824 then
1825 LINKFORSHARED="-Wl,--export-dynamic"
1826 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001827 SunOS/5*) case $CC in
1828 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001829 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001830 then
1831 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001832 fi;;
1833 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001834 CYGWIN*)
1835 if test $enable_shared = "no"
1836 then
1837 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1838 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001839 QNX*)
1840 # -Wl,-E causes the symbols to be added to the dynamic
1841 # symbol table so that they can be found when a module
1842 # is loaded. -N 2048K causes the stack size to be set
1843 # to 2048 kilobytes so that the stack doesn't overflow
1844 # when running test_compile.py.
1845 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001846 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001847fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001848AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001849
Georg Brandl93de2162008-07-16 02:21:06 +00001850
Neil Schemenauer61c51152001-01-26 16:18:16 +00001851AC_SUBST(CFLAGSFORSHARED)
1852AC_MSG_CHECKING(CFLAGSFORSHARED)
1853if test ! "$LIBRARY" = "$LDLIBRARY"
1854then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001855 case $ac_sys_system in
1856 CYGWIN*)
1857 # Cygwin needs CCSHARED when building extension DLLs
1858 # but not when building the interpreter DLL.
1859 CFLAGSFORSHARED='';;
1860 *)
1861 CFLAGSFORSHARED='$(CCSHARED)'
1862 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001863fi
1864AC_MSG_RESULT($CFLAGSFORSHARED)
1865
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001866# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1867# library (with --enable-shared).
1868# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001869# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1870# if it is not required, since it creates a dependency of the shared library
1871# to LIBS. This, in turn, means that applications linking the shared libpython
1872# don't need to link LIBS explicitly. The default should be only changed
1873# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001874AC_SUBST(SHLIBS)
1875AC_MSG_CHECKING(SHLIBS)
1876case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001877 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001878 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001879esac
1880AC_MSG_RESULT($SHLIBS)
1881
1882
Guido van Rossum627b2d71993-12-24 10:39:16 +00001883# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001884AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1885AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001886
Georg Brandleee31162008-12-07 15:15:22 +00001887# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001888if test "$with_threads" = "yes" -o -z "$with_threads"; then
1889 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1890 # posix4 on Solaris 2.6
1891 # pthread (first!) on Linux
1892fi
1893
Martin v. Löwis19d17342003-06-14 21:03:05 +00001894# check if we need libintl for locale functions
1895AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00001896 [AC_DEFINE(WITH_LIBINTL, 1,
1897 [Define to 1 if libintl is needed for locale functions.])
1898 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001899
1900# checks for system dependent C++ extensions support
1901case "$ac_sys_system" in
1902 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1903 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1904 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001905 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1906 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1907 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001908 AC_MSG_RESULT(yes)],
1909 [AC_MSG_RESULT(no)]);;
1910 *) ;;
1911esac
1912
Guido van Rossum70c7f481998-03-26 18:44:10 +00001913# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001914AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001915AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001916
Guido van Rossumc5a39031996-07-31 17:35:03 +00001917AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001918AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001919 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1920[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001921AC_MSG_RESULT($withval)
1922LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001923],
1924[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001925
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00001926AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
1927
Benjamin Petersonb2d90462009-12-31 03:23:10 +00001928# Check for use of the system expat library
1929AC_MSG_CHECKING(for --with-system-expat)
1930AC_ARG_WITH(system_expat,
1931 AC_HELP_STRING(--with-system-expat, build pyexpat module using an installed expat library))
1932
1933AC_MSG_RESULT($with_system_expat)
1934
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001935# Check for use of the system libffi library
1936AC_MSG_CHECKING(for --with-system-ffi)
1937AC_ARG_WITH(system_ffi,
1938 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1939
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00001940if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
Benjamin Petersond78735d2010-01-01 16:04:23 +00001941 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
1942else
1943 LIBFFI_INCLUDEDIR=""
1944fi
1945AC_SUBST(LIBFFI_INCLUDEDIR)
1946
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001947AC_MSG_RESULT($with_system_ffi)
1948
Matthias Klose55708cc2009-04-30 08:06:49 +00001949# Check for --with-dbmliborder
1950AC_MSG_CHECKING(for --with-dbmliborder)
1951AC_ARG_WITH(dbmliborder,
1952 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'.]),
1953[
1954if test x$with_dbmliborder = xyes
1955then
1956AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1957else
1958 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
1959 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
1960 then
1961 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1962 fi
1963 done
1964fi])
1965AC_MSG_RESULT($with_dbmliborder)
1966
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001967# Determine if signalmodule should be used.
1968AC_SUBST(USE_SIGNAL_MODULE)
1969AC_SUBST(SIGNAL_OBJS)
1970AC_MSG_CHECKING(for --with-signal-module)
1971AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001972 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001973
1974if test -z "$with_signal_module"
1975then with_signal_module="yes"
1976fi
1977AC_MSG_RESULT($with_signal_module)
1978
1979if test "${with_signal_module}" = "yes"; then
1980 USE_SIGNAL_MODULE=""
1981 SIGNAL_OBJS=""
1982else
1983 USE_SIGNAL_MODULE="#"
1984 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1985fi
1986
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001987# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001988AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001989USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001990
Guido van Rossum54d93d41997-01-22 20:51:58 +00001991AC_MSG_CHECKING(for --with-dec-threads)
1992AC_SUBST(LDLAST)
1993AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001994 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1995[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001996AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001997LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001998if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001999 with_thread="$withval";
2000fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002001[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00002002
Martin v. Löwis11437992002-04-12 09:54:03 +00002003# Templates for things AC_DEFINEd more than once.
2004# For a single AC_DEFINE, no template is needed.
2005AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
2006AH_TEMPLATE(_REENTRANT,
2007 [Define to force use of thread-safe errno, h_errno, and other functions])
2008AH_TEMPLATE(WITH_THREAD,
2009 [Define if you want to compile in rudimentary thread support])
2010
Guido van Rossum54d93d41997-01-22 20:51:58 +00002011AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002012dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002013AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002014 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002015
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002016# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002017dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002018AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002019 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
2020 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002021
2022if test -z "$with_threads"
2023then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002024fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002025AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002026
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002027AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002028if test "$with_threads" = "no"
2029then
2030 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002031elif test "$ac_cv_pthread_is_default" = yes
2032then
2033 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002034 # Defining _REENTRANT on system with POSIX threads should not hurt.
2035 AC_DEFINE(_REENTRANT)
2036 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002037 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002038elif test "$ac_cv_kpthread" = "yes"
2039then
2040 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002041 if test "$ac_cv_cxx_thread" = "yes"; then
2042 CXX="$CXX -Kpthread"
2043 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002044 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002045 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002046 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002047elif test "$ac_cv_kthread" = "yes"
2048then
2049 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002050 if test "$ac_cv_cxx_thread" = "yes"; then
2051 CXX="$CXX -Kthread"
2052 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002053 AC_DEFINE(WITH_THREAD)
2054 posix_threads=yes
2055 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002056elif test "$ac_cv_pthread" = "yes"
2057then
2058 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002059 if test "$ac_cv_cxx_thread" = "yes"; then
2060 CXX="$CXX -pthread"
2061 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002062 AC_DEFINE(WITH_THREAD)
2063 posix_threads=yes
2064 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002065else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002066 if test ! -z "$with_threads" -a -d "$with_threads"
2067 then LDFLAGS="$LDFLAGS -L$with_threads"
2068 fi
2069 if test ! -z "$withval" -a -d "$withval"
2070 then LDFLAGS="$LDFLAGS -L$withval"
2071 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002072
2073 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002074 # define _POSIX_THREADS in unistd.h. Some apparently don't
2075 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002076 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2077 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002078 [
2079#include <unistd.h>
2080#ifdef _POSIX_THREADS
2081yes
2082#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002083 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2084 AC_MSG_RESULT($unistd_defines_pthreads)
2085
Martin v. Löwis130fb172001-07-19 11:00:41 +00002086 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002087 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2088 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002089 AC_DEFINE(HURD_C_THREADS, 1,
2090 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002091 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002092 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002093 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2094 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002095 AC_DEFINE(MACH_C_THREADS, 1,
2096 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002097 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002098 # Just looking for pthread_create in libpthread is not enough:
2099 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2100 # So we really have to include pthread.h, and then link.
2101 _libs=$LIBS
2102 LIBS="$LIBS -lpthread"
2103 AC_MSG_CHECKING([for pthread_create in -lpthread])
2104 AC_TRY_LINK([#include <pthread.h>
2105
2106void * start_routine (void *arg) { exit (0); }], [
2107pthread_create (NULL, NULL, start_routine, NULL)], [
2108 AC_MSG_RESULT(yes)
2109 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002110 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002111 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002112 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002113 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002114 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002115 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002116 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002117 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002118 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002119 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002120 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002121 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002122 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002123 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002124 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002125 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002126 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002127 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002128 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002129 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002130 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002131 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002132 USE_THREAD_MODULE="#"])
Antoine Pitroudb6c5672009-10-24 20:35:52 +00002133 ])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002134
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002135 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2136 LIBS="$LIBS -lmpc"
2137 THREADOBJ="Python/thread.o"
2138 USE_THREAD_MODULE=""])
2139
2140 if test "$posix_threads" != "yes"; then
2141 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2142 LIBS="$LIBS -lthread"
2143 THREADOBJ="Python/thread.o"
2144 USE_THREAD_MODULE=""])
2145 fi
2146
2147 if test "$USE_THREAD_MODULE" != "#"
2148 then
2149 # If the above checks didn't disable threads, (at least) OSF1
2150 # needs this '-threads' argument during linking.
2151 case $ac_sys_system in
2152 OSF1) LDLAST=-threads;;
2153 esac
2154 fi
2155fi
2156
2157if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002158 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002159 AC_DEFINE(_POSIX_THREADS, 1,
2160 [Define if you have POSIX threads,
2161 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002162 fi
2163
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002164 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2165 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002166 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2167 Defined for Solaris 2.6 bug in pthread header.)
2168 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002169 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002170 Define if the Posix semaphores do not work on your system)
2171 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002172 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2173 Define if the Posix semaphores do not work on your system)
2174 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002175 esac
2176
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002177 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2178 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2179 [AC_TRY_RUN([#include <pthread.h>
2180 void *foo(void *parm) {
2181 return NULL;
2182 }
2183 main() {
2184 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002185 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002186 if (pthread_attr_init(&attr)) exit(-1);
2187 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002188 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002189 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002190 }],
2191 ac_cv_pthread_system_supported=yes,
2192 ac_cv_pthread_system_supported=no,
2193 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002194 ])
2195 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2196 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002197 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002198 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002199 AC_CHECK_FUNCS(pthread_sigmask,
2200 [case $ac_sys_system in
2201 CYGWIN*)
2202 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2203 [Define if pthread_sigmask() does not work on your system.])
2204 ;;
2205 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002206fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002207
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002208
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002209# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002210AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002211AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002212AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002213[ --enable-ipv6 Enable ipv6 (with ipv4) support
2214 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002215[ case "$enableval" in
2216 no)
2217 AC_MSG_RESULT(no)
2218 ipv6=no
2219 ;;
2220 *) AC_MSG_RESULT(yes)
2221 AC_DEFINE(ENABLE_IPV6)
2222 ipv6=yes
2223 ;;
2224 esac ],
2225
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002226[
2227dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002228 AC_TRY_RUN([ /* AF_INET6 available check */
2229#include <sys/types.h>
2230#include <sys/socket.h>
2231main()
2232{
2233 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2234 exit(1);
2235 else
2236 exit(0);
2237}
2238],
2239 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002240 ipv6=yes,
2241 AC_MSG_RESULT(no)
2242 ipv6=no,
2243 AC_MSG_RESULT(no)
2244 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002245)
2246
2247if test "$ipv6" = "yes"; then
2248 AC_MSG_CHECKING(if RFC2553 API is available)
2249 AC_TRY_COMPILE([#include <sys/types.h>
2250#include <netinet/in.h>],
2251 [struct sockaddr_in6 x;
2252x.sin6_scope_id;],
2253 AC_MSG_RESULT(yes)
2254 ipv6=yes,
2255 AC_MSG_RESULT(no, IPv6 disabled)
2256 ipv6=no)
2257fi
2258
2259if test "$ipv6" = "yes"; then
2260 AC_DEFINE(ENABLE_IPV6)
2261fi
2262])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002263
2264ipv6type=unknown
2265ipv6lib=none
2266ipv6trylibc=no
2267
2268if test "$ipv6" = "yes"; then
2269 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002270 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2271 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002272 case $i in
2273 inria)
2274 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002275 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002276#include <netinet/in.h>
2277#ifdef IPV6_INRIA_VERSION
2278yes
2279#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002280 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002281 ;;
2282 kame)
2283 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002284 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002285#include <netinet/in.h>
2286#ifdef __KAME__
2287yes
2288#endif],
2289 [ipv6type=$i;
2290 ipv6lib=inet6
2291 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002292 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002293 ;;
2294 linux-glibc)
2295 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002296 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002297#include <features.h>
2298#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2299yes
2300#endif],
2301 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002302 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002303 ;;
2304 linux-inet6)
2305 dnl http://www.v6.linux.or.jp/
2306 if test -d /usr/inet6; then
2307 ipv6type=$i
2308 ipv6lib=inet6
2309 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002310 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002311 fi
2312 ;;
2313 solaris)
2314 if test -f /etc/netconfig; then
2315 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2316 ipv6type=$i
2317 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002318 fi
2319 fi
2320 ;;
2321 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002322 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002323#include <sys/param.h>
2324#ifdef _TOSHIBA_INET6
2325yes
2326#endif],
2327 [ipv6type=$i;
2328 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002329 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002330 ;;
2331 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002332 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002333#include </usr/local/v6/include/sys/v6config.h>
2334#ifdef __V6D__
2335yes
2336#endif],
2337 [ipv6type=$i;
2338 ipv6lib=v6;
2339 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002340 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002341 ;;
2342 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002343 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002344#include <sys/param.h>
2345#ifdef _ZETA_MINAMI_INET6
2346yes
2347#endif],
2348 [ipv6type=$i;
2349 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002350 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002351 ;;
2352 esac
2353 if test "$ipv6type" != "unknown"; then
2354 break
2355 fi
2356 done
2357 AC_MSG_RESULT($ipv6type)
2358fi
2359
2360if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2361 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2362 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2363 echo "using lib$ipv6lib"
2364 else
2365 if test $ipv6trylibc = "yes"; then
2366 echo "using libc"
2367 else
2368 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2369 echo "You need to fetch lib$ipv6lib.a from appropriate"
2370 echo 'ipv6 kit and compile beforehand.'
2371 exit 1
2372 fi
2373 fi
2374fi
2375
Georg Brandl93de2162008-07-16 02:21:06 +00002376AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2377AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2378 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2379 AC_MSG_RESULT(yes),
2380 AC_MSG_RESULT(no)
2381)
2382
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002383# Check for --with-doc-strings
2384AC_MSG_CHECKING(for --with-doc-strings)
2385AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002386 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002387
2388if test -z "$with_doc_strings"
2389then with_doc_strings="yes"
2390fi
2391if test "$with_doc_strings" != "no"
2392then
2393 AC_DEFINE(WITH_DOC_STRINGS, 1,
2394 [Define if you want documentation strings in extension modules])
2395fi
2396AC_MSG_RESULT($with_doc_strings)
2397
Neil Schemenauera35c6882001-02-27 04:45:05 +00002398# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002399AC_MSG_CHECKING(for --with-tsc)
2400AC_ARG_WITH(tsc,
2401[ --with(out)-tsc enable/disable timestamp counter profile], [
2402if test "$withval" != no
2403then
2404 AC_DEFINE(WITH_TSC, 1,
2405 [Define to profile with the Pentium timestamp counter])
2406 AC_MSG_RESULT(yes)
2407else AC_MSG_RESULT(no)
2408fi],
2409[AC_MSG_RESULT(no)])
2410
2411# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002412AC_MSG_CHECKING(for --with-pymalloc)
2413AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002414 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002415
2416if test -z "$with_pymalloc"
2417then with_pymalloc="yes"
2418fi
2419if test "$with_pymalloc" != "no"
2420then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002421 AC_DEFINE(WITH_PYMALLOC, 1,
2422 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002423fi
2424AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002425
Benjamin Peterson05159c42009-12-03 03:01:27 +00002426# Check for Valgrind support
2427AC_MSG_CHECKING([for --with-valgrind])
2428AC_ARG_WITH([valgrind],
2429 AC_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
2430 with_valgrind=no)
2431AC_MSG_RESULT([$with_valgrind])
2432if test "$with_valgrind" != no; then
2433 AC_CHECK_HEADER([valgrind/valgrind.h],
2434 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
2435 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
2436 )
2437fi
2438
Barry Warsawef82cd72000-06-30 16:21:01 +00002439# Check for --with-wctype-functions
2440AC_MSG_CHECKING(for --with-wctype-functions)
2441AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002442 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2443[
Barry Warsawef82cd72000-06-30 16:21:01 +00002444if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002445then
2446 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2447 [Define if you want wctype.h functions to be used instead of the
2448 one supplied by Python itself. (see Include/unicodectype.h).])
2449 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002450else AC_MSG_RESULT(no)
2451fi],
2452[AC_MSG_RESULT(no)])
2453
Guido van Rossum68242b51996-05-28 22:53:03 +00002454# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002455AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002456DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002457
Guido van Rossume97ee181999-12-20 21:27:22 +00002458# the dlopen() function means we might want to use dynload_shlib.o. some
2459# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002460AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002461
2462# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2463# loading of modules.
2464AC_SUBST(DYNLOADFILE)
2465AC_MSG_CHECKING(DYNLOADFILE)
2466if test -z "$DYNLOADFILE"
2467then
2468 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002469 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2470 if test "$ac_cv_func_dlopen" = yes
2471 then DYNLOADFILE="dynload_shlib.o"
2472 else DYNLOADFILE="dynload_aix.o"
2473 fi
2474 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002475 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002476 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2477 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002478 *)
2479 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2480 # out any dynamic loading
2481 if test "$ac_cv_func_dlopen" = yes
2482 then DYNLOADFILE="dynload_shlib.o"
2483 else DYNLOADFILE="dynload_stub.o"
2484 fi
2485 ;;
2486 esac
2487fi
2488AC_MSG_RESULT($DYNLOADFILE)
2489if test "$DYNLOADFILE" != "dynload_stub.o"
2490then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002491 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2492 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002493fi
2494
Jack Jansenc49e5b72001-06-19 15:00:23 +00002495# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2496
2497AC_SUBST(MACHDEP_OBJS)
2498AC_MSG_CHECKING(MACHDEP_OBJS)
2499if test -z "$MACHDEP_OBJS"
2500then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002501 MACHDEP_OBJS=$extra_machdep_objs
2502else
2503 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002504fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002505AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002506
Guido van Rossum627b2d71993-12-24 10:39:16 +00002507# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002508AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2509 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002510 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002511 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Antoine Pitroub7572f02009-12-02 20:46:48 +00002512 initgroups kill killpg lchmod lchown lstat mbrtowc mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002513 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002514 putenv readlink realpath \
Benjamin Peterson965ce872009-04-05 21:24:58 +00002515 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2516 setgid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002517 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setuid setvbuf \
2518 sigaction siginterrupt sigrelse snprintf strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002519 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis113a0852009-05-29 17:25:39 +00002520 truncate uname unsetenv utimes waitpid wait3 wait4 \
2521 wcscoll wcsftime wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002522
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002523# For some functions, having a definition is not sufficient, since
2524# we want to take their address.
2525AC_MSG_CHECKING(for chroot)
2526AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2527 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2528 AC_MSG_RESULT(yes),
2529 AC_MSG_RESULT(no)
2530)
2531AC_MSG_CHECKING(for link)
2532AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2533 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2534 AC_MSG_RESULT(yes),
2535 AC_MSG_RESULT(no)
2536)
2537AC_MSG_CHECKING(for symlink)
2538AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2539 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2540 AC_MSG_RESULT(yes),
2541 AC_MSG_RESULT(no)
2542)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002543AC_MSG_CHECKING(for fchdir)
2544AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2545 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2546 AC_MSG_RESULT(yes),
2547 AC_MSG_RESULT(no)
2548)
2549AC_MSG_CHECKING(for fsync)
2550AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002551 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002552 AC_MSG_RESULT(yes),
2553 AC_MSG_RESULT(no)
2554)
2555AC_MSG_CHECKING(for fdatasync)
2556AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2557 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2558 AC_MSG_RESULT(yes),
2559 AC_MSG_RESULT(no)
2560)
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002561AC_MSG_CHECKING(for epoll)
2562AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2563 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2564 AC_MSG_RESULT(yes),
2565 AC_MSG_RESULT(no)
2566)
2567AC_MSG_CHECKING(for kqueue)
2568AC_TRY_COMPILE([
2569#include <sys/types.h>
2570#include <sys/event.h>
2571 ], int x=kqueue(),
2572 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2573 AC_MSG_RESULT(yes),
2574 AC_MSG_RESULT(no)
2575)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002576# On some systems (eg. FreeBSD 5), we would find a definition of the
2577# functions ctermid_r, setgroups in the library, but no prototype
2578# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2579# address to avoid compiler warnings and potential miscompilations
2580# because of the missing prototypes.
2581
2582AC_MSG_CHECKING(for ctermid_r)
2583AC_TRY_COMPILE([
2584#include "confdefs.h"
2585#include <stdio.h>
2586], void* p = ctermid_r,
2587 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2588 AC_MSG_RESULT(yes),
2589 AC_MSG_RESULT(no)
2590)
2591
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002592AC_MSG_CHECKING(for flock)
2593AC_TRY_COMPILE([
2594#include "confdefs.h"
2595#include <sys/file.h>
2596], void* p = flock,
2597 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2598 AC_MSG_RESULT(yes),
2599 AC_MSG_RESULT(no)
2600)
2601
2602AC_MSG_CHECKING(for getpagesize)
2603AC_TRY_COMPILE([
2604#include "confdefs.h"
2605#include <unistd.h>
2606], void* p = getpagesize,
2607 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2608 AC_MSG_RESULT(yes),
2609 AC_MSG_RESULT(no)
2610)
2611
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002612dnl check for true
2613AC_CHECK_PROGS(TRUE, true, /bin/true)
2614
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002615dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2616dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002617AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002618 AC_CHECK_LIB(resolv, inet_aton)
2619)
2620
Christian Heimesd0764e22007-12-04 15:00:33 +00002621# On Tru64, chflags seems to be present, but calling it will
2622# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002623AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002624AC_TRY_RUN([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002625#include <sys/stat.h>
2626#include <unistd.h>
2627int main(int argc, char*argv[])
2628{
2629 if(chflags(argv[0], 0) != 0)
2630 return 1;
2631 return 0;
2632}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002633]], ac_cv_have_chflags=yes,
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002634 ac_cv_have_chflags=no,
2635 ac_cv_have_chflags=cross)
2636])
2637if test "$ac_cv_have_chflags" = cross ; then
2638 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2639fi
2640if test "$ac_cv_have_chflags" = yes ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002641 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2642fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002643
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002644AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002645AC_TRY_RUN([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002646#include <sys/stat.h>
2647#include <unistd.h>
2648int main(int argc, char*argv[])
2649{
2650 if(lchflags(argv[0], 0) != 0)
2651 return 1;
2652 return 0;
2653}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002654]], ac_cv_have_lchflags=yes,
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002655 ac_cv_have_lchflags=no,
2656 ac_cv_have_lchflags=cross)
2657])
2658if test "$ac_cv_have_lchflags" = cross ; then
2659 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2660fi
2661if test "$ac_cv_have_lchflags" = yes ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002662 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2663fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002664
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002665dnl Check if system zlib has *Copy() functions
2666dnl
2667dnl On MacOSX the linker will search for dylibs on the entire linker path
2668dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2669dnl to revert to a more traditional unix behaviour and make it possible to
2670dnl override the system libz with a local static library of libz. Temporarily
2671dnl add that flag to our CFLAGS as well to ensure that we check the version
2672dnl of libz that will be used by setup.py.
2673dnl The -L/usr/local/lib is needed as wel to get the same compilation
2674dnl environment as setup.py (and leaving it out can cause configure to use the
2675dnl wrong version of the library)
2676case $ac_sys_system/$ac_sys_release in
2677Darwin/*)
2678 _CUR_CFLAGS="${CFLAGS}"
2679 _CUR_LDFLAGS="${LDFLAGS}"
2680 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2681 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2682 ;;
2683esac
2684
2685AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2686
2687case $ac_sys_system/$ac_sys_release in
2688Darwin/*)
2689 CFLAGS="${_CUR_CFLAGS}"
2690 LDFLAGS="${_CUR_LDFLAGS}"
2691 ;;
2692esac
2693
Martin v. Löwise9416172003-05-03 10:12:45 +00002694AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002695AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002696#include "confdefs.h"
2697#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002698], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002699 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2700 AC_MSG_RESULT(yes),
2701 AC_MSG_RESULT(no)
2702)
2703
2704AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002705AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002706#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002707#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002708#include <sys/socket.h>
2709#include <netinet/in.h>
2710#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002711], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002712 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2713 AC_MSG_RESULT(yes),
2714 AC_MSG_RESULT(no)
2715)
2716
2717AC_MSG_CHECKING(for inet_pton)
2718AC_TRY_COMPILE([
2719#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002720#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002721#include <sys/socket.h>
2722#include <netinet/in.h>
2723#include <arpa/inet.h>
2724], void* p = inet_pton,
2725 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2726 AC_MSG_RESULT(yes),
2727 AC_MSG_RESULT(no)
2728)
2729
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002730# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002731AC_MSG_CHECKING(for setgroups)
2732AC_TRY_COMPILE([
2733#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002734#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002735#ifdef HAVE_GRP_H
2736#include <grp.h>
2737#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002738],
2739void* p = setgroups,
2740 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2741 AC_MSG_RESULT(yes),
2742 AC_MSG_RESULT(no)
2743)
2744
Fred Drake8cef4cf2000-06-28 16:40:38 +00002745# check for openpty and forkpty
2746
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002747AC_CHECK_FUNCS(openpty,,
2748 AC_CHECK_LIB(util,openpty,
2749 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2750 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2751 )
2752)
2753AC_CHECK_FUNCS(forkpty,,
2754 AC_CHECK_LIB(util,forkpty,
2755 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2756 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2757 )
2758)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002759
Christian Heimesb186d002008-03-18 15:15:01 +00002760# Stuff for expat.
2761AC_CHECK_FUNCS(memmove)
2762
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002763# check for long file support functions
2764AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2765
Christian Heimesb186d002008-03-18 15:15:01 +00002766AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002767AC_CHECK_FUNCS(getpgrp,
2768 AC_TRY_COMPILE([#include <unistd.h>],
2769 [getpgrp(0);],
2770 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2771 [Define if getpgrp() must be called as getpgrp(0).])
2772 )
2773)
Jack Jansen150753c2003-03-29 22:07:47 +00002774AC_CHECK_FUNCS(setpgrp,
2775 AC_TRY_COMPILE([#include <unistd.h>],
2776 [setpgrp(0,0);],
2777 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2778 [Define if setpgrp() must be called as setpgrp(0, 0).])
2779 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002780)
2781AC_CHECK_FUNCS(gettimeofday,
2782 AC_TRY_COMPILE([#include <sys/time.h>],
2783 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2784 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2785 [Define if gettimeofday() does not have second (timezone) argument
2786 This is the case on Motorola V4 (R40V4.2)])
2787 )
2788)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002789
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002790AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002791AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002792#if defined(MAJOR_IN_MKDEV)
2793#include <sys/mkdev.h>
2794#elif defined(MAJOR_IN_SYSMACROS)
2795#include <sys/sysmacros.h>
2796#else
2797#include <sys/types.h>
2798#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002799],[
2800 makedev(major(0),minor(0));
2801],[
2802 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2803 [Define to 1 if you have the device macros.])
2804 AC_MSG_RESULT(yes)
2805],[
2806 AC_MSG_RESULT(no)
2807])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002808
2809# On OSF/1 V5.1, getaddrinfo is available, but a define
2810# for [no]getaddrinfo in netdb.h.
2811AC_MSG_CHECKING(for getaddrinfo)
2812AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002813#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002814#include <sys/socket.h>
2815#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002816#include <stdio.h>
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002817], [getaddrinfo(NULL, NULL, NULL, NULL);],
2818have_getaddrinfo=yes,
2819have_getaddrinfo=no)
2820AC_MSG_RESULT($have_getaddrinfo)
2821if test $have_getaddrinfo = yes
2822then
2823 AC_MSG_CHECKING(getaddrinfo bug)
2824 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
2825 AC_TRY_RUN([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002826#include <sys/types.h>
2827#include <netdb.h>
2828#include <string.h>
2829#include <sys/socket.h>
2830#include <netinet/in.h>
2831
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002832int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002833{
2834 int passive, gaierr, inet4 = 0, inet6 = 0;
2835 struct addrinfo hints, *ai, *aitop;
2836 char straddr[INET6_ADDRSTRLEN], strport[16];
2837
2838 for (passive = 0; passive <= 1; passive++) {
2839 memset(&hints, 0, sizeof(hints));
2840 hints.ai_family = AF_UNSPEC;
2841 hints.ai_flags = passive ? AI_PASSIVE : 0;
2842 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002843 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002844 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2845 (void)gai_strerror(gaierr);
2846 goto bad;
2847 }
2848 for (ai = aitop; ai; ai = ai->ai_next) {
2849 if (ai->ai_addr == NULL ||
2850 ai->ai_addrlen == 0 ||
2851 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2852 straddr, sizeof(straddr), strport, sizeof(strport),
2853 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2854 goto bad;
2855 }
2856 switch (ai->ai_family) {
2857 case AF_INET:
2858 if (strcmp(strport, "54321") != 0) {
2859 goto bad;
2860 }
2861 if (passive) {
2862 if (strcmp(straddr, "0.0.0.0") != 0) {
2863 goto bad;
2864 }
2865 } else {
2866 if (strcmp(straddr, "127.0.0.1") != 0) {
2867 goto bad;
2868 }
2869 }
2870 inet4++;
2871 break;
2872 case AF_INET6:
2873 if (strcmp(strport, "54321") != 0) {
2874 goto bad;
2875 }
2876 if (passive) {
2877 if (strcmp(straddr, "::") != 0) {
2878 goto bad;
2879 }
2880 } else {
2881 if (strcmp(straddr, "::1") != 0) {
2882 goto bad;
2883 }
2884 }
2885 inet6++;
2886 break;
2887 case AF_UNSPEC:
2888 goto bad;
2889 break;
2890 default:
2891 /* another family support? */
2892 break;
2893 }
2894 }
2895 }
2896
2897 if (!(inet4 == 0 || inet4 == 2))
2898 goto bad;
2899 if (!(inet6 == 0 || inet6 == 2))
2900 goto bad;
2901
2902 if (aitop)
2903 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002904 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002905
2906 bad:
2907 if (aitop)
2908 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002909 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002910}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002911]], ac_cv_buggy_getaddrinfo=no,
2912 ac_cv_buggy_getaddrinfo=yes,
2913 ac_cv_buggy_getaddrinfo=yes))
2914fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002915
Mark Dickinson2df5d282009-12-31 21:22:50 +00002916if test $have_getaddrinfo = no -o "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002917then
2918 if test $ipv6 = yes
2919 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002920 echo 'Fatal: You must get working getaddrinfo() function.'
2921 echo ' or you can specify "--disable-ipv6"'.
2922 exit 1
2923 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002924else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002925 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002926fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002927AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002928
Guido van Rossum627b2d71993-12-24 10:39:16 +00002929# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002930AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002931AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002932AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002933AC_CHECK_MEMBERS([struct stat.st_rdev])
2934AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002935AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002936AC_CHECK_MEMBERS([struct stat.st_gen])
2937AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002938AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002939
2940AC_MSG_CHECKING(for time.h that defines altzone)
2941AC_CACHE_VAL(ac_cv_header_time_altzone,
2942[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2943 ac_cv_header_time_altzone=yes,
2944 ac_cv_header_time_altzone=no)])
2945AC_MSG_RESULT($ac_cv_header_time_altzone)
2946if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002947 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002948fi
2949
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002950was_it_defined=no
2951AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002952AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002953#include <sys/types.h>
2954#include <sys/select.h>
2955#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002956], [;], [
2957 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2958 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2959 (which you can't on SCO ODT 3.0).])
2960 was_it_defined=yes
2961])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002962AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002963
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002964AC_MSG_CHECKING(for addrinfo)
2965AC_CACHE_VAL(ac_cv_struct_addrinfo,
2966AC_TRY_COMPILE([
2967# include <netdb.h>],
2968 [struct addrinfo a],
2969 ac_cv_struct_addrinfo=yes,
2970 ac_cv_struct_addrinfo=no))
2971AC_MSG_RESULT($ac_cv_struct_addrinfo)
2972if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002973 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002974fi
2975
2976AC_MSG_CHECKING(for sockaddr_storage)
2977AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2978AC_TRY_COMPILE([
2979# include <sys/types.h>
2980# include <sys/socket.h>],
2981 [struct sockaddr_storage s],
2982 ac_cv_struct_sockaddr_storage=yes,
2983 ac_cv_struct_sockaddr_storage=no))
2984AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2985if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002986 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002987fi
2988
Guido van Rossum627b2d71993-12-24 10:39:16 +00002989# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002990
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002991AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002992AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002993
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002994works=no
2995AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002996AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2997 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2998)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002999AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003000
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003001works=no
3002AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003003AC_TRY_COMPILE([], [signed char c;], works=yes,
3004 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
3005)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003006AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003007
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003008have_prototypes=no
3009AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003010AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
3011 AC_DEFINE(HAVE_PROTOTYPES, 1,
3012 [Define if your compiler supports function prototype])
3013 have_prototypes=yes
3014])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003015AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003016
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003017works=no
3018AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003019AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003020#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003021int foo(int x, ...) {
3022 va_list va;
3023 va_start(va, x);
3024 va_arg(va, int);
3025 va_arg(va, char *);
3026 va_arg(va, double);
3027 return 0;
3028}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003029], [return foo(10, "", 3.14);], [
3030 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3031 [Define if your compiler supports variable length function prototypes
3032 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3033 works=yes
3034])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003035AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003036
Dave Cole331708b2004-08-09 04:51:41 +00003037# check for socketpair
3038AC_MSG_CHECKING(for socketpair)
3039AC_TRY_COMPILE([
3040#include <sys/types.h>
3041#include <sys/socket.h>
3042], void *x=socketpair,
3043 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3044 AC_MSG_RESULT(yes),
3045 AC_MSG_RESULT(no)
3046)
3047
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003048# check if sockaddr has sa_len member
3049AC_MSG_CHECKING(if sockaddr has sa_len member)
3050AC_TRY_COMPILE([#include <sys/types.h>
3051#include <sys/socket.h>],
3052[struct sockaddr x;
3053x.sa_len = 0;],
3054 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003055 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003056 AC_MSG_RESULT(no))
3057
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003058va_list_is_array=no
3059AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003060AC_TRY_COMPILE([
3061#ifdef HAVE_STDARG_PROTOTYPES
3062#include <stdarg.h>
3063#else
3064#include <varargs.h>
3065#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003066], [va_list list1, list2; list1 = list2;], , [
3067 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3068 va_list_is_array=yes
3069])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003070AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003071
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003072# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003073AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3074 [Define this if you have some version of gethostbyname_r()])
3075
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003076AC_CHECK_FUNC(gethostbyname_r, [
3077 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3078 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3079 OLD_CFLAGS=$CFLAGS
3080 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3081 AC_TRY_COMPILE([
3082# include <netdb.h>
3083 ], [
3084 char *name;
3085 struct hostent *he, *res;
3086 char buffer[2048];
3087 int buflen = 2048;
3088 int h_errnop;
3089
3090 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3091 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003092 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003093 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3094 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003095 AC_MSG_RESULT(yes)
3096 ], [
3097 AC_MSG_RESULT(no)
3098 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3099 AC_TRY_COMPILE([
3100# include <netdb.h>
3101 ], [
3102 char *name;
3103 struct hostent *he;
3104 char buffer[2048];
3105 int buflen = 2048;
3106 int h_errnop;
3107
3108 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3109 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003110 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003111 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3112 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003113 AC_MSG_RESULT(yes)
3114 ], [
3115 AC_MSG_RESULT(no)
3116 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3117 AC_TRY_COMPILE([
3118# include <netdb.h>
3119 ], [
3120 char *name;
3121 struct hostent *he;
3122 struct hostent_data data;
3123
3124 (void) gethostbyname_r(name, he, &data);
3125 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003126 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003127 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3128 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003129 AC_MSG_RESULT(yes)
3130 ], [
3131 AC_MSG_RESULT(no)
3132 ])
3133 ])
3134 ])
3135 CFLAGS=$OLD_CFLAGS
3136], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003137 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003138])
3139AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3140AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3141AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003142AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003143AC_SUBST(HAVE_GETHOSTBYNAME)
3144
Guido van Rossum627b2d71993-12-24 10:39:16 +00003145# checks for system services
3146# (none yet)
3147
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003148# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003149AC_CHECK_FUNC(__fpu_control,
3150 [],
3151 [AC_CHECK_LIB(ieee, __fpu_control)
3152])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003153
Guido van Rossum93274221997-05-09 02:42:00 +00003154# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003155AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003156AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003157 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3158[
Guido van Rossum93274221997-05-09 02:42:00 +00003159if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003160then
3161 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3162 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3163 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003164else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003165fi],
3166[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003167
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003168# check for --with-libm=...
3169AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003170case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003171Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003172*) LIBM=-lm
3173esac
Guido van Rossum93274221997-05-09 02:42:00 +00003174AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003175AC_ARG_WITH(libm,
3176 AC_HELP_STRING(--with-libm=STRING, math library),
3177[
Guido van Rossum93274221997-05-09 02:42:00 +00003178if test "$withval" = no
3179then LIBM=
3180 AC_MSG_RESULT(force LIBM empty)
3181elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003182then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003183 AC_MSG_RESULT(set LIBM="$withval")
3184else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003185fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003186[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003187
3188# check for --with-libc=...
3189AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003190AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003191AC_ARG_WITH(libc,
3192 AC_HELP_STRING(--with-libc=STRING, C library),
3193[
Guido van Rossum93274221997-05-09 02:42:00 +00003194if test "$withval" = no
3195then LIBC=
3196 AC_MSG_RESULT(force LIBC empty)
3197elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003198then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003199 AC_MSG_RESULT(set LIBC="$withval")
3200else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003201fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003202[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003203
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003204# **************************************************
3205# * Check for various properties of floating point *
3206# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003207
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003208AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3209AC_CACHE_VAL(ac_cv_little_endian_double, [
3210AC_TRY_RUN([
3211#include <string.h>
3212int main() {
3213 double x = 9006104071832581.0;
3214 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3215 return 0;
3216 else
3217 return 1;
3218}
3219],
3220ac_cv_little_endian_double=yes,
3221ac_cv_little_endian_double=no,
3222ac_cv_little_endian_double=no)])
3223AC_MSG_RESULT($ac_cv_little_endian_double)
3224if test "$ac_cv_little_endian_double" = yes
3225then
3226 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3227 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3228 with the least significant byte first])
3229fi
3230
3231AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3232AC_CACHE_VAL(ac_cv_big_endian_double, [
3233AC_TRY_RUN([
3234#include <string.h>
3235int main() {
3236 double x = 9006104071832581.0;
3237 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3238 return 0;
3239 else
3240 return 1;
3241}
3242],
3243ac_cv_big_endian_double=yes,
3244ac_cv_big_endian_double=no,
3245ac_cv_big_endian_double=no)])
3246AC_MSG_RESULT($ac_cv_big_endian_double)
3247if test "$ac_cv_big_endian_double" = yes
3248then
3249 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3250 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3251 with the most significant byte first])
3252fi
3253
3254# Some ARM platforms use a mixed-endian representation for doubles.
3255# While Python doesn't currently have full support for these platforms
3256# (see e.g., issue 1762561), we can at least make sure that float <-> string
3257# conversions work.
3258AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3259AC_CACHE_VAL(ac_cv_mixed_endian_double, [
3260AC_TRY_RUN([
3261#include <string.h>
3262int main() {
3263 double x = 9006104071832581.0;
3264 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3265 return 0;
3266 else
3267 return 1;
3268}
3269],
3270ac_cv_mixed_endian_double=yes,
3271ac_cv_mixed_endian_double=no,
3272ac_cv_mixed_endian_double=no)])
3273AC_MSG_RESULT($ac_cv_mixed_endian_double)
3274if test "$ac_cv_mixed_endian_double" = yes
3275then
3276 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3277 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3278 in ARM mixed-endian order (byte order 45670123)])
3279fi
3280
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003281# The short float repr introduced in Python 3.1 requires the
3282# correctly-rounded string <-> double conversion functions from
3283# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3284# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003285# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003286# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003287
3288# This inline assembler syntax may also work for suncc and icc,
3289# so we try it on all platforms.
3290
3291AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
3292AC_TRY_COMPILE([], [
3293 unsigned short cw;
3294 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3295 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
3296],
3297[have_gcc_asm_for_x87=yes], [have_gcc_asm_for_x87=no])
3298AC_MSG_RESULT($have_gcc_asm_for_x87)
3299if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003300then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003301 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3302 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003303fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003304
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003305# Detect whether system arithmetic is subject to x87-style double
3306# rounding issues. The result of this test has little meaning on non
3307# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3308# mode is round-to-nearest and double rounding issues are present, and
3309# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3310AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003311# $BASECFLAGS may affect the result
3312ac_save_cc="$CC"
3313CC="$CC $BASECFLAGS"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003314AC_TRY_RUN([
3315#include <stdlib.h>
3316#include <math.h>
3317int main() {
3318 volatile double x, y, z;
3319 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3320 x = 0.99999999999999989; /* 1-2**-53 */
3321 y = 1./x;
3322 if (y != 1.)
3323 exit(0);
3324 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3325 x = 1e16;
3326 y = 2.99999;
3327 z = x + y;
3328 if (z != 1e16+4.)
3329 exit(0);
3330 /* both tests show evidence of double rounding */
3331 exit(1);
3332}
3333],
3334ac_cv_x87_double_rounding=no,
3335ac_cv_x87_double_rounding=yes,
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003336ac_cv_x87_double_rounding=no)
3337CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003338AC_MSG_RESULT($ac_cv_x87_double_rounding)
3339if test "$ac_cv_x87_double_rounding" = yes
3340then
3341 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3342 [Define if arithmetic is subject to x87-style double rounding issue])
3343fi
3344
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003345# ************************************
3346# * Check for mathematical functions *
3347# ************************************
3348
3349LIBS_SAVE=$LIBS
3350LIBS="$LIBS $LIBM"
3351
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003352# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3353# -0. on some architectures.
3354AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3355AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3356AC_TRY_RUN([
3357#include <math.h>
3358#include <stdlib.h>
3359int main() {
3360 /* return 0 if either negative zeros don't exist
3361 on this platform or if negative zeros exist
3362 and tanh(-0.) == -0. */
3363 if (atan2(0., -1.) == atan2(-0., -1.) ||
3364 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3365 else exit(1);
3366}
3367],
3368ac_cv_tanh_preserves_zero_sign=yes,
3369ac_cv_tanh_preserves_zero_sign=no,
3370ac_cv_tanh_preserves_zero_sign=no)])
3371AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3372if test "$ac_cv_tanh_preserves_zero_sign" = yes
3373then
3374 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3375 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3376fi
3377
Mark Dickinson9c113362009-09-05 10:36:23 +00003378AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
3379AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003380AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes99170a52007-12-19 02:07:34 +00003381
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003382LIBS=$LIBS_SAVE
3383
Mark Dickinsona614f042009-11-28 12:48:43 +00003384# For multiprocessing module, check that sem_open
3385# actually works. For FreeBSD versions <= 7.2,
3386# the kernel module that provides POSIX semaphores
3387# isn't loaded by default, so an attempt to call
3388# sem_open results in a 'Signal 12' error.
3389AC_MSG_CHECKING(whether POSIX semaphores are enabled)
3390AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
3391AC_TRY_RUN([
3392#include <unistd.h>
3393#include <fcntl.h>
3394#include <stdio.h>
3395#include <semaphore.h>
3396#include <sys/stat.h>
3397
3398int main(void) {
3399 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3400 if (a == SEM_FAILED) {
3401 perror("sem_open");
3402 return 1;
3403 }
3404 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003405 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00003406 return 0;
3407}
3408], ac_cv_posix_semaphores_enabled=yes,
3409 ac_cv_posix_semaphores_enabled=no,
3410 ac_cv_posix_semaphores_enabled=yes)
3411)
3412AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
3413if test $ac_cv_posix_semaphores_enabled = no
3414then
3415 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
3416 [Define if POSIX semaphores aren't enabled on your system])
3417fi
3418
Mark Dickinson10683072009-04-18 21:18:19 +00003419# Multiprocessing check for broken sem_getvalue
3420AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003421AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Mark Dickinson10683072009-04-18 21:18:19 +00003422AC_TRY_RUN([
3423#include <unistd.h>
3424#include <fcntl.h>
3425#include <stdio.h>
3426#include <semaphore.h>
3427#include <sys/stat.h>
3428
3429int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00003430 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00003431 int count;
3432 int res;
3433 if(a==SEM_FAILED){
3434 perror("sem_open");
3435 return 1;
3436
3437 }
3438 res = sem_getvalue(a, &count);
3439 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003440 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00003441 return res==-1 ? 1 : 0;
3442}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003443], ac_cv_broken_sem_getvalue=no,
3444 ac_cv_broken_sem_getvalue=yes,
3445 ac_cv_broken_sem_getvalue=yes)
Mark Dickinson10683072009-04-18 21:18:19 +00003446)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003447AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3448if test $ac_cv_broken_sem_getvalue = yes
3449then
3450 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3451 [define to 1 if your sem_getvalue is broken.])
3452fi
Mark Dickinson10683072009-04-18 21:18:19 +00003453
Mark Dickinsonbd792642009-03-18 20:06:12 +00003454# determine what size digit to use for Python's longs
3455AC_MSG_CHECKING([digit size for Python's longs])
3456AC_ARG_ENABLE(big-digits,
3457AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3458[case $enable_big_digits in
3459yes)
3460 enable_big_digits=30 ;;
3461no)
3462 enable_big_digits=15 ;;
3463[15|30])
3464 ;;
3465*)
3466 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3467esac
3468AC_MSG_RESULT($enable_big_digits)
3469AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3470],
3471[AC_MSG_RESULT(no value specified)])
3472
Guido van Rossumef2255b2000-03-10 22:30:29 +00003473# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003474AC_CHECK_HEADER(wchar.h, [
3475 AC_DEFINE(HAVE_WCHAR_H, 1,
3476 [Define if the compiler provides a wchar.h header file.])
3477 wchar_h="yes"
3478],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003479wchar_h="no"
3480)
3481
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003482# determine wchar_t size
3483if test "$wchar_h" = yes
3484then
Guido van Rossum67b26592001-10-20 14:21:45 +00003485 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003486fi
3487
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003488AC_MSG_CHECKING(for UCS-4 tcl)
3489have_ucs4_tcl=no
3490AC_TRY_COMPILE([
3491#include <tcl.h>
3492#if TCL_UTF_MAX != 6
3493# error "NOT UCS4_TCL"
3494#endif], [], [
3495 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3496 have_ucs4_tcl=yes
3497])
3498AC_MSG_RESULT($have_ucs4_tcl)
3499
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003500# check whether wchar_t is signed or not
3501if test "$wchar_h" = yes
3502then
3503 # check whether wchar_t is signed or not
3504 AC_MSG_CHECKING(whether wchar_t is signed)
3505 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3506 AC_TRY_RUN([
3507 #include <wchar.h>
3508 int main()
3509 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003510 /* Success: exit code 0 */
3511 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003512 }
3513 ],
3514 ac_cv_wchar_t_signed=yes,
3515 ac_cv_wchar_t_signed=no,
3516 ac_cv_wchar_t_signed=yes)])
3517 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3518fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003519
Georg Brandl52d168a2008-01-07 18:10:24 +00003520AC_MSG_CHECKING(what type to use for str)
3521AC_ARG_WITH(wide-unicode,
3522 AC_HELP_STRING(--with-wide-unicode, Use 4-byte Unicode characters (default is 2 bytes)),
3523[
3524if test "$withval" != no
3525then unicode_size="4"
3526else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003527fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003528],
3529[
3530case "$have_ucs4_tcl" in
3531 yes) unicode_size="4" ;;
3532 *) unicode_size="2" ;;
3533esac
3534])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003535
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003536AH_TEMPLATE(Py_UNICODE_SIZE,
3537 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003538case "$unicode_size" in
3539 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3540 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003541esac
3542
Martin v. Löwis11437992002-04-12 09:54:03 +00003543AH_TEMPLATE(PY_UNICODE_TYPE,
3544 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003545
Georg Brandl52d168a2008-01-07 18:10:24 +00003546# wchar_t is only usable if it maps to an unsigned type
3547if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003548 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003549then
3550 PY_UNICODE_TYPE="wchar_t"
3551 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3552 [Define if you have a useable wchar_t type defined in wchar.h; useable
3553 means wchar_t must be an unsigned type with at least 16 bits. (see
3554 Include/unicodeobject.h).])
3555 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3556elif test "$ac_cv_sizeof_short" = "$unicode_size"
3557then
3558 PY_UNICODE_TYPE="unsigned short"
3559 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3560elif test "$ac_cv_sizeof_long" = "$unicode_size"
3561then
3562 PY_UNICODE_TYPE="unsigned long"
3563 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3564else
3565 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003566fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003567AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003568
3569# check for endianness
3570AC_C_BIGENDIAN
3571
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003572# Check whether right shifting a negative integer extends the sign bit
3573# or fills with zeros (like the Cray J90, according to Tim Peters).
3574AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003575AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003576AC_TRY_RUN([
3577int main()
3578{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003579 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003580}
Guido van Rossum3065c942001-09-17 04:03:14 +00003581],
3582ac_cv_rshift_extends_sign=yes,
3583ac_cv_rshift_extends_sign=no,
3584ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003585AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3586if test "$ac_cv_rshift_extends_sign" = no
3587then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003588 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3589 [Define if i>>j for signed int i does not extend the sign bit
3590 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003591fi
3592
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003593# check for getc_unlocked and related locking functions
3594AC_MSG_CHECKING(for getc_unlocked() and friends)
3595AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3596AC_TRY_LINK([#include <stdio.h>],[
3597 FILE *f = fopen("/dev/null", "r");
3598 flockfile(f);
3599 getc_unlocked(f);
3600 funlockfile(f);
3601], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3602AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3603if test "$ac_cv_have_getc_unlocked" = yes
3604then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003605 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3606 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003607fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003608
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003609# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003610# save the value of LIBS so we don't actually link Python with readline
3611LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003612
3613# On some systems we need to link readline to a termcap compatible
3614# library. NOTE: Keep the precedence of listed libraries synchronised
3615# with setup.py.
3616py_cv_lib_readline=no
3617AC_MSG_CHECKING([how to link readline libs])
3618for py_libtermcap in "" ncursesw ncurses curses termcap; do
3619 if test -z "$py_libtermcap"; then
3620 READLINE_LIBS="-lreadline"
3621 else
3622 READLINE_LIBS="-lreadline -l$py_libtermcap"
3623 fi
3624 LIBS="$READLINE_LIBS $LIBS_no_readline"
3625 AC_LINK_IFELSE(
3626 [AC_LANG_CALL([],[readline])],
3627 [py_cv_lib_readline=yes])
3628 if test $py_cv_lib_readline = yes; then
3629 break
3630 fi
3631done
3632# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3633#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003634if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003635 AC_MSG_RESULT([none])
3636else
3637 AC_MSG_RESULT([$READLINE_LIBS])
3638 AC_DEFINE(HAVE_LIBREADLINE, 1,
3639 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003640fi
3641
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003642# check for readline 2.1
3643AC_CHECK_LIB(readline, rl_callback_handler_install,
3644 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003645 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003646
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003647# check for readline 2.2
3648AC_TRY_CPP([#include <readline/readline.h>],
3649have_readline=yes, have_readline=no)
3650if test $have_readline = yes
3651then
3652 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3653 [readline/readline.h],
3654 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3655 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00003656 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3657 [readline/readline.h],
3658 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3659 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003660fi
3661
Martin v. Löwis0daad592001-09-30 21:09:59 +00003662# check for readline 4.0
3663AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003664 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003665 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003666
Thomas Wouters89d996e2007-09-08 17:39:28 +00003667# also in 4.0
3668AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3669 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003670 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003671
Guido van Rossum353ae582001-07-10 16:45:32 +00003672# check for readline 4.2
3673AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003674 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003675 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003676
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003677# also in readline 4.2
3678AC_TRY_CPP([#include <readline/readline.h>],
3679have_readline=yes, have_readline=no)
3680if test $have_readline = yes
3681then
3682 AC_EGREP_HEADER([extern int rl_catch_signals;],
3683 [readline/readline.h],
3684 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3685 [Define if you can turn off readline's signal handling.]), )
3686fi
3687
Martin v. Löwis82bca632006-02-10 20:49:30 +00003688# End of readline checks: restore LIBS
3689LIBS=$LIBS_no_readline
3690
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003691AC_MSG_CHECKING(for broken nice())
3692AC_CACHE_VAL(ac_cv_broken_nice, [
3693AC_TRY_RUN([
3694int main()
3695{
3696 int val1 = nice(1);
3697 if (val1 != -1 && val1 == nice(2))
3698 exit(0);
3699 exit(1);
3700}
Guido van Rossum3065c942001-09-17 04:03:14 +00003701],
3702ac_cv_broken_nice=yes,
3703ac_cv_broken_nice=no,
3704ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003705AC_MSG_RESULT($ac_cv_broken_nice)
3706if test "$ac_cv_broken_nice" = yes
3707then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003708 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3709 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003710fi
3711
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003712AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003713AC_CACHE_VAL(ac_cv_broken_poll,
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003714AC_TRY_RUN([
3715#include <poll.h>
3716
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003717int main()
3718{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003719 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003720 int poll_test;
3721
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003722 close (42);
3723
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003724 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003725 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003726 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003727 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003728 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003729 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003730 return 1;
3731}
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003732],
3733ac_cv_broken_poll=yes,
3734ac_cv_broken_poll=no,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003735ac_cv_broken_poll=no))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003736AC_MSG_RESULT($ac_cv_broken_poll)
3737if test "$ac_cv_broken_poll" = yes
3738then
3739 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3740 [Define if poll() sets errno on invalid file descriptors.])
3741fi
3742
Brett Cannon43802422005-02-10 20:48:03 +00003743# Before we can test tzset, we need to check if struct tm has a tm_zone
3744# (which is not required by ISO C or UNIX spec) and/or if we support
3745# tzname[]
3746AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003747
Brett Cannon43802422005-02-10 20:48:03 +00003748# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003749AC_MSG_CHECKING(for working tzset())
3750AC_CACHE_VAL(ac_cv_working_tzset, [
3751AC_TRY_RUN([
3752#include <stdlib.h>
3753#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003754#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003755
3756#if HAVE_TZNAME
3757extern char *tzname[];
3758#endif
3759
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003760int main()
3761{
Brett Cannon18367812003-09-19 00:59:16 +00003762 /* Note that we need to ensure that not only does tzset(3)
3763 do 'something' with localtime, but it works as documented
3764 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003765 This includes making sure that tzname is set properly if
3766 tm->tm_zone does not exist since it is the alternative way
3767 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003768
3769 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003770 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003771 */
3772
Brett Cannon43802422005-02-10 20:48:03 +00003773 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003774 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3775
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003776 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003777 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003778 if (localtime(&groundhogday)->tm_hour != 0)
3779 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003780#if HAVE_TZNAME
3781 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3782 if (strcmp(tzname[0], "UTC") ||
3783 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3784 exit(1);
3785#endif
Brett Cannon18367812003-09-19 00:59:16 +00003786
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003787 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003788 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003789 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003790 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003791#if HAVE_TZNAME
3792 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3793 exit(1);
3794#endif
Brett Cannon18367812003-09-19 00:59:16 +00003795
3796 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3797 tzset();
3798 if (localtime(&groundhogday)->tm_hour != 11)
3799 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003800#if HAVE_TZNAME
3801 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3802 exit(1);
3803#endif
3804
3805#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003806 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3807 exit(1);
3808 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3809 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003810#endif
Brett Cannon18367812003-09-19 00:59:16 +00003811
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003812 exit(0);
3813}
3814],
3815ac_cv_working_tzset=yes,
3816ac_cv_working_tzset=no,
3817ac_cv_working_tzset=no)])
3818AC_MSG_RESULT($ac_cv_working_tzset)
3819if test "$ac_cv_working_tzset" = yes
3820then
3821 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3822 [Define if tzset() actually switches the local timezone in a meaningful way.])
3823fi
3824
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003825# Look for subsecond timestamps in struct stat
3826AC_MSG_CHECKING(for tv_nsec in struct stat)
3827AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3828AC_TRY_COMPILE([#include <sys/stat.h>], [
3829struct stat st;
3830st.st_mtim.tv_nsec = 1;
3831],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003832ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003833ac_cv_stat_tv_nsec=no,
3834ac_cv_stat_tv_nsec=no))
3835AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3836if test "$ac_cv_stat_tv_nsec" = yes
3837then
3838 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3839 [Define if you have struct stat.st_mtim.tv_nsec])
3840fi
3841
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003842# Look for BSD style subsecond timestamps in struct stat
3843AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3844AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3845AC_TRY_COMPILE([#include <sys/stat.h>], [
3846struct stat st;
3847st.st_mtimespec.tv_nsec = 1;
3848],
3849ac_cv_stat_tv_nsec2=yes,
3850ac_cv_stat_tv_nsec2=no,
3851ac_cv_stat_tv_nsec2=no))
3852AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3853if test "$ac_cv_stat_tv_nsec2" = yes
3854then
3855 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3856 [Define if you have struct stat.st_mtimensec])
3857fi
3858
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003859# On HP/UX 11.0, mvwdelch is a block with a return statement
3860AC_MSG_CHECKING(whether mvwdelch is an expression)
3861AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3862AC_TRY_COMPILE([#include <curses.h>], [
3863 int rtn;
3864 rtn = mvwdelch(0,0,0);
3865], ac_cv_mvwdelch_is_expression=yes,
3866 ac_cv_mvwdelch_is_expression=no,
3867 ac_cv_mvwdelch_is_expression=yes))
3868AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3869
3870if test "$ac_cv_mvwdelch_is_expression" = yes
3871then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003872 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3873 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003874fi
3875
3876AC_MSG_CHECKING(whether WINDOW has _flags)
3877AC_CACHE_VAL(ac_cv_window_has_flags,
3878AC_TRY_COMPILE([#include <curses.h>], [
3879 WINDOW *w;
3880 w->_flags = 0;
3881], ac_cv_window_has_flags=yes,
3882 ac_cv_window_has_flags=no,
3883 ac_cv_window_has_flags=no))
3884AC_MSG_RESULT($ac_cv_window_has_flags)
3885
3886
3887if test "$ac_cv_window_has_flags" = yes
3888then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003889 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3890 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003891fi
3892
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003893AC_MSG_CHECKING(for is_term_resized)
3894AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3895 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3896 AC_MSG_RESULT(yes),
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003897 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003898)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003899
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003900AC_MSG_CHECKING(for resize_term)
3901AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3902 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3903 AC_MSG_RESULT(yes),
Neal Norwitz865400f2003-03-21 01:42:58 +00003904 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003905)
3906
3907AC_MSG_CHECKING(for resizeterm)
3908AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3909 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3910 AC_MSG_RESULT(yes),
3911 AC_MSG_RESULT(no)
3912)
3913
Thomas Wouters89f507f2006-12-13 04:49:30 +00003914AC_MSG_CHECKING(for /dev/ptmx)
3915
3916if test -r /dev/ptmx
3917then
3918 AC_MSG_RESULT(yes)
3919 AC_DEFINE(HAVE_DEV_PTMX, 1,
3920 [Define if we have /dev/ptmx.])
3921else
3922 AC_MSG_RESULT(no)
3923fi
3924
3925AC_MSG_CHECKING(for /dev/ptc)
3926
3927if test -r /dev/ptc
3928then
3929 AC_MSG_RESULT(yes)
3930 AC_DEFINE(HAVE_DEV_PTC, 1,
3931 [Define if we have /dev/ptc.])
3932else
3933 AC_MSG_RESULT(no)
3934fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003935
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003936if test "$have_long_long" = yes
3937then
3938 AC_MSG_CHECKING(for %lld and %llu printf() format support)
3939 AC_CACHE_VAL(ac_cv_have_long_long_format,
3940 AC_TRY_RUN([[
3941 #include <stdio.h>
3942 #include <stddef.h>
3943 #include <string.h>
3944
3945 #ifdef HAVE_SYS_TYPES_H
3946 #include <sys/types.h>
3947 #endif
3948
3949 int main()
3950 {
3951 char buffer[256];
3952
3953 if (sprintf(buffer, "%lld", (long long)123) < 0)
3954 return 1;
3955 if (strcmp(buffer, "123"))
3956 return 1;
3957
3958 if (sprintf(buffer, "%lld", (long long)-123) < 0)
3959 return 1;
3960 if (strcmp(buffer, "-123"))
3961 return 1;
3962
3963 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
3964 return 1;
3965 if (strcmp(buffer, "123"))
3966 return 1;
3967
3968 return 0;
3969 }
3970 ]], ac_cv_have_long_long_format=yes,
3971 ac_cv_have_long_long_format=no,
3972 ac_cv_have_long_long_format=no)
3973 )
3974 AC_MSG_RESULT($ac_cv_have_long_long_format)
3975fi
3976
Mark Dickinson89d7d412009-12-31 20:50:59 +00003977if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003978then
3979 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
3980 [Define to printf format modifier for long long type])
3981fi
3982
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00003983if test $ac_sys_system = Darwin
3984then
3985 LIBS="$LIBS -framework CoreFoundation"
3986fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003987
Benjamin Peterson8f326b22009-12-13 02:10:36 +00003988AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
3989AC_TRY_RUN([
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00003990#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00003991#include <stddef.h>
3992#include <string.h>
3993
Christian Heimes2c181612007-12-17 20:04:13 +00003994#ifdef HAVE_SYS_TYPES_H
3995#include <sys/types.h>
3996#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00003997
3998#ifdef HAVE_SSIZE_T
3999typedef ssize_t Py_ssize_t;
4000#elif SIZEOF_VOID_P == SIZEOF_LONG
4001typedef long Py_ssize_t;
4002#else
4003typedef int Py_ssize_t;
4004#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00004005
Christian Heimes2c181612007-12-17 20:04:13 +00004006int main()
4007{
4008 char buffer[256];
4009
Thomas Wouters477c8d52006-05-27 19:21:47 +00004010 if(sprintf(buffer, "%zd", (size_t)123) < 0)
4011 return 1;
4012
Thomas Wouters89f507f2006-12-13 04:49:30 +00004013 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00004014 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00004015
4016 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
4017 return 1;
4018
4019 if (strcmp(buffer, "-123"))
4020 return 1;
4021
Thomas Wouters477c8d52006-05-27 19:21:47 +00004022 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004023}
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004024], ac_cv_have_size_t_format=yes,
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00004025 ac_cv_have_size_t_format=no,
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004026 [ac_cv_have_size_t_format="cross -- assuming yes"]
4027)])
4028if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004029 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
4030 [Define to printf format modifier for Py_ssize_t])
4031fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00004032
Martin v. Löwis01c04012002-11-11 14:58:44 +00004033AC_CHECK_TYPE(socklen_t,,
4034 AC_DEFINE(socklen_t,int,
4035 Define to `int' if <sys/socket.h> does not define.),[
4036#ifdef HAVE_SYS_TYPES_H
4037#include <sys/types.h>
4038#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00004039#ifdef HAVE_SYS_SOCKET_H
4040#include <sys/socket.h>
4041#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00004042])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004043
Antoine Pitroufff95302008-09-03 18:58:51 +00004044AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004045AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Antoine Pitroufff95302008-09-03 18:58:51 +00004046AC_TRY_RUN([
4047#include<stdlib.h>
4048int main() {
4049 size_t len = -1;
4050 const char *str = "text";
4051 len = mbstowcs(NULL, str, 0);
4052 return (len != 4);
4053}
4054],
4055ac_cv_broken_mbstowcs=no,
4056ac_cv_broken_mbstowcs=yes,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004057ac_cv_broken_mbstowcs=no))
Antoine Pitroufff95302008-09-03 18:58:51 +00004058AC_MSG_RESULT($ac_cv_broken_mbstowcs)
4059if test "$ac_cv_broken_mbstowcs" = yes
4060then
4061 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
4062 [Define if mbstowcs(NULL, "text", 0) does not return the number of
4063 wide chars that would be converted.])
4064fi
4065
Antoine Pitroub52ec782009-01-25 16:34:23 +00004066# Check for --with-computed-gotos
4067AC_MSG_CHECKING(for --with-computed-gotos)
4068AC_ARG_WITH(computed-gotos,
4069 AC_HELP_STRING(--with-computed-gotos,
4070 Use computed gotos / threaded dispatch in evaluation loop (not available on all compilers)),
4071[
4072if test "$withval" != no
4073then
4074 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
4075 [Define if you want to use computed gotos in ceval.c.])
4076 AC_MSG_RESULT(yes)
4077else AC_MSG_RESULT(no)
4078fi],
4079[AC_MSG_RESULT(no)])
4080
4081
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004082AC_SUBST(THREADHEADERS)
4083
4084for h in `(cd $srcdir;echo Python/thread_*.h)`
4085do
4086 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4087done
4088
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004089AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00004090SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004091AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004092for dir in $SRCDIRS; do
4093 if test ! -d $dir; then
4094 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004095 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004096done
4097AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004098
Guido van Rossum627b2d71993-12-24 10:39:16 +00004099# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00004100AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00004101AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004102
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004103echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004104if test ! -f Modules/Setup
4105then
4106 cp $srcdir/Modules/Setup.dist Modules/Setup
4107fi
4108
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004109echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004110if test ! -f Modules/Setup.local
4111then
4112 echo "# Edit this file for local setup changes" >Modules/Setup.local
4113fi
4114
4115echo "creating Makefile"
4116$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4117 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004118 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00004119mv config.c Modules