blob: 4cc349113984509bb7d5e6e2cffa823ae17517d7 [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;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000322 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
323 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
324 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000325 AIX/4)
326 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000327 AIX/5)
328 if test `uname -r` -eq 1; then
329 define_xopen_source=no
330 fi
331 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000332 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
333 # defining NI_NUMERICHOST.
334 QNX/6.3.2)
335 define_xopen_source=no
336 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000337
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000338esac
339
340if test $define_xopen_source = yes
341then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000342 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
343 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000344 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
345 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000346 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000347 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000348 AC_DEFINE(_XOPEN_SOURCE, 500,
349 Define to the level of X/Open that your system supports)
350 ;;
351 *)
352 AC_DEFINE(_XOPEN_SOURCE, 600,
353 Define to the level of X/Open that your system supports)
354 ;;
355 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000356
357 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
358 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
359 # several APIs are not declared. Since this is also needed in some
360 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000361 # except for Solaris 10, where it must not be defined,
362 # as it implies XPG4.2
363 case $ac_sys_system/$ac_sys_release in
364 SunOS/5.10)
365 ;;
366 *)
367 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
368 Define to activate Unix95-and-earlier features)
369 ;;
370 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000371
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000372 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
373
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000374fi
375
Guido van Rossum91922671997-10-09 20:24:13 +0000376#
377# SGI compilers allow the specification of the both the ABI and the
378# ISA on the command line. Depending on the values of these switches,
379# different and often incompatable code will be generated.
380#
381# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
382# thus supply support for various ABI/ISA combinations. The MACHDEP
383# variable is also adjusted.
384#
385AC_SUBST(SGI_ABI)
386if test ! -z "$SGI_ABI"
387then
388 CC="cc $SGI_ABI"
389 LDFLAGS="$SGI_ABI $LDFLAGS"
390 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
391fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000392AC_MSG_RESULT($MACHDEP)
393
Jack Jansen6b08a402004-06-03 12:41:45 +0000394# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
395# it may influence the way we can build extensions, so distutils
396# needs to check it
397AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000398AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000399CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000400EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000401
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000402AC_MSG_CHECKING(machine type as reported by uname -m)
403ac_sys_machine=`uname -m`
404AC_MSG_RESULT($ac_sys_machine)
405
Guido van Rossum627b2d71993-12-24 10:39:16 +0000406# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000407
408# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
409# for debug/optimization stuff. BASECFLAGS is for flags that are required
410# just to get things to compile and link. Users are free to override OPT
411# when running configure or make. The build should not break if they do.
412# BASECFLAGS should generally not be messed with, however.
413
414# XXX shouldn't some/most/all of this code be merged with the stuff later
415# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000416AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000417AC_ARG_WITH(gcc,
418 AC_HELP_STRING(--without-gcc,never use gcc),
419[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000420 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000421 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000422 without_gcc=yes;;
423 yes) CC=gcc
424 without_gcc=no;;
425 *) CC=$withval
426 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000427 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000428 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000429 AIX*) CC=cc_r
430 without_gcc=;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000431 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000432 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000433AC_MSG_RESULT($without_gcc)
434
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000435# If the user switches compilers, we can't believe the cache
436if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
437then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000438 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
439(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000440fi
441
Guido van Rossum627b2d71993-12-24 10:39:16 +0000442AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000443
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000444AC_SUBST(CXX)
445AC_SUBST(MAINCC)
446AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
447AC_ARG_WITH(cxx_main,
448 AC_HELP_STRING([--with-cxx-main=<compiler>],
449 [compile main() and link python executable with C++ compiler]),
450[
451
452 case $withval in
453 no) with_cxx_main=no
454 MAINCC='$(CC)';;
455 yes) with_cxx_main=yes
456 MAINCC='$(CXX)';;
457 *) with_cxx_main=yes
458 MAINCC=$withval
459 if test -z "$CXX"
460 then
461 CXX=$withval
462 fi;;
463 esac], [
464 with_cxx_main=no
465 MAINCC='$(CC)'
466])
467AC_MSG_RESULT($with_cxx_main)
468
469preset_cxx="$CXX"
470if test -z "$CXX"
471then
472 case "$CC" in
473 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
474 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
475 esac
476 if test "$CXX" = "notfound"
477 then
478 CXX=""
479 fi
480fi
481if test -z "$CXX"
482then
483 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
484 if test "$CXX" = "notfound"
485 then
486 CXX=""
487 fi
488fi
489if test "$preset_cxx" != "$CXX"
490then
491 AC_MSG_WARN([
492
493 By default, distutils will build C++ extension modules with "$CXX".
494 If this is not intended, then set CXX on the configure command line.
495 ])
496fi
497
498
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000499# checks for UNIX variants that set C preprocessor variables
500AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000501
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000502# Check for unsupported systems
503case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000504atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000505 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
506 echo See README for details.
507 exit 1;;
508esac
509
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000510AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000511AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000512AC_ARG_WITH(suffix,
513 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
514[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000515 case $withval in
516 no) EXEEXT=;;
517 yes) EXEEXT=.exe;;
518 *) EXEEXT=$withval;;
519 esac])
520AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000521
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000522# Test whether we're running on a non-case-sensitive system, in which
523# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000524AC_SUBST(BUILDEXEEXT)
525AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000526if test ! -d CaseSensitiveTestDir; then
527mkdir CaseSensitiveTestDir
528fi
529
530if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000531then
Jack Jansen1999ef42001-12-06 21:47:20 +0000532 AC_MSG_RESULT(yes)
533 BUILDEXEEXT=.exe
534else
535 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000536 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000537fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000538rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000539
Guido van Rossumdd997f71998-10-07 19:58:26 +0000540case $MACHDEP in
541bsdos*)
542 case $CC in
543 gcc) CC="$CC -D_HAVE_BSDI";;
544 esac;;
545esac
546
Guido van Rossum84561611997-08-21 00:08:11 +0000547case $ac_sys_system in
548hp*|HP*)
549 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000550 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000551 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000552SunOS*)
553 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000554 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000555 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000556esac
557
Martin v. Löwise8964d42001-03-06 12:09:07 +0000558
Neil Schemenauer61c51152001-01-26 16:18:16 +0000559AC_SUBST(LIBRARY)
560AC_MSG_CHECKING(LIBRARY)
561if test -z "$LIBRARY"
562then
563 LIBRARY='libpython$(VERSION).a'
564fi
565AC_MSG_RESULT($LIBRARY)
566
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000567# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000568# name of the library into which to insert object files). BLDLIBRARY is also
569# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
570# is blank as the main program is not linked directly against LDLIBRARY.
571# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
572# systems without shared libraries, LDLIBRARY is the same as LIBRARY
573# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
574# DLLLIBRARY is the shared (i.e., DLL) library.
575#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000576# RUNSHARED is used to run shared python without installed libraries
577#
578# INSTSONAME is the name of the shared library that will be use to install
579# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000580AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000581AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000582AC_SUBST(BLDLIBRARY)
583AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000584AC_SUBST(INSTSONAME)
585AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000586LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000587BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000588INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000589DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000590LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000591RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000592
Guido van Rossumfb842551997-08-06 23:42:07 +0000593# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000594# If CXX is set, and if it is needed to link a main function that was
595# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
596# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000597# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000598# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000599AC_SUBST(LINKCC)
600AC_MSG_CHECKING(LINKCC)
601if test -z "$LINKCC"
602then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000603 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000604 case $ac_sys_system in
605 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000606 exp_extra="\"\""
607 if test $ac_sys_release -ge 5 -o \
608 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
609 exp_extra="."
610 fi
611 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000612 QNX*)
613 # qcc must be used because the other compilers do not
614 # support -N.
615 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000616 esac
617fi
618AC_MSG_RESULT($LINKCC)
619
Tarek Ziadébe720e02009-05-09 11:55:12 +0000620# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
621# make sure we default having it set to "no": this is used by
622# distutils.unixccompiler to know if it should add --enable-new-dtags
623# to linker command lines, and failing to detect GNU ld simply results
624# in the same bahaviour as before.
625AC_SUBST(GNULD)
626AC_MSG_CHECKING(for GNU ld)
627ac_prog=ld
628if test "$GCC" = yes; then
629 ac_prog=`$CC -print-prog-name=ld`
630fi
631case `"$ac_prog" -V 2>&1 < /dev/null` in
632 *GNU*)
633 GNULD=yes;;
634 *)
635 GNULD=no;;
636esac
637AC_MSG_RESULT($GNULD)
638
Martin v. Löwis1142de32002-03-29 16:28:31 +0000639AC_MSG_CHECKING(for --enable-shared)
640AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000641 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000642
Martin v. Löwis1142de32002-03-29 16:28:31 +0000643if test -z "$enable_shared"
644then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000645 case $ac_sys_system in
Antoine Pitrou6103ab12009-10-24 20:11:21 +0000646 CYGWIN*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000647 enable_shared="yes";;
648 *)
649 enable_shared="no";;
650 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000651fi
652AC_MSG_RESULT($enable_shared)
653
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000654AC_MSG_CHECKING(for --enable-profiling)
655AC_ARG_ENABLE(profiling,
656 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
657[ac_save_cc="$CC"
658 CC="$CC -pg"
659 AC_TRY_RUN([int main() { return 0; }],
660 ac_enable_profiling="yes",
661 ac_enable_profiling="no",
662 ac_enable_profiling="no")
663 CC="$ac_save_cc"])
664AC_MSG_RESULT($ac_enable_profiling)
665
666case "$ac_enable_profiling" in
667 "yes")
668 BASECFLAGS="-pg $BASECFLAGS"
669 LDFLAGS="-pg $LDFLAGS"
670 ;;
671esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000672
673AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000674
Guido van Rossumb8552162001-09-05 14:58:11 +0000675# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
676# library that we build, but we do not want to link against it (we
677# will find it with a -framework option). For this reason there is an
678# extra variable BLDLIBRARY against which Python and the extension
679# modules are linked, BLDLIBRARY. This is normally the same as
680# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000681if test "$enable_framework"
682then
683 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000684 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000685 BLDLIBRARY=''
686else
687 BLDLIBRARY='$(LDLIBRARY)'
688fi
689
Martin v. Löwis1142de32002-03-29 16:28:31 +0000690# Other platforms follow
691if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000692 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000693 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000694 CYGWIN*)
695 LDLIBRARY='libpython$(VERSION).dll.a'
696 DLLLIBRARY='libpython$(VERSION).dll'
697 ;;
698 SunOS*)
699 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000700 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000701 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000702 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000703 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000704 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000705 LDLIBRARY='libpython$(VERSION).so'
706 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000707 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000708 case $ac_sys_system in
709 FreeBSD*)
710 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
711 ;;
712 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000713 INSTSONAME="$LDLIBRARY".$SOVERSION
714 ;;
715 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000716 case `uname -m` in
717 ia64)
718 LDLIBRARY='libpython$(VERSION).so'
719 ;;
720 *)
721 LDLIBRARY='libpython$(VERSION).sl'
722 ;;
723 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000724 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000725 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000726 ;;
727 OSF*)
728 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000729 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000730 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000731 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000732 Darwin*)
733 LDLIBRARY='libpython$(VERSION).dylib'
734 BLDLIBRARY='-L. -lpython$(VERSION)'
735 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
736 ;;
737
Martin v. Löwis1142de32002-03-29 16:28:31 +0000738 esac
Jason Tishler30765592003-09-04 11:04:06 +0000739else # shared is disabled
740 case $ac_sys_system in
741 CYGWIN*)
742 BLDLIBRARY='$(LIBRARY)'
743 LDLIBRARY='libpython$(VERSION).dll.a'
744 ;;
745 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000746fi
747
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000748AC_MSG_RESULT($LDLIBRARY)
749
Guido van Rossum627b2d71993-12-24 10:39:16 +0000750AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000751AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000752AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000753
Tarek Ziadé5662d3e2009-05-07 21:24:43 +0000754# tweak ARFLAGS only if the user didn't set it on the command line
755AC_SUBST(ARFLAGS)
756if test -z "$ARFLAGS"
757then
758 ARFLAGS="rc"
759fi
760
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000761AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000762AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000763if test $SVNVERSION = found
764then
765 SVNVERSION="svnversion \$(srcdir)"
766else
Benjamin Petersonf53eec82009-05-23 19:36:27 +0000767 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000768fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000769
Neil Schemenauera42c8272001-03-31 00:01:55 +0000770case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000771bsdos*|hp*|HP*)
772 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000773 if test -z "$INSTALL"
774 then
775 INSTALL="${srcdir}/install-sh -c"
776 fi
777esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000778AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000779
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000780# Not every filesystem supports hard links
781AC_SUBST(LN)
782if test -z "$LN" ; then
783 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000784 CYGWIN*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000785 *) LN=ln;;
786 esac
787fi
788
Fred Drake9f715822001-07-11 06:27:00 +0000789# Check for --with-pydebug
790AC_MSG_CHECKING(for --with-pydebug)
791AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000792 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
793[
Fred Drake9f715822001-07-11 06:27:00 +0000794if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000795then
796 AC_DEFINE(Py_DEBUG, 1,
797 [Define if you want to build an interpreter with many run-time checks.])
798 AC_MSG_RESULT(yes);
799 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000800else AC_MSG_RESULT(no); Py_DEBUG='false'
801fi],
802[AC_MSG_RESULT(no)])
803
Skip Montanarodecc6a42003-01-01 20:07:49 +0000804# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
805# merged with this chunk of code?
806
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000807# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000808# ------------------------
809# (The following bit of code is complicated enough - please keep things
810# indented properly. Just pretend you're editing Python code. ;-)
811
812# There are two parallel sets of case statements below, one that checks to
813# see if OPT was set and one that does BASECFLAGS setting based upon
814# compiler and platform. BASECFLAGS tweaks need to be made even if the
815# user set OPT.
816
817# tweak OPT based on compiler and platform, only if the user didn't set
818# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000819AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000820if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000821then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000822 case $GCC in
823 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000824 if test "$CC" != 'g++' ; then
825 STRICT_PROTO="-Wstrict-prototypes"
826 fi
Christian Heimes38053212007-12-14 01:24:44 +0000827 # For gcc 4.x we need to use -fwrapv so lets check if its supported
828 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
829 WRAP="-fwrapv"
830 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000831 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000832 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000833 if test "$Py_DEBUG" = 'true' ; then
834 # Optimization messes up debuggers, so turn it off for
835 # debug builds.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000836 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000837 else
Christian Heimes38053212007-12-14 01:24:44 +0000838 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000839 fi
840 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000841 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000842 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000843 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000844 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000845 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000846 SCO_SV*) OPT="$OPT -m486 -DSCO5"
847 ;;
848 esac
Fred Drake9f715822001-07-11 06:27:00 +0000849 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000850
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000851 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000852 OPT="-O"
853 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000854 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +0000855fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000856
Skip Montanarodecc6a42003-01-01 20:07:49 +0000857AC_SUBST(BASECFLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000858
859# The -arch flags for universal builds on OSX
860UNIVERSAL_ARCH_FLAGS=
861AC_SUBST(UNIVERSAL_ARCH_FLAGS)
862
Skip Montanarodecc6a42003-01-01 20:07:49 +0000863# tweak BASECFLAGS based on compiler and platform
864case $GCC in
865yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000866 # Python violates C99 rules, by casting between incompatible
867 # pointer types. GCC may generate bad code as a result of that,
868 # so use -fno-strict-aliasing if supported.
869 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
870 ac_save_cc="$CC"
871 CC="$CC -fno-strict-aliasing"
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +0000872 AC_CACHE_VAL(ac_cv_no_strict_aliasing_ok,
Gregory P. Smith4e3ed012009-11-01 21:09:10 +0000873 AC_TRY_COMPILE([],[int main() { return 0; }],
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000874 ac_cv_no_strict_aliasing_ok=yes,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +0000875 ac_cv_no_strict_aliasing_ok=no))
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000876 CC="$ac_save_cc"
877 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
878 if test $ac_cv_no_strict_aliasing_ok = yes
879 then
880 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
881 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000882
883 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
884 # support. Without this, treatment of subnormals doesn't follow
885 # the standard.
886 case $ac_sys_machine in
887 alpha*)
888 BASECFLAGS="$BASECFLAGS -mieee"
889 ;;
890 esac
891
Skip Montanarodecc6a42003-01-01 20:07:49 +0000892 case $ac_sys_system in
893 SCO_SV*)
894 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
895 ;;
896 # is there any other compiler on Darwin besides gcc?
897 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +0000898 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
899 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000900
901
Thomas Wouters477c8d52006-05-27 19:21:47 +0000902 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +0000903 UNIVERSAL_ARCH_FLAGS=""
904 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
905 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000906 ARCH_RUN_32BIT=""
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000907 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000908
Ronald Oussoren755740f2010-02-07 19:56:39 +0000909 # You have to use different flags on various versions of
910 # OSX to extract PPC code from an universal binary, basically
911 # '-arch ppc' on OSX 10.4 and '-arch ppc7400' on anything
912 # newer.
913 # Because '-arch pp7400' works on OSX 10.5 or higher this
914 # test is only present in the '32-bit' branch, all other
915 # branches require OSX 10.5 to compile.
916
917 AC_MSG_CHECKING(lipo flag for extracting ppc code)
918 FN="test.$$"
919 cat >${FN}.c <<-EOF
920 int main() { return 0; }
921EOF
922 ${CC} ${CFLAGS} -arch ppc -arch i386 -o ${FN} ${FN}.c -isysroot ${UNIVERSALSDK}
923 if test $? != 0 ; then
924 rm ${FN} ${FN}.c
925 AC_MSG_RESULT([failed, assumee -extract ppc7400])
926 else
927 lipo "${FN}" -extract ppc7400 -output "${FN}.out" 2>/dev/null
928 if test $? != 0 ; then
929 LIPO_32BIT_FLAGS="-extract ppc -extract i386"
930 AC_MSG_RESULT("'-extract ppc'")
931 else
932 AC_MSG_RESULT("'-extract ppc7400'")
933 fi
934 rm -f ${FN} ${FN}.c ${FN}.out
935 fi
936
Georg Brandlfcaf9102008-07-16 02:17:56 +0000937 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
938 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000939 LIPO_32BIT_FLAGS=""
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000940 ARCH_RUN_32BIT="true"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000941
942 elif test "$UNIVERSAL_ARCHS" = "all" ; then
943 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000944 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000945 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000946
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000947 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
948 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000949 LIPO_32BIT_FLAGS="-extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000950 ARCH_RUN_32BIT="/usr/bin/arch -i386"
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000951
952 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
953 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000954 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000955 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000956
Georg Brandlfcaf9102008-07-16 02:17:56 +0000957 else
Ronald Oussoren74f29b42009-09-20 20:09:26 +0000958 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Georg Brandlfcaf9102008-07-16 02:17:56 +0000959
960 fi
961
962
963 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Georg Brandl3dbca812008-07-23 16:10:53 +0000964 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000965 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
966 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
967 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000968 fi
969
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000970 # Calculate the right deployment target for this build.
971 #
972 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
973 if test ${cur_target} '>' 10.2; then
974 cur_target=10.3
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000975 if test ${enable_universalsdk}; then
976 if test "${UNIVERSAL_ARCHS}" = "all"; then
977 # Ensure that the default platform for a
978 # 4-way universal build is OSX 10.5,
979 # that's the first OS release where
980 # 4-way builds make sense.
981 cur_target='10.5'
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000982
983 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
984 cur_target='10.5'
985
986 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
987 cur_target='10.5'
988
989 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
990 cur_target='10.5'
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000991 fi
992 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +0000993 if test `/usr/bin/arch` = "i386"; then
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000994 # On Intel macs default to a deployment
995 # target of 10.4, that's the first OSX
996 # release with Intel support.
997 cur_target="10.4"
998 fi
999 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001000 fi
1001 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1002
1003 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1004 # environment with a value that is the same as what we'll use
1005 # in the Makefile to ensure that we'll get the same compiler
1006 # environment during configure and build time.
1007 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1008 export MACOSX_DEPLOYMENT_TARGET
1009 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1010
Skip Montanarodecc6a42003-01-01 20:07:49 +00001011 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001012 OSF*)
1013 BASECFLAGS="$BASECFLAGS -mieee"
1014 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001015 esac
1016 ;;
1017
1018*)
1019 case $ac_sys_system in
1020 OpenUNIX*|UnixWare*)
1021 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1022 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001023 OSF*)
1024 BASECFLAGS="$BASECFLAGS -ieee -std"
1025 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001026 SCO_SV*)
1027 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1028 ;;
1029 esac
1030 ;;
1031esac
1032
Fred Drakee1ceaa02001-12-04 20:55:47 +00001033if test "$Py_DEBUG" = 'true'; then
1034 :
1035else
1036 OPT="-DNDEBUG $OPT"
1037fi
1038
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001039if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001040then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001041 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001042fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001043
Neal Norwitz020c46a2006-01-07 21:39:28 +00001044# disable check for icc since it seems to pass, but generates a warning
1045if test "$CC" = icc
1046then
1047 ac_cv_opt_olimit_ok=no
1048fi
1049
Guido van Rossum91922671997-10-09 20:24:13 +00001050AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1051AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1052[ac_save_cc="$CC"
1053CC="$CC -OPT:Olimit=0"
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001054AC_TRY_COMPILE([],[int main() { return 0; }],
Guido van Rossum91922671997-10-09 20:24:13 +00001055 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001056 ac_cv_opt_olimit_ok=no,
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001057 )
Guido van Rossum91922671997-10-09 20:24:13 +00001058CC="$ac_save_cc"])
1059AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001060if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001061 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001062 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1063 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1064 # environment?
1065 Darwin*)
1066 ;;
1067 *)
1068 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1069 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001070 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001071else
1072 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1073 AC_CACHE_VAL(ac_cv_olimit_ok,
1074 [ac_save_cc="$CC"
1075 CC="$CC -Olimit 1500"
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001076 AC_TRY_COMPILE([],[int main() { return 0; }],
Guido van Rossumf8678121998-07-07 21:05:09 +00001077 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001078 ac_cv_olimit_ok=no,
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001079 )
Guido van Rossumf8678121998-07-07 21:05:09 +00001080 CC="$ac_save_cc"])
1081 AC_MSG_RESULT($ac_cv_olimit_ok)
1082 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001083 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001084 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001085fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001086
Thomas Wouters89f507f2006-12-13 04:49:30 +00001087# Check whether GCC supports PyArg_ParseTuple format
1088if test "$GCC" = "yes"
1089then
1090 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1091 save_CFLAGS=$CFLAGS
1092 CFLAGS="$CFLAGS -Werror"
1093 AC_TRY_COMPILE([
1094 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1095 ],,
1096 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1097 AC_MSG_RESULT(yes),
1098 AC_MSG_RESULT(no)
1099 )
1100 CFLAGS=$save_CFLAGS
1101fi
1102
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001103# On some compilers, pthreads are available without further options
1104# (e.g. MacOS X). On some of these systems, the compiler will not
1105# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1106# So we have to see first whether pthreads are available without
1107# options before we can check whether -Kpthread improves anything.
1108AC_MSG_CHECKING(whether pthreads are available without options)
1109AC_CACHE_VAL(ac_cv_pthread_is_default,
1110[AC_TRY_RUN([
1111#include <pthread.h>
1112
1113void* routine(void* p){return NULL;}
1114
1115int main(){
1116 pthread_t p;
1117 if(pthread_create(&p,NULL,routine,NULL)!=0)
1118 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001119 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001120 return 0;
1121}
1122],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001123[
1124 ac_cv_pthread_is_default=yes
1125 ac_cv_kthread=no
1126 ac_cv_pthread=no
1127],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001128 ac_cv_pthread_is_default=no,
1129 ac_cv_pthread_is_default=no)
1130])
1131AC_MSG_RESULT($ac_cv_pthread_is_default)
1132
1133
1134if test $ac_cv_pthread_is_default = yes
1135then
1136 ac_cv_kpthread=no
1137else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001138# -Kpthread, if available, provides the right #defines
1139# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001140# Some compilers won't report that they do not support -Kpthread,
1141# so we need to run a program to see whether it really made the
1142# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001143AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1144AC_CACHE_VAL(ac_cv_kpthread,
1145[ac_save_cc="$CC"
1146CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001147AC_TRY_RUN([
1148#include <pthread.h>
1149
1150void* routine(void* p){return NULL;}
1151
1152int main(){
1153 pthread_t p;
1154 if(pthread_create(&p,NULL,routine,NULL)!=0)
1155 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001156 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001157 return 0;
1158}
1159],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001160 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001161 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001162 ac_cv_kpthread=no)
1163CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001164AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001165fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001166
Skip Montanarod8d39a02003-07-10 20:44:10 +00001167if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001168then
1169# -Kthread, if available, provides the right #defines
1170# and linker options to make pthread_create available
1171# Some compilers won't report that they do not support -Kthread,
1172# so we need to run a program to see whether it really made the
1173# function available.
1174AC_MSG_CHECKING(whether $CC accepts -Kthread)
1175AC_CACHE_VAL(ac_cv_kthread,
1176[ac_save_cc="$CC"
1177CC="$CC -Kthread"
1178AC_TRY_RUN([
1179#include <pthread.h>
1180
1181void* routine(void* p){return NULL;}
1182
1183int main(){
1184 pthread_t p;
1185 if(pthread_create(&p,NULL,routine,NULL)!=0)
1186 return 1;
1187 (void)pthread_detach(p);
1188 return 0;
1189}
1190],
1191 ac_cv_kthread=yes,
1192 ac_cv_kthread=no,
1193 ac_cv_kthread=no)
1194CC="$ac_save_cc"])
1195AC_MSG_RESULT($ac_cv_kthread)
1196fi
1197
Skip Montanarod8d39a02003-07-10 20:44:10 +00001198if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001199then
1200# -pthread, if available, provides the right #defines
1201# and linker options to make pthread_create available
1202# Some compilers won't report that they do not support -pthread,
1203# so we need to run a program to see whether it really made the
1204# function available.
1205AC_MSG_CHECKING(whether $CC accepts -pthread)
1206AC_CACHE_VAL(ac_cv_thread,
1207[ac_save_cc="$CC"
1208CC="$CC -pthread"
1209AC_TRY_RUN([
1210#include <pthread.h>
1211
1212void* routine(void* p){return NULL;}
1213
1214int main(){
1215 pthread_t p;
1216 if(pthread_create(&p,NULL,routine,NULL)!=0)
1217 return 1;
1218 (void)pthread_detach(p);
1219 return 0;
1220}
1221],
1222 ac_cv_pthread=yes,
1223 ac_cv_pthread=no,
1224 ac_cv_pthread=no)
1225CC="$ac_save_cc"])
1226AC_MSG_RESULT($ac_cv_pthread)
1227fi
1228
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001229# If we have set a CC compiler flag for thread support then
1230# check if it works for CXX, too.
1231ac_cv_cxx_thread=no
1232if test ! -z "$CXX"
1233then
1234AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1235ac_save_cxx="$CXX"
1236
1237if test "$ac_cv_kpthread" = "yes"
1238then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001239 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001240 ac_cv_cxx_thread=yes
1241elif test "$ac_cv_kthread" = "yes"
1242then
1243 CXX="$CXX -Kthread"
1244 ac_cv_cxx_thread=yes
1245elif test "$ac_cv_pthread" = "yes"
1246then
1247 CXX="$CXX -pthread"
1248 ac_cv_cxx_thread=yes
1249fi
1250
1251if test $ac_cv_cxx_thread = yes
1252then
1253 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1254 $CXX -c conftest.$ac_ext 2>&5
1255 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1256 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1257 then
1258 ac_cv_cxx_thread=yes
1259 else
1260 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001261 fi
1262 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001263fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001264AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001265fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001266CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001267
Fred Drakece81d592000-07-09 14:39:29 +00001268dnl # check for ANSI or K&R ("traditional") preprocessor
1269dnl AC_MSG_CHECKING(for C preprocessor type)
1270dnl AC_TRY_COMPILE([
1271dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1272dnl int foo;
1273dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1274dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1275dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001276
Guido van Rossum627b2d71993-12-24 10:39:16 +00001277# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001278AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001279AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1280fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001281ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001282shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001283unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001284sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1285sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001286sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Georg Brandlf78e02b2008-06-10 17:40:04 +00001287sys/termio.h sys/time.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001288sys/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 +00001289sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Ronald Oussoren755740f2010-02-07 19:56:39 +00001290bluetooth/bluetooth.h linux/tipc.h spawn.h util.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001291AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001292AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001293
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001294# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001295AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001296#ifdef HAVE_CURSES_H
1297#include <curses.h>
1298#endif
1299])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001300
Martin v. Löwis11017b12006-01-14 18:12:57 +00001301# On Linux, netlink.h requires asm/types.h
1302AC_CHECK_HEADERS(linux/netlink.h,,,[
1303#ifdef HAVE_ASM_TYPES_H
1304#include <asm/types.h>
1305#endif
1306#ifdef HAVE_SYS_SOCKET_H
1307#include <sys/socket.h>
1308#endif
1309])
1310
Guido van Rossum627b2d71993-12-24 10:39:16 +00001311# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001312was_it_defined=no
1313AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001314AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1315 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1316])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001317AC_MSG_RESULT($was_it_defined)
1318
Neal Norwitz11690112002-07-30 01:08:28 +00001319# Check whether using makedev requires defining _OSF_SOURCE
1320AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001321AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001322 [ makedev(0, 0) ],
1323 ac_cv_has_makedev=yes,
1324 ac_cv_has_makedev=no)
1325if test "$ac_cv_has_makedev" = "no"; then
1326 # we didn't link, try if _OSF_SOURCE will allow us to link
1327 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001328#define _OSF_SOURCE 1
1329#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001330 ],
1331 [ makedev(0, 0) ],
1332 ac_cv_has_makedev=yes,
1333 ac_cv_has_makedev=no)
1334 if test "$ac_cv_has_makedev" = "yes"; then
1335 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1336 fi
1337fi
1338AC_MSG_RESULT($ac_cv_has_makedev)
1339if test "$ac_cv_has_makedev" = "yes"; then
1340 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1341fi
1342
Martin v. Löwis399a6892002-10-04 10:22:02 +00001343# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1344# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1345# defined, but the compiler does not support pragma redefine_extname,
1346# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1347# structures (such as rlimit64) without declaring them. As a
1348# work-around, disable LFS on such configurations
1349
1350use_lfs=yes
1351AC_MSG_CHECKING(Solaris LFS bug)
1352AC_TRY_COMPILE([
1353#define _LARGEFILE_SOURCE 1
1354#define _FILE_OFFSET_BITS 64
1355#include <sys/resource.h>
1356],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1357AC_MSG_RESULT($sol_lfs_bug)
1358if test "$sol_lfs_bug" = "yes"; then
1359 use_lfs=no
1360fi
1361
1362if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001363# Two defines needed to enable largefile support on various platforms
1364# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001365AC_DEFINE(_LARGEFILE_SOURCE, 1,
1366[This must be defined on some systems to enable large file support.])
1367AC_DEFINE(_FILE_OFFSET_BITS, 64,
1368[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001369fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001370
Guido van Rossum300fda71996-08-19 21:58:16 +00001371# Add some code to confdefs.h so that the test for off_t works on SCO
1372cat >> confdefs.h <<\EOF
1373#if defined(SCO_DS)
1374#undef _OFF_T
1375#endif
1376EOF
1377
Guido van Rossumef2255b2000-03-10 22:30:29 +00001378# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001379AC_TYPE_MODE_T
1380AC_TYPE_OFF_T
1381AC_TYPE_PID_T
1382AC_TYPE_SIGNAL
1383AC_TYPE_SIZE_T
1384AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001385AC_TYPE_UINT32_T
1386AC_TYPE_UINT64_T
1387AC_TYPE_INT32_T
1388AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001389AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001390 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001391
Guido van Rossumef2255b2000-03-10 22:30:29 +00001392# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001393# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001394AC_CHECK_SIZEOF(int, 4)
1395AC_CHECK_SIZEOF(long, 4)
1396AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001397AC_CHECK_SIZEOF(short, 2)
1398AC_CHECK_SIZEOF(float, 4)
1399AC_CHECK_SIZEOF(double, 8)
1400AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001401AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001402AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001403
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001404AC_MSG_CHECKING(for long long support)
1405have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001406AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1407 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1408 have_long_long=yes
1409])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001410AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001411if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001412AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001413fi
1414
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001415AC_MSG_CHECKING(for long double support)
1416have_long_double=no
1417AC_TRY_COMPILE([], [long double x; x = (long double)0;], [
1418 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1419 have_long_double=yes
1420])
1421AC_MSG_RESULT($have_long_double)
1422if test "$have_long_double" = yes ; then
1423AC_CHECK_SIZEOF(long double, 16)
1424fi
1425
1426
Thomas Woutersb2137042007-02-01 18:02:27 +00001427AC_MSG_CHECKING(for _Bool support)
1428have_c99_bool=no
1429AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1430 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1431 have_c99_bool=yes
1432])
1433AC_MSG_RESULT($have_c99_bool)
1434if test "$have_c99_bool" = yes ; then
1435AC_CHECK_SIZEOF(_Bool, 1)
1436fi
1437
Thomas Wouters89f507f2006-12-13 04:49:30 +00001438AC_CHECK_TYPES(uintptr_t,
1439 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1440 [], [#ifdef HAVE_STDINT_H
1441 #include <stdint.h>
1442 #endif])
1443
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001444AC_CHECK_SIZEOF(off_t, [], [
1445#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001446#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001447#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001448])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001449
1450AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson2df5d282009-12-31 21:22:50 +00001451if test "$have_long_long" = yes
1452then
1453if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001454 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001455 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1456 [Defined to enable large file support when an off_t is bigger than a long
1457 and long long is available and at least as big as an off_t. You may need
1458 to add some flags for configuration and compilation to enable this mode.
1459 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001460 AC_MSG_RESULT(yes)
1461else
1462 AC_MSG_RESULT(no)
1463fi
Mark Dickinson2df5d282009-12-31 21:22:50 +00001464else
1465 AC_MSG_RESULT(no)
1466fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001467
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001468AC_CHECK_SIZEOF(time_t, [], [
1469#ifdef HAVE_SYS_TYPES_H
1470#include <sys/types.h>
1471#endif
1472#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00001473#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001474#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001475])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001476
Trent Mick635f6fb2000-08-23 21:33:05 +00001477# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001478ac_save_cc="$CC"
1479if test "$ac_cv_kpthread" = "yes"
1480then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001481elif test "$ac_cv_kthread" = "yes"
1482then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001483elif test "$ac_cv_pthread" = "yes"
1484then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001485fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001486
Trent Mick635f6fb2000-08-23 21:33:05 +00001487AC_MSG_CHECKING(for pthread_t)
1488have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001489AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001490AC_MSG_RESULT($have_pthread_t)
1491if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001492 AC_CHECK_SIZEOF(pthread_t, [], [
1493#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001494#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001495#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001496 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001497fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001498CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001499
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001500AC_SUBST(OTHER_LIBTOOL_OPT)
1501case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001502 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001503 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1504 ;;
1505 Darwin/*)
1506 OTHER_LIBTOOL_OPT=""
1507 ;;
1508esac
1509
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001510
1511ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001512AC_SUBST(LIBTOOL_CRUFT)
1513case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001514 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001515 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1516 if test "${enable_universalsdk}"; then
1517 :
1518 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001519 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001520 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001521 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001522 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001523 Darwin/*)
Ronald Oussoren9812a6c2010-02-07 11:53:18 +00001524 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001525 if test ${gcc_version} '<' 4.0
1526 then
1527 LIBTOOL_CRUFT="-lcc_dynamic"
1528 else
1529 LIBTOOL_CRUFT=""
1530 fi
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001531 AC_TRY_RUN([
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001532 #include <unistd.h>
1533 int main(int argc, char*argv[])
1534 {
1535 if (sizeof(long) == 4) {
1536 return 0;
1537 } else {
1538 return 1;
1539 }
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001540 }
1541 ], ac_osx_32bit=yes,
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001542 ac_osx_32bit=no,
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001543 ac_osx_32bit=yes)
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001544
1545 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001546 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001547 i386)
1548 MACOSX_DEFAULT_ARCH="i386"
1549 ;;
1550 ppc)
1551 MACOSX_DEFAULT_ARCH="ppc"
1552 ;;
1553 *)
1554 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1555 ;;
1556 esac
1557 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001558 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001559 i386)
1560 MACOSX_DEFAULT_ARCH="x86_64"
1561 ;;
1562 ppc)
1563 MACOSX_DEFAULT_ARCH="ppc64"
1564 ;;
1565 *)
1566 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1567 ;;
1568 esac
1569
1570 #ARCH_RUN_32BIT="true"
1571 fi
1572
1573 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001574 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001575 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001576esac
1577
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001578AC_MSG_CHECKING(for --enable-framework)
1579if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001580then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001581 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001582 # -F. is needed to allow linking to the framework while
1583 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001584 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1585 [Define if you want to produce an OpenStep/Rhapsody framework
1586 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001587 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001588 if test $enable_shared = "yes"
1589 then
1590 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1591 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001592else
1593 AC_MSG_RESULT(no)
1594fi
1595
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001596AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001597case $ac_sys_system/$ac_sys_release in
1598 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001599 AC_DEFINE(WITH_DYLD, 1,
1600 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1601 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1602 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001603 AC_MSG_RESULT(always on for Darwin)
1604 ;;
1605 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001606 AC_MSG_RESULT(no)
1607 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001608esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001609
Guido van Rossumac405f61994-09-12 10:56:06 +00001610# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001611AC_SUBST(SO)
1612AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001613AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001614AC_SUBST(CCSHARED)
1615AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001616# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001617# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001618AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001619if test -z "$SO"
1620then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001621 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001622 hp*|HP*)
1623 case `uname -m` in
1624 ia64) SO=.so;;
1625 *) SO=.sl;;
1626 esac
1627 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001628 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001629 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001630 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001631else
1632 # this might also be a termcap variable, see #610332
1633 echo
1634 echo '====================================================================='
1635 echo '+ +'
1636 echo '+ WARNING: You have set SO in your environment. +'
1637 echo '+ Do you really mean to change the extension for shared libraries? +'
1638 echo '+ Continuing in 10 seconds to let you to ponder. +'
1639 echo '+ +'
1640 echo '====================================================================='
1641 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001642fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001643AC_MSG_RESULT($SO)
Georg Brandlb1441c72009-01-03 22:33:39 +00001644
Thomas Wouters477c8d52006-05-27 19:21:47 +00001645AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001646# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001647# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001648# (Shared libraries in this instance are shared modules to be loaded into
1649# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001650AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001651if test -z "$LDSHARED"
1652then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001653 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001654 AIX*)
1655 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001656 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001657 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001658 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001659 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001660 SunOS/5*)
1661 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001662 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001663 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001664 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001665 hp*|HP*)
1666 if test "$GCC" = "yes"
1667 then LDSHARED='$(CC) -shared'
1668 else LDSHARED='ld -b';
1669 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001670 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001671 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001672 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1673 if test "$enable_framework" ; then
1674 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001675 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1676 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001677 else
1678 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001679 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001680 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001681 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001682 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1683 if test "$enable_framework" ; then
1684 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001685 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1686 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001687 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001688 # No framework, use the Python app as bundle-loader
1689 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001690 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001691 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001692 Darwin/*)
1693 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1694 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001695
Georg Brandlfcaf9102008-07-16 02:17:56 +00001696 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001697 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001698 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001699 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001700 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001701 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1702 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001703 else
1704 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1705 if test "$enable_framework" ; then
1706 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001707 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1708 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001709 else
1710 # No framework, use the Python app as bundle-loader
1711 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1712 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1713 fi
1714 fi
1715 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001716 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001717 BSD/OS*/4*) LDSHARED="gcc -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001718 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001719 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001720 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001721 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001722 else
1723 LDSHARED="ld -Bshareable ${LDFLAGS}"
1724 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001725 OpenBSD*)
1726 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1727 then
1728 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1729 else
1730 case `uname -r` in
1731 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1732 LDSHARED="ld -Bshareable ${LDFLAGS}"
1733 ;;
1734 *)
1735 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1736 ;;
1737 esac
1738 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001739 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001740 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001741 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001742 then LDSHARED='$(CC) -shared'
1743 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001744 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001745 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001746 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001747 *) LDSHARED="ld";;
1748 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001749fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001750AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001751BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001752# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001753# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001754AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001755if test -z "$CCSHARED"
1756then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001757 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001758 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001759 then CCSHARED="-fPIC";
1760 elif test `uname -p` = sparc;
1761 then CCSHARED="-xcode=pic32";
1762 else CCSHARED="-Kpic";
1763 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001764 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001765 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001766 else CCSHARED="+z";
1767 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001768 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001769 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001770 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001771 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001772 if test "$GCC" = "yes"
1773 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001774 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001775 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001776 SCO_SV*)
1777 if test "$GCC" = "yes"
1778 then CCSHARED="-fPIC"
1779 else CCSHARED="-Kpic -belf"
1780 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001781 IRIX*/6*) case $CC in
1782 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001783 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001784 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001785 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001786fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001787AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001788# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001789# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001790AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001791if test -z "$LINKFORSHARED"
1792then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001793 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001794 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001795 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001796 LINKFORSHARED="-Wl,-E -Wl,+s";;
1797# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001798 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001799 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001800 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001801 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00001802 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001803 if test "$enable_framework"
1804 then
Jack Jansenda49e192005-01-07 13:08:22 +00001805 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001806 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001807 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001808 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001809 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001810 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001811 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001812 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1813 then
1814 LINKFORSHARED="-Wl,--export-dynamic"
1815 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001816 SunOS/5*) case $CC in
1817 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001818 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001819 then
1820 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001821 fi;;
1822 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001823 CYGWIN*)
1824 if test $enable_shared = "no"
1825 then
1826 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1827 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001828 QNX*)
1829 # -Wl,-E causes the symbols to be added to the dynamic
1830 # symbol table so that they can be found when a module
1831 # is loaded. -N 2048K causes the stack size to be set
1832 # to 2048 kilobytes so that the stack doesn't overflow
1833 # when running test_compile.py.
1834 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001835 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001836fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001837AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001838
Georg Brandl93de2162008-07-16 02:21:06 +00001839
Neil Schemenauer61c51152001-01-26 16:18:16 +00001840AC_SUBST(CFLAGSFORSHARED)
1841AC_MSG_CHECKING(CFLAGSFORSHARED)
1842if test ! "$LIBRARY" = "$LDLIBRARY"
1843then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001844 case $ac_sys_system in
1845 CYGWIN*)
1846 # Cygwin needs CCSHARED when building extension DLLs
1847 # but not when building the interpreter DLL.
1848 CFLAGSFORSHARED='';;
1849 *)
1850 CFLAGSFORSHARED='$(CCSHARED)'
1851 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001852fi
1853AC_MSG_RESULT($CFLAGSFORSHARED)
1854
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001855# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1856# library (with --enable-shared).
1857# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001858# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1859# if it is not required, since it creates a dependency of the shared library
1860# to LIBS. This, in turn, means that applications linking the shared libpython
1861# don't need to link LIBS explicitly. The default should be only changed
1862# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001863AC_SUBST(SHLIBS)
1864AC_MSG_CHECKING(SHLIBS)
1865case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001866 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001867 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001868esac
1869AC_MSG_RESULT($SHLIBS)
1870
1871
Guido van Rossum627b2d71993-12-24 10:39:16 +00001872# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001873AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1874AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001875
Georg Brandleee31162008-12-07 15:15:22 +00001876# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001877if test "$with_threads" = "yes" -o -z "$with_threads"; then
1878 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1879 # posix4 on Solaris 2.6
1880 # pthread (first!) on Linux
1881fi
1882
Martin v. Löwis19d17342003-06-14 21:03:05 +00001883# check if we need libintl for locale functions
1884AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00001885 [AC_DEFINE(WITH_LIBINTL, 1,
1886 [Define to 1 if libintl is needed for locale functions.])
1887 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001888
1889# checks for system dependent C++ extensions support
1890case "$ac_sys_system" in
1891 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1892 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1893 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001894 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1895 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1896 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001897 AC_MSG_RESULT(yes)],
1898 [AC_MSG_RESULT(no)]);;
1899 *) ;;
1900esac
1901
Guido van Rossum70c7f481998-03-26 18:44:10 +00001902# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001903AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001904AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001905
Guido van Rossumc5a39031996-07-31 17:35:03 +00001906AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001907AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001908 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1909[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001910AC_MSG_RESULT($withval)
1911LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001912],
1913[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001914
Benjamin Petersonb2d90462009-12-31 03:23:10 +00001915# Check for use of the system expat library
1916AC_MSG_CHECKING(for --with-system-expat)
1917AC_ARG_WITH(system_expat,
1918 AC_HELP_STRING(--with-system-expat, build pyexpat module using an installed expat library))
1919
1920AC_MSG_RESULT($with_system_expat)
1921
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001922# Check for use of the system libffi library
1923AC_MSG_CHECKING(for --with-system-ffi)
1924AC_ARG_WITH(system_ffi,
1925 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1926
Benjamin Petersond78735d2010-01-01 16:04:23 +00001927if test "$with_system_ffi" = "yes"; then
1928 AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
1929 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
1930else
1931 LIBFFI_INCLUDEDIR=""
1932fi
1933AC_SUBST(LIBFFI_INCLUDEDIR)
1934
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001935AC_MSG_RESULT($with_system_ffi)
1936
Matthias Klose55708cc2009-04-30 08:06:49 +00001937# Check for --with-dbmliborder
1938AC_MSG_CHECKING(for --with-dbmliborder)
1939AC_ARG_WITH(dbmliborder,
1940 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'.]),
1941[
1942if test x$with_dbmliborder = xyes
1943then
1944AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1945else
1946 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
1947 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
1948 then
1949 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1950 fi
1951 done
1952fi])
1953AC_MSG_RESULT($with_dbmliborder)
1954
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001955# Determine if signalmodule should be used.
1956AC_SUBST(USE_SIGNAL_MODULE)
1957AC_SUBST(SIGNAL_OBJS)
1958AC_MSG_CHECKING(for --with-signal-module)
1959AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001960 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001961
1962if test -z "$with_signal_module"
1963then with_signal_module="yes"
1964fi
1965AC_MSG_RESULT($with_signal_module)
1966
1967if test "${with_signal_module}" = "yes"; then
1968 USE_SIGNAL_MODULE=""
1969 SIGNAL_OBJS=""
1970else
1971 USE_SIGNAL_MODULE="#"
1972 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1973fi
1974
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001975# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001976AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001977USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001978
Guido van Rossum54d93d41997-01-22 20:51:58 +00001979AC_MSG_CHECKING(for --with-dec-threads)
1980AC_SUBST(LDLAST)
1981AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001982 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1983[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001984AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001985LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001986if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001987 with_thread="$withval";
1988fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001989[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001990
Martin v. Löwis11437992002-04-12 09:54:03 +00001991# Templates for things AC_DEFINEd more than once.
1992# For a single AC_DEFINE, no template is needed.
1993AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1994AH_TEMPLATE(_REENTRANT,
1995 [Define to force use of thread-safe errno, h_errno, and other functions])
1996AH_TEMPLATE(WITH_THREAD,
1997 [Define if you want to compile in rudimentary thread support])
1998
Guido van Rossum54d93d41997-01-22 20:51:58 +00001999AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002000dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002001AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002002 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002003
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002004# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002005dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002006AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002007 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
2008 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002009
2010if test -z "$with_threads"
2011then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002012fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002013AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002014
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002015AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002016if test "$with_threads" = "no"
2017then
2018 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002019elif test "$ac_cv_pthread_is_default" = yes
2020then
2021 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002022 # Defining _REENTRANT on system with POSIX threads should not hurt.
2023 AC_DEFINE(_REENTRANT)
2024 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002025 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002026elif test "$ac_cv_kpthread" = "yes"
2027then
2028 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002029 if test "$ac_cv_cxx_thread" = "yes"; then
2030 CXX="$CXX -Kpthread"
2031 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002032 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002033 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002034 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002035elif test "$ac_cv_kthread" = "yes"
2036then
2037 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002038 if test "$ac_cv_cxx_thread" = "yes"; then
2039 CXX="$CXX -Kthread"
2040 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002041 AC_DEFINE(WITH_THREAD)
2042 posix_threads=yes
2043 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002044elif test "$ac_cv_pthread" = "yes"
2045then
2046 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002047 if test "$ac_cv_cxx_thread" = "yes"; then
2048 CXX="$CXX -pthread"
2049 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002050 AC_DEFINE(WITH_THREAD)
2051 posix_threads=yes
2052 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002053else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002054 if test ! -z "$with_threads" -a -d "$with_threads"
2055 then LDFLAGS="$LDFLAGS -L$with_threads"
2056 fi
2057 if test ! -z "$withval" -a -d "$withval"
2058 then LDFLAGS="$LDFLAGS -L$withval"
2059 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002060
2061 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002062 # define _POSIX_THREADS in unistd.h. Some apparently don't
2063 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002064 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2065 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002066 [
2067#include <unistd.h>
2068#ifdef _POSIX_THREADS
2069yes
2070#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002071 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2072 AC_MSG_RESULT($unistd_defines_pthreads)
2073
Martin v. Löwis130fb172001-07-19 11:00:41 +00002074 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002075 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2076 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002077 AC_DEFINE(HURD_C_THREADS, 1,
2078 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002079 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002080 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002081 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2082 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002083 AC_DEFINE(MACH_C_THREADS, 1,
2084 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002085 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002086 # Just looking for pthread_create in libpthread is not enough:
2087 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2088 # So we really have to include pthread.h, and then link.
2089 _libs=$LIBS
2090 LIBS="$LIBS -lpthread"
2091 AC_MSG_CHECKING([for pthread_create in -lpthread])
2092 AC_TRY_LINK([#include <pthread.h>
2093
2094void * start_routine (void *arg) { exit (0); }], [
2095pthread_create (NULL, NULL, start_routine, NULL)], [
2096 AC_MSG_RESULT(yes)
2097 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002098 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002099 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002100 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002101 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002102 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002103 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002104 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002105 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002106 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002107 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002108 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002109 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002110 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002111 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002112 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002113 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002114 LIBS="$LIBS -lpthread"
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(cma, 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 -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002119 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002120 USE_THREAD_MODULE="#"])
Antoine Pitroudb6c5672009-10-24 20:35:52 +00002121 ])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002122
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002123 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2124 LIBS="$LIBS -lmpc"
2125 THREADOBJ="Python/thread.o"
2126 USE_THREAD_MODULE=""])
2127
2128 if test "$posix_threads" != "yes"; then
2129 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2130 LIBS="$LIBS -lthread"
2131 THREADOBJ="Python/thread.o"
2132 USE_THREAD_MODULE=""])
2133 fi
2134
2135 if test "$USE_THREAD_MODULE" != "#"
2136 then
2137 # If the above checks didn't disable threads, (at least) OSF1
2138 # needs this '-threads' argument during linking.
2139 case $ac_sys_system in
2140 OSF1) LDLAST=-threads;;
2141 esac
2142 fi
2143fi
2144
2145if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002146 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002147 AC_DEFINE(_POSIX_THREADS, 1,
2148 [Define if you have POSIX threads,
2149 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002150 fi
2151
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002152 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2153 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002154 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2155 Defined for Solaris 2.6 bug in pthread header.)
2156 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002157 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002158 Define if the Posix semaphores do not work on your system)
2159 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002160 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2161 Define if the Posix semaphores do not work on your system)
2162 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002163 esac
2164
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002165 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2166 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2167 [AC_TRY_RUN([#include <pthread.h>
2168 void *foo(void *parm) {
2169 return NULL;
2170 }
2171 main() {
2172 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002173 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002174 if (pthread_attr_init(&attr)) exit(-1);
2175 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002176 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002177 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002178 }],
2179 ac_cv_pthread_system_supported=yes,
2180 ac_cv_pthread_system_supported=no,
2181 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002182 ])
2183 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2184 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002185 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002186 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002187 AC_CHECK_FUNCS(pthread_sigmask,
2188 [case $ac_sys_system in
2189 CYGWIN*)
2190 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2191 [Define if pthread_sigmask() does not work on your system.])
2192 ;;
2193 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002194fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002195
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002196
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002197# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002198AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002199AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002200AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002201[ --enable-ipv6 Enable ipv6 (with ipv4) support
2202 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002203[ case "$enableval" in
2204 no)
2205 AC_MSG_RESULT(no)
2206 ipv6=no
2207 ;;
2208 *) AC_MSG_RESULT(yes)
2209 AC_DEFINE(ENABLE_IPV6)
2210 ipv6=yes
2211 ;;
2212 esac ],
2213
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002214[
2215dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002216 AC_TRY_RUN([ /* AF_INET6 available check */
2217#include <sys/types.h>
2218#include <sys/socket.h>
2219main()
2220{
2221 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2222 exit(1);
2223 else
2224 exit(0);
2225}
2226],
2227 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002228 ipv6=yes,
2229 AC_MSG_RESULT(no)
2230 ipv6=no,
2231 AC_MSG_RESULT(no)
2232 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002233)
2234
2235if test "$ipv6" = "yes"; then
2236 AC_MSG_CHECKING(if RFC2553 API is available)
2237 AC_TRY_COMPILE([#include <sys/types.h>
2238#include <netinet/in.h>],
2239 [struct sockaddr_in6 x;
2240x.sin6_scope_id;],
2241 AC_MSG_RESULT(yes)
2242 ipv6=yes,
2243 AC_MSG_RESULT(no, IPv6 disabled)
2244 ipv6=no)
2245fi
2246
2247if test "$ipv6" = "yes"; then
2248 AC_DEFINE(ENABLE_IPV6)
2249fi
2250])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002251
2252ipv6type=unknown
2253ipv6lib=none
2254ipv6trylibc=no
2255
2256if test "$ipv6" = "yes"; then
2257 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002258 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2259 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002260 case $i in
2261 inria)
2262 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002263 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002264#include <netinet/in.h>
2265#ifdef IPV6_INRIA_VERSION
2266yes
2267#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002268 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002269 ;;
2270 kame)
2271 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002272 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002273#include <netinet/in.h>
2274#ifdef __KAME__
2275yes
2276#endif],
2277 [ipv6type=$i;
2278 ipv6lib=inet6
2279 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002280 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002281 ;;
2282 linux-glibc)
2283 dnl http://www.v6.linux.or.jp/
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 <features.h>
2286#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2287yes
2288#endif],
2289 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002290 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002291 ;;
2292 linux-inet6)
2293 dnl http://www.v6.linux.or.jp/
2294 if test -d /usr/inet6; then
2295 ipv6type=$i
2296 ipv6lib=inet6
2297 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002298 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002299 fi
2300 ;;
2301 solaris)
2302 if test -f /etc/netconfig; then
2303 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2304 ipv6type=$i
2305 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002306 fi
2307 fi
2308 ;;
2309 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002310 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002311#include <sys/param.h>
2312#ifdef _TOSHIBA_INET6
2313yes
2314#endif],
2315 [ipv6type=$i;
2316 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002317 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002318 ;;
2319 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002320 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002321#include </usr/local/v6/include/sys/v6config.h>
2322#ifdef __V6D__
2323yes
2324#endif],
2325 [ipv6type=$i;
2326 ipv6lib=v6;
2327 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002328 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002329 ;;
2330 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002331 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002332#include <sys/param.h>
2333#ifdef _ZETA_MINAMI_INET6
2334yes
2335#endif],
2336 [ipv6type=$i;
2337 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002338 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002339 ;;
2340 esac
2341 if test "$ipv6type" != "unknown"; then
2342 break
2343 fi
2344 done
2345 AC_MSG_RESULT($ipv6type)
2346fi
2347
2348if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2349 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2350 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2351 echo "using lib$ipv6lib"
2352 else
2353 if test $ipv6trylibc = "yes"; then
2354 echo "using libc"
2355 else
2356 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2357 echo "You need to fetch lib$ipv6lib.a from appropriate"
2358 echo 'ipv6 kit and compile beforehand.'
2359 exit 1
2360 fi
2361 fi
2362fi
2363
Georg Brandl93de2162008-07-16 02:21:06 +00002364AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2365AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2366 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2367 AC_MSG_RESULT(yes),
2368 AC_MSG_RESULT(no)
2369)
2370
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002371# Check for --with-doc-strings
2372AC_MSG_CHECKING(for --with-doc-strings)
2373AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002374 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002375
2376if test -z "$with_doc_strings"
2377then with_doc_strings="yes"
2378fi
2379if test "$with_doc_strings" != "no"
2380then
2381 AC_DEFINE(WITH_DOC_STRINGS, 1,
2382 [Define if you want documentation strings in extension modules])
2383fi
2384AC_MSG_RESULT($with_doc_strings)
2385
Neil Schemenauera35c6882001-02-27 04:45:05 +00002386# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002387AC_MSG_CHECKING(for --with-tsc)
2388AC_ARG_WITH(tsc,
2389[ --with(out)-tsc enable/disable timestamp counter profile], [
2390if test "$withval" != no
2391then
2392 AC_DEFINE(WITH_TSC, 1,
2393 [Define to profile with the Pentium timestamp counter])
2394 AC_MSG_RESULT(yes)
2395else AC_MSG_RESULT(no)
2396fi],
2397[AC_MSG_RESULT(no)])
2398
2399# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002400AC_MSG_CHECKING(for --with-pymalloc)
2401AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002402 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002403
2404if test -z "$with_pymalloc"
2405then with_pymalloc="yes"
2406fi
2407if test "$with_pymalloc" != "no"
2408then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002409 AC_DEFINE(WITH_PYMALLOC, 1,
2410 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002411fi
2412AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002413
Benjamin Peterson05159c42009-12-03 03:01:27 +00002414# Check for Valgrind support
2415AC_MSG_CHECKING([for --with-valgrind])
2416AC_ARG_WITH([valgrind],
2417 AC_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
2418 with_valgrind=no)
2419AC_MSG_RESULT([$with_valgrind])
2420if test "$with_valgrind" != no; then
2421 AC_CHECK_HEADER([valgrind/valgrind.h],
2422 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
2423 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
2424 )
2425fi
2426
Barry Warsawef82cd72000-06-30 16:21:01 +00002427# Check for --with-wctype-functions
2428AC_MSG_CHECKING(for --with-wctype-functions)
2429AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002430 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2431[
Barry Warsawef82cd72000-06-30 16:21:01 +00002432if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002433then
2434 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2435 [Define if you want wctype.h functions to be used instead of the
2436 one supplied by Python itself. (see Include/unicodectype.h).])
2437 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002438else AC_MSG_RESULT(no)
2439fi],
2440[AC_MSG_RESULT(no)])
2441
Guido van Rossum68242b51996-05-28 22:53:03 +00002442# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002443AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002444DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002445
Guido van Rossume97ee181999-12-20 21:27:22 +00002446# the dlopen() function means we might want to use dynload_shlib.o. some
2447# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002448AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002449
2450# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2451# loading of modules.
2452AC_SUBST(DYNLOADFILE)
2453AC_MSG_CHECKING(DYNLOADFILE)
2454if test -z "$DYNLOADFILE"
2455then
2456 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002457 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2458 if test "$ac_cv_func_dlopen" = yes
2459 then DYNLOADFILE="dynload_shlib.o"
2460 else DYNLOADFILE="dynload_aix.o"
2461 fi
2462 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002463 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002464 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2465 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002466 *)
2467 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2468 # out any dynamic loading
2469 if test "$ac_cv_func_dlopen" = yes
2470 then DYNLOADFILE="dynload_shlib.o"
2471 else DYNLOADFILE="dynload_stub.o"
2472 fi
2473 ;;
2474 esac
2475fi
2476AC_MSG_RESULT($DYNLOADFILE)
2477if test "$DYNLOADFILE" != "dynload_stub.o"
2478then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002479 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2480 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002481fi
2482
Jack Jansenc49e5b72001-06-19 15:00:23 +00002483# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2484
2485AC_SUBST(MACHDEP_OBJS)
2486AC_MSG_CHECKING(MACHDEP_OBJS)
2487if test -z "$MACHDEP_OBJS"
2488then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002489 MACHDEP_OBJS=$extra_machdep_objs
2490else
2491 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002492fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002493AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002494
Guido van Rossum627b2d71993-12-24 10:39:16 +00002495# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002496AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2497 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002498 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002499 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Antoine Pitroub7572f02009-12-02 20:46:48 +00002500 initgroups kill killpg lchmod lchown lstat mbrtowc mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002501 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002502 putenv readlink realpath \
Benjamin Peterson965ce872009-04-05 21:24:58 +00002503 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2504 setgid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002505 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setuid setvbuf \
2506 sigaction siginterrupt sigrelse snprintf strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002507 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis113a0852009-05-29 17:25:39 +00002508 truncate uname unsetenv utimes waitpid wait3 wait4 \
2509 wcscoll wcsftime wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002510
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002511# For some functions, having a definition is not sufficient, since
2512# we want to take their address.
2513AC_MSG_CHECKING(for chroot)
2514AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2515 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2516 AC_MSG_RESULT(yes),
2517 AC_MSG_RESULT(no)
2518)
2519AC_MSG_CHECKING(for link)
2520AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2521 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2522 AC_MSG_RESULT(yes),
2523 AC_MSG_RESULT(no)
2524)
2525AC_MSG_CHECKING(for symlink)
2526AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2527 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2528 AC_MSG_RESULT(yes),
2529 AC_MSG_RESULT(no)
2530)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002531AC_MSG_CHECKING(for fchdir)
2532AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2533 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2534 AC_MSG_RESULT(yes),
2535 AC_MSG_RESULT(no)
2536)
2537AC_MSG_CHECKING(for fsync)
2538AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002539 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002540 AC_MSG_RESULT(yes),
2541 AC_MSG_RESULT(no)
2542)
2543AC_MSG_CHECKING(for fdatasync)
2544AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2545 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2546 AC_MSG_RESULT(yes),
2547 AC_MSG_RESULT(no)
2548)
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002549AC_MSG_CHECKING(for epoll)
2550AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2551 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2552 AC_MSG_RESULT(yes),
2553 AC_MSG_RESULT(no)
2554)
2555AC_MSG_CHECKING(for kqueue)
2556AC_TRY_COMPILE([
2557#include <sys/types.h>
2558#include <sys/event.h>
2559 ], int x=kqueue(),
2560 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2561 AC_MSG_RESULT(yes),
2562 AC_MSG_RESULT(no)
2563)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002564# On some systems (eg. FreeBSD 5), we would find a definition of the
2565# functions ctermid_r, setgroups in the library, but no prototype
2566# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2567# address to avoid compiler warnings and potential miscompilations
2568# because of the missing prototypes.
2569
2570AC_MSG_CHECKING(for ctermid_r)
2571AC_TRY_COMPILE([
2572#include "confdefs.h"
2573#include <stdio.h>
2574], void* p = ctermid_r,
2575 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2576 AC_MSG_RESULT(yes),
2577 AC_MSG_RESULT(no)
2578)
2579
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002580AC_MSG_CHECKING(for flock)
2581AC_TRY_COMPILE([
2582#include "confdefs.h"
2583#include <sys/file.h>
2584], void* p = flock,
2585 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2586 AC_MSG_RESULT(yes),
2587 AC_MSG_RESULT(no)
2588)
2589
2590AC_MSG_CHECKING(for getpagesize)
2591AC_TRY_COMPILE([
2592#include "confdefs.h"
2593#include <unistd.h>
2594], void* p = getpagesize,
2595 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2596 AC_MSG_RESULT(yes),
2597 AC_MSG_RESULT(no)
2598)
2599
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002600dnl check for true
2601AC_CHECK_PROGS(TRUE, true, /bin/true)
2602
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002603dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2604dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002605AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002606 AC_CHECK_LIB(resolv, inet_aton)
2607)
2608
Christian Heimesd0764e22007-12-04 15:00:33 +00002609# On Tru64, chflags seems to be present, but calling it will
2610# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002611AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002612AC_TRY_RUN([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002613#include <sys/stat.h>
2614#include <unistd.h>
2615int main(int argc, char*argv[])
2616{
2617 if(chflags(argv[0], 0) != 0)
2618 return 1;
2619 return 0;
2620}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002621]], ac_cv_have_chflags=yes,
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002622 ac_cv_have_chflags=no,
2623 ac_cv_have_chflags=cross)
2624])
2625if test "$ac_cv_have_chflags" = cross ; then
2626 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2627fi
2628if test "$ac_cv_have_chflags" = yes ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002629 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2630fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002631
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002632AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002633AC_TRY_RUN([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002634#include <sys/stat.h>
2635#include <unistd.h>
2636int main(int argc, char*argv[])
2637{
2638 if(lchflags(argv[0], 0) != 0)
2639 return 1;
2640 return 0;
2641}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002642]], ac_cv_have_lchflags=yes,
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002643 ac_cv_have_lchflags=no,
2644 ac_cv_have_lchflags=cross)
2645])
2646if test "$ac_cv_have_lchflags" = cross ; then
2647 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2648fi
2649if test "$ac_cv_have_lchflags" = yes ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002650 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2651fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002652
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002653dnl Check if system zlib has *Copy() functions
2654dnl
2655dnl On MacOSX the linker will search for dylibs on the entire linker path
2656dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2657dnl to revert to a more traditional unix behaviour and make it possible to
2658dnl override the system libz with a local static library of libz. Temporarily
2659dnl add that flag to our CFLAGS as well to ensure that we check the version
2660dnl of libz that will be used by setup.py.
2661dnl The -L/usr/local/lib is needed as wel to get the same compilation
2662dnl environment as setup.py (and leaving it out can cause configure to use the
2663dnl wrong version of the library)
2664case $ac_sys_system/$ac_sys_release in
2665Darwin/*)
2666 _CUR_CFLAGS="${CFLAGS}"
2667 _CUR_LDFLAGS="${LDFLAGS}"
2668 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2669 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2670 ;;
2671esac
2672
2673AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2674
2675case $ac_sys_system/$ac_sys_release in
2676Darwin/*)
2677 CFLAGS="${_CUR_CFLAGS}"
2678 LDFLAGS="${_CUR_LDFLAGS}"
2679 ;;
2680esac
2681
Martin v. Löwise9416172003-05-03 10:12:45 +00002682AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002683AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002684#include "confdefs.h"
2685#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002686], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002687 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2688 AC_MSG_RESULT(yes),
2689 AC_MSG_RESULT(no)
2690)
2691
2692AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002693AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002694#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002695#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002696#include <sys/socket.h>
2697#include <netinet/in.h>
2698#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002699], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002700 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2701 AC_MSG_RESULT(yes),
2702 AC_MSG_RESULT(no)
2703)
2704
2705AC_MSG_CHECKING(for inet_pton)
2706AC_TRY_COMPILE([
2707#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002708#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002709#include <sys/socket.h>
2710#include <netinet/in.h>
2711#include <arpa/inet.h>
2712], void* p = inet_pton,
2713 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2714 AC_MSG_RESULT(yes),
2715 AC_MSG_RESULT(no)
2716)
2717
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002718# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002719AC_MSG_CHECKING(for setgroups)
2720AC_TRY_COMPILE([
2721#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002722#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002723#ifdef HAVE_GRP_H
2724#include <grp.h>
2725#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002726],
2727void* p = setgroups,
2728 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2729 AC_MSG_RESULT(yes),
2730 AC_MSG_RESULT(no)
2731)
2732
Fred Drake8cef4cf2000-06-28 16:40:38 +00002733# check for openpty and forkpty
2734
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002735AC_CHECK_FUNCS(openpty,,
2736 AC_CHECK_LIB(util,openpty,
2737 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2738 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2739 )
2740)
2741AC_CHECK_FUNCS(forkpty,,
2742 AC_CHECK_LIB(util,forkpty,
2743 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2744 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2745 )
2746)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002747
Christian Heimesb186d002008-03-18 15:15:01 +00002748# Stuff for expat.
2749AC_CHECK_FUNCS(memmove)
2750
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002751# check for long file support functions
2752AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2753
Christian Heimesb186d002008-03-18 15:15:01 +00002754AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002755AC_CHECK_FUNCS(getpgrp,
2756 AC_TRY_COMPILE([#include <unistd.h>],
2757 [getpgrp(0);],
2758 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2759 [Define if getpgrp() must be called as getpgrp(0).])
2760 )
2761)
Jack Jansen150753c2003-03-29 22:07:47 +00002762AC_CHECK_FUNCS(setpgrp,
2763 AC_TRY_COMPILE([#include <unistd.h>],
2764 [setpgrp(0,0);],
2765 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2766 [Define if setpgrp() must be called as setpgrp(0, 0).])
2767 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002768)
2769AC_CHECK_FUNCS(gettimeofday,
2770 AC_TRY_COMPILE([#include <sys/time.h>],
2771 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2772 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2773 [Define if gettimeofday() does not have second (timezone) argument
2774 This is the case on Motorola V4 (R40V4.2)])
2775 )
2776)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002777
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002778AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002779AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002780#if defined(MAJOR_IN_MKDEV)
2781#include <sys/mkdev.h>
2782#elif defined(MAJOR_IN_SYSMACROS)
2783#include <sys/sysmacros.h>
2784#else
2785#include <sys/types.h>
2786#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002787],[
2788 makedev(major(0),minor(0));
2789],[
2790 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2791 [Define to 1 if you have the device macros.])
2792 AC_MSG_RESULT(yes)
2793],[
2794 AC_MSG_RESULT(no)
2795])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002796
2797# On OSF/1 V5.1, getaddrinfo is available, but a define
2798# for [no]getaddrinfo in netdb.h.
2799AC_MSG_CHECKING(for getaddrinfo)
2800AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002801#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002802#include <sys/socket.h>
2803#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002804#include <stdio.h>
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002805], [getaddrinfo(NULL, NULL, NULL, NULL);],
2806have_getaddrinfo=yes,
2807have_getaddrinfo=no)
2808AC_MSG_RESULT($have_getaddrinfo)
2809if test $have_getaddrinfo = yes
2810then
2811 AC_MSG_CHECKING(getaddrinfo bug)
2812 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
2813 AC_TRY_RUN([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002814#include <sys/types.h>
2815#include <netdb.h>
2816#include <string.h>
2817#include <sys/socket.h>
2818#include <netinet/in.h>
2819
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002820int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002821{
2822 int passive, gaierr, inet4 = 0, inet6 = 0;
2823 struct addrinfo hints, *ai, *aitop;
2824 char straddr[INET6_ADDRSTRLEN], strport[16];
2825
2826 for (passive = 0; passive <= 1; passive++) {
2827 memset(&hints, 0, sizeof(hints));
2828 hints.ai_family = AF_UNSPEC;
2829 hints.ai_flags = passive ? AI_PASSIVE : 0;
2830 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002831 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002832 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2833 (void)gai_strerror(gaierr);
2834 goto bad;
2835 }
2836 for (ai = aitop; ai; ai = ai->ai_next) {
2837 if (ai->ai_addr == NULL ||
2838 ai->ai_addrlen == 0 ||
2839 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2840 straddr, sizeof(straddr), strport, sizeof(strport),
2841 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2842 goto bad;
2843 }
2844 switch (ai->ai_family) {
2845 case AF_INET:
2846 if (strcmp(strport, "54321") != 0) {
2847 goto bad;
2848 }
2849 if (passive) {
2850 if (strcmp(straddr, "0.0.0.0") != 0) {
2851 goto bad;
2852 }
2853 } else {
2854 if (strcmp(straddr, "127.0.0.1") != 0) {
2855 goto bad;
2856 }
2857 }
2858 inet4++;
2859 break;
2860 case AF_INET6:
2861 if (strcmp(strport, "54321") != 0) {
2862 goto bad;
2863 }
2864 if (passive) {
2865 if (strcmp(straddr, "::") != 0) {
2866 goto bad;
2867 }
2868 } else {
2869 if (strcmp(straddr, "::1") != 0) {
2870 goto bad;
2871 }
2872 }
2873 inet6++;
2874 break;
2875 case AF_UNSPEC:
2876 goto bad;
2877 break;
2878 default:
2879 /* another family support? */
2880 break;
2881 }
2882 }
2883 }
2884
2885 if (!(inet4 == 0 || inet4 == 2))
2886 goto bad;
2887 if (!(inet6 == 0 || inet6 == 2))
2888 goto bad;
2889
2890 if (aitop)
2891 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002892 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002893
2894 bad:
2895 if (aitop)
2896 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002897 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002898}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002899]], ac_cv_buggy_getaddrinfo=no,
2900 ac_cv_buggy_getaddrinfo=yes,
2901 ac_cv_buggy_getaddrinfo=yes))
2902fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002903
Mark Dickinson2df5d282009-12-31 21:22:50 +00002904if test $have_getaddrinfo = no -o "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002905then
2906 if test $ipv6 = yes
2907 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002908 echo 'Fatal: You must get working getaddrinfo() function.'
2909 echo ' or you can specify "--disable-ipv6"'.
2910 exit 1
2911 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002912else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002913 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002914fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002915AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002916
Guido van Rossum627b2d71993-12-24 10:39:16 +00002917# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002918AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002919AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002920AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002921AC_CHECK_MEMBERS([struct stat.st_rdev])
2922AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002923AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002924AC_CHECK_MEMBERS([struct stat.st_gen])
2925AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002926AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002927
2928AC_MSG_CHECKING(for time.h that defines altzone)
2929AC_CACHE_VAL(ac_cv_header_time_altzone,
2930[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2931 ac_cv_header_time_altzone=yes,
2932 ac_cv_header_time_altzone=no)])
2933AC_MSG_RESULT($ac_cv_header_time_altzone)
2934if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002935 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002936fi
2937
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002938was_it_defined=no
2939AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002940AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002941#include <sys/types.h>
2942#include <sys/select.h>
2943#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002944], [;], [
2945 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2946 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2947 (which you can't on SCO ODT 3.0).])
2948 was_it_defined=yes
2949])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002950AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002951
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002952AC_MSG_CHECKING(for addrinfo)
2953AC_CACHE_VAL(ac_cv_struct_addrinfo,
2954AC_TRY_COMPILE([
2955# include <netdb.h>],
2956 [struct addrinfo a],
2957 ac_cv_struct_addrinfo=yes,
2958 ac_cv_struct_addrinfo=no))
2959AC_MSG_RESULT($ac_cv_struct_addrinfo)
2960if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002961 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002962fi
2963
2964AC_MSG_CHECKING(for sockaddr_storage)
2965AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2966AC_TRY_COMPILE([
2967# include <sys/types.h>
2968# include <sys/socket.h>],
2969 [struct sockaddr_storage s],
2970 ac_cv_struct_sockaddr_storage=yes,
2971 ac_cv_struct_sockaddr_storage=no))
2972AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2973if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002974 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002975fi
2976
Guido van Rossum627b2d71993-12-24 10:39:16 +00002977# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002978
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002979AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002980AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002981
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002982works=no
2983AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002984AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2985 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2986)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002987AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002988
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002989works=no
2990AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002991AC_TRY_COMPILE([], [signed char c;], works=yes,
2992 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2993)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002994AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002995
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002996have_prototypes=no
2997AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002998AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2999 AC_DEFINE(HAVE_PROTOTYPES, 1,
3000 [Define if your compiler supports function prototype])
3001 have_prototypes=yes
3002])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003003AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003004
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003005works=no
3006AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003007AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003008#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003009int foo(int x, ...) {
3010 va_list va;
3011 va_start(va, x);
3012 va_arg(va, int);
3013 va_arg(va, char *);
3014 va_arg(va, double);
3015 return 0;
3016}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003017], [return foo(10, "", 3.14);], [
3018 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3019 [Define if your compiler supports variable length function prototypes
3020 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3021 works=yes
3022])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003023AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003024
Dave Cole331708b2004-08-09 04:51:41 +00003025# check for socketpair
3026AC_MSG_CHECKING(for socketpair)
3027AC_TRY_COMPILE([
3028#include <sys/types.h>
3029#include <sys/socket.h>
3030], void *x=socketpair,
3031 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3032 AC_MSG_RESULT(yes),
3033 AC_MSG_RESULT(no)
3034)
3035
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003036# check if sockaddr has sa_len member
3037AC_MSG_CHECKING(if sockaddr has sa_len member)
3038AC_TRY_COMPILE([#include <sys/types.h>
3039#include <sys/socket.h>],
3040[struct sockaddr x;
3041x.sa_len = 0;],
3042 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003043 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003044 AC_MSG_RESULT(no))
3045
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003046va_list_is_array=no
3047AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003048AC_TRY_COMPILE([
3049#ifdef HAVE_STDARG_PROTOTYPES
3050#include <stdarg.h>
3051#else
3052#include <varargs.h>
3053#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003054], [va_list list1, list2; list1 = list2;], , [
3055 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3056 va_list_is_array=yes
3057])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003058AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003059
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003060# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003061AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3062 [Define this if you have some version of gethostbyname_r()])
3063
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003064AC_CHECK_FUNC(gethostbyname_r, [
3065 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3066 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3067 OLD_CFLAGS=$CFLAGS
3068 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3069 AC_TRY_COMPILE([
3070# include <netdb.h>
3071 ], [
3072 char *name;
3073 struct hostent *he, *res;
3074 char buffer[2048];
3075 int buflen = 2048;
3076 int h_errnop;
3077
3078 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3079 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003080 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003081 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3082 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003083 AC_MSG_RESULT(yes)
3084 ], [
3085 AC_MSG_RESULT(no)
3086 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3087 AC_TRY_COMPILE([
3088# include <netdb.h>
3089 ], [
3090 char *name;
3091 struct hostent *he;
3092 char buffer[2048];
3093 int buflen = 2048;
3094 int h_errnop;
3095
3096 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3097 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003098 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003099 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3100 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003101 AC_MSG_RESULT(yes)
3102 ], [
3103 AC_MSG_RESULT(no)
3104 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3105 AC_TRY_COMPILE([
3106# include <netdb.h>
3107 ], [
3108 char *name;
3109 struct hostent *he;
3110 struct hostent_data data;
3111
3112 (void) gethostbyname_r(name, he, &data);
3113 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003114 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003115 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3116 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003117 AC_MSG_RESULT(yes)
3118 ], [
3119 AC_MSG_RESULT(no)
3120 ])
3121 ])
3122 ])
3123 CFLAGS=$OLD_CFLAGS
3124], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003125 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003126])
3127AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3128AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3129AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003130AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003131AC_SUBST(HAVE_GETHOSTBYNAME)
3132
Guido van Rossum627b2d71993-12-24 10:39:16 +00003133# checks for system services
3134# (none yet)
3135
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003136# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003137AC_CHECK_FUNC(__fpu_control,
3138 [],
3139 [AC_CHECK_LIB(ieee, __fpu_control)
3140])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003141
Guido van Rossum93274221997-05-09 02:42:00 +00003142# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003143AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003144AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003145 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3146[
Guido van Rossum93274221997-05-09 02:42:00 +00003147if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003148then
3149 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3150 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3151 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003152else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003153fi],
3154[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003155
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003156# check for --with-libm=...
3157AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003158case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003159Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003160*) LIBM=-lm
3161esac
Guido van Rossum93274221997-05-09 02:42:00 +00003162AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003163AC_ARG_WITH(libm,
3164 AC_HELP_STRING(--with-libm=STRING, math library),
3165[
Guido van Rossum93274221997-05-09 02:42:00 +00003166if test "$withval" = no
3167then LIBM=
3168 AC_MSG_RESULT(force LIBM empty)
3169elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003170then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003171 AC_MSG_RESULT(set LIBM="$withval")
3172else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003173fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003174[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003175
3176# check for --with-libc=...
3177AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003178AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003179AC_ARG_WITH(libc,
3180 AC_HELP_STRING(--with-libc=STRING, C library),
3181[
Guido van Rossum93274221997-05-09 02:42:00 +00003182if test "$withval" = no
3183then LIBC=
3184 AC_MSG_RESULT(force LIBC empty)
3185elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003186then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003187 AC_MSG_RESULT(set LIBC="$withval")
3188else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003189fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003190[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003191
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003192# **************************************************
3193# * Check for various properties of floating point *
3194# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003195
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003196AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3197AC_CACHE_VAL(ac_cv_little_endian_double, [
3198AC_TRY_RUN([
3199#include <string.h>
3200int main() {
3201 double x = 9006104071832581.0;
3202 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3203 return 0;
3204 else
3205 return 1;
3206}
3207],
3208ac_cv_little_endian_double=yes,
3209ac_cv_little_endian_double=no,
3210ac_cv_little_endian_double=no)])
3211AC_MSG_RESULT($ac_cv_little_endian_double)
3212if test "$ac_cv_little_endian_double" = yes
3213then
3214 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3215 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3216 with the least significant byte first])
3217fi
3218
3219AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3220AC_CACHE_VAL(ac_cv_big_endian_double, [
3221AC_TRY_RUN([
3222#include <string.h>
3223int main() {
3224 double x = 9006104071832581.0;
3225 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3226 return 0;
3227 else
3228 return 1;
3229}
3230],
3231ac_cv_big_endian_double=yes,
3232ac_cv_big_endian_double=no,
3233ac_cv_big_endian_double=no)])
3234AC_MSG_RESULT($ac_cv_big_endian_double)
3235if test "$ac_cv_big_endian_double" = yes
3236then
3237 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3238 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3239 with the most significant byte first])
3240fi
3241
3242# Some ARM platforms use a mixed-endian representation for doubles.
3243# While Python doesn't currently have full support for these platforms
3244# (see e.g., issue 1762561), we can at least make sure that float <-> string
3245# conversions work.
3246AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3247AC_CACHE_VAL(ac_cv_mixed_endian_double, [
3248AC_TRY_RUN([
3249#include <string.h>
3250int main() {
3251 double x = 9006104071832581.0;
3252 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3253 return 0;
3254 else
3255 return 1;
3256}
3257],
3258ac_cv_mixed_endian_double=yes,
3259ac_cv_mixed_endian_double=no,
3260ac_cv_mixed_endian_double=no)])
3261AC_MSG_RESULT($ac_cv_mixed_endian_double)
3262if test "$ac_cv_mixed_endian_double" = yes
3263then
3264 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3265 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3266 in ARM mixed-endian order (byte order 45670123)])
3267fi
3268
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003269# The short float repr introduced in Python 3.1 requires the
3270# correctly-rounded string <-> double conversion functions from
3271# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3272# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003273# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003274# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003275
3276# This inline assembler syntax may also work for suncc and icc,
3277# so we try it on all platforms.
3278
3279AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
3280AC_TRY_COMPILE([], [
3281 unsigned short cw;
3282 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3283 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
3284],
3285[have_gcc_asm_for_x87=yes], [have_gcc_asm_for_x87=no])
3286AC_MSG_RESULT($have_gcc_asm_for_x87)
3287if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003288then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003289 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3290 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003291fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003292
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003293# Detect whether system arithmetic is subject to x87-style double
3294# rounding issues. The result of this test has little meaning on non
3295# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3296# mode is round-to-nearest and double rounding issues are present, and
3297# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3298AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003299# $BASECFLAGS may affect the result
3300ac_save_cc="$CC"
3301CC="$CC $BASECFLAGS"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003302AC_TRY_RUN([
3303#include <stdlib.h>
3304#include <math.h>
3305int main() {
3306 volatile double x, y, z;
3307 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3308 x = 0.99999999999999989; /* 1-2**-53 */
3309 y = 1./x;
3310 if (y != 1.)
3311 exit(0);
3312 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3313 x = 1e16;
3314 y = 2.99999;
3315 z = x + y;
3316 if (z != 1e16+4.)
3317 exit(0);
3318 /* both tests show evidence of double rounding */
3319 exit(1);
3320}
3321],
3322ac_cv_x87_double_rounding=no,
3323ac_cv_x87_double_rounding=yes,
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003324ac_cv_x87_double_rounding=no)
3325CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003326AC_MSG_RESULT($ac_cv_x87_double_rounding)
3327if test "$ac_cv_x87_double_rounding" = yes
3328then
3329 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3330 [Define if arithmetic is subject to x87-style double rounding issue])
3331fi
3332
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003333# ************************************
3334# * Check for mathematical functions *
3335# ************************************
3336
3337LIBS_SAVE=$LIBS
3338LIBS="$LIBS $LIBM"
3339
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003340# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3341# -0. on some architectures.
3342AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3343AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3344AC_TRY_RUN([
3345#include <math.h>
3346#include <stdlib.h>
3347int main() {
3348 /* return 0 if either negative zeros don't exist
3349 on this platform or if negative zeros exist
3350 and tanh(-0.) == -0. */
3351 if (atan2(0., -1.) == atan2(-0., -1.) ||
3352 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3353 else exit(1);
3354}
3355],
3356ac_cv_tanh_preserves_zero_sign=yes,
3357ac_cv_tanh_preserves_zero_sign=no,
3358ac_cv_tanh_preserves_zero_sign=no)])
3359AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3360if test "$ac_cv_tanh_preserves_zero_sign" = yes
3361then
3362 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3363 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3364fi
3365
Mark Dickinson9c113362009-09-05 10:36:23 +00003366AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
3367AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003368AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes99170a52007-12-19 02:07:34 +00003369
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003370LIBS=$LIBS_SAVE
3371
Mark Dickinsona614f042009-11-28 12:48:43 +00003372# For multiprocessing module, check that sem_open
3373# actually works. For FreeBSD versions <= 7.2,
3374# the kernel module that provides POSIX semaphores
3375# isn't loaded by default, so an attempt to call
3376# sem_open results in a 'Signal 12' error.
3377AC_MSG_CHECKING(whether POSIX semaphores are enabled)
3378AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
3379AC_TRY_RUN([
3380#include <unistd.h>
3381#include <fcntl.h>
3382#include <stdio.h>
3383#include <semaphore.h>
3384#include <sys/stat.h>
3385
3386int main(void) {
3387 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3388 if (a == SEM_FAILED) {
3389 perror("sem_open");
3390 return 1;
3391 }
3392 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003393 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00003394 return 0;
3395}
3396], ac_cv_posix_semaphores_enabled=yes,
3397 ac_cv_posix_semaphores_enabled=no,
3398 ac_cv_posix_semaphores_enabled=yes)
3399)
3400AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
3401if test $ac_cv_posix_semaphores_enabled = no
3402then
3403 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
3404 [Define if POSIX semaphores aren't enabled on your system])
3405fi
3406
Mark Dickinson10683072009-04-18 21:18:19 +00003407# Multiprocessing check for broken sem_getvalue
3408AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003409AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Mark Dickinson10683072009-04-18 21:18:19 +00003410AC_TRY_RUN([
3411#include <unistd.h>
3412#include <fcntl.h>
3413#include <stdio.h>
3414#include <semaphore.h>
3415#include <sys/stat.h>
3416
3417int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00003418 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00003419 int count;
3420 int res;
3421 if(a==SEM_FAILED){
3422 perror("sem_open");
3423 return 1;
3424
3425 }
3426 res = sem_getvalue(a, &count);
3427 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003428 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00003429 return res==-1 ? 1 : 0;
3430}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003431], ac_cv_broken_sem_getvalue=no,
3432 ac_cv_broken_sem_getvalue=yes,
3433 ac_cv_broken_sem_getvalue=yes)
Mark Dickinson10683072009-04-18 21:18:19 +00003434)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003435AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3436if test $ac_cv_broken_sem_getvalue = yes
3437then
3438 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3439 [define to 1 if your sem_getvalue is broken.])
3440fi
Mark Dickinson10683072009-04-18 21:18:19 +00003441
Mark Dickinsonbd792642009-03-18 20:06:12 +00003442# determine what size digit to use for Python's longs
3443AC_MSG_CHECKING([digit size for Python's longs])
3444AC_ARG_ENABLE(big-digits,
3445AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3446[case $enable_big_digits in
3447yes)
3448 enable_big_digits=30 ;;
3449no)
3450 enable_big_digits=15 ;;
3451[15|30])
3452 ;;
3453*)
3454 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3455esac
3456AC_MSG_RESULT($enable_big_digits)
3457AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3458],
3459[AC_MSG_RESULT(no value specified)])
3460
Guido van Rossumef2255b2000-03-10 22:30:29 +00003461# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003462AC_CHECK_HEADER(wchar.h, [
3463 AC_DEFINE(HAVE_WCHAR_H, 1,
3464 [Define if the compiler provides a wchar.h header file.])
3465 wchar_h="yes"
3466],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003467wchar_h="no"
3468)
3469
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003470# determine wchar_t size
3471if test "$wchar_h" = yes
3472then
Guido van Rossum67b26592001-10-20 14:21:45 +00003473 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003474fi
3475
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003476AC_MSG_CHECKING(for UCS-4 tcl)
3477have_ucs4_tcl=no
3478AC_TRY_COMPILE([
3479#include <tcl.h>
3480#if TCL_UTF_MAX != 6
3481# error "NOT UCS4_TCL"
3482#endif], [], [
3483 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3484 have_ucs4_tcl=yes
3485])
3486AC_MSG_RESULT($have_ucs4_tcl)
3487
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003488# check whether wchar_t is signed or not
3489if test "$wchar_h" = yes
3490then
3491 # check whether wchar_t is signed or not
3492 AC_MSG_CHECKING(whether wchar_t is signed)
3493 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3494 AC_TRY_RUN([
3495 #include <wchar.h>
3496 int main()
3497 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003498 /* Success: exit code 0 */
3499 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003500 }
3501 ],
3502 ac_cv_wchar_t_signed=yes,
3503 ac_cv_wchar_t_signed=no,
3504 ac_cv_wchar_t_signed=yes)])
3505 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3506fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003507
Georg Brandl52d168a2008-01-07 18:10:24 +00003508AC_MSG_CHECKING(what type to use for str)
3509AC_ARG_WITH(wide-unicode,
3510 AC_HELP_STRING(--with-wide-unicode, Use 4-byte Unicode characters (default is 2 bytes)),
3511[
3512if test "$withval" != no
3513then unicode_size="4"
3514else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003515fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003516],
3517[
3518case "$have_ucs4_tcl" in
3519 yes) unicode_size="4" ;;
3520 *) unicode_size="2" ;;
3521esac
3522])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003523
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003524AH_TEMPLATE(Py_UNICODE_SIZE,
3525 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003526case "$unicode_size" in
3527 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3528 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003529esac
3530
Martin v. Löwis11437992002-04-12 09:54:03 +00003531AH_TEMPLATE(PY_UNICODE_TYPE,
3532 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003533
Georg Brandl52d168a2008-01-07 18:10:24 +00003534# wchar_t is only usable if it maps to an unsigned type
3535if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003536 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003537then
3538 PY_UNICODE_TYPE="wchar_t"
3539 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3540 [Define if you have a useable wchar_t type defined in wchar.h; useable
3541 means wchar_t must be an unsigned type with at least 16 bits. (see
3542 Include/unicodeobject.h).])
3543 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3544elif test "$ac_cv_sizeof_short" = "$unicode_size"
3545then
3546 PY_UNICODE_TYPE="unsigned short"
3547 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3548elif test "$ac_cv_sizeof_long" = "$unicode_size"
3549then
3550 PY_UNICODE_TYPE="unsigned long"
3551 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3552else
3553 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003554fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003555AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003556
3557# check for endianness
3558AC_C_BIGENDIAN
3559
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003560# Check whether right shifting a negative integer extends the sign bit
3561# or fills with zeros (like the Cray J90, according to Tim Peters).
3562AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003563AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003564AC_TRY_RUN([
3565int main()
3566{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003567 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003568}
Guido van Rossum3065c942001-09-17 04:03:14 +00003569],
3570ac_cv_rshift_extends_sign=yes,
3571ac_cv_rshift_extends_sign=no,
3572ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003573AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3574if test "$ac_cv_rshift_extends_sign" = no
3575then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003576 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3577 [Define if i>>j for signed int i does not extend the sign bit
3578 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003579fi
3580
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003581# check for getc_unlocked and related locking functions
3582AC_MSG_CHECKING(for getc_unlocked() and friends)
3583AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3584AC_TRY_LINK([#include <stdio.h>],[
3585 FILE *f = fopen("/dev/null", "r");
3586 flockfile(f);
3587 getc_unlocked(f);
3588 funlockfile(f);
3589], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3590AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3591if test "$ac_cv_have_getc_unlocked" = yes
3592then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003593 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3594 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003595fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003596
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003597# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003598# save the value of LIBS so we don't actually link Python with readline
3599LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003600
3601# On some systems we need to link readline to a termcap compatible
3602# library. NOTE: Keep the precedence of listed libraries synchronised
3603# with setup.py.
3604py_cv_lib_readline=no
3605AC_MSG_CHECKING([how to link readline libs])
3606for py_libtermcap in "" ncursesw ncurses curses termcap; do
3607 if test -z "$py_libtermcap"; then
3608 READLINE_LIBS="-lreadline"
3609 else
3610 READLINE_LIBS="-lreadline -l$py_libtermcap"
3611 fi
3612 LIBS="$READLINE_LIBS $LIBS_no_readline"
3613 AC_LINK_IFELSE(
3614 [AC_LANG_CALL([],[readline])],
3615 [py_cv_lib_readline=yes])
3616 if test $py_cv_lib_readline = yes; then
3617 break
3618 fi
3619done
3620# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3621#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003622if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003623 AC_MSG_RESULT([none])
3624else
3625 AC_MSG_RESULT([$READLINE_LIBS])
3626 AC_DEFINE(HAVE_LIBREADLINE, 1,
3627 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003628fi
3629
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003630# check for readline 2.1
3631AC_CHECK_LIB(readline, rl_callback_handler_install,
3632 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003633 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003634
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003635# check for readline 2.2
3636AC_TRY_CPP([#include <readline/readline.h>],
3637have_readline=yes, have_readline=no)
3638if test $have_readline = yes
3639then
3640 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3641 [readline/readline.h],
3642 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3643 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00003644 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3645 [readline/readline.h],
3646 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3647 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003648fi
3649
Martin v. Löwis0daad592001-09-30 21:09:59 +00003650# check for readline 4.0
3651AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003652 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003653 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003654
Thomas Wouters89d996e2007-09-08 17:39:28 +00003655# also in 4.0
3656AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3657 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003658 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003659
Guido van Rossum353ae582001-07-10 16:45:32 +00003660# check for readline 4.2
3661AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003662 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003663 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003664
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003665# also in readline 4.2
3666AC_TRY_CPP([#include <readline/readline.h>],
3667have_readline=yes, have_readline=no)
3668if test $have_readline = yes
3669then
3670 AC_EGREP_HEADER([extern int rl_catch_signals;],
3671 [readline/readline.h],
3672 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3673 [Define if you can turn off readline's signal handling.]), )
3674fi
3675
Martin v. Löwis82bca632006-02-10 20:49:30 +00003676# End of readline checks: restore LIBS
3677LIBS=$LIBS_no_readline
3678
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003679AC_MSG_CHECKING(for broken nice())
3680AC_CACHE_VAL(ac_cv_broken_nice, [
3681AC_TRY_RUN([
3682int main()
3683{
3684 int val1 = nice(1);
3685 if (val1 != -1 && val1 == nice(2))
3686 exit(0);
3687 exit(1);
3688}
Guido van Rossum3065c942001-09-17 04:03:14 +00003689],
3690ac_cv_broken_nice=yes,
3691ac_cv_broken_nice=no,
3692ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003693AC_MSG_RESULT($ac_cv_broken_nice)
3694if test "$ac_cv_broken_nice" = yes
3695then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003696 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3697 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003698fi
3699
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003700AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003701AC_CACHE_VAL(ac_cv_broken_poll,
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003702AC_TRY_RUN([
3703#include <poll.h>
3704
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003705int main()
3706{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003707 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003708 int poll_test;
3709
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003710 close (42);
3711
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003712 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003713 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003714 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003715 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003716 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003717 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003718 return 1;
3719}
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003720],
3721ac_cv_broken_poll=yes,
3722ac_cv_broken_poll=no,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003723ac_cv_broken_poll=no))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003724AC_MSG_RESULT($ac_cv_broken_poll)
3725if test "$ac_cv_broken_poll" = yes
3726then
3727 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3728 [Define if poll() sets errno on invalid file descriptors.])
3729fi
3730
Brett Cannon43802422005-02-10 20:48:03 +00003731# Before we can test tzset, we need to check if struct tm has a tm_zone
3732# (which is not required by ISO C or UNIX spec) and/or if we support
3733# tzname[]
3734AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003735
Brett Cannon43802422005-02-10 20:48:03 +00003736# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003737AC_MSG_CHECKING(for working tzset())
3738AC_CACHE_VAL(ac_cv_working_tzset, [
3739AC_TRY_RUN([
3740#include <stdlib.h>
3741#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003742#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003743
3744#if HAVE_TZNAME
3745extern char *tzname[];
3746#endif
3747
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003748int main()
3749{
Brett Cannon18367812003-09-19 00:59:16 +00003750 /* Note that we need to ensure that not only does tzset(3)
3751 do 'something' with localtime, but it works as documented
3752 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003753 This includes making sure that tzname is set properly if
3754 tm->tm_zone does not exist since it is the alternative way
3755 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003756
3757 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003758 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003759 */
3760
Brett Cannon43802422005-02-10 20:48:03 +00003761 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003762 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3763
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003764 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003765 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003766 if (localtime(&groundhogday)->tm_hour != 0)
3767 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003768#if HAVE_TZNAME
3769 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3770 if (strcmp(tzname[0], "UTC") ||
3771 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3772 exit(1);
3773#endif
Brett Cannon18367812003-09-19 00:59:16 +00003774
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003775 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003776 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003777 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003778 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003779#if HAVE_TZNAME
3780 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3781 exit(1);
3782#endif
Brett Cannon18367812003-09-19 00:59:16 +00003783
3784 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3785 tzset();
3786 if (localtime(&groundhogday)->tm_hour != 11)
3787 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003788#if HAVE_TZNAME
3789 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3790 exit(1);
3791#endif
3792
3793#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003794 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3795 exit(1);
3796 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3797 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003798#endif
Brett Cannon18367812003-09-19 00:59:16 +00003799
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003800 exit(0);
3801}
3802],
3803ac_cv_working_tzset=yes,
3804ac_cv_working_tzset=no,
3805ac_cv_working_tzset=no)])
3806AC_MSG_RESULT($ac_cv_working_tzset)
3807if test "$ac_cv_working_tzset" = yes
3808then
3809 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3810 [Define if tzset() actually switches the local timezone in a meaningful way.])
3811fi
3812
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003813# Look for subsecond timestamps in struct stat
3814AC_MSG_CHECKING(for tv_nsec in struct stat)
3815AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3816AC_TRY_COMPILE([#include <sys/stat.h>], [
3817struct stat st;
3818st.st_mtim.tv_nsec = 1;
3819],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003820ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003821ac_cv_stat_tv_nsec=no,
3822ac_cv_stat_tv_nsec=no))
3823AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3824if test "$ac_cv_stat_tv_nsec" = yes
3825then
3826 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3827 [Define if you have struct stat.st_mtim.tv_nsec])
3828fi
3829
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003830# Look for BSD style subsecond timestamps in struct stat
3831AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3832AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3833AC_TRY_COMPILE([#include <sys/stat.h>], [
3834struct stat st;
3835st.st_mtimespec.tv_nsec = 1;
3836],
3837ac_cv_stat_tv_nsec2=yes,
3838ac_cv_stat_tv_nsec2=no,
3839ac_cv_stat_tv_nsec2=no))
3840AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3841if test "$ac_cv_stat_tv_nsec2" = yes
3842then
3843 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3844 [Define if you have struct stat.st_mtimensec])
3845fi
3846
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003847# On HP/UX 11.0, mvwdelch is a block with a return statement
3848AC_MSG_CHECKING(whether mvwdelch is an expression)
3849AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3850AC_TRY_COMPILE([#include <curses.h>], [
3851 int rtn;
3852 rtn = mvwdelch(0,0,0);
3853], ac_cv_mvwdelch_is_expression=yes,
3854 ac_cv_mvwdelch_is_expression=no,
3855 ac_cv_mvwdelch_is_expression=yes))
3856AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3857
3858if test "$ac_cv_mvwdelch_is_expression" = yes
3859then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003860 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3861 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003862fi
3863
3864AC_MSG_CHECKING(whether WINDOW has _flags)
3865AC_CACHE_VAL(ac_cv_window_has_flags,
3866AC_TRY_COMPILE([#include <curses.h>], [
3867 WINDOW *w;
3868 w->_flags = 0;
3869], ac_cv_window_has_flags=yes,
3870 ac_cv_window_has_flags=no,
3871 ac_cv_window_has_flags=no))
3872AC_MSG_RESULT($ac_cv_window_has_flags)
3873
3874
3875if test "$ac_cv_window_has_flags" = yes
3876then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003877 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3878 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003879fi
3880
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003881AC_MSG_CHECKING(for is_term_resized)
3882AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3883 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3884 AC_MSG_RESULT(yes),
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003885 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003886)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003887
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003888AC_MSG_CHECKING(for resize_term)
3889AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3890 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3891 AC_MSG_RESULT(yes),
Neal Norwitz865400f2003-03-21 01:42:58 +00003892 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003893)
3894
3895AC_MSG_CHECKING(for resizeterm)
3896AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3897 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3898 AC_MSG_RESULT(yes),
3899 AC_MSG_RESULT(no)
3900)
3901
Thomas Wouters89f507f2006-12-13 04:49:30 +00003902AC_MSG_CHECKING(for /dev/ptmx)
3903
3904if test -r /dev/ptmx
3905then
3906 AC_MSG_RESULT(yes)
3907 AC_DEFINE(HAVE_DEV_PTMX, 1,
3908 [Define if we have /dev/ptmx.])
3909else
3910 AC_MSG_RESULT(no)
3911fi
3912
3913AC_MSG_CHECKING(for /dev/ptc)
3914
3915if test -r /dev/ptc
3916then
3917 AC_MSG_RESULT(yes)
3918 AC_DEFINE(HAVE_DEV_PTC, 1,
3919 [Define if we have /dev/ptc.])
3920else
3921 AC_MSG_RESULT(no)
3922fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003923
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003924if test "$have_long_long" = yes
3925then
3926 AC_MSG_CHECKING(for %lld and %llu printf() format support)
3927 AC_CACHE_VAL(ac_cv_have_long_long_format,
3928 AC_TRY_RUN([[
3929 #include <stdio.h>
3930 #include <stddef.h>
3931 #include <string.h>
3932
3933 #ifdef HAVE_SYS_TYPES_H
3934 #include <sys/types.h>
3935 #endif
3936
3937 int main()
3938 {
3939 char buffer[256];
3940
3941 if (sprintf(buffer, "%lld", (long long)123) < 0)
3942 return 1;
3943 if (strcmp(buffer, "123"))
3944 return 1;
3945
3946 if (sprintf(buffer, "%lld", (long long)-123) < 0)
3947 return 1;
3948 if (strcmp(buffer, "-123"))
3949 return 1;
3950
3951 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
3952 return 1;
3953 if (strcmp(buffer, "123"))
3954 return 1;
3955
3956 return 0;
3957 }
3958 ]], ac_cv_have_long_long_format=yes,
3959 ac_cv_have_long_long_format=no,
3960 ac_cv_have_long_long_format=no)
3961 )
3962 AC_MSG_RESULT($ac_cv_have_long_long_format)
3963fi
3964
Mark Dickinson89d7d412009-12-31 20:50:59 +00003965if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003966then
3967 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
3968 [Define to printf format modifier for long long type])
3969fi
3970
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00003971if test $ac_sys_system = Darwin
3972then
3973 LIBS="$LIBS -framework CoreFoundation"
3974fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003975
Benjamin Peterson8f326b22009-12-13 02:10:36 +00003976AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
3977AC_TRY_RUN([
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00003978#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00003979#include <stddef.h>
3980#include <string.h>
3981
Christian Heimes2c181612007-12-17 20:04:13 +00003982#ifdef HAVE_SYS_TYPES_H
3983#include <sys/types.h>
3984#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00003985
3986#ifdef HAVE_SSIZE_T
3987typedef ssize_t Py_ssize_t;
3988#elif SIZEOF_VOID_P == SIZEOF_LONG
3989typedef long Py_ssize_t;
3990#else
3991typedef int Py_ssize_t;
3992#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00003993
Christian Heimes2c181612007-12-17 20:04:13 +00003994int main()
3995{
3996 char buffer[256];
3997
Thomas Wouters477c8d52006-05-27 19:21:47 +00003998 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3999 return 1;
4000
Thomas Wouters89f507f2006-12-13 04:49:30 +00004001 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00004002 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00004003
4004 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
4005 return 1;
4006
4007 if (strcmp(buffer, "-123"))
4008 return 1;
4009
Thomas Wouters477c8d52006-05-27 19:21:47 +00004010 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004011}
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004012], ac_cv_have_size_t_format=yes,
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00004013 ac_cv_have_size_t_format=no,
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004014 [ac_cv_have_size_t_format="cross -- assuming yes"]
4015)])
4016if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004017 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
4018 [Define to printf format modifier for Py_ssize_t])
4019fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00004020
Martin v. Löwis01c04012002-11-11 14:58:44 +00004021AC_CHECK_TYPE(socklen_t,,
4022 AC_DEFINE(socklen_t,int,
4023 Define to `int' if <sys/socket.h> does not define.),[
4024#ifdef HAVE_SYS_TYPES_H
4025#include <sys/types.h>
4026#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00004027#ifdef HAVE_SYS_SOCKET_H
4028#include <sys/socket.h>
4029#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00004030])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004031
Antoine Pitroufff95302008-09-03 18:58:51 +00004032AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004033AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Antoine Pitroufff95302008-09-03 18:58:51 +00004034AC_TRY_RUN([
4035#include<stdlib.h>
4036int main() {
4037 size_t len = -1;
4038 const char *str = "text";
4039 len = mbstowcs(NULL, str, 0);
4040 return (len != 4);
4041}
4042],
4043ac_cv_broken_mbstowcs=no,
4044ac_cv_broken_mbstowcs=yes,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004045ac_cv_broken_mbstowcs=no))
Antoine Pitroufff95302008-09-03 18:58:51 +00004046AC_MSG_RESULT($ac_cv_broken_mbstowcs)
4047if test "$ac_cv_broken_mbstowcs" = yes
4048then
4049 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
4050 [Define if mbstowcs(NULL, "text", 0) does not return the number of
4051 wide chars that would be converted.])
4052fi
4053
Antoine Pitroub52ec782009-01-25 16:34:23 +00004054# Check for --with-computed-gotos
4055AC_MSG_CHECKING(for --with-computed-gotos)
4056AC_ARG_WITH(computed-gotos,
4057 AC_HELP_STRING(--with-computed-gotos,
4058 Use computed gotos / threaded dispatch in evaluation loop (not available on all compilers)),
4059[
4060if test "$withval" != no
4061then
4062 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
4063 [Define if you want to use computed gotos in ceval.c.])
4064 AC_MSG_RESULT(yes)
4065else AC_MSG_RESULT(no)
4066fi],
4067[AC_MSG_RESULT(no)])
4068
4069
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004070AC_SUBST(THREADHEADERS)
4071
4072for h in `(cd $srcdir;echo Python/thread_*.h)`
4073do
4074 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4075done
4076
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004077AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00004078SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004079AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004080for dir in $SRCDIRS; do
4081 if test ! -d $dir; then
4082 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004083 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004084done
4085AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004086
Guido van Rossum627b2d71993-12-24 10:39:16 +00004087# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00004088AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00004089AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004090
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004091echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004092if test ! -f Modules/Setup
4093then
4094 cp $srcdir/Modules/Setup.dist Modules/Setup
4095fi
4096
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004097echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004098if test ! -f Modules/Setup.local
4099then
4100 echo "# Edit this file for local setup changes" >Modules/Setup.local
4101fi
4102
4103echo "creating Makefile"
4104$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4105 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004106 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00004107mv config.c Modules