blob: 01093672b4d39840f5486de0d6197ad7ab6c82f1 [file] [log] [blame]
Benjamin Petersonfbeb6b62008-05-26 16:04:49 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Benjamin Peterson4469d0c2008-11-30 22:46:23 +00004dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.61).
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
6# Set VERSION so we only need to edit in one place (i.e., here)
Benjamin Peterson46ea4f72009-06-27 21:40:27 +00007m4_define(PYTHON_VERSION, 3.2)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008
Alexandre Vassalottib89910f2009-07-18 00:33:23 +00009dnl Some m4 magic to ensure that the configure script is generated
10dnl by the correct autoconf version.
11m4_define([version_required],
12[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), [$1]), 0,
13 [],
14 [m4_fatal([Autoconf version $1 is required for Python], 63)])
15])
16version_required(2.61)
17
Guido van Rossum76be6ed1995-01-02 18:33:54 +000018AC_REVISION($Revision$)
Georg Brandle2e15612009-05-20 18:25:10 +000019AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
Martin v. Löwis88afe662002-10-26 13:47:44 +000020AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000021AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000022
Benjamin Petersond23f8222009-04-05 19:13:16 +000023dnl Ensure that if prefix is specified, it does not end in a slash. If
24dnl it does, we get path names containing '//' which is both ugly and
25dnl can cause trouble.
26
27dnl Last slash shouldn't be stripped if prefix=/
28if test "$prefix" != "/"; then
29 prefix=`echo "$prefix" | sed -e 's/\/$//g'`
30fi
31
Martin v. Löwis8316feb2003-06-14 07:48:07 +000032dnl This is for stuff that absolutely must end up in pyconfig.h.
33dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000034AH_TOP([
35#ifndef Py_PYCONFIG_H
36#define Py_PYCONFIG_H
37])
Martin v. Löwis11437992002-04-12 09:54:03 +000038AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000039/* Define the macros needed if on a UnixWare 7.x system. */
40#if defined(__USLC__) && defined(__SCO_VERSION__)
41#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
42#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000043
44#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000045])
46
Martin v. Löwis8316feb2003-06-14 07:48:07 +000047# We don't use PACKAGE_ variables, and they cause conflicts
48# with other autoconf-based packages that include Python.h
49grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
50rm confdefs.h
51mv confdefs.h.new confdefs.h
52
Guido van Rossum642b6781997-07-19 19:35:41 +000053AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000054VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000055
Martin v. Löwis1142de32002-03-29 16:28:31 +000056AC_SUBST(SOVERSION)
57SOVERSION=1.0
58
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000059# The later defininition of _XOPEN_SOURCE disables certain features
60# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
61AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
62
Martin v. Löwisbcd93962003-05-03 10:32:18 +000063# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
64# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
65# them.
66AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
67
Andrew MacIntyreabccf412003-07-02 13:53:25 +000068# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
69# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
70# them.
71AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
72
Martin v. Löwisd6320502004-08-12 13:45:08 +000073# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
74# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
75AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
76
Georg Brandlfcaf9102008-07-16 02:17:56 +000077# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
78# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
79# them.
80AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
81
82
Martin v. Löwise981a4e2002-11-11 13:26:51 +000083define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000084
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000085# Arguments passed to configure.
86AC_SUBST(CONFIG_ARGS)
87CONFIG_ARGS="$ac_configure_args"
88
Ronald Oussoren8af24c12010-02-07 12:03:42 +000089AC_MSG_CHECKING([for --enable-universalsdk])
Thomas Wouters477c8d52006-05-27 19:21:47 +000090AC_ARG_ENABLE(universalsdk,
Christian Heimes68f5fbe2008-02-14 08:27:37 +000091 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Thomas Wouters477c8d52006-05-27 19:21:47 +000092[
93 case $enableval in
94 yes)
95 enableval=/Developer/SDKs/MacOSX10.4u.sdk
Ronald Oussoren8af24c12010-02-07 12:03:42 +000096 if test ! -d "${enableval}"
97 then
98 enableval=/
99 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000100 ;;
101 esac
102 case $enableval in
103 no)
104 UNIVERSALSDK=
105 enable_universalsdk=
106 ;;
107 *)
108 UNIVERSALSDK=$enableval
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000109 if test ! -d "${UNIVERSALSDK}"
110 then
111 AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
112 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000113 ;;
114 esac
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000115
Thomas Wouters477c8d52006-05-27 19:21:47 +0000116],[
117 UNIVERSALSDK=
118 enable_universalsdk=
119])
Ronald Oussoren8af24c12010-02-07 12:03:42 +0000120if test -n "${UNIVERSALSDK}"
121then
122 AC_MSG_RESULT(${UNIVERSALSDK})
123else
124 AC_MSG_RESULT(no)
125fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000126AC_SUBST(UNIVERSALSDK)
127
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000128AC_SUBST(ARCH_RUN_32BIT)
129
Georg Brandlfcaf9102008-07-16 02:17:56 +0000130UNIVERSAL_ARCHS="32-bit"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000131AC_SUBST(LIPO_32BIT_FLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000132AC_MSG_CHECKING(for --with-universal-archs)
133AC_ARG_WITH(universal-archs,
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000134 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")),
Georg Brandlfcaf9102008-07-16 02:17:56 +0000135[
136 AC_MSG_RESULT($withval)
137 UNIVERSAL_ARCHS="$withval"
138],
139[
140 AC_MSG_RESULT(32-bit)
141])
142
143
144
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000145AC_ARG_WITH(framework-name,
146 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
147 specify an alternate name of the framework built with --enable-framework),
148[
149 PYTHONFRAMEWORK=${withval}
150 PYTHONFRAMEWORKDIR=${withval}.framework
151 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
152 ],[
153 PYTHONFRAMEWORK=Python
154 PYTHONFRAMEWORKDIR=Python.framework
155 PYTHONFRAMEWORKIDENTIFIER=org.python.python
156])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000157dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000158AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000159 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
160[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000161 case $enableval in
162 yes)
163 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000164 esac
165 case $enableval in
166 no)
167 PYTHONFRAMEWORK=
168 PYTHONFRAMEWORKDIR=no-framework
169 PYTHONFRAMEWORKPREFIX=
170 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000171 FRAMEWORKINSTALLFIRST=
172 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000173 FRAMEWORKALTINSTALLFIRST=
174 FRAMEWORKALTINSTALLLAST=
175 if test "x${prefix}" = "xNONE"; then
176 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
177 else
178 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
179 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000180 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000181 ;;
182 *)
183 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000184 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000185 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussorenf6ccbf62009-06-02 10:55:56 +0000186 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure "
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000187 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
188 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000189
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000190 if test "x${prefix}" = "xNONE" ; then
191 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
192 else
193 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
194 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000195 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000196
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000197 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000198 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000199 AC_CONFIG_FILES(Mac/Makefile)
200 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000201 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
202 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000203 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000204 ],[
205 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000206 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000207 PYTHONFRAMEWORKPREFIX=
208 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000209 FRAMEWORKINSTALLFIRST=
210 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000211 FRAMEWORKALTINSTALLFIRST=
212 FRAMEWORKALTINSTALLLAST=
213 if test "x${prefix}" = "xNONE" ; then
214 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
215 else
216 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
217 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000218 enable_framework=
Georg Brandlfcaf9102008-07-16 02:17:56 +0000219
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000220])
221AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000222AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000223AC_SUBST(PYTHONFRAMEWORKDIR)
224AC_SUBST(PYTHONFRAMEWORKPREFIX)
225AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000226AC_SUBST(FRAMEWORKINSTALLFIRST)
227AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000228AC_SUBST(FRAMEWORKALTINSTALLFIRST)
229AC_SUBST(FRAMEWORKALTINSTALLLAST)
230AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000231
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000232##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000233## AC_HELP_STRING(--with-dyld,
234## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000235##
Guido van Rossumb418f891996-07-30 18:06:02 +0000236# Set name for machine-dependent library files
237AC_SUBST(MACHDEP)
238AC_MSG_CHECKING(MACHDEP)
239if test -z "$MACHDEP"
240then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000241 ac_sys_system=`uname -s`
Benjamin Peterson8719ad52009-09-11 22:24:02 +0000242 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000243 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000244 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000245 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000246 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000247 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000248 ac_md_system=`echo $ac_sys_system |
249 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
250 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000251 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000252 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000253
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000254 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000255 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000256 darwin*) MACHDEP="darwin";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000257 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000258 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000259 esac
260fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000261
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000262# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
263# disable features if it is defined, without any means to access these
264# features as extensions. For these systems, we skip the definition of
265# _XOPEN_SOURCE. Before adding a system to the list to gain access to
266# some feature, make sure there is no alternative way to access this
267# feature. Also, when using wildcards, make sure you have verified the
268# need for not defining _XOPEN_SOURCE on all systems matching the
269# wildcard, and that the wildcard does not include future systems
270# (which may remove their limitations).
271dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
272case $ac_sys_system/$ac_sys_release in
273 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
274 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000275 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Martin v. Löwis19ed3c82010-02-15 21:45:06 +0000276 # In addition, Stefan Krah confirms that issue #1244610 exists through
277 # OpenBSD 4.6, but is fixed in 4.7.
278 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123456@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000279 define_xopen_source=no
280 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
281 # also defined. This can be overridden by defining _BSD_SOURCE
282 # As this has a different meaning on Linux, only define it on OpenBSD
283 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
284 ;;
Martin v. Löwis19ed3c82010-02-15 21:45:06 +0000285 OpenBSD/4.@<:@789@:>@)
Martin v. Löwis7671efc2010-02-15 08:35:16 +0000286 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
287 # also defined. This can be overridden by defining _BSD_SOURCE
288 # As this has a different meaning on Linux, only define it on OpenBSD
289 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
290 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000291 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
292 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
293 # Marc Recht
Benjamin Petersonf608c612008-11-16 18:33:53 +0000294 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000295 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000296 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
297 # of union __?sigval. Reported by Stuart Bishop.
298 SunOS/5.6)
299 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000300 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
301 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000302 # Reconfirmed for 7.1.4 by Martin v. Loewis.
303 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000304 define_xopen_source=no;;
305 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000306 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000307 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000308 define_xopen_source=no;;
Martin v. Löwisb37509b2008-11-04 20:45:29 +0000309 # On FreeBSD 4, the math functions C89 does not cover are never defined
310 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
311 FreeBSD/4.*)
312 define_xopen_source=no;;
313 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
314 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
315 # identifies itself as Darwin/7.*
316 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
317 # disables platform specific features beyond repair.
318 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
319 # has no effect, don't bother defining them
320 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000321 define_xopen_source=no;;
Ronald Oussoren92fb9412010-03-09 06:40:19 +0000322 Darwin/1@<:@0-9@:>@.*)
Ronald Oussorenb8f11a62010-03-08 07:02:03 +0000323 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000324 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
325 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
326 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000327 AIX/4)
328 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000329 AIX/5)
330 if test `uname -r` -eq 1; then
331 define_xopen_source=no
332 fi
333 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000334 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
335 # defining NI_NUMERICHOST.
336 QNX/6.3.2)
337 define_xopen_source=no
338 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000339
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000340esac
341
342if test $define_xopen_source = yes
343then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000344 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
345 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000346 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
347 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000348 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000349 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000350 AC_DEFINE(_XOPEN_SOURCE, 500,
351 Define to the level of X/Open that your system supports)
352 ;;
353 *)
354 AC_DEFINE(_XOPEN_SOURCE, 600,
355 Define to the level of X/Open that your system supports)
356 ;;
357 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000358
359 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
360 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
361 # several APIs are not declared. Since this is also needed in some
362 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000363 # except for Solaris 10, where it must not be defined,
364 # as it implies XPG4.2
365 case $ac_sys_system/$ac_sys_release in
366 SunOS/5.10)
367 ;;
368 *)
369 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
370 Define to activate Unix95-and-earlier features)
371 ;;
372 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000373
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000374 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
375
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000376fi
377
Guido van Rossum91922671997-10-09 20:24:13 +0000378#
379# SGI compilers allow the specification of the both the ABI and the
380# ISA on the command line. Depending on the values of these switches,
381# different and often incompatable code will be generated.
382#
383# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
384# thus supply support for various ABI/ISA combinations. The MACHDEP
385# variable is also adjusted.
386#
387AC_SUBST(SGI_ABI)
388if test ! -z "$SGI_ABI"
389then
390 CC="cc $SGI_ABI"
391 LDFLAGS="$SGI_ABI $LDFLAGS"
392 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
393fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000394AC_MSG_RESULT($MACHDEP)
395
Jack Jansen6b08a402004-06-03 12:41:45 +0000396# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
397# it may influence the way we can build extensions, so distutils
398# needs to check it
399AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000400AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000401CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000402EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000403
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000404AC_MSG_CHECKING(machine type as reported by uname -m)
405ac_sys_machine=`uname -m`
406AC_MSG_RESULT($ac_sys_machine)
407
Guido van Rossum627b2d71993-12-24 10:39:16 +0000408# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000409
410# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
411# for debug/optimization stuff. BASECFLAGS is for flags that are required
412# just to get things to compile and link. Users are free to override OPT
413# when running configure or make. The build should not break if they do.
414# BASECFLAGS should generally not be messed with, however.
415
416# XXX shouldn't some/most/all of this code be merged with the stuff later
417# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000418AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000419AC_ARG_WITH(gcc,
420 AC_HELP_STRING(--without-gcc,never use gcc),
421[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000422 case $withval in
Benjamin Peterson960cf0f2009-01-09 04:11:44 +0000423 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000424 without_gcc=yes;;
425 yes) CC=gcc
426 without_gcc=no;;
427 *) CC=$withval
428 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000429 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000430 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000431 AIX*) CC=cc_r
432 without_gcc=;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000433 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000434 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000435AC_MSG_RESULT($without_gcc)
436
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000437# If the user switches compilers, we can't believe the cache
438if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
439then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000440 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
441(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000442fi
443
Victor Stinner00d6a1d2010-03-25 01:02:29 +0000444save_CFLAGS=$CFLAGS
Guido van Rossum627b2d71993-12-24 10:39:16 +0000445AC_PROG_CC
Victor Stinner00d6a1d2010-03-25 01:02:29 +0000446CFLAGS=$save_CFLAGS
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000447
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000448AC_SUBST(CXX)
449AC_SUBST(MAINCC)
450AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
451AC_ARG_WITH(cxx_main,
452 AC_HELP_STRING([--with-cxx-main=<compiler>],
453 [compile main() and link python executable with C++ compiler]),
454[
455
456 case $withval in
457 no) with_cxx_main=no
458 MAINCC='$(CC)';;
459 yes) with_cxx_main=yes
460 MAINCC='$(CXX)';;
461 *) with_cxx_main=yes
462 MAINCC=$withval
463 if test -z "$CXX"
464 then
465 CXX=$withval
466 fi;;
467 esac], [
468 with_cxx_main=no
469 MAINCC='$(CC)'
470])
471AC_MSG_RESULT($with_cxx_main)
472
473preset_cxx="$CXX"
474if test -z "$CXX"
475then
476 case "$CC" in
477 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
478 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
479 esac
480 if test "$CXX" = "notfound"
481 then
482 CXX=""
483 fi
484fi
485if test -z "$CXX"
486then
487 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
488 if test "$CXX" = "notfound"
489 then
490 CXX=""
491 fi
492fi
493if test "$preset_cxx" != "$CXX"
494then
495 AC_MSG_WARN([
496
497 By default, distutils will build C++ extension modules with "$CXX".
498 If this is not intended, then set CXX on the configure command line.
499 ])
500fi
501
502
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000503# checks for UNIX variants that set C preprocessor variables
504AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000505
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000506# Check for unsupported systems
507case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000508atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000509 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
510 echo See README for details.
511 exit 1;;
512esac
513
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000514AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000515AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000516AC_ARG_WITH(suffix,
517 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
518[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000519 case $withval in
520 no) EXEEXT=;;
521 yes) EXEEXT=.exe;;
522 *) EXEEXT=$withval;;
523 esac])
524AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000525
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000526# Test whether we're running on a non-case-sensitive system, in which
527# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000528AC_SUBST(BUILDEXEEXT)
529AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000530if test ! -d CaseSensitiveTestDir; then
531mkdir CaseSensitiveTestDir
532fi
533
534if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000535then
Jack Jansen1999ef42001-12-06 21:47:20 +0000536 AC_MSG_RESULT(yes)
537 BUILDEXEEXT=.exe
538else
539 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000540 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000541fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000542rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000543
Guido van Rossumdd997f71998-10-07 19:58:26 +0000544case $MACHDEP in
545bsdos*)
546 case $CC in
547 gcc) CC="$CC -D_HAVE_BSDI";;
548 esac;;
549esac
550
Guido van Rossum84561611997-08-21 00:08:11 +0000551case $ac_sys_system in
552hp*|HP*)
553 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000554 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000555 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000556SunOS*)
557 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000558 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000559 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000560esac
561
Martin v. Löwise8964d42001-03-06 12:09:07 +0000562
Neil Schemenauer61c51152001-01-26 16:18:16 +0000563AC_SUBST(LIBRARY)
564AC_MSG_CHECKING(LIBRARY)
565if test -z "$LIBRARY"
566then
567 LIBRARY='libpython$(VERSION).a'
568fi
569AC_MSG_RESULT($LIBRARY)
570
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000571# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000572# name of the library into which to insert object files). BLDLIBRARY is also
573# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
574# is blank as the main program is not linked directly against LDLIBRARY.
575# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
576# systems without shared libraries, LDLIBRARY is the same as LIBRARY
577# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
578# DLLLIBRARY is the shared (i.e., DLL) library.
579#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000580# RUNSHARED is used to run shared python without installed libraries
581#
582# INSTSONAME is the name of the shared library that will be use to install
583# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000584AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000585AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000586AC_SUBST(BLDLIBRARY)
587AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000588AC_SUBST(INSTSONAME)
589AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000590LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000591BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000592INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000593DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000594LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000595RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000596
Guido van Rossumfb842551997-08-06 23:42:07 +0000597# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000598# If CXX is set, and if it is needed to link a main function that was
599# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
600# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000601# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000602# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000603AC_SUBST(LINKCC)
604AC_MSG_CHECKING(LINKCC)
605if test -z "$LINKCC"
606then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000607 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000608 case $ac_sys_system in
609 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000610 exp_extra="\"\""
611 if test $ac_sys_release -ge 5 -o \
612 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
613 exp_extra="."
614 fi
615 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000616 QNX*)
617 # qcc must be used because the other compilers do not
618 # support -N.
619 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000620 esac
621fi
622AC_MSG_RESULT($LINKCC)
623
Tarek Ziadébe720e02009-05-09 11:55:12 +0000624# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
625# make sure we default having it set to "no": this is used by
626# distutils.unixccompiler to know if it should add --enable-new-dtags
627# to linker command lines, and failing to detect GNU ld simply results
628# in the same bahaviour as before.
629AC_SUBST(GNULD)
630AC_MSG_CHECKING(for GNU ld)
631ac_prog=ld
632if test "$GCC" = yes; then
633 ac_prog=`$CC -print-prog-name=ld`
634fi
635case `"$ac_prog" -V 2>&1 < /dev/null` in
636 *GNU*)
637 GNULD=yes;;
638 *)
639 GNULD=no;;
640esac
641AC_MSG_RESULT($GNULD)
642
Martin v. Löwis1142de32002-03-29 16:28:31 +0000643AC_MSG_CHECKING(for --enable-shared)
644AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000645 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000646
Martin v. Löwis1142de32002-03-29 16:28:31 +0000647if test -z "$enable_shared"
648then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000649 case $ac_sys_system in
Antoine Pitrou6103ab12009-10-24 20:11:21 +0000650 CYGWIN*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000651 enable_shared="yes";;
652 *)
653 enable_shared="no";;
654 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000655fi
656AC_MSG_RESULT($enable_shared)
657
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000658AC_MSG_CHECKING(for --enable-profiling)
659AC_ARG_ENABLE(profiling,
660 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
661[ac_save_cc="$CC"
662 CC="$CC -pg"
663 AC_TRY_RUN([int main() { return 0; }],
664 ac_enable_profiling="yes",
665 ac_enable_profiling="no",
666 ac_enable_profiling="no")
667 CC="$ac_save_cc"])
668AC_MSG_RESULT($ac_enable_profiling)
669
670case "$ac_enable_profiling" in
671 "yes")
672 BASECFLAGS="-pg $BASECFLAGS"
673 LDFLAGS="-pg $LDFLAGS"
674 ;;
675esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000676
677AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000678
Guido van Rossumb8552162001-09-05 14:58:11 +0000679# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
680# library that we build, but we do not want to link against it (we
681# will find it with a -framework option). For this reason there is an
682# extra variable BLDLIBRARY against which Python and the extension
683# modules are linked, BLDLIBRARY. This is normally the same as
684# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000685if test "$enable_framework"
686then
687 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000688 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000689 BLDLIBRARY=''
690else
691 BLDLIBRARY='$(LDLIBRARY)'
692fi
693
Martin v. Löwis1142de32002-03-29 16:28:31 +0000694# Other platforms follow
695if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000696 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000697 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000698 CYGWIN*)
699 LDLIBRARY='libpython$(VERSION).dll.a'
700 DLLLIBRARY='libpython$(VERSION).dll'
701 ;;
702 SunOS*)
703 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000704 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000705 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000706 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000707 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000708 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000709 LDLIBRARY='libpython$(VERSION).so'
710 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000711 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000712 case $ac_sys_system in
713 FreeBSD*)
714 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
715 ;;
716 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000717 INSTSONAME="$LDLIBRARY".$SOVERSION
718 ;;
719 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000720 case `uname -m` in
721 ia64)
722 LDLIBRARY='libpython$(VERSION).so'
723 ;;
724 *)
725 LDLIBRARY='libpython$(VERSION).sl'
726 ;;
727 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000728 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000729 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000730 ;;
731 OSF*)
732 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000733 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000734 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000735 ;;
Georg Brandlb1441c72009-01-03 22:33:39 +0000736 Darwin*)
737 LDLIBRARY='libpython$(VERSION).dylib'
738 BLDLIBRARY='-L. -lpython$(VERSION)'
739 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
740 ;;
741
Martin v. Löwis1142de32002-03-29 16:28:31 +0000742 esac
Jason Tishler30765592003-09-04 11:04:06 +0000743else # shared is disabled
744 case $ac_sys_system in
745 CYGWIN*)
746 BLDLIBRARY='$(LIBRARY)'
747 LDLIBRARY='libpython$(VERSION).dll.a'
748 ;;
749 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000750fi
751
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000752AC_MSG_RESULT($LDLIBRARY)
753
Guido van Rossum627b2d71993-12-24 10:39:16 +0000754AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000755AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000756AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000757
Tarek Ziadé5662d3e2009-05-07 21:24:43 +0000758# tweak ARFLAGS only if the user didn't set it on the command line
759AC_SUBST(ARFLAGS)
760if test -z "$ARFLAGS"
761then
762 ARFLAGS="rc"
763fi
764
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000765AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000766AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000767if test $SVNVERSION = found
768then
769 SVNVERSION="svnversion \$(srcdir)"
770else
Benjamin Petersonf53eec82009-05-23 19:36:27 +0000771 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000772fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000773
Neil Schemenauera42c8272001-03-31 00:01:55 +0000774case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000775bsdos*|hp*|HP*)
776 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000777 if test -z "$INSTALL"
778 then
779 INSTALL="${srcdir}/install-sh -c"
780 fi
781esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000782AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000783
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000784# Not every filesystem supports hard links
785AC_SUBST(LN)
786if test -z "$LN" ; then
787 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000788 CYGWIN*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000789 *) LN=ln;;
790 esac
791fi
792
Fred Drake9f715822001-07-11 06:27:00 +0000793# Check for --with-pydebug
794AC_MSG_CHECKING(for --with-pydebug)
795AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000796 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
797[
Fred Drake9f715822001-07-11 06:27:00 +0000798if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000799then
800 AC_DEFINE(Py_DEBUG, 1,
801 [Define if you want to build an interpreter with many run-time checks.])
802 AC_MSG_RESULT(yes);
803 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000804else AC_MSG_RESULT(no); Py_DEBUG='false'
805fi],
806[AC_MSG_RESULT(no)])
807
Skip Montanarodecc6a42003-01-01 20:07:49 +0000808# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
809# merged with this chunk of code?
810
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000811# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000812# ------------------------
813# (The following bit of code is complicated enough - please keep things
814# indented properly. Just pretend you're editing Python code. ;-)
815
816# There are two parallel sets of case statements below, one that checks to
817# see if OPT was set and one that does BASECFLAGS setting based upon
818# compiler and platform. BASECFLAGS tweaks need to be made even if the
819# user set OPT.
820
821# tweak OPT based on compiler and platform, only if the user didn't set
822# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000823AC_SUBST(OPT)
Benjamin Peterson65b4ec52010-03-23 21:02:34 +0000824if test "${OPT-unset}" = "unset"
Guido van Rossumb418f891996-07-30 18:06:02 +0000825then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000826 case $GCC in
827 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000828 if test "$CC" != 'g++' ; then
829 STRICT_PROTO="-Wstrict-prototypes"
830 fi
Christian Heimes38053212007-12-14 01:24:44 +0000831 # For gcc 4.x we need to use -fwrapv so lets check if its supported
832 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
833 WRAP="-fwrapv"
834 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000835 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000836 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000837 if test "$Py_DEBUG" = 'true' ; then
838 # Optimization messes up debuggers, so turn it off for
839 # debug builds.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000840 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000841 else
Christian Heimes38053212007-12-14 01:24:44 +0000842 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000843 fi
844 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000845 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000846 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000847 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000848 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000849 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000850 SCO_SV*) OPT="$OPT -m486 -DSCO5"
851 ;;
852 esac
Fred Drake9f715822001-07-11 06:27:00 +0000853 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000854
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000855 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000856 OPT="-O"
857 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000858 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +0000859fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000860
Skip Montanarodecc6a42003-01-01 20:07:49 +0000861AC_SUBST(BASECFLAGS)
Georg Brandlfcaf9102008-07-16 02:17:56 +0000862
863# The -arch flags for universal builds on OSX
864UNIVERSAL_ARCH_FLAGS=
865AC_SUBST(UNIVERSAL_ARCH_FLAGS)
866
Skip Montanarodecc6a42003-01-01 20:07:49 +0000867# tweak BASECFLAGS based on compiler and platform
868case $GCC in
869yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000870 # Python violates C99 rules, by casting between incompatible
871 # pointer types. GCC may generate bad code as a result of that,
872 # so use -fno-strict-aliasing if supported.
873 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
874 ac_save_cc="$CC"
875 CC="$CC -fno-strict-aliasing"
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +0000876 AC_CACHE_VAL(ac_cv_no_strict_aliasing_ok,
Gregory P. Smith4e3ed012009-11-01 21:09:10 +0000877 AC_TRY_COMPILE([],[int main() { return 0; }],
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000878 ac_cv_no_strict_aliasing_ok=yes,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +0000879 ac_cv_no_strict_aliasing_ok=no))
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000880 CC="$ac_save_cc"
881 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
882 if test $ac_cv_no_strict_aliasing_ok = yes
883 then
884 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
885 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000886
887 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
888 # support. Without this, treatment of subnormals doesn't follow
889 # the standard.
890 case $ac_sys_machine in
891 alpha*)
892 BASECFLAGS="$BASECFLAGS -mieee"
893 ;;
894 esac
895
Skip Montanarodecc6a42003-01-01 20:07:49 +0000896 case $ac_sys_system in
897 SCO_SV*)
898 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
899 ;;
900 # is there any other compiler on Darwin besides gcc?
901 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +0000902 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
903 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000904
905
Thomas Wouters477c8d52006-05-27 19:21:47 +0000906 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +0000907 UNIVERSAL_ARCH_FLAGS=""
908 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
909 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson6794aa32008-07-16 20:33:37 +0000910 ARCH_RUN_32BIT=""
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000911 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000912
Ronald Oussoren755740f2010-02-07 19:56:39 +0000913 # You have to use different flags on various versions of
914 # OSX to extract PPC code from an universal binary, basically
915 # '-arch ppc' on OSX 10.4 and '-arch ppc7400' on anything
916 # newer.
917 # Because '-arch pp7400' works on OSX 10.5 or higher this
918 # test is only present in the '32-bit' branch, all other
919 # branches require OSX 10.5 to compile.
920
921 AC_MSG_CHECKING(lipo flag for extracting ppc code)
922 FN="test.$$"
923 cat >${FN}.c <<-EOF
924 int main() { return 0; }
925EOF
926 ${CC} ${CFLAGS} -arch ppc -arch i386 -o ${FN} ${FN}.c -isysroot ${UNIVERSALSDK}
927 if test $? != 0 ; then
928 rm ${FN} ${FN}.c
929 AC_MSG_RESULT([failed, assumee -extract ppc7400])
930 else
931 lipo "${FN}" -extract ppc7400 -output "${FN}.out" 2>/dev/null
932 if test $? != 0 ; then
933 LIPO_32BIT_FLAGS="-extract ppc -extract i386"
934 AC_MSG_RESULT("'-extract ppc'")
935 else
936 AC_MSG_RESULT("'-extract ppc7400'")
937 fi
938 rm -f ${FN} ${FN}.c ${FN}.out
939 fi
940
Georg Brandlfcaf9102008-07-16 02:17:56 +0000941 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
942 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000943 LIPO_32BIT_FLAGS=""
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000944 ARCH_RUN_32BIT="true"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000945
946 elif test "$UNIVERSAL_ARCHS" = "all" ; then
947 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000948 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000949 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Georg Brandlfcaf9102008-07-16 02:17:56 +0000950
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000951 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
952 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000953 LIPO_32BIT_FLAGS="-extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000954 ARCH_RUN_32BIT="/usr/bin/arch -i386"
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000955
956 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
957 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
Ronald Oussoren6f6c5622009-12-24 14:03:19 +0000958 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren564f7f22010-02-11 13:23:08 +0000959 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000960
Georg Brandlfcaf9102008-07-16 02:17:56 +0000961 else
Ronald Oussoren74f29b42009-09-20 20:09:26 +0000962 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Georg Brandlfcaf9102008-07-16 02:17:56 +0000963
964 fi
965
966
967 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Georg Brandl3dbca812008-07-23 16:10:53 +0000968 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000969 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
970 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
971 fi
Thomas Wouters477c8d52006-05-27 19:21:47 +0000972 fi
973
Benjamin Peterson67c38e22008-07-17 16:10:34 +0000974 # Calculate the right deployment target for this build.
975 #
976 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
977 if test ${cur_target} '>' 10.2; then
978 cur_target=10.3
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000979 if test ${enable_universalsdk}; then
980 if test "${UNIVERSAL_ARCHS}" = "all"; then
981 # Ensure that the default platform for a
982 # 4-way universal build is OSX 10.5,
983 # that's the first OS release where
984 # 4-way builds make sense.
985 cur_target='10.5'
Ronald Oussoren3c064c12009-09-08 07:12:42 +0000986
987 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
988 cur_target='10.5'
989
990 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
991 cur_target='10.5'
992
993 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
994 cur_target='10.5'
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000995 fi
996 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +0000997 if test `/usr/bin/arch` = "i386"; then
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +0000998 # On Intel macs default to a deployment
999 # target of 10.4, that's the first OSX
1000 # release with Intel support.
1001 cur_target="10.4"
1002 fi
1003 fi
Benjamin Peterson67c38e22008-07-17 16:10:34 +00001004 fi
1005 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1006
1007 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1008 # environment with a value that is the same as what we'll use
1009 # in the Makefile to ensure that we'll get the same compiler
1010 # environment during configure and build time.
1011 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1012 export MACOSX_DEPLOYMENT_TARGET
1013 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1014
Skip Montanarodecc6a42003-01-01 20:07:49 +00001015 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001016 OSF*)
1017 BASECFLAGS="$BASECFLAGS -mieee"
1018 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001019 esac
1020 ;;
1021
1022*)
1023 case $ac_sys_system in
1024 OpenUNIX*|UnixWare*)
1025 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1026 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001027 OSF*)
1028 BASECFLAGS="$BASECFLAGS -ieee -std"
1029 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001030 SCO_SV*)
1031 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1032 ;;
1033 esac
1034 ;;
1035esac
1036
Fred Drakee1ceaa02001-12-04 20:55:47 +00001037if test "$Py_DEBUG" = 'true'; then
1038 :
1039else
1040 OPT="-DNDEBUG $OPT"
1041fi
1042
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001043if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001044then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001045 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001046fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001047
Neal Norwitz020c46a2006-01-07 21:39:28 +00001048# disable check for icc since it seems to pass, but generates a warning
1049if test "$CC" = icc
1050then
1051 ac_cv_opt_olimit_ok=no
1052fi
1053
Guido van Rossum91922671997-10-09 20:24:13 +00001054AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1055AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1056[ac_save_cc="$CC"
1057CC="$CC -OPT:Olimit=0"
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001058AC_TRY_COMPILE([],[int main() { return 0; }],
Guido van Rossum91922671997-10-09 20:24:13 +00001059 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001060 ac_cv_opt_olimit_ok=no,
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001061 )
Guido van Rossum91922671997-10-09 20:24:13 +00001062CC="$ac_save_cc"])
1063AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001064if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001065 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001066 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1067 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1068 # environment?
1069 Darwin*)
1070 ;;
1071 *)
1072 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1073 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001074 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001075else
1076 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1077 AC_CACHE_VAL(ac_cv_olimit_ok,
1078 [ac_save_cc="$CC"
1079 CC="$CC -Olimit 1500"
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001080 AC_TRY_COMPILE([],[int main() { return 0; }],
Guido van Rossumf8678121998-07-07 21:05:09 +00001081 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001082 ac_cv_olimit_ok=no,
Gregory P. Smith4e3ed012009-11-01 21:09:10 +00001083 )
Guido van Rossumf8678121998-07-07 21:05:09 +00001084 CC="$ac_save_cc"])
1085 AC_MSG_RESULT($ac_cv_olimit_ok)
1086 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001087 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001088 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001089fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001090
Thomas Wouters89f507f2006-12-13 04:49:30 +00001091# Check whether GCC supports PyArg_ParseTuple format
1092if test "$GCC" = "yes"
1093then
1094 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1095 save_CFLAGS=$CFLAGS
1096 CFLAGS="$CFLAGS -Werror"
1097 AC_TRY_COMPILE([
1098 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1099 ],,
1100 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1101 AC_MSG_RESULT(yes),
1102 AC_MSG_RESULT(no)
1103 )
1104 CFLAGS=$save_CFLAGS
1105fi
1106
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001107# On some compilers, pthreads are available without further options
1108# (e.g. MacOS X). On some of these systems, the compiler will not
1109# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1110# So we have to see first whether pthreads are available without
1111# options before we can check whether -Kpthread improves anything.
1112AC_MSG_CHECKING(whether pthreads are available without options)
1113AC_CACHE_VAL(ac_cv_pthread_is_default,
1114[AC_TRY_RUN([
1115#include <pthread.h>
1116
1117void* routine(void* p){return NULL;}
1118
1119int main(){
1120 pthread_t p;
1121 if(pthread_create(&p,NULL,routine,NULL)!=0)
1122 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001123 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001124 return 0;
1125}
1126],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001127[
1128 ac_cv_pthread_is_default=yes
1129 ac_cv_kthread=no
1130 ac_cv_pthread=no
1131],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001132 ac_cv_pthread_is_default=no,
1133 ac_cv_pthread_is_default=no)
1134])
1135AC_MSG_RESULT($ac_cv_pthread_is_default)
1136
1137
1138if test $ac_cv_pthread_is_default = yes
1139then
1140 ac_cv_kpthread=no
1141else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001142# -Kpthread, if available, provides the right #defines
1143# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001144# Some compilers won't report that they do not support -Kpthread,
1145# so we need to run a program to see whether it really made the
1146# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001147AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1148AC_CACHE_VAL(ac_cv_kpthread,
1149[ac_save_cc="$CC"
1150CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001151AC_TRY_RUN([
1152#include <pthread.h>
1153
1154void* routine(void* p){return NULL;}
1155
1156int main(){
1157 pthread_t p;
1158 if(pthread_create(&p,NULL,routine,NULL)!=0)
1159 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001160 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001161 return 0;
1162}
1163],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001164 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001165 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001166 ac_cv_kpthread=no)
1167CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001168AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001169fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001170
Skip Montanarod8d39a02003-07-10 20:44:10 +00001171if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001172then
1173# -Kthread, if available, provides the right #defines
1174# and linker options to make pthread_create available
1175# Some compilers won't report that they do not support -Kthread,
1176# so we need to run a program to see whether it really made the
1177# function available.
1178AC_MSG_CHECKING(whether $CC accepts -Kthread)
1179AC_CACHE_VAL(ac_cv_kthread,
1180[ac_save_cc="$CC"
1181CC="$CC -Kthread"
1182AC_TRY_RUN([
1183#include <pthread.h>
1184
1185void* routine(void* p){return NULL;}
1186
1187int main(){
1188 pthread_t p;
1189 if(pthread_create(&p,NULL,routine,NULL)!=0)
1190 return 1;
1191 (void)pthread_detach(p);
1192 return 0;
1193}
1194],
1195 ac_cv_kthread=yes,
1196 ac_cv_kthread=no,
1197 ac_cv_kthread=no)
1198CC="$ac_save_cc"])
1199AC_MSG_RESULT($ac_cv_kthread)
1200fi
1201
Skip Montanarod8d39a02003-07-10 20:44:10 +00001202if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001203then
1204# -pthread, if available, provides the right #defines
1205# and linker options to make pthread_create available
1206# Some compilers won't report that they do not support -pthread,
1207# so we need to run a program to see whether it really made the
1208# function available.
1209AC_MSG_CHECKING(whether $CC accepts -pthread)
1210AC_CACHE_VAL(ac_cv_thread,
1211[ac_save_cc="$CC"
1212CC="$CC -pthread"
1213AC_TRY_RUN([
1214#include <pthread.h>
1215
1216void* routine(void* p){return NULL;}
1217
1218int main(){
1219 pthread_t p;
1220 if(pthread_create(&p,NULL,routine,NULL)!=0)
1221 return 1;
1222 (void)pthread_detach(p);
1223 return 0;
1224}
1225],
1226 ac_cv_pthread=yes,
1227 ac_cv_pthread=no,
1228 ac_cv_pthread=no)
1229CC="$ac_save_cc"])
1230AC_MSG_RESULT($ac_cv_pthread)
1231fi
1232
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001233# If we have set a CC compiler flag for thread support then
1234# check if it works for CXX, too.
1235ac_cv_cxx_thread=no
1236if test ! -z "$CXX"
1237then
1238AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1239ac_save_cxx="$CXX"
1240
1241if test "$ac_cv_kpthread" = "yes"
1242then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001243 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001244 ac_cv_cxx_thread=yes
1245elif test "$ac_cv_kthread" = "yes"
1246then
1247 CXX="$CXX -Kthread"
1248 ac_cv_cxx_thread=yes
1249elif test "$ac_cv_pthread" = "yes"
1250then
1251 CXX="$CXX -pthread"
1252 ac_cv_cxx_thread=yes
1253fi
1254
1255if test $ac_cv_cxx_thread = yes
1256then
1257 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1258 $CXX -c conftest.$ac_ext 2>&5
1259 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1260 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1261 then
1262 ac_cv_cxx_thread=yes
1263 else
1264 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001265 fi
1266 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001267fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001268AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001269fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001270CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001271
Fred Drakece81d592000-07-09 14:39:29 +00001272dnl # check for ANSI or K&R ("traditional") preprocessor
1273dnl AC_MSG_CHECKING(for C preprocessor type)
1274dnl AC_TRY_COMPILE([
1275dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1276dnl int foo;
1277dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1278dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1279dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001280
Guido van Rossum627b2d71993-12-24 10:39:16 +00001281# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001282AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001283AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1284fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001285ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001286shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001287unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001288sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1289sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001290sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Georg Brandlf78e02b2008-06-10 17:40:04 +00001291sys/termio.h sys/time.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001292sys/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 +00001293sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Ronald Oussoren755740f2010-02-07 19:56:39 +00001294bluetooth/bluetooth.h linux/tipc.h spawn.h util.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001295AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001296AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001297
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001298# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001299AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001300#ifdef HAVE_CURSES_H
1301#include <curses.h>
1302#endif
1303])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001304
Martin v. Löwis11017b12006-01-14 18:12:57 +00001305# On Linux, netlink.h requires asm/types.h
1306AC_CHECK_HEADERS(linux/netlink.h,,,[
1307#ifdef HAVE_ASM_TYPES_H
1308#include <asm/types.h>
1309#endif
1310#ifdef HAVE_SYS_SOCKET_H
1311#include <sys/socket.h>
1312#endif
1313])
1314
Guido van Rossum627b2d71993-12-24 10:39:16 +00001315# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001316was_it_defined=no
1317AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001318AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1319 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1320])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001321AC_MSG_RESULT($was_it_defined)
1322
Neal Norwitz11690112002-07-30 01:08:28 +00001323# Check whether using makedev requires defining _OSF_SOURCE
1324AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001325AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001326 [ makedev(0, 0) ],
1327 ac_cv_has_makedev=yes,
1328 ac_cv_has_makedev=no)
1329if test "$ac_cv_has_makedev" = "no"; then
1330 # we didn't link, try if _OSF_SOURCE will allow us to link
1331 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001332#define _OSF_SOURCE 1
1333#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001334 ],
1335 [ makedev(0, 0) ],
1336 ac_cv_has_makedev=yes,
1337 ac_cv_has_makedev=no)
1338 if test "$ac_cv_has_makedev" = "yes"; then
1339 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1340 fi
1341fi
1342AC_MSG_RESULT($ac_cv_has_makedev)
1343if test "$ac_cv_has_makedev" = "yes"; then
1344 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1345fi
1346
Martin v. Löwis399a6892002-10-04 10:22:02 +00001347# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1348# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1349# defined, but the compiler does not support pragma redefine_extname,
1350# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1351# structures (such as rlimit64) without declaring them. As a
1352# work-around, disable LFS on such configurations
1353
1354use_lfs=yes
1355AC_MSG_CHECKING(Solaris LFS bug)
1356AC_TRY_COMPILE([
1357#define _LARGEFILE_SOURCE 1
1358#define _FILE_OFFSET_BITS 64
1359#include <sys/resource.h>
1360],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1361AC_MSG_RESULT($sol_lfs_bug)
1362if test "$sol_lfs_bug" = "yes"; then
1363 use_lfs=no
1364fi
1365
1366if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001367# Two defines needed to enable largefile support on various platforms
1368# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001369AC_DEFINE(_LARGEFILE_SOURCE, 1,
1370[This must be defined on some systems to enable large file support.])
1371AC_DEFINE(_FILE_OFFSET_BITS, 64,
1372[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001373fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001374
Guido van Rossum300fda71996-08-19 21:58:16 +00001375# Add some code to confdefs.h so that the test for off_t works on SCO
1376cat >> confdefs.h <<\EOF
1377#if defined(SCO_DS)
1378#undef _OFF_T
1379#endif
1380EOF
1381
Guido van Rossumef2255b2000-03-10 22:30:29 +00001382# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001383AC_TYPE_MODE_T
1384AC_TYPE_OFF_T
1385AC_TYPE_PID_T
1386AC_TYPE_SIGNAL
1387AC_TYPE_SIZE_T
1388AC_TYPE_UID_T
Mark Dickinsonbd792642009-03-18 20:06:12 +00001389AC_TYPE_UINT32_T
1390AC_TYPE_UINT64_T
1391AC_TYPE_INT32_T
1392AC_TYPE_INT64_T
Christian Heimes400adb02008-02-01 08:12:03 +00001393AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001394 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001395
Guido van Rossumef2255b2000-03-10 22:30:29 +00001396# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001397# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001398AC_CHECK_SIZEOF(int, 4)
1399AC_CHECK_SIZEOF(long, 4)
1400AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001401AC_CHECK_SIZEOF(short, 2)
1402AC_CHECK_SIZEOF(float, 4)
1403AC_CHECK_SIZEOF(double, 8)
1404AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001405AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001406AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001407
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001408AC_MSG_CHECKING(for long long support)
1409have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001410AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1411 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1412 have_long_long=yes
1413])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001414AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001415if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001416AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001417fi
1418
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001419AC_MSG_CHECKING(for long double support)
1420have_long_double=no
1421AC_TRY_COMPILE([], [long double x; x = (long double)0;], [
1422 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1423 have_long_double=yes
1424])
1425AC_MSG_RESULT($have_long_double)
1426if test "$have_long_double" = yes ; then
1427AC_CHECK_SIZEOF(long double, 16)
1428fi
1429
1430
Thomas Woutersb2137042007-02-01 18:02:27 +00001431AC_MSG_CHECKING(for _Bool support)
1432have_c99_bool=no
1433AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1434 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1435 have_c99_bool=yes
1436])
1437AC_MSG_RESULT($have_c99_bool)
1438if test "$have_c99_bool" = yes ; then
1439AC_CHECK_SIZEOF(_Bool, 1)
1440fi
1441
Thomas Wouters89f507f2006-12-13 04:49:30 +00001442AC_CHECK_TYPES(uintptr_t,
1443 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1444 [], [#ifdef HAVE_STDINT_H
1445 #include <stdint.h>
1446 #endif])
1447
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001448AC_CHECK_SIZEOF(off_t, [], [
1449#ifdef HAVE_SYS_TYPES_H
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001450#include <sys/types.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001451#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001452])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001453
1454AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinson2df5d282009-12-31 21:22:50 +00001455if test "$have_long_long" = yes
1456then
1457if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001458 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001459 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1460 [Defined to enable large file support when an off_t is bigger than a long
1461 and long long is available and at least as big as an off_t. You may need
1462 to add some flags for configuration and compilation to enable this mode.
1463 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001464 AC_MSG_RESULT(yes)
1465else
1466 AC_MSG_RESULT(no)
1467fi
Mark Dickinson2df5d282009-12-31 21:22:50 +00001468else
1469 AC_MSG_RESULT(no)
1470fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001471
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001472AC_CHECK_SIZEOF(time_t, [], [
1473#ifdef HAVE_SYS_TYPES_H
1474#include <sys/types.h>
1475#endif
1476#ifdef HAVE_TIME_H
Fred Drakea3f6e912000-06-29 20:44:47 +00001477#include <time.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001478#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001479])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001480
Trent Mick635f6fb2000-08-23 21:33:05 +00001481# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001482ac_save_cc="$CC"
1483if test "$ac_cv_kpthread" = "yes"
1484then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001485elif test "$ac_cv_kthread" = "yes"
1486then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001487elif test "$ac_cv_pthread" = "yes"
1488then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001489fi
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001490
Trent Mick635f6fb2000-08-23 21:33:05 +00001491AC_MSG_CHECKING(for pthread_t)
1492have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001493AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001494AC_MSG_RESULT($have_pthread_t)
1495if test "$have_pthread_t" = yes ; then
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001496 AC_CHECK_SIZEOF(pthread_t, [], [
1497#ifdef HAVE_PTHREAD_H
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001498#include <pthread.h>
Alexandre Vassalotti0805b4a2009-07-17 05:47:33 +00001499#endif
Trent Mick635f6fb2000-08-23 21:33:05 +00001500 ])
Trent Mick635f6fb2000-08-23 21:33:05 +00001501fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001502CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001503
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001504AC_SUBST(OTHER_LIBTOOL_OPT)
1505case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001506 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001507 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1508 ;;
1509 Darwin/*)
1510 OTHER_LIBTOOL_OPT=""
1511 ;;
1512esac
1513
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001514
1515ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001516AC_SUBST(LIBTOOL_CRUFT)
1517case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001518 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001519 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1520 if test "${enable_universalsdk}"; then
1521 :
1522 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001523 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001524 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001525 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001526 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001527 Darwin/*)
Ronald Oussoren9812a6c2010-02-07 11:53:18 +00001528 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001529 if test ${gcc_version} '<' 4.0
1530 then
1531 LIBTOOL_CRUFT="-lcc_dynamic"
1532 else
1533 LIBTOOL_CRUFT=""
1534 fi
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001535 AC_TRY_RUN([
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001536 #include <unistd.h>
1537 int main(int argc, char*argv[])
1538 {
1539 if (sizeof(long) == 4) {
1540 return 0;
1541 } else {
1542 return 1;
1543 }
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001544 }
1545 ], ac_osx_32bit=yes,
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001546 ac_osx_32bit=no,
Ronald Oussoren3c064c12009-09-08 07:12:42 +00001547 ac_osx_32bit=yes)
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001548
1549 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001550 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001551 i386)
1552 MACOSX_DEFAULT_ARCH="i386"
1553 ;;
1554 ppc)
1555 MACOSX_DEFAULT_ARCH="ppc"
1556 ;;
1557 *)
1558 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1559 ;;
1560 esac
1561 else
Ronald Oussorene3da75a2010-02-11 13:38:58 +00001562 case `/usr/bin/arch` in
Ronald Oussoren5bbab3e2009-09-06 11:01:15 +00001563 i386)
1564 MACOSX_DEFAULT_ARCH="x86_64"
1565 ;;
1566 ppc)
1567 MACOSX_DEFAULT_ARCH="ppc64"
1568 ;;
1569 *)
1570 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1571 ;;
1572 esac
1573
1574 #ARCH_RUN_32BIT="true"
1575 fi
1576
1577 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001578 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001579 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001580esac
1581
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001582AC_MSG_CHECKING(for --enable-framework)
1583if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001584then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001585 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001586 # -F. is needed to allow linking to the framework while
1587 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001588 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1589 [Define if you want to produce an OpenStep/Rhapsody framework
1590 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001591 AC_MSG_RESULT(yes)
Ronald Oussoren99aab652009-06-08 21:22:57 +00001592 if test $enable_shared = "yes"
1593 then
1594 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead])
1595 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001596else
1597 AC_MSG_RESULT(no)
1598fi
1599
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001600AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001601case $ac_sys_system/$ac_sys_release in
1602 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001603 AC_DEFINE(WITH_DYLD, 1,
1604 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1605 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1606 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001607 AC_MSG_RESULT(always on for Darwin)
1608 ;;
1609 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001610 AC_MSG_RESULT(no)
1611 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001612esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001613
Guido van Rossumac405f61994-09-12 10:56:06 +00001614# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001615AC_SUBST(SO)
1616AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001617AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001618AC_SUBST(CCSHARED)
1619AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001620# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001621# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001622AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001623if test -z "$SO"
1624then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001625 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001626 hp*|HP*)
1627 case `uname -m` in
1628 ia64) SO=.so;;
1629 *) SO=.sl;;
1630 esac
1631 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001632 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001633 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001634 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001635else
1636 # this might also be a termcap variable, see #610332
1637 echo
1638 echo '====================================================================='
1639 echo '+ +'
1640 echo '+ WARNING: You have set SO in your environment. +'
1641 echo '+ Do you really mean to change the extension for shared libraries? +'
1642 echo '+ Continuing in 10 seconds to let you to ponder. +'
1643 echo '+ +'
1644 echo '====================================================================='
1645 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001646fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001647AC_MSG_RESULT($SO)
Georg Brandlb1441c72009-01-03 22:33:39 +00001648
Thomas Wouters477c8d52006-05-27 19:21:47 +00001649AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001650# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001651# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001652# (Shared libraries in this instance are shared modules to be loaded into
1653# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001654AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001655if test -z "$LDSHARED"
1656then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001657 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001658 AIX*)
1659 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001660 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001661 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001662 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001663 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001664 SunOS/5*)
1665 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001666 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001667 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001668 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001669 hp*|HP*)
1670 if test "$GCC" = "yes"
1671 then LDSHARED='$(CC) -shared'
1672 else LDSHARED='ld -b';
1673 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001674 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001675 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001676 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1677 if test "$enable_framework" ; then
1678 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001679 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1680 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001681 else
1682 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001683 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001684 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001685 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001686 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1687 if test "$enable_framework" ; then
1688 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001689 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1690 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001691 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001692 # No framework, use the Python app as bundle-loader
1693 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001694 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001695 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001696 Darwin/*)
1697 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1698 # This allows an extension to be used in any Python
Thomas Wouters89d996e2007-09-08 17:39:28 +00001699
Georg Brandlfcaf9102008-07-16 02:17:56 +00001700 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001701 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001702 if test "${enable_universalsdk}"; then
Georg Brandlfcaf9102008-07-16 02:17:56 +00001703 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Thomas Wouters477c8d52006-05-27 19:21:47 +00001704 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001705 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1706 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001707 else
1708 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1709 if test "$enable_framework" ; then
1710 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001711 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1712 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001713 else
1714 # No framework, use the Python app as bundle-loader
1715 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1716 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1717 fi
1718 fi
1719 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001720 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001721 BSD/OS*/4*) LDSHARED="gcc -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001722 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001723 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001724 then
Benjamin Petersonab0a7522010-03-14 15:18:25 +00001725 LDSHARED='$(CC) -shared ${LDFLAGS}'
Guido van Rossum0286ae82000-08-29 15:06:49 +00001726 else
1727 LDSHARED="ld -Bshareable ${LDFLAGS}"
1728 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001729 OpenBSD*)
1730 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1731 then
1732 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1733 else
1734 case `uname -r` in
1735 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1736 LDSHARED="ld -Bshareable ${LDFLAGS}"
1737 ;;
1738 *)
1739 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1740 ;;
1741 esac
1742 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001743 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001744 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001745 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001746 then LDSHARED='$(CC) -shared'
1747 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001748 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001749 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001750 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001751 *) LDSHARED="ld";;
1752 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001753fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001754AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001755BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001756# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001757# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001758AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001759if test -z "$CCSHARED"
1760then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001761 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001762 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001763 then CCSHARED="-fPIC";
1764 elif test `uname -p` = sparc;
1765 then CCSHARED="-xcode=pic32";
1766 else CCSHARED="-Kpic";
1767 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001768 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001769 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001770 else CCSHARED="+z";
1771 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001772 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001773 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001774 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001775 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001776 if test "$GCC" = "yes"
1777 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001778 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001779 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001780 SCO_SV*)
1781 if test "$GCC" = "yes"
1782 then CCSHARED="-fPIC"
1783 else CCSHARED="-Kpic -belf"
1784 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001785 IRIX*/6*) case $CC in
1786 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001787 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001788 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001789 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001790fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001791AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001792# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001793# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001794AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001795if test -z "$LINKFORSHARED"
1796then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001797 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001798 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001799 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001800 LINKFORSHARED="-Wl,-E -Wl,+s";;
1801# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001802 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001803 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001804 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001805 Darwin/*)
Benjamin Peterson9c80cac2009-05-23 16:34:23 +00001806 LINKFORSHARED="$extra_undefs -framework CoreFoundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001807 if test "$enable_framework"
1808 then
Jack Jansenda49e192005-01-07 13:08:22 +00001809 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001810 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001811 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001812 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001813 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001814 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001815 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001816 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1817 then
1818 LINKFORSHARED="-Wl,--export-dynamic"
1819 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001820 SunOS/5*) case $CC in
1821 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001822 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001823 then
1824 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001825 fi;;
1826 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001827 CYGWIN*)
1828 if test $enable_shared = "no"
1829 then
1830 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1831 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001832 QNX*)
1833 # -Wl,-E causes the symbols to be added to the dynamic
1834 # symbol table so that they can be found when a module
1835 # is loaded. -N 2048K causes the stack size to be set
1836 # to 2048 kilobytes so that the stack doesn't overflow
1837 # when running test_compile.py.
1838 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001839 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001840fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001841AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001842
Georg Brandl93de2162008-07-16 02:21:06 +00001843
Neil Schemenauer61c51152001-01-26 16:18:16 +00001844AC_SUBST(CFLAGSFORSHARED)
1845AC_MSG_CHECKING(CFLAGSFORSHARED)
1846if test ! "$LIBRARY" = "$LDLIBRARY"
1847then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001848 case $ac_sys_system in
1849 CYGWIN*)
1850 # Cygwin needs CCSHARED when building extension DLLs
1851 # but not when building the interpreter DLL.
1852 CFLAGSFORSHARED='';;
1853 *)
1854 CFLAGSFORSHARED='$(CCSHARED)'
1855 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001856fi
1857AC_MSG_RESULT($CFLAGSFORSHARED)
1858
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001859# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1860# library (with --enable-shared).
1861# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001862# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1863# if it is not required, since it creates a dependency of the shared library
1864# to LIBS. This, in turn, means that applications linking the shared libpython
1865# don't need to link LIBS explicitly. The default should be only changed
1866# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001867AC_SUBST(SHLIBS)
1868AC_MSG_CHECKING(SHLIBS)
1869case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001870 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001871 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001872esac
1873AC_MSG_RESULT($SHLIBS)
1874
1875
Guido van Rossum627b2d71993-12-24 10:39:16 +00001876# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001877AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1878AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001879
Georg Brandleee31162008-12-07 15:15:22 +00001880# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001881if test "$with_threads" = "yes" -o -z "$with_threads"; then
1882 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1883 # posix4 on Solaris 2.6
1884 # pthread (first!) on Linux
1885fi
1886
Martin v. Löwis19d17342003-06-14 21:03:05 +00001887# check if we need libintl for locale functions
1888AC_CHECK_LIB(intl, textdomain,
Brett Cannonc6d936e2009-06-07 20:09:53 +00001889 [AC_DEFINE(WITH_LIBINTL, 1,
1890 [Define to 1 if libintl is needed for locale functions.])
1891 LIBS="-lintl $LIBS"])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001892
1893# checks for system dependent C++ extensions support
1894case "$ac_sys_system" in
1895 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1896 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1897 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001898 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1899 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1900 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001901 AC_MSG_RESULT(yes)],
1902 [AC_MSG_RESULT(no)]);;
1903 *) ;;
1904esac
1905
Guido van Rossum70c7f481998-03-26 18:44:10 +00001906# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001907AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001908AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001909
Guido van Rossumc5a39031996-07-31 17:35:03 +00001910AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001911AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001912 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1913[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001914AC_MSG_RESULT($withval)
1915LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001916],
1917[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001918
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00001919AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
1920
Benjamin Petersonb2d90462009-12-31 03:23:10 +00001921# Check for use of the system expat library
1922AC_MSG_CHECKING(for --with-system-expat)
1923AC_ARG_WITH(system_expat,
1924 AC_HELP_STRING(--with-system-expat, build pyexpat module using an installed expat library))
1925
1926AC_MSG_RESULT($with_system_expat)
1927
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001928# Check for use of the system libffi library
1929AC_MSG_CHECKING(for --with-system-ffi)
1930AC_ARG_WITH(system_ffi,
1931 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1932
Benjamin Peterson0f64b0b2010-03-09 21:49:52 +00001933if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
Benjamin Petersond78735d2010-01-01 16:04:23 +00001934 LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
1935else
1936 LIBFFI_INCLUDEDIR=""
1937fi
1938AC_SUBST(LIBFFI_INCLUDEDIR)
1939
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001940AC_MSG_RESULT($with_system_ffi)
1941
Matthias Klose55708cc2009-04-30 08:06:49 +00001942# Check for --with-dbmliborder
1943AC_MSG_CHECKING(for --with-dbmliborder)
1944AC_ARG_WITH(dbmliborder,
1945 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'.]),
1946[
1947if test x$with_dbmliborder = xyes
1948then
1949AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1950else
1951 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
1952 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
1953 then
1954 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1955 fi
1956 done
1957fi])
1958AC_MSG_RESULT($with_dbmliborder)
1959
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001960# Determine if signalmodule should be used.
1961AC_SUBST(USE_SIGNAL_MODULE)
1962AC_SUBST(SIGNAL_OBJS)
1963AC_MSG_CHECKING(for --with-signal-module)
1964AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001965 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001966
1967if test -z "$with_signal_module"
1968then with_signal_module="yes"
1969fi
1970AC_MSG_RESULT($with_signal_module)
1971
1972if test "${with_signal_module}" = "yes"; then
1973 USE_SIGNAL_MODULE=""
1974 SIGNAL_OBJS=""
1975else
1976 USE_SIGNAL_MODULE="#"
1977 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1978fi
1979
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001980# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001981AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001982USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001983
Guido van Rossum54d93d41997-01-22 20:51:58 +00001984AC_MSG_CHECKING(for --with-dec-threads)
1985AC_SUBST(LDLAST)
1986AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001987 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1988[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001989AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001990LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001991if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001992 with_thread="$withval";
1993fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001994[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001995
Martin v. Löwis11437992002-04-12 09:54:03 +00001996# Templates for things AC_DEFINEd more than once.
1997# For a single AC_DEFINE, no template is needed.
1998AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1999AH_TEMPLATE(_REENTRANT,
2000 [Define to force use of thread-safe errno, h_errno, and other functions])
2001AH_TEMPLATE(WITH_THREAD,
2002 [Define if you want to compile in rudimentary thread support])
2003
Guido van Rossum54d93d41997-01-22 20:51:58 +00002004AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002005dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00002006AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002007 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002008
Barry Warsawc0d24d82000-06-29 16:12:00 +00002009# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002010dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002011AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002012 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
2013 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002014
2015if test -z "$with_threads"
2016then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002017fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00002018AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002019
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002020AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002021if test "$with_threads" = "no"
2022then
2023 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002024elif test "$ac_cv_pthread_is_default" = yes
2025then
2026 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002027 # Defining _REENTRANT on system with POSIX threads should not hurt.
2028 AC_DEFINE(_REENTRANT)
2029 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002030 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002031elif test "$ac_cv_kpthread" = "yes"
2032then
2033 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002034 if test "$ac_cv_cxx_thread" = "yes"; then
2035 CXX="$CXX -Kpthread"
2036 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002037 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002038 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002039 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002040elif test "$ac_cv_kthread" = "yes"
2041then
2042 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002043 if test "$ac_cv_cxx_thread" = "yes"; then
2044 CXX="$CXX -Kthread"
2045 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002046 AC_DEFINE(WITH_THREAD)
2047 posix_threads=yes
2048 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002049elif test "$ac_cv_pthread" = "yes"
2050then
2051 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002052 if test "$ac_cv_cxx_thread" = "yes"; then
2053 CXX="$CXX -pthread"
2054 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002055 AC_DEFINE(WITH_THREAD)
2056 posix_threads=yes
2057 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00002058else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002059 if test ! -z "$with_threads" -a -d "$with_threads"
2060 then LDFLAGS="$LDFLAGS -L$with_threads"
2061 fi
2062 if test ! -z "$withval" -a -d "$withval"
2063 then LDFLAGS="$LDFLAGS -L$withval"
2064 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002065
2066 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002067 # define _POSIX_THREADS in unistd.h. Some apparently don't
2068 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002069 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2070 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002071 [
2072#include <unistd.h>
2073#ifdef _POSIX_THREADS
2074yes
2075#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002076 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2077 AC_MSG_RESULT($unistd_defines_pthreads)
2078
Martin v. Löwis130fb172001-07-19 11:00:41 +00002079 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002080 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2081 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002082 AC_DEFINE(HURD_C_THREADS, 1,
2083 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002084 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002085 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002086 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2087 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002088 AC_DEFINE(MACH_C_THREADS, 1,
2089 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002090 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002091 # Just looking for pthread_create in libpthread is not enough:
2092 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2093 # So we really have to include pthread.h, and then link.
2094 _libs=$LIBS
2095 LIBS="$LIBS -lpthread"
2096 AC_MSG_CHECKING([for pthread_create in -lpthread])
2097 AC_TRY_LINK([#include <pthread.h>
2098
2099void * start_routine (void *arg) { exit (0); }], [
2100pthread_create (NULL, NULL, start_routine, NULL)], [
2101 AC_MSG_RESULT(yes)
2102 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002103 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002104 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002105 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002106 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002107 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002108 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002109 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002110 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002111 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002112 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002113 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002114 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002115 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002116 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002117 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002118 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002119 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002120 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002121 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002122 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002123 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002124 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002125 USE_THREAD_MODULE="#"])
Antoine Pitroudb6c5672009-10-24 20:35:52 +00002126 ])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002127
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002128 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2129 LIBS="$LIBS -lmpc"
2130 THREADOBJ="Python/thread.o"
2131 USE_THREAD_MODULE=""])
2132
2133 if test "$posix_threads" != "yes"; then
2134 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2135 LIBS="$LIBS -lthread"
2136 THREADOBJ="Python/thread.o"
2137 USE_THREAD_MODULE=""])
2138 fi
2139
2140 if test "$USE_THREAD_MODULE" != "#"
2141 then
2142 # If the above checks didn't disable threads, (at least) OSF1
2143 # needs this '-threads' argument during linking.
2144 case $ac_sys_system in
2145 OSF1) LDLAST=-threads;;
2146 esac
2147 fi
2148fi
2149
2150if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002151 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002152 AC_DEFINE(_POSIX_THREADS, 1,
2153 [Define if you have POSIX threads,
2154 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002155 fi
2156
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002157 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2158 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002159 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2160 Defined for Solaris 2.6 bug in pthread header.)
2161 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002162 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002163 Define if the Posix semaphores do not work on your system)
2164 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00002165 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2166 Define if the Posix semaphores do not work on your system)
2167 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002168 esac
2169
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002170 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2171 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2172 [AC_TRY_RUN([#include <pthread.h>
2173 void *foo(void *parm) {
2174 return NULL;
2175 }
2176 main() {
2177 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002178 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002179 if (pthread_attr_init(&attr)) exit(-1);
2180 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002181 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002182 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002183 }],
2184 ac_cv_pthread_system_supported=yes,
2185 ac_cv_pthread_system_supported=no,
2186 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002187 ])
2188 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2189 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002190 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002191 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002192 AC_CHECK_FUNCS(pthread_sigmask,
2193 [case $ac_sys_system in
2194 CYGWIN*)
2195 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2196 [Define if pthread_sigmask() does not work on your system.])
2197 ;;
2198 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002199fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002200
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002201
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002202# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002203AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002204AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002205AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002206[ --enable-ipv6 Enable ipv6 (with ipv4) support
2207 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002208[ case "$enableval" in
2209 no)
2210 AC_MSG_RESULT(no)
2211 ipv6=no
2212 ;;
2213 *) AC_MSG_RESULT(yes)
2214 AC_DEFINE(ENABLE_IPV6)
2215 ipv6=yes
2216 ;;
2217 esac ],
2218
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002219[
2220dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002221 AC_TRY_RUN([ /* AF_INET6 available check */
2222#include <sys/types.h>
2223#include <sys/socket.h>
2224main()
2225{
2226 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2227 exit(1);
2228 else
2229 exit(0);
2230}
2231],
2232 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002233 ipv6=yes,
2234 AC_MSG_RESULT(no)
2235 ipv6=no,
2236 AC_MSG_RESULT(no)
2237 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002238)
2239
2240if test "$ipv6" = "yes"; then
2241 AC_MSG_CHECKING(if RFC2553 API is available)
2242 AC_TRY_COMPILE([#include <sys/types.h>
2243#include <netinet/in.h>],
2244 [struct sockaddr_in6 x;
2245x.sin6_scope_id;],
2246 AC_MSG_RESULT(yes)
2247 ipv6=yes,
2248 AC_MSG_RESULT(no, IPv6 disabled)
2249 ipv6=no)
2250fi
2251
2252if test "$ipv6" = "yes"; then
2253 AC_DEFINE(ENABLE_IPV6)
2254fi
2255])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002256
2257ipv6type=unknown
2258ipv6lib=none
2259ipv6trylibc=no
2260
2261if test "$ipv6" = "yes"; then
2262 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002263 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2264 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002265 case $i in
2266 inria)
2267 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002268 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002269#include <netinet/in.h>
2270#ifdef IPV6_INRIA_VERSION
2271yes
2272#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002273 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002274 ;;
2275 kame)
2276 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002277 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002278#include <netinet/in.h>
2279#ifdef __KAME__
2280yes
2281#endif],
2282 [ipv6type=$i;
2283 ipv6lib=inet6
2284 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002285 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002286 ;;
2287 linux-glibc)
2288 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002289 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002290#include <features.h>
2291#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2292yes
2293#endif],
2294 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002295 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002296 ;;
2297 linux-inet6)
2298 dnl http://www.v6.linux.or.jp/
2299 if test -d /usr/inet6; then
2300 ipv6type=$i
2301 ipv6lib=inet6
2302 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002303 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002304 fi
2305 ;;
2306 solaris)
2307 if test -f /etc/netconfig; then
2308 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2309 ipv6type=$i
2310 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002311 fi
2312 fi
2313 ;;
2314 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002315 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002316#include <sys/param.h>
2317#ifdef _TOSHIBA_INET6
2318yes
2319#endif],
2320 [ipv6type=$i;
2321 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002322 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002323 ;;
2324 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002325 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002326#include </usr/local/v6/include/sys/v6config.h>
2327#ifdef __V6D__
2328yes
2329#endif],
2330 [ipv6type=$i;
2331 ipv6lib=v6;
2332 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002333 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002334 ;;
2335 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002336 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002337#include <sys/param.h>
2338#ifdef _ZETA_MINAMI_INET6
2339yes
2340#endif],
2341 [ipv6type=$i;
2342 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002343 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002344 ;;
2345 esac
2346 if test "$ipv6type" != "unknown"; then
2347 break
2348 fi
2349 done
2350 AC_MSG_RESULT($ipv6type)
2351fi
2352
2353if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2354 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2355 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2356 echo "using lib$ipv6lib"
2357 else
2358 if test $ipv6trylibc = "yes"; then
2359 echo "using libc"
2360 else
2361 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2362 echo "You need to fetch lib$ipv6lib.a from appropriate"
2363 echo 'ipv6 kit and compile beforehand.'
2364 exit 1
2365 fi
2366 fi
2367fi
2368
Georg Brandl93de2162008-07-16 02:21:06 +00002369AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2370AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2371 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2372 AC_MSG_RESULT(yes),
2373 AC_MSG_RESULT(no)
2374)
2375
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002376# Check for --with-doc-strings
2377AC_MSG_CHECKING(for --with-doc-strings)
2378AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002379 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002380
2381if test -z "$with_doc_strings"
2382then with_doc_strings="yes"
2383fi
2384if test "$with_doc_strings" != "no"
2385then
2386 AC_DEFINE(WITH_DOC_STRINGS, 1,
2387 [Define if you want documentation strings in extension modules])
2388fi
2389AC_MSG_RESULT($with_doc_strings)
2390
Neil Schemenauera35c6882001-02-27 04:45:05 +00002391# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002392AC_MSG_CHECKING(for --with-tsc)
2393AC_ARG_WITH(tsc,
2394[ --with(out)-tsc enable/disable timestamp counter profile], [
2395if test "$withval" != no
2396then
2397 AC_DEFINE(WITH_TSC, 1,
2398 [Define to profile with the Pentium timestamp counter])
2399 AC_MSG_RESULT(yes)
2400else AC_MSG_RESULT(no)
2401fi],
2402[AC_MSG_RESULT(no)])
2403
2404# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002405AC_MSG_CHECKING(for --with-pymalloc)
2406AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002407 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002408
2409if test -z "$with_pymalloc"
2410then with_pymalloc="yes"
2411fi
2412if test "$with_pymalloc" != "no"
2413then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002414 AC_DEFINE(WITH_PYMALLOC, 1,
2415 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002416fi
2417AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002418
Benjamin Peterson05159c42009-12-03 03:01:27 +00002419# Check for Valgrind support
2420AC_MSG_CHECKING([for --with-valgrind])
2421AC_ARG_WITH([valgrind],
2422 AC_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
2423 with_valgrind=no)
2424AC_MSG_RESULT([$with_valgrind])
2425if test "$with_valgrind" != no; then
2426 AC_CHECK_HEADER([valgrind/valgrind.h],
2427 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
2428 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
2429 )
2430fi
2431
Barry Warsawef82cd72000-06-30 16:21:01 +00002432# Check for --with-wctype-functions
2433AC_MSG_CHECKING(for --with-wctype-functions)
2434AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002435 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2436[
Barry Warsawef82cd72000-06-30 16:21:01 +00002437if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002438then
2439 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2440 [Define if you want wctype.h functions to be used instead of the
2441 one supplied by Python itself. (see Include/unicodectype.h).])
2442 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002443else AC_MSG_RESULT(no)
2444fi],
2445[AC_MSG_RESULT(no)])
2446
Guido van Rossum68242b51996-05-28 22:53:03 +00002447# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002448AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002449DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002450
Guido van Rossume97ee181999-12-20 21:27:22 +00002451# the dlopen() function means we might want to use dynload_shlib.o. some
2452# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002453AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002454
2455# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2456# loading of modules.
2457AC_SUBST(DYNLOADFILE)
2458AC_MSG_CHECKING(DYNLOADFILE)
2459if test -z "$DYNLOADFILE"
2460then
2461 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002462 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2463 if test "$ac_cv_func_dlopen" = yes
2464 then DYNLOADFILE="dynload_shlib.o"
2465 else DYNLOADFILE="dynload_aix.o"
2466 fi
2467 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002468 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002469 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2470 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002471 *)
2472 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2473 # out any dynamic loading
2474 if test "$ac_cv_func_dlopen" = yes
2475 then DYNLOADFILE="dynload_shlib.o"
2476 else DYNLOADFILE="dynload_stub.o"
2477 fi
2478 ;;
2479 esac
2480fi
2481AC_MSG_RESULT($DYNLOADFILE)
2482if test "$DYNLOADFILE" != "dynload_stub.o"
2483then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002484 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2485 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002486fi
2487
Jack Jansenc49e5b72001-06-19 15:00:23 +00002488# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2489
2490AC_SUBST(MACHDEP_OBJS)
2491AC_MSG_CHECKING(MACHDEP_OBJS)
2492if test -z "$MACHDEP_OBJS"
2493then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002494 MACHDEP_OBJS=$extra_machdep_objs
2495else
2496 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002497fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002498AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002499
Guido van Rossum627b2d71993-12-24 10:39:16 +00002500# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002501AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2502 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002503 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002504 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Antoine Pitroub7572f02009-12-02 20:46:48 +00002505 initgroups kill killpg lchmod lchown lstat mbrtowc mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002506 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002507 putenv readlink realpath \
Benjamin Peterson965ce872009-04-05 21:24:58 +00002508 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2509 setgid \
Martin v. Löwis7aed61a2009-11-27 14:09:49 +00002510 setlocale setregid setreuid setresuid setresgid setsid setpgid setpgrp setuid setvbuf \
2511 sigaction siginterrupt sigrelse snprintf strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002512 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis113a0852009-05-29 17:25:39 +00002513 truncate uname unsetenv utimes waitpid wait3 wait4 \
2514 wcscoll wcsftime wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002515
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002516# For some functions, having a definition is not sufficient, since
2517# we want to take their address.
2518AC_MSG_CHECKING(for chroot)
2519AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2520 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2521 AC_MSG_RESULT(yes),
2522 AC_MSG_RESULT(no)
2523)
2524AC_MSG_CHECKING(for link)
2525AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2526 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2527 AC_MSG_RESULT(yes),
2528 AC_MSG_RESULT(no)
2529)
2530AC_MSG_CHECKING(for symlink)
2531AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2532 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2533 AC_MSG_RESULT(yes),
2534 AC_MSG_RESULT(no)
2535)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002536AC_MSG_CHECKING(for fchdir)
2537AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2538 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2539 AC_MSG_RESULT(yes),
2540 AC_MSG_RESULT(no)
2541)
2542AC_MSG_CHECKING(for fsync)
2543AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002544 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002545 AC_MSG_RESULT(yes),
2546 AC_MSG_RESULT(no)
2547)
2548AC_MSG_CHECKING(for fdatasync)
2549AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2550 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2551 AC_MSG_RESULT(yes),
2552 AC_MSG_RESULT(no)
2553)
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002554AC_MSG_CHECKING(for epoll)
2555AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2556 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2557 AC_MSG_RESULT(yes),
2558 AC_MSG_RESULT(no)
2559)
2560AC_MSG_CHECKING(for kqueue)
2561AC_TRY_COMPILE([
2562#include <sys/types.h>
2563#include <sys/event.h>
2564 ], int x=kqueue(),
2565 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2566 AC_MSG_RESULT(yes),
2567 AC_MSG_RESULT(no)
2568)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002569# On some systems (eg. FreeBSD 5), we would find a definition of the
2570# functions ctermid_r, setgroups in the library, but no prototype
2571# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2572# address to avoid compiler warnings and potential miscompilations
2573# because of the missing prototypes.
2574
2575AC_MSG_CHECKING(for ctermid_r)
2576AC_TRY_COMPILE([
2577#include "confdefs.h"
2578#include <stdio.h>
2579], void* p = ctermid_r,
2580 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2581 AC_MSG_RESULT(yes),
2582 AC_MSG_RESULT(no)
2583)
2584
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002585AC_MSG_CHECKING(for flock)
2586AC_TRY_COMPILE([
2587#include "confdefs.h"
2588#include <sys/file.h>
2589], void* p = flock,
2590 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2591 AC_MSG_RESULT(yes),
2592 AC_MSG_RESULT(no)
2593)
2594
2595AC_MSG_CHECKING(for getpagesize)
2596AC_TRY_COMPILE([
2597#include "confdefs.h"
2598#include <unistd.h>
2599], void* p = getpagesize,
2600 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2601 AC_MSG_RESULT(yes),
2602 AC_MSG_RESULT(no)
2603)
2604
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002605dnl check for true
2606AC_CHECK_PROGS(TRUE, true, /bin/true)
2607
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002608dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2609dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002610AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002611 AC_CHECK_LIB(resolv, inet_aton)
2612)
2613
Christian Heimesd0764e22007-12-04 15:00:33 +00002614# On Tru64, chflags seems to be present, but calling it will
2615# exit Python
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002616AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002617AC_TRY_RUN([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002618#include <sys/stat.h>
2619#include <unistd.h>
2620int main(int argc, char*argv[])
2621{
2622 if(chflags(argv[0], 0) != 0)
2623 return 1;
2624 return 0;
2625}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002626]], ac_cv_have_chflags=yes,
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002627 ac_cv_have_chflags=no,
2628 ac_cv_have_chflags=cross)
2629])
2630if test "$ac_cv_have_chflags" = cross ; then
2631 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2632fi
2633if test "$ac_cv_have_chflags" = yes ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002634 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2635fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002636
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002637AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002638AC_TRY_RUN([[
Christian Heimesd0764e22007-12-04 15:00:33 +00002639#include <sys/stat.h>
2640#include <unistd.h>
2641int main(int argc, char*argv[])
2642{
2643 if(lchflags(argv[0], 0) != 0)
2644 return 1;
2645 return 0;
2646}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002647]], ac_cv_have_lchflags=yes,
Benjamin Petersoned68afa2010-01-30 19:36:43 +00002648 ac_cv_have_lchflags=no,
2649 ac_cv_have_lchflags=cross)
2650])
2651if test "$ac_cv_have_lchflags" = cross ; then
2652 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2653fi
2654if test "$ac_cv_have_lchflags" = yes ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002655 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2656fi
Christian Heimesd0764e22007-12-04 15:00:33 +00002657
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002658dnl Check if system zlib has *Copy() functions
2659dnl
2660dnl On MacOSX the linker will search for dylibs on the entire linker path
2661dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2662dnl to revert to a more traditional unix behaviour and make it possible to
2663dnl override the system libz with a local static library of libz. Temporarily
2664dnl add that flag to our CFLAGS as well to ensure that we check the version
2665dnl of libz that will be used by setup.py.
2666dnl The -L/usr/local/lib is needed as wel to get the same compilation
2667dnl environment as setup.py (and leaving it out can cause configure to use the
2668dnl wrong version of the library)
2669case $ac_sys_system/$ac_sys_release in
2670Darwin/*)
2671 _CUR_CFLAGS="${CFLAGS}"
2672 _CUR_LDFLAGS="${LDFLAGS}"
2673 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2674 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2675 ;;
2676esac
2677
2678AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2679
2680case $ac_sys_system/$ac_sys_release in
2681Darwin/*)
2682 CFLAGS="${_CUR_CFLAGS}"
2683 LDFLAGS="${_CUR_LDFLAGS}"
2684 ;;
2685esac
2686
Martin v. Löwise9416172003-05-03 10:12:45 +00002687AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002688AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002689#include "confdefs.h"
2690#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002691], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002692 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2693 AC_MSG_RESULT(yes),
2694 AC_MSG_RESULT(no)
2695)
2696
2697AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002698AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002699#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002700#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002701#include <sys/socket.h>
2702#include <netinet/in.h>
2703#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002704], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002705 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2706 AC_MSG_RESULT(yes),
2707 AC_MSG_RESULT(no)
2708)
2709
2710AC_MSG_CHECKING(for inet_pton)
2711AC_TRY_COMPILE([
2712#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002713#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002714#include <sys/socket.h>
2715#include <netinet/in.h>
2716#include <arpa/inet.h>
2717], void* p = inet_pton,
2718 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2719 AC_MSG_RESULT(yes),
2720 AC_MSG_RESULT(no)
2721)
2722
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002723# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002724AC_MSG_CHECKING(for setgroups)
2725AC_TRY_COMPILE([
2726#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002727#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002728#ifdef HAVE_GRP_H
2729#include <grp.h>
2730#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002731],
2732void* p = setgroups,
2733 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2734 AC_MSG_RESULT(yes),
2735 AC_MSG_RESULT(no)
2736)
2737
Fred Drake8cef4cf2000-06-28 16:40:38 +00002738# check for openpty and forkpty
2739
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002740AC_CHECK_FUNCS(openpty,,
2741 AC_CHECK_LIB(util,openpty,
2742 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2743 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2744 )
2745)
2746AC_CHECK_FUNCS(forkpty,,
2747 AC_CHECK_LIB(util,forkpty,
2748 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2749 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2750 )
2751)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002752
Christian Heimesb186d002008-03-18 15:15:01 +00002753# Stuff for expat.
2754AC_CHECK_FUNCS(memmove)
2755
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002756# check for long file support functions
2757AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2758
Christian Heimesb186d002008-03-18 15:15:01 +00002759AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002760AC_CHECK_FUNCS(getpgrp,
2761 AC_TRY_COMPILE([#include <unistd.h>],
2762 [getpgrp(0);],
2763 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2764 [Define if getpgrp() must be called as getpgrp(0).])
2765 )
2766)
Jack Jansen150753c2003-03-29 22:07:47 +00002767AC_CHECK_FUNCS(setpgrp,
2768 AC_TRY_COMPILE([#include <unistd.h>],
2769 [setpgrp(0,0);],
2770 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2771 [Define if setpgrp() must be called as setpgrp(0, 0).])
2772 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002773)
2774AC_CHECK_FUNCS(gettimeofday,
2775 AC_TRY_COMPILE([#include <sys/time.h>],
2776 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2777 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2778 [Define if gettimeofday() does not have second (timezone) argument
2779 This is the case on Motorola V4 (R40V4.2)])
2780 )
2781)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002782
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002783AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002784AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002785#if defined(MAJOR_IN_MKDEV)
2786#include <sys/mkdev.h>
2787#elif defined(MAJOR_IN_SYSMACROS)
2788#include <sys/sysmacros.h>
2789#else
2790#include <sys/types.h>
2791#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002792],[
2793 makedev(major(0),minor(0));
2794],[
2795 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2796 [Define to 1 if you have the device macros.])
2797 AC_MSG_RESULT(yes)
2798],[
2799 AC_MSG_RESULT(no)
2800])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002801
2802# On OSF/1 V5.1, getaddrinfo is available, but a define
2803# for [no]getaddrinfo in netdb.h.
2804AC_MSG_CHECKING(for getaddrinfo)
2805AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002806#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002807#include <sys/socket.h>
2808#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002809#include <stdio.h>
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002810], [getaddrinfo(NULL, NULL, NULL, NULL);],
2811have_getaddrinfo=yes,
2812have_getaddrinfo=no)
2813AC_MSG_RESULT($have_getaddrinfo)
2814if test $have_getaddrinfo = yes
2815then
2816 AC_MSG_CHECKING(getaddrinfo bug)
2817 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
2818 AC_TRY_RUN([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002819#include <sys/types.h>
2820#include <netdb.h>
2821#include <string.h>
2822#include <sys/socket.h>
2823#include <netinet/in.h>
2824
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002825int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002826{
2827 int passive, gaierr, inet4 = 0, inet6 = 0;
2828 struct addrinfo hints, *ai, *aitop;
2829 char straddr[INET6_ADDRSTRLEN], strport[16];
2830
2831 for (passive = 0; passive <= 1; passive++) {
2832 memset(&hints, 0, sizeof(hints));
2833 hints.ai_family = AF_UNSPEC;
2834 hints.ai_flags = passive ? AI_PASSIVE : 0;
2835 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002836 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002837 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2838 (void)gai_strerror(gaierr);
2839 goto bad;
2840 }
2841 for (ai = aitop; ai; ai = ai->ai_next) {
2842 if (ai->ai_addr == NULL ||
2843 ai->ai_addrlen == 0 ||
2844 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2845 straddr, sizeof(straddr), strport, sizeof(strport),
2846 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2847 goto bad;
2848 }
2849 switch (ai->ai_family) {
2850 case AF_INET:
2851 if (strcmp(strport, "54321") != 0) {
2852 goto bad;
2853 }
2854 if (passive) {
2855 if (strcmp(straddr, "0.0.0.0") != 0) {
2856 goto bad;
2857 }
2858 } else {
2859 if (strcmp(straddr, "127.0.0.1") != 0) {
2860 goto bad;
2861 }
2862 }
2863 inet4++;
2864 break;
2865 case AF_INET6:
2866 if (strcmp(strport, "54321") != 0) {
2867 goto bad;
2868 }
2869 if (passive) {
2870 if (strcmp(straddr, "::") != 0) {
2871 goto bad;
2872 }
2873 } else {
2874 if (strcmp(straddr, "::1") != 0) {
2875 goto bad;
2876 }
2877 }
2878 inet6++;
2879 break;
2880 case AF_UNSPEC:
2881 goto bad;
2882 break;
2883 default:
2884 /* another family support? */
2885 break;
2886 }
2887 }
2888 }
2889
2890 if (!(inet4 == 0 || inet4 == 2))
2891 goto bad;
2892 if (!(inet6 == 0 || inet6 == 2))
2893 goto bad;
2894
2895 if (aitop)
2896 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002897 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002898
2899 bad:
2900 if (aitop)
2901 freeaddrinfo(aitop);
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002902 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002903}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002904]], ac_cv_buggy_getaddrinfo=no,
2905 ac_cv_buggy_getaddrinfo=yes,
2906 ac_cv_buggy_getaddrinfo=yes))
2907fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002908
Mark Dickinson2df5d282009-12-31 21:22:50 +00002909if test $have_getaddrinfo = no -o "$ac_cv_buggy_getaddrinfo" = yes
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00002910then
2911 if test $ipv6 = yes
2912 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002913 echo 'Fatal: You must get working getaddrinfo() function.'
2914 echo ' or you can specify "--disable-ipv6"'.
2915 exit 1
2916 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002917else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002918 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002919fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002920AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002921
Guido van Rossum627b2d71993-12-24 10:39:16 +00002922# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002923AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002924AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002925AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002926AC_CHECK_MEMBERS([struct stat.st_rdev])
2927AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002928AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002929AC_CHECK_MEMBERS([struct stat.st_gen])
2930AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002931AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002932
2933AC_MSG_CHECKING(for time.h that defines altzone)
2934AC_CACHE_VAL(ac_cv_header_time_altzone,
2935[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2936 ac_cv_header_time_altzone=yes,
2937 ac_cv_header_time_altzone=no)])
2938AC_MSG_RESULT($ac_cv_header_time_altzone)
2939if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002940 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002941fi
2942
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002943was_it_defined=no
2944AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002945AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002946#include <sys/types.h>
2947#include <sys/select.h>
2948#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002949], [;], [
2950 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2951 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2952 (which you can't on SCO ODT 3.0).])
2953 was_it_defined=yes
2954])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002955AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002956
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002957AC_MSG_CHECKING(for addrinfo)
2958AC_CACHE_VAL(ac_cv_struct_addrinfo,
2959AC_TRY_COMPILE([
2960# include <netdb.h>],
2961 [struct addrinfo a],
2962 ac_cv_struct_addrinfo=yes,
2963 ac_cv_struct_addrinfo=no))
2964AC_MSG_RESULT($ac_cv_struct_addrinfo)
2965if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002966 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002967fi
2968
2969AC_MSG_CHECKING(for sockaddr_storage)
2970AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2971AC_TRY_COMPILE([
2972# include <sys/types.h>
2973# include <sys/socket.h>],
2974 [struct sockaddr_storage s],
2975 ac_cv_struct_sockaddr_storage=yes,
2976 ac_cv_struct_sockaddr_storage=no))
2977AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2978if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002979 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002980fi
2981
Guido van Rossum627b2d71993-12-24 10:39:16 +00002982# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002983
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002984AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002985AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002986
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002987works=no
2988AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002989AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2990 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2991)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002992AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002993
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002994works=no
2995AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002996AC_TRY_COMPILE([], [signed char c;], works=yes,
2997 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2998)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002999AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003000
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003001have_prototypes=no
3002AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003003AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
3004 AC_DEFINE(HAVE_PROTOTYPES, 1,
3005 [Define if your compiler supports function prototype])
3006 have_prototypes=yes
3007])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003008AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003009
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003010works=no
3011AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003012AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003013#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003014int foo(int x, ...) {
3015 va_list va;
3016 va_start(va, x);
3017 va_arg(va, int);
3018 va_arg(va, char *);
3019 va_arg(va, double);
3020 return 0;
3021}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003022], [return foo(10, "", 3.14);], [
3023 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3024 [Define if your compiler supports variable length function prototypes
3025 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3026 works=yes
3027])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003028AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003029
Dave Cole331708b2004-08-09 04:51:41 +00003030# check for socketpair
3031AC_MSG_CHECKING(for socketpair)
3032AC_TRY_COMPILE([
3033#include <sys/types.h>
3034#include <sys/socket.h>
3035], void *x=socketpair,
3036 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3037 AC_MSG_RESULT(yes),
3038 AC_MSG_RESULT(no)
3039)
3040
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003041# check if sockaddr has sa_len member
3042AC_MSG_CHECKING(if sockaddr has sa_len member)
3043AC_TRY_COMPILE([#include <sys/types.h>
3044#include <sys/socket.h>],
3045[struct sockaddr x;
3046x.sa_len = 0;],
3047 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003048 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003049 AC_MSG_RESULT(no))
3050
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003051va_list_is_array=no
3052AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003053AC_TRY_COMPILE([
3054#ifdef HAVE_STDARG_PROTOTYPES
3055#include <stdarg.h>
3056#else
3057#include <varargs.h>
3058#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003059], [va_list list1, list2; list1 = list2;], , [
3060 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3061 va_list_is_array=yes
3062])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003063AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003064
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003065# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003066AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3067 [Define this if you have some version of gethostbyname_r()])
3068
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003069AC_CHECK_FUNC(gethostbyname_r, [
3070 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3071 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3072 OLD_CFLAGS=$CFLAGS
3073 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3074 AC_TRY_COMPILE([
3075# include <netdb.h>
3076 ], [
3077 char *name;
3078 struct hostent *he, *res;
3079 char buffer[2048];
3080 int buflen = 2048;
3081 int h_errnop;
3082
3083 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3084 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003085 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003086 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3087 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003088 AC_MSG_RESULT(yes)
3089 ], [
3090 AC_MSG_RESULT(no)
3091 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3092 AC_TRY_COMPILE([
3093# include <netdb.h>
3094 ], [
3095 char *name;
3096 struct hostent *he;
3097 char buffer[2048];
3098 int buflen = 2048;
3099 int h_errnop;
3100
3101 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3102 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003103 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003104 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3105 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003106 AC_MSG_RESULT(yes)
3107 ], [
3108 AC_MSG_RESULT(no)
3109 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3110 AC_TRY_COMPILE([
3111# include <netdb.h>
3112 ], [
3113 char *name;
3114 struct hostent *he;
3115 struct hostent_data data;
3116
3117 (void) gethostbyname_r(name, he, &data);
3118 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003119 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003120 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3121 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003122 AC_MSG_RESULT(yes)
3123 ], [
3124 AC_MSG_RESULT(no)
3125 ])
3126 ])
3127 ])
3128 CFLAGS=$OLD_CFLAGS
3129], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003130 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003131])
3132AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3133AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3134AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003135AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003136AC_SUBST(HAVE_GETHOSTBYNAME)
3137
Guido van Rossum627b2d71993-12-24 10:39:16 +00003138# checks for system services
3139# (none yet)
3140
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003141# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003142AC_CHECK_FUNC(__fpu_control,
3143 [],
3144 [AC_CHECK_LIB(ieee, __fpu_control)
3145])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003146
Guido van Rossum93274221997-05-09 02:42:00 +00003147# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003148AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00003149AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003150 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3151[
Guido van Rossum93274221997-05-09 02:42:00 +00003152if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003153then
3154 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3155 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3156 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003157else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003158fi],
3159[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003160
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003161# check for --with-libm=...
3162AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003163case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003164Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003165*) LIBM=-lm
3166esac
Guido van Rossum93274221997-05-09 02:42:00 +00003167AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003168AC_ARG_WITH(libm,
3169 AC_HELP_STRING(--with-libm=STRING, math library),
3170[
Guido van Rossum93274221997-05-09 02:42:00 +00003171if test "$withval" = no
3172then LIBM=
3173 AC_MSG_RESULT(force LIBM empty)
3174elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003175then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003176 AC_MSG_RESULT(set LIBM="$withval")
3177else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003178fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003179[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003180
3181# check for --with-libc=...
3182AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003183AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003184AC_ARG_WITH(libc,
3185 AC_HELP_STRING(--with-libc=STRING, C library),
3186[
Guido van Rossum93274221997-05-09 02:42:00 +00003187if test "$withval" = no
3188then LIBC=
3189 AC_MSG_RESULT(force LIBC empty)
3190elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003191then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003192 AC_MSG_RESULT(set LIBC="$withval")
3193else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003194fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003195[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003196
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003197# **************************************************
3198# * Check for various properties of floating point *
3199# **************************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003200
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003201AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3202AC_CACHE_VAL(ac_cv_little_endian_double, [
3203AC_TRY_RUN([
3204#include <string.h>
3205int main() {
3206 double x = 9006104071832581.0;
3207 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3208 return 0;
3209 else
3210 return 1;
3211}
3212],
3213ac_cv_little_endian_double=yes,
3214ac_cv_little_endian_double=no,
3215ac_cv_little_endian_double=no)])
3216AC_MSG_RESULT($ac_cv_little_endian_double)
3217if test "$ac_cv_little_endian_double" = yes
3218then
3219 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3220 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3221 with the least significant byte first])
3222fi
3223
3224AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3225AC_CACHE_VAL(ac_cv_big_endian_double, [
3226AC_TRY_RUN([
3227#include <string.h>
3228int main() {
3229 double x = 9006104071832581.0;
3230 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3231 return 0;
3232 else
3233 return 1;
3234}
3235],
3236ac_cv_big_endian_double=yes,
3237ac_cv_big_endian_double=no,
3238ac_cv_big_endian_double=no)])
3239AC_MSG_RESULT($ac_cv_big_endian_double)
3240if test "$ac_cv_big_endian_double" = yes
3241then
3242 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3243 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3244 with the most significant byte first])
3245fi
3246
3247# Some ARM platforms use a mixed-endian representation for doubles.
3248# While Python doesn't currently have full support for these platforms
3249# (see e.g., issue 1762561), we can at least make sure that float <-> string
3250# conversions work.
3251AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3252AC_CACHE_VAL(ac_cv_mixed_endian_double, [
3253AC_TRY_RUN([
3254#include <string.h>
3255int main() {
3256 double x = 9006104071832581.0;
3257 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3258 return 0;
3259 else
3260 return 1;
3261}
3262],
3263ac_cv_mixed_endian_double=yes,
3264ac_cv_mixed_endian_double=no,
3265ac_cv_mixed_endian_double=no)])
3266AC_MSG_RESULT($ac_cv_mixed_endian_double)
3267if test "$ac_cv_mixed_endian_double" = yes
3268then
3269 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3270 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3271 in ARM mixed-endian order (byte order 45670123)])
3272fi
3273
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003274# The short float repr introduced in Python 3.1 requires the
3275# correctly-rounded string <-> double conversion functions from
3276# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3277# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003278# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson7abf8d42009-04-18 20:17:52 +00003279# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003280
3281# This inline assembler syntax may also work for suncc and icc,
3282# so we try it on all platforms.
3283
3284AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
3285AC_TRY_COMPILE([], [
3286 unsigned short cw;
3287 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3288 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
3289],
3290[have_gcc_asm_for_x87=yes], [have_gcc_asm_for_x87=no])
3291AC_MSG_RESULT($have_gcc_asm_for_x87)
3292if test "$have_gcc_asm_for_x87" = yes
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003293then
Mark Dickinsonf4243f62009-11-15 13:47:27 +00003294 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3295 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003296fi
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003297
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003298# Detect whether system arithmetic is subject to x87-style double
3299# rounding issues. The result of this test has little meaning on non
3300# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3301# mode is round-to-nearest and double rounding issues are present, and
3302# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3303AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003304# $BASECFLAGS may affect the result
3305ac_save_cc="$CC"
3306CC="$CC $BASECFLAGS"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003307AC_TRY_RUN([
3308#include <stdlib.h>
3309#include <math.h>
3310int main() {
3311 volatile double x, y, z;
3312 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3313 x = 0.99999999999999989; /* 1-2**-53 */
3314 y = 1./x;
3315 if (y != 1.)
3316 exit(0);
3317 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3318 x = 1e16;
3319 y = 2.99999;
3320 z = x + y;
3321 if (z != 1e16+4.)
3322 exit(0);
3323 /* both tests show evidence of double rounding */
3324 exit(1);
3325}
3326],
3327ac_cv_x87_double_rounding=no,
3328ac_cv_x87_double_rounding=yes,
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003329ac_cv_x87_double_rounding=no)
3330CC="$ac_save_cc"
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003331AC_MSG_RESULT($ac_cv_x87_double_rounding)
3332if test "$ac_cv_x87_double_rounding" = yes
3333then
3334 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3335 [Define if arithmetic is subject to x87-style double rounding issue])
3336fi
3337
Mark Dickinsonb08a53a2009-04-16 19:52:09 +00003338# ************************************
3339# * Check for mathematical functions *
3340# ************************************
3341
3342LIBS_SAVE=$LIBS
3343LIBS="$LIBS $LIBM"
3344
Christian Heimes81ee3ef2008-05-04 22:42:01 +00003345# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3346# -0. on some architectures.
3347AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3348AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3349AC_TRY_RUN([
3350#include <math.h>
3351#include <stdlib.h>
3352int main() {
3353 /* return 0 if either negative zeros don't exist
3354 on this platform or if negative zeros exist
3355 and tanh(-0.) == -0. */
3356 if (atan2(0., -1.) == atan2(-0., -1.) ||
3357 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3358 else exit(1);
3359}
3360],
3361ac_cv_tanh_preserves_zero_sign=yes,
3362ac_cv_tanh_preserves_zero_sign=no,
3363ac_cv_tanh_preserves_zero_sign=no)])
3364AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3365if test "$ac_cv_tanh_preserves_zero_sign" = yes
3366then
3367 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3368 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3369fi
3370
Mark Dickinson9c113362009-09-05 10:36:23 +00003371AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
3372AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
Mark Dickinson3dc7c6a2009-01-04 15:09:02 +00003373AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes99170a52007-12-19 02:07:34 +00003374
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003375LIBS=$LIBS_SAVE
3376
Mark Dickinsona614f042009-11-28 12:48:43 +00003377# For multiprocessing module, check that sem_open
3378# actually works. For FreeBSD versions <= 7.2,
3379# the kernel module that provides POSIX semaphores
3380# isn't loaded by default, so an attempt to call
3381# sem_open results in a 'Signal 12' error.
3382AC_MSG_CHECKING(whether POSIX semaphores are enabled)
3383AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
3384AC_TRY_RUN([
3385#include <unistd.h>
3386#include <fcntl.h>
3387#include <stdio.h>
3388#include <semaphore.h>
3389#include <sys/stat.h>
3390
3391int main(void) {
3392 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3393 if (a == SEM_FAILED) {
3394 perror("sem_open");
3395 return 1;
3396 }
3397 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003398 sem_unlink("/autoconf");
Mark Dickinsona614f042009-11-28 12:48:43 +00003399 return 0;
3400}
3401], ac_cv_posix_semaphores_enabled=yes,
3402 ac_cv_posix_semaphores_enabled=no,
3403 ac_cv_posix_semaphores_enabled=yes)
3404)
3405AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
3406if test $ac_cv_posix_semaphores_enabled = no
3407then
3408 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
3409 [Define if POSIX semaphores aren't enabled on your system])
3410fi
3411
Mark Dickinson10683072009-04-18 21:18:19 +00003412# Multiprocessing check for broken sem_getvalue
3413AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003414AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Mark Dickinson10683072009-04-18 21:18:19 +00003415AC_TRY_RUN([
3416#include <unistd.h>
3417#include <fcntl.h>
3418#include <stdio.h>
3419#include <semaphore.h>
3420#include <sys/stat.h>
3421
3422int main(void){
Mark Dickinsonba79b352009-12-13 21:10:57 +00003423 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Mark Dickinson10683072009-04-18 21:18:19 +00003424 int count;
3425 int res;
3426 if(a==SEM_FAILED){
3427 perror("sem_open");
3428 return 1;
3429
3430 }
3431 res = sem_getvalue(a, &count);
3432 sem_close(a);
Mark Dickinsonba79b352009-12-13 21:10:57 +00003433 sem_unlink("/autocftw");
Mark Dickinson10683072009-04-18 21:18:19 +00003434 return res==-1 ? 1 : 0;
3435}
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003436], ac_cv_broken_sem_getvalue=no,
3437 ac_cv_broken_sem_getvalue=yes,
3438 ac_cv_broken_sem_getvalue=yes)
Mark Dickinson10683072009-04-18 21:18:19 +00003439)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003440AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3441if test $ac_cv_broken_sem_getvalue = yes
3442then
3443 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3444 [define to 1 if your sem_getvalue is broken.])
3445fi
Mark Dickinson10683072009-04-18 21:18:19 +00003446
Mark Dickinsonbd792642009-03-18 20:06:12 +00003447# determine what size digit to use for Python's longs
3448AC_MSG_CHECKING([digit size for Python's longs])
3449AC_ARG_ENABLE(big-digits,
3450AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3451[case $enable_big_digits in
3452yes)
3453 enable_big_digits=30 ;;
3454no)
3455 enable_big_digits=15 ;;
3456[15|30])
3457 ;;
3458*)
3459 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3460esac
3461AC_MSG_RESULT($enable_big_digits)
3462AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3463],
3464[AC_MSG_RESULT(no value specified)])
3465
Guido van Rossumef2255b2000-03-10 22:30:29 +00003466# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003467AC_CHECK_HEADER(wchar.h, [
3468 AC_DEFINE(HAVE_WCHAR_H, 1,
3469 [Define if the compiler provides a wchar.h header file.])
3470 wchar_h="yes"
3471],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003472wchar_h="no"
3473)
3474
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003475# determine wchar_t size
3476if test "$wchar_h" = yes
3477then
Guido van Rossum67b26592001-10-20 14:21:45 +00003478 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003479fi
3480
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003481AC_MSG_CHECKING(for UCS-4 tcl)
3482have_ucs4_tcl=no
3483AC_TRY_COMPILE([
3484#include <tcl.h>
3485#if TCL_UTF_MAX != 6
3486# error "NOT UCS4_TCL"
3487#endif], [], [
3488 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3489 have_ucs4_tcl=yes
3490])
3491AC_MSG_RESULT($have_ucs4_tcl)
3492
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003493# check whether wchar_t is signed or not
3494if test "$wchar_h" = yes
3495then
3496 # check whether wchar_t is signed or not
3497 AC_MSG_CHECKING(whether wchar_t is signed)
3498 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3499 AC_TRY_RUN([
3500 #include <wchar.h>
3501 int main()
3502 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003503 /* Success: exit code 0 */
3504 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003505 }
3506 ],
3507 ac_cv_wchar_t_signed=yes,
3508 ac_cv_wchar_t_signed=no,
3509 ac_cv_wchar_t_signed=yes)])
3510 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3511fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003512
Georg Brandl52d168a2008-01-07 18:10:24 +00003513AC_MSG_CHECKING(what type to use for str)
3514AC_ARG_WITH(wide-unicode,
3515 AC_HELP_STRING(--with-wide-unicode, Use 4-byte Unicode characters (default is 2 bytes)),
3516[
3517if test "$withval" != no
3518then unicode_size="4"
3519else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003520fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003521],
3522[
3523case "$have_ucs4_tcl" in
3524 yes) unicode_size="4" ;;
3525 *) unicode_size="2" ;;
3526esac
3527])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003528
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003529AH_TEMPLATE(Py_UNICODE_SIZE,
3530 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003531case "$unicode_size" in
3532 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3533 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003534esac
3535
Martin v. Löwis11437992002-04-12 09:54:03 +00003536AH_TEMPLATE(PY_UNICODE_TYPE,
3537 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003538
Georg Brandl52d168a2008-01-07 18:10:24 +00003539# wchar_t is only usable if it maps to an unsigned type
3540if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003541 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003542then
3543 PY_UNICODE_TYPE="wchar_t"
3544 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3545 [Define if you have a useable wchar_t type defined in wchar.h; useable
3546 means wchar_t must be an unsigned type with at least 16 bits. (see
3547 Include/unicodeobject.h).])
3548 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3549elif test "$ac_cv_sizeof_short" = "$unicode_size"
3550then
3551 PY_UNICODE_TYPE="unsigned short"
3552 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3553elif test "$ac_cv_sizeof_long" = "$unicode_size"
3554then
3555 PY_UNICODE_TYPE="unsigned long"
3556 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3557else
3558 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003559fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003560AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003561
3562# check for endianness
3563AC_C_BIGENDIAN
3564
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003565# Check whether right shifting a negative integer extends the sign bit
3566# or fills with zeros (like the Cray J90, according to Tim Peters).
3567AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003568AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003569AC_TRY_RUN([
3570int main()
3571{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003572 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003573}
Guido van Rossum3065c942001-09-17 04:03:14 +00003574],
3575ac_cv_rshift_extends_sign=yes,
3576ac_cv_rshift_extends_sign=no,
3577ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003578AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3579if test "$ac_cv_rshift_extends_sign" = no
3580then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003581 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3582 [Define if i>>j for signed int i does not extend the sign bit
3583 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003584fi
3585
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003586# check for getc_unlocked and related locking functions
3587AC_MSG_CHECKING(for getc_unlocked() and friends)
3588AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3589AC_TRY_LINK([#include <stdio.h>],[
3590 FILE *f = fopen("/dev/null", "r");
3591 flockfile(f);
3592 getc_unlocked(f);
3593 funlockfile(f);
3594], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3595AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3596if test "$ac_cv_have_getc_unlocked" = yes
3597then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003598 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3599 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003600fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003601
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003602# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003603# save the value of LIBS so we don't actually link Python with readline
3604LIBS_no_readline=$LIBS
Gregory P. Smith18820942008-09-07 06:24:49 +00003605
3606# On some systems we need to link readline to a termcap compatible
3607# library. NOTE: Keep the precedence of listed libraries synchronised
3608# with setup.py.
3609py_cv_lib_readline=no
3610AC_MSG_CHECKING([how to link readline libs])
3611for py_libtermcap in "" ncursesw ncurses curses termcap; do
3612 if test -z "$py_libtermcap"; then
3613 READLINE_LIBS="-lreadline"
3614 else
3615 READLINE_LIBS="-lreadline -l$py_libtermcap"
3616 fi
3617 LIBS="$READLINE_LIBS $LIBS_no_readline"
3618 AC_LINK_IFELSE(
3619 [AC_LANG_CALL([],[readline])],
3620 [py_cv_lib_readline=yes])
3621 if test $py_cv_lib_readline = yes; then
3622 break
3623 fi
3624done
3625# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3626#AC_SUBST([READLINE_LIBS])
Gregory P. Smith97515912008-09-07 19:23:19 +00003627if test $py_cv_lib_readline = no; then
Gregory P. Smith18820942008-09-07 06:24:49 +00003628 AC_MSG_RESULT([none])
3629else
3630 AC_MSG_RESULT([$READLINE_LIBS])
3631 AC_DEFINE(HAVE_LIBREADLINE, 1,
3632 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003633fi
3634
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003635# check for readline 2.1
3636AC_CHECK_LIB(readline, rl_callback_handler_install,
3637 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003638 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003639
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003640# check for readline 2.2
3641AC_TRY_CPP([#include <readline/readline.h>],
3642have_readline=yes, have_readline=no)
3643if test $have_readline = yes
3644then
3645 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3646 [readline/readline.h],
3647 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3648 [Define if you have readline 2.2]), )
Antoine Pitroud5131772009-10-26 19:22:14 +00003649 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3650 [readline/readline.h],
3651 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3652 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003653fi
3654
Martin v. Löwis0daad592001-09-30 21:09:59 +00003655# check for readline 4.0
3656AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003657 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003658 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003659
Thomas Wouters89d996e2007-09-08 17:39:28 +00003660# also in 4.0
3661AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3662 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003663 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Thomas Wouters89d996e2007-09-08 17:39:28 +00003664
Guido van Rossum353ae582001-07-10 16:45:32 +00003665# check for readline 4.2
3666AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003667 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smith18820942008-09-07 06:24:49 +00003668 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003669
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003670# also in readline 4.2
3671AC_TRY_CPP([#include <readline/readline.h>],
3672have_readline=yes, have_readline=no)
3673if test $have_readline = yes
3674then
3675 AC_EGREP_HEADER([extern int rl_catch_signals;],
3676 [readline/readline.h],
3677 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3678 [Define if you can turn off readline's signal handling.]), )
3679fi
3680
Martin v. Löwis82bca632006-02-10 20:49:30 +00003681# End of readline checks: restore LIBS
3682LIBS=$LIBS_no_readline
3683
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003684AC_MSG_CHECKING(for broken nice())
3685AC_CACHE_VAL(ac_cv_broken_nice, [
3686AC_TRY_RUN([
3687int main()
3688{
3689 int val1 = nice(1);
3690 if (val1 != -1 && val1 == nice(2))
3691 exit(0);
3692 exit(1);
3693}
Guido van Rossum3065c942001-09-17 04:03:14 +00003694],
3695ac_cv_broken_nice=yes,
3696ac_cv_broken_nice=no,
3697ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003698AC_MSG_RESULT($ac_cv_broken_nice)
3699if test "$ac_cv_broken_nice" = yes
3700then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003701 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3702 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003703fi
3704
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003705AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003706AC_CACHE_VAL(ac_cv_broken_poll,
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003707AC_TRY_RUN([
3708#include <poll.h>
3709
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003710int main()
3711{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003712 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003713 int poll_test;
3714
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003715 close (42);
3716
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003717 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003718 if (poll_test < 0)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003719 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003720 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003721 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003722 else
Alexandre Vassalottiaee170a2009-07-17 06:24:33 +00003723 return 1;
3724}
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003725],
3726ac_cv_broken_poll=yes,
3727ac_cv_broken_poll=no,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00003728ac_cv_broken_poll=no))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003729AC_MSG_RESULT($ac_cv_broken_poll)
3730if test "$ac_cv_broken_poll" = yes
3731then
3732 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3733 [Define if poll() sets errno on invalid file descriptors.])
3734fi
3735
Brett Cannon43802422005-02-10 20:48:03 +00003736# Before we can test tzset, we need to check if struct tm has a tm_zone
3737# (which is not required by ISO C or UNIX spec) and/or if we support
3738# tzname[]
3739AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003740
Brett Cannon43802422005-02-10 20:48:03 +00003741# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003742AC_MSG_CHECKING(for working tzset())
3743AC_CACHE_VAL(ac_cv_working_tzset, [
3744AC_TRY_RUN([
3745#include <stdlib.h>
3746#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003747#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003748
3749#if HAVE_TZNAME
3750extern char *tzname[];
3751#endif
3752
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003753int main()
3754{
Brett Cannon18367812003-09-19 00:59:16 +00003755 /* Note that we need to ensure that not only does tzset(3)
3756 do 'something' with localtime, but it works as documented
3757 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003758 This includes making sure that tzname is set properly if
3759 tm->tm_zone does not exist since it is the alternative way
3760 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003761
3762 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003763 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003764 */
3765
Brett Cannon43802422005-02-10 20:48:03 +00003766 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003767 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3768
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003769 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003770 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003771 if (localtime(&groundhogday)->tm_hour != 0)
3772 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003773#if HAVE_TZNAME
3774 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3775 if (strcmp(tzname[0], "UTC") ||
3776 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3777 exit(1);
3778#endif
Brett Cannon18367812003-09-19 00:59:16 +00003779
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003780 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003781 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003782 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003783 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003784#if HAVE_TZNAME
3785 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3786 exit(1);
3787#endif
Brett Cannon18367812003-09-19 00:59:16 +00003788
3789 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3790 tzset();
3791 if (localtime(&groundhogday)->tm_hour != 11)
3792 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003793#if HAVE_TZNAME
3794 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3795 exit(1);
3796#endif
3797
3798#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003799 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3800 exit(1);
3801 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3802 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003803#endif
Brett Cannon18367812003-09-19 00:59:16 +00003804
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003805 exit(0);
3806}
3807],
3808ac_cv_working_tzset=yes,
3809ac_cv_working_tzset=no,
3810ac_cv_working_tzset=no)])
3811AC_MSG_RESULT($ac_cv_working_tzset)
3812if test "$ac_cv_working_tzset" = yes
3813then
3814 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3815 [Define if tzset() actually switches the local timezone in a meaningful way.])
3816fi
3817
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003818# Look for subsecond timestamps in struct stat
3819AC_MSG_CHECKING(for tv_nsec in struct stat)
3820AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3821AC_TRY_COMPILE([#include <sys/stat.h>], [
3822struct stat st;
3823st.st_mtim.tv_nsec = 1;
3824],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003825ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003826ac_cv_stat_tv_nsec=no,
3827ac_cv_stat_tv_nsec=no))
3828AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3829if test "$ac_cv_stat_tv_nsec" = yes
3830then
3831 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3832 [Define if you have struct stat.st_mtim.tv_nsec])
3833fi
3834
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003835# Look for BSD style subsecond timestamps in struct stat
3836AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3837AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3838AC_TRY_COMPILE([#include <sys/stat.h>], [
3839struct stat st;
3840st.st_mtimespec.tv_nsec = 1;
3841],
3842ac_cv_stat_tv_nsec2=yes,
3843ac_cv_stat_tv_nsec2=no,
3844ac_cv_stat_tv_nsec2=no))
3845AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3846if test "$ac_cv_stat_tv_nsec2" = yes
3847then
3848 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3849 [Define if you have struct stat.st_mtimensec])
3850fi
3851
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003852# On HP/UX 11.0, mvwdelch is a block with a return statement
3853AC_MSG_CHECKING(whether mvwdelch is an expression)
3854AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3855AC_TRY_COMPILE([#include <curses.h>], [
3856 int rtn;
3857 rtn = mvwdelch(0,0,0);
3858], ac_cv_mvwdelch_is_expression=yes,
3859 ac_cv_mvwdelch_is_expression=no,
3860 ac_cv_mvwdelch_is_expression=yes))
3861AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3862
3863if test "$ac_cv_mvwdelch_is_expression" = yes
3864then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003865 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3866 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003867fi
3868
3869AC_MSG_CHECKING(whether WINDOW has _flags)
3870AC_CACHE_VAL(ac_cv_window_has_flags,
3871AC_TRY_COMPILE([#include <curses.h>], [
3872 WINDOW *w;
3873 w->_flags = 0;
3874], ac_cv_window_has_flags=yes,
3875 ac_cv_window_has_flags=no,
3876 ac_cv_window_has_flags=no))
3877AC_MSG_RESULT($ac_cv_window_has_flags)
3878
3879
3880if test "$ac_cv_window_has_flags" = yes
3881then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003882 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3883 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003884fi
3885
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003886AC_MSG_CHECKING(for is_term_resized)
3887AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3888 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3889 AC_MSG_RESULT(yes),
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003890 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003891)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003892
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003893AC_MSG_CHECKING(for resize_term)
3894AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3895 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3896 AC_MSG_RESULT(yes),
Neal Norwitz865400f2003-03-21 01:42:58 +00003897 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003898)
3899
3900AC_MSG_CHECKING(for resizeterm)
3901AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3902 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3903 AC_MSG_RESULT(yes),
3904 AC_MSG_RESULT(no)
3905)
3906
Thomas Wouters89f507f2006-12-13 04:49:30 +00003907AC_MSG_CHECKING(for /dev/ptmx)
3908
3909if test -r /dev/ptmx
3910then
3911 AC_MSG_RESULT(yes)
3912 AC_DEFINE(HAVE_DEV_PTMX, 1,
3913 [Define if we have /dev/ptmx.])
3914else
3915 AC_MSG_RESULT(no)
3916fi
3917
3918AC_MSG_CHECKING(for /dev/ptc)
3919
3920if test -r /dev/ptc
3921then
3922 AC_MSG_RESULT(yes)
3923 AC_DEFINE(HAVE_DEV_PTC, 1,
3924 [Define if we have /dev/ptc.])
3925else
3926 AC_MSG_RESULT(no)
3927fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003928
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003929if test "$have_long_long" = yes
3930then
3931 AC_MSG_CHECKING(for %lld and %llu printf() format support)
3932 AC_CACHE_VAL(ac_cv_have_long_long_format,
3933 AC_TRY_RUN([[
3934 #include <stdio.h>
3935 #include <stddef.h>
3936 #include <string.h>
3937
3938 #ifdef HAVE_SYS_TYPES_H
3939 #include <sys/types.h>
3940 #endif
3941
3942 int main()
3943 {
3944 char buffer[256];
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, "%lld", (long long)-123) < 0)
3952 return 1;
3953 if (strcmp(buffer, "-123"))
3954 return 1;
3955
3956 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
3957 return 1;
3958 if (strcmp(buffer, "123"))
3959 return 1;
3960
3961 return 0;
3962 }
3963 ]], ac_cv_have_long_long_format=yes,
3964 ac_cv_have_long_long_format=no,
3965 ac_cv_have_long_long_format=no)
3966 )
3967 AC_MSG_RESULT($ac_cv_have_long_long_format)
3968fi
3969
Mark Dickinson89d7d412009-12-31 20:50:59 +00003970if test "$ac_cv_have_long_long_format" = yes
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003971then
3972 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
3973 [Define to printf format modifier for long long type])
3974fi
3975
Ronald Oussoren3c1928a2009-11-19 17:15:31 +00003976if test $ac_sys_system = Darwin
3977then
3978 LIBS="$LIBS -framework CoreFoundation"
3979fi
Mark Dickinson6ce4a9a2009-11-16 17:00:11 +00003980
Benjamin Peterson8f326b22009-12-13 02:10:36 +00003981AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
3982AC_TRY_RUN([
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00003983#include <stdio.h>
Thomas Wouters477c8d52006-05-27 19:21:47 +00003984#include <stddef.h>
3985#include <string.h>
3986
Christian Heimes2c181612007-12-17 20:04:13 +00003987#ifdef HAVE_SYS_TYPES_H
3988#include <sys/types.h>
3989#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00003990
3991#ifdef HAVE_SSIZE_T
3992typedef ssize_t Py_ssize_t;
3993#elif SIZEOF_VOID_P == SIZEOF_LONG
3994typedef long Py_ssize_t;
3995#else
3996typedef int Py_ssize_t;
3997#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00003998
Christian Heimes2c181612007-12-17 20:04:13 +00003999int main()
4000{
4001 char buffer[256];
4002
Thomas Wouters477c8d52006-05-27 19:21:47 +00004003 if(sprintf(buffer, "%zd", (size_t)123) < 0)
4004 return 1;
4005
Thomas Wouters89f507f2006-12-13 04:49:30 +00004006 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00004007 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00004008
4009 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
4010 return 1;
4011
4012 if (strcmp(buffer, "-123"))
4013 return 1;
4014
Thomas Wouters477c8d52006-05-27 19:21:47 +00004015 return 0;
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004016}
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004017], ac_cv_have_size_t_format=yes,
Alexandre Vassalottie5091f62009-07-17 06:41:02 +00004018 ac_cv_have_size_t_format=no,
Benjamin Peterson8f326b22009-12-13 02:10:36 +00004019 [ac_cv_have_size_t_format="cross -- assuming yes"]
4020)])
4021if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004022 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
4023 [Define to printf format modifier for Py_ssize_t])
4024fi
Thomas Wouters477c8d52006-05-27 19:21:47 +00004025
Martin v. Löwis01c04012002-11-11 14:58:44 +00004026AC_CHECK_TYPE(socklen_t,,
4027 AC_DEFINE(socklen_t,int,
4028 Define to `int' if <sys/socket.h> does not define.),[
4029#ifdef HAVE_SYS_TYPES_H
4030#include <sys/types.h>
4031#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00004032#ifdef HAVE_SYS_SOCKET_H
4033#include <sys/socket.h>
4034#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00004035])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004036
Antoine Pitroufff95302008-09-03 18:58:51 +00004037AC_MSG_CHECKING(for broken mbstowcs)
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004038AC_CACHE_VAL(ac_cv_broken_mbstowcs,
Antoine Pitroufff95302008-09-03 18:58:51 +00004039AC_TRY_RUN([
4040#include<stdlib.h>
4041int main() {
4042 size_t len = -1;
4043 const char *str = "text";
4044 len = mbstowcs(NULL, str, 0);
4045 return (len != 4);
4046}
4047],
4048ac_cv_broken_mbstowcs=no,
4049ac_cv_broken_mbstowcs=yes,
Alexandre Vassalotti7b0c1c72009-07-17 06:00:34 +00004050ac_cv_broken_mbstowcs=no))
Antoine Pitroufff95302008-09-03 18:58:51 +00004051AC_MSG_RESULT($ac_cv_broken_mbstowcs)
4052if test "$ac_cv_broken_mbstowcs" = yes
4053then
4054 AC_DEFINE(HAVE_BROKEN_MBSTOWCS, 1,
4055 [Define if mbstowcs(NULL, "text", 0) does not return the number of
4056 wide chars that would be converted.])
4057fi
4058
Antoine Pitroub52ec782009-01-25 16:34:23 +00004059# Check for --with-computed-gotos
4060AC_MSG_CHECKING(for --with-computed-gotos)
4061AC_ARG_WITH(computed-gotos,
4062 AC_HELP_STRING(--with-computed-gotos,
4063 Use computed gotos / threaded dispatch in evaluation loop (not available on all compilers)),
4064[
4065if test "$withval" != no
4066then
4067 AC_DEFINE(USE_COMPUTED_GOTOS, 1,
4068 [Define if you want to use computed gotos in ceval.c.])
4069 AC_MSG_RESULT(yes)
4070else AC_MSG_RESULT(no)
4071fi],
4072[AC_MSG_RESULT(no)])
4073
4074
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004075AC_SUBST(THREADHEADERS)
4076
4077for h in `(cd $srcdir;echo Python/thread_*.h)`
4078do
4079 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4080done
4081
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004082AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00004083SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004084AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004085for dir in $SRCDIRS; do
4086 if test ! -d $dir; then
4087 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004088 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004089done
4090AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004091
Guido van Rossum627b2d71993-12-24 10:39:16 +00004092# generate output files
Antoine Pitrou20327222009-05-24 20:39:11 +00004093AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00004094AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004095
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004096echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004097if test ! -f Modules/Setup
4098then
4099 cp $srcdir/Modules/Setup.dist Modules/Setup
4100fi
4101
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00004102echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004103if test ! -f Modules/Setup.local
4104then
4105 echo "# Edit this file for local setup changes" >Modules/Setup.local
4106fi
4107
4108echo "creating Makefile"
4109$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4110 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004111 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00004112mv config.c Modules