blob: 6f05f7578d79e74b722d1fced6b25b05ebfaf57f [file] [log] [blame]
Benjamin Petersond7c77842008-05-26 13:01:25 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Benjamin Peterson98b1b022008-11-30 14:43: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)
Martin v. Löwis174440b2008-10-03 08:59:41 +00007m4_define(PYTHON_VERSION, 2.7)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008
Alexandre Vassalotti130ae152009-07-18 00:31:06 +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 Brandl464432d2009-05-20 18:24:08 +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
Georg Brandlbcd64a32009-03-31 21:45:18 +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
Ronald Oussoren5640ce22008-06-05 12:58:24 +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 Oussoren988117f2006-04-29 11:31:35 +000089AC_ARG_ENABLE(universalsdk,
Brett Cannon91a1dec2008-02-13 19:15:44 +000090 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Ronald Oussoren988117f2006-04-29 11:31:35 +000091[
92 case $enableval in
93 yes)
94 enableval=/Developer/SDKs/MacOSX10.4u.sdk
95 ;;
96 esac
97 case $enableval in
98 no)
99 UNIVERSALSDK=
100 enable_universalsdk=
101 ;;
102 *)
103 UNIVERSALSDK=$enableval
104 ;;
105 esac
106],[
107 UNIVERSALSDK=
108 enable_universalsdk=
109])
110AC_SUBST(UNIVERSALSDK)
111
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000112AC_SUBST(ARCH_RUN_32BIT)
113
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000114UNIVERSAL_ARCHS="32-bit"
Ronald Oussoren92919a62009-12-24 13:30:58 +0000115AC_SUBST(LIPO_32BIT_FLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000116AC_MSG_CHECKING(for --with-universal-archs)
117AC_ARG_WITH(universal-archs,
Ronald Oussoren23d92532009-09-07 06:12:00 +0000118 AC_HELP_STRING(--with-universal-archs=ARCH, select architectures for universal build ("32-bit", "64-bit", "3-way", "intel" or "all")),
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000119[
120 AC_MSG_RESULT($withval)
121 UNIVERSAL_ARCHS="$withval"
Ronald Oussoren9ebd2422009-09-29 13:00:44 +0000122 if test "${enable_universalsdk}" ; then
123 :
124 else
125 AC_MSG_ERROR([--with-universal-archs without --enable-universalsdk. See Mac/README])
126 fi
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000127],
128[
129 AC_MSG_RESULT(32-bit)
130])
131
132
133
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000134AC_ARG_WITH(framework-name,
135 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
136 specify an alternate name of the framework built with --enable-framework),
137[
Ronald Oussoren9ebd2422009-09-29 13:00:44 +0000138 if test "${enable_framework}"; then
139 :
140 else
141 AC_MSG_ERROR([--with-framework-name without --enable-framework. See Mac/README])
142 fi
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000143 PYTHONFRAMEWORK=${withval}
144 PYTHONFRAMEWORKDIR=${withval}.framework
145 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
146 ],[
147 PYTHONFRAMEWORK=Python
148 PYTHONFRAMEWORKDIR=Python.framework
149 PYTHONFRAMEWORKIDENTIFIER=org.python.python
150])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000151dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000152AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000153 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
154[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000155 case $enableval in
156 yes)
157 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000158 esac
159 case $enableval in
160 no)
161 PYTHONFRAMEWORK=
162 PYTHONFRAMEWORKDIR=no-framework
163 PYTHONFRAMEWORKPREFIX=
164 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000165 FRAMEWORKINSTALLFIRST=
166 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000167 FRAMEWORKALTINSTALLFIRST=
168 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000169 if test "x${prefix}" = "xNONE"; then
170 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
171 else
172 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
173 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000174 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000175 ;;
176 *)
177 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000178 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000179 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000180 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure bininstall maninstall"
Ronald Oussoren92919a62009-12-24 13:30:58 +0000181 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
182 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000183
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000184 if test "x${prefix}" = "xNONE" ; then
185 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
186 else
187 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
188 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000189 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000190
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000191 # Add files for Mac specific code to the list of output
Ronald Oussoren836b0392006-05-14 19:56:34 +0000192 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000193 AC_CONFIG_FILES(Mac/Makefile)
194 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
195 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000196 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
197 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000198 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000199 ],[
200 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000201 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000202 PYTHONFRAMEWORKPREFIX=
203 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000204 FRAMEWORKINSTALLFIRST=
205 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000206 FRAMEWORKALTINSTALLFIRST=
207 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000208 if test "x${prefix}" = "xNONE" ; then
209 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
210 else
211 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
212 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000213 enable_framework=
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000214
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000215])
216AC_SUBST(PYTHONFRAMEWORK)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000217AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000218AC_SUBST(PYTHONFRAMEWORKDIR)
219AC_SUBST(PYTHONFRAMEWORKPREFIX)
220AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000221AC_SUBST(FRAMEWORKINSTALLFIRST)
222AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000223AC_SUBST(FRAMEWORKALTINSTALLFIRST)
224AC_SUBST(FRAMEWORKALTINSTALLLAST)
225AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000226
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000227##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000228## AC_HELP_STRING(--with-dyld,
229## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000230##
Guido van Rossumb418f891996-07-30 18:06:02 +0000231# Set name for machine-dependent library files
232AC_SUBST(MACHDEP)
233AC_MSG_CHECKING(MACHDEP)
234if test -z "$MACHDEP"
235then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000236 ac_sys_system=`uname -s`
Georg Brandlfe18a112009-09-04 07:55:14 +0000237 if test "$ac_sys_system" = "AIX" \
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000238 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000239 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000240 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000241 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000242 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000243 ac_md_system=`echo $ac_sys_system |
244 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
245 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000246 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000247 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000248
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000249 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000250 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000251 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000252 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000253 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000254 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000255 esac
256fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000257
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000258# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
259# disable features if it is defined, without any means to access these
260# features as extensions. For these systems, we skip the definition of
261# _XOPEN_SOURCE. Before adding a system to the list to gain access to
262# some feature, make sure there is no alternative way to access this
263# feature. Also, when using wildcards, make sure you have verified the
264# need for not defining _XOPEN_SOURCE on all systems matching the
265# wildcard, and that the wildcard does not include future systems
266# (which may remove their limitations).
267dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
268case $ac_sys_system/$ac_sys_release in
269 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
270 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000271 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Gregory P. Smith980b99b2008-09-07 05:15:18 +0000272 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
Martin v. Löwiscb78de62007-12-29 18:49:21 +0000273 define_xopen_source=no
274 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
275 # also defined. This can be overridden by defining _BSD_SOURCE
276 # As this has a different meaning on Linux, only define it on OpenBSD
277 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
278 ;;
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000279 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
280 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
281 # Marc Recht
Georg Brandl4b9bcfc2008-11-16 08:00:17 +0000282 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6@<:@A-S@:>@)
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000283 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000284 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
285 # of union __?sigval. Reported by Stuart Bishop.
286 SunOS/5.6)
287 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000288 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
289 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000290 # Reconfirmed for 7.1.4 by Martin v. Loewis.
291 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000292 define_xopen_source=no;;
293 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000294 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000295 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000296 define_xopen_source=no;;
Martin v. Löwisbb86d832008-11-04 20:40:09 +0000297 # On FreeBSD 4, the math functions C89 does not cover are never defined
298 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
299 FreeBSD/4.*)
300 define_xopen_source=no;;
301 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
302 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
303 # identifies itself as Darwin/7.*
304 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
305 # disables platform specific features beyond repair.
306 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
307 # has no effect, don't bother defining them
308 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000309 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000310 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
311 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
312 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000313 AIX/4)
314 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000315 AIX/5)
316 if test `uname -r` -eq 1; then
317 define_xopen_source=no
318 fi
319 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000320 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
321 # defining NI_NUMERICHOST.
322 QNX/6.3.2)
323 define_xopen_source=no
324 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000325
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000326esac
327
328if test $define_xopen_source = yes
329then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000330 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
331 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000332 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
333 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000334 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000335 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000336 AC_DEFINE(_XOPEN_SOURCE, 500,
337 Define to the level of X/Open that your system supports)
338 ;;
339 *)
340 AC_DEFINE(_XOPEN_SOURCE, 600,
341 Define to the level of X/Open that your system supports)
342 ;;
343 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000344
345 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
346 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
347 # several APIs are not declared. Since this is also needed in some
348 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000349 # except for Solaris 10, where it must not be defined,
350 # as it implies XPG4.2
351 case $ac_sys_system/$ac_sys_release in
352 SunOS/5.10)
353 ;;
354 *)
355 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
356 Define to activate Unix95-and-earlier features)
357 ;;
358 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000359
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000360 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
361
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000362fi
363
Guido van Rossum91922671997-10-09 20:24:13 +0000364#
365# SGI compilers allow the specification of the both the ABI and the
366# ISA on the command line. Depending on the values of these switches,
367# different and often incompatable code will be generated.
368#
369# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
370# thus supply support for various ABI/ISA combinations. The MACHDEP
371# variable is also adjusted.
372#
373AC_SUBST(SGI_ABI)
374if test ! -z "$SGI_ABI"
375then
376 CC="cc $SGI_ABI"
377 LDFLAGS="$SGI_ABI $LDFLAGS"
378 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
379fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000380AC_MSG_RESULT($MACHDEP)
381
Jack Jansen83f898c2002-12-30 22:23:40 +0000382# And add extra plat-mac for darwin
383AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000384AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000385AC_MSG_CHECKING(EXTRAPLATDIR)
386if test -z "$EXTRAPLATDIR"
387then
388 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000389 darwin)
390 EXTRAPLATDIR="\$(PLATMACDIRS)"
391 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
392 ;;
393 *)
394 EXTRAPLATDIR=""
395 EXTRAMACHDEPPATH=""
396 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000397 esac
398fi
399AC_MSG_RESULT($EXTRAPLATDIR)
400
Jack Jansen6b08a402004-06-03 12:41:45 +0000401# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
402# it may influence the way we can build extensions, so distutils
403# needs to check it
404AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000405AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000406CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000407EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000408
Mark Dickinson65134662008-04-25 16:11:04 +0000409AC_MSG_CHECKING(machine type as reported by uname -m)
410ac_sys_machine=`uname -m`
411AC_MSG_RESULT($ac_sys_machine)
412
Guido van Rossum627b2d71993-12-24 10:39:16 +0000413# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000414
415# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
416# for debug/optimization stuff. BASECFLAGS is for flags that are required
417# just to get things to compile and link. Users are free to override OPT
418# when running configure or make. The build should not break if they do.
419# BASECFLAGS should generally not be messed with, however.
420
421# XXX shouldn't some/most/all of this code be merged with the stuff later
422# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000423AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000424AC_ARG_WITH(gcc,
425 AC_HELP_STRING(--without-gcc,never use gcc),
426[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000427 case $withval in
Skip Montanaro516144f2009-01-04 10:36:58 +0000428 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000429 without_gcc=yes;;
430 yes) CC=gcc
431 without_gcc=no;;
432 *) CC=$withval
433 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000434 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000435 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000436 AIX*) CC=cc_r
437 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000438 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000439 case $BE_HOST_CPU in
440 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000441 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000442 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000443 BASECFLAGS="$BASECFLAGS -export pragma"
444 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000445 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000446 ;;
447 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000448 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000449 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000450 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000451 ;;
452 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000453 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000454 ;;
455 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000456 AR="\$(srcdir)/Modules/ar_beos"
457 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000458 ;;
Martin v. Löwis130fb172001-07-19 11:00:41 +0000459 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000460 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000461AC_MSG_RESULT($without_gcc)
462
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000463# If the user switches compilers, we can't believe the cache
464if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
465then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000466 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
467(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000468fi
469
Guido van Rossum627b2d71993-12-24 10:39:16 +0000470AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000471
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000472AC_SUBST(CXX)
473AC_SUBST(MAINCC)
474AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
475AC_ARG_WITH(cxx_main,
476 AC_HELP_STRING([--with-cxx-main=<compiler>],
477 [compile main() and link python executable with C++ compiler]),
478[
479
480 case $withval in
481 no) with_cxx_main=no
482 MAINCC='$(CC)';;
483 yes) with_cxx_main=yes
484 MAINCC='$(CXX)';;
485 *) with_cxx_main=yes
486 MAINCC=$withval
487 if test -z "$CXX"
488 then
489 CXX=$withval
490 fi;;
491 esac], [
492 with_cxx_main=no
493 MAINCC='$(CC)'
494])
495AC_MSG_RESULT($with_cxx_main)
496
497preset_cxx="$CXX"
498if test -z "$CXX"
499then
500 case "$CC" in
501 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
502 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
503 esac
504 if test "$CXX" = "notfound"
505 then
506 CXX=""
507 fi
508fi
509if test -z "$CXX"
510then
511 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
512 if test "$CXX" = "notfound"
513 then
514 CXX=""
515 fi
516fi
517if test "$preset_cxx" != "$CXX"
518then
519 AC_MSG_WARN([
520
521 By default, distutils will build C++ extension modules with "$CXX".
522 If this is not intended, then set CXX on the configure command line.
523 ])
524fi
525
526
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000527# checks for UNIX variants that set C preprocessor variables
528AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000529
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000530# Check for unsupported systems
531case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000532atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000533 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
534 echo See README for details.
535 exit 1;;
536esac
537
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000538AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000539AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000540AC_ARG_WITH(suffix,
541 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
542[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000543 case $withval in
544 no) EXEEXT=;;
545 yes) EXEEXT=.exe;;
546 *) EXEEXT=$withval;;
547 esac])
548AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000549
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000550# Test whether we're running on a non-case-sensitive system, in which
551# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000552AC_SUBST(BUILDEXEEXT)
553AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000554if test ! -d CaseSensitiveTestDir; then
555mkdir CaseSensitiveTestDir
556fi
557
558if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000559then
Jack Jansen1999ef42001-12-06 21:47:20 +0000560 AC_MSG_RESULT(yes)
561 BUILDEXEEXT=.exe
562else
563 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000564 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000565fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000566rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000567
Guido van Rossumdd997f71998-10-07 19:58:26 +0000568case $MACHDEP in
569bsdos*)
570 case $CC in
571 gcc) CC="$CC -D_HAVE_BSDI";;
572 esac;;
573esac
574
Guido van Rossum84561611997-08-21 00:08:11 +0000575case $ac_sys_system in
576hp*|HP*)
577 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000578 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000579 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000580SunOS*)
581 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000582 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000583 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000584esac
585
Martin v. Löwise8964d42001-03-06 12:09:07 +0000586
Neil Schemenauer61c51152001-01-26 16:18:16 +0000587AC_SUBST(LIBRARY)
588AC_MSG_CHECKING(LIBRARY)
589if test -z "$LIBRARY"
590then
591 LIBRARY='libpython$(VERSION).a'
592fi
593AC_MSG_RESULT($LIBRARY)
594
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000595# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000596# name of the library into which to insert object files). BLDLIBRARY is also
597# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
598# is blank as the main program is not linked directly against LDLIBRARY.
599# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
600# systems without shared libraries, LDLIBRARY is the same as LIBRARY
601# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
602# DLLLIBRARY is the shared (i.e., DLL) library.
603#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000604# RUNSHARED is used to run shared python without installed libraries
605#
606# INSTSONAME is the name of the shared library that will be use to install
607# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000608AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000609AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000610AC_SUBST(BLDLIBRARY)
611AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000612AC_SUBST(INSTSONAME)
613AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000614LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000615BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000616INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000617DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000618LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000619RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000620
Guido van Rossumfb842551997-08-06 23:42:07 +0000621# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000622# If CXX is set, and if it is needed to link a main function that was
623# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
624# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000625# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000626# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000627AC_SUBST(LINKCC)
628AC_MSG_CHECKING(LINKCC)
629if test -z "$LINKCC"
630then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000631 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000632 case $ac_sys_system in
633 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000634 exp_extra="\"\""
635 if test $ac_sys_release -ge 5 -o \
636 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
637 exp_extra="."
638 fi
639 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000640 QNX*)
641 # qcc must be used because the other compilers do not
642 # support -N.
643 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000644 esac
645fi
646AC_MSG_RESULT($LINKCC)
647
Tarek Ziadée2be83d2009-05-09 08:28:53 +0000648# GNULD is set to "yes" if the GNU linker is used. If this goes wrong
649# make sure we default having it set to "no": this is used by
650# distutils.unixccompiler to know if it should add --enable-new-dtags
651# to linker command lines, and failing to detect GNU ld simply results
652# in the same bahaviour as before.
653AC_SUBST(GNULD)
654AC_MSG_CHECKING(for GNU ld)
655ac_prog=ld
656if test "$GCC" = yes; then
657 ac_prog=`$CC -print-prog-name=ld`
658fi
659case `"$ac_prog" -V 2>&1 < /dev/null` in
660 *GNU*)
661 GNULD=yes;;
662 *)
663 GNULD=no;;
664esac
665AC_MSG_RESULT($GNULD)
666
Martin v. Löwis1142de32002-03-29 16:28:31 +0000667AC_MSG_CHECKING(for --enable-shared)
668AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000669 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000670
Martin v. Löwis1142de32002-03-29 16:28:31 +0000671if test -z "$enable_shared"
672then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000673 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000674 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000675 enable_shared="yes";;
676 *)
677 enable_shared="no";;
678 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000679fi
680AC_MSG_RESULT($enable_shared)
681
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000682AC_MSG_CHECKING(for --enable-profiling)
683AC_ARG_ENABLE(profiling,
684 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
685[ac_save_cc="$CC"
686 CC="$CC -pg"
687 AC_TRY_RUN([int main() { return 0; }],
688 ac_enable_profiling="yes",
689 ac_enable_profiling="no",
690 ac_enable_profiling="no")
691 CC="$ac_save_cc"])
692AC_MSG_RESULT($ac_enable_profiling)
693
694case "$ac_enable_profiling" in
695 "yes")
696 BASECFLAGS="-pg $BASECFLAGS"
697 LDFLAGS="-pg $LDFLAGS"
698 ;;
699esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000700
701AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000702
Guido van Rossumb8552162001-09-05 14:58:11 +0000703# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
704# library that we build, but we do not want to link against it (we
705# will find it with a -framework option). For this reason there is an
706# extra variable BLDLIBRARY against which Python and the extension
707# modules are linked, BLDLIBRARY. This is normally the same as
708# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000709if test "$enable_framework"
710then
711 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000712 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000713 BLDLIBRARY=''
714else
715 BLDLIBRARY='$(LDLIBRARY)'
716fi
717
Martin v. Löwis1142de32002-03-29 16:28:31 +0000718# Other platforms follow
719if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000720 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000721 case $ac_sys_system in
722 BeOS*)
723 LDLIBRARY='libpython$(VERSION).so'
724 ;;
725 CYGWIN*)
726 LDLIBRARY='libpython$(VERSION).dll.a'
727 DLLLIBRARY='libpython$(VERSION).dll'
728 ;;
729 SunOS*)
730 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000731 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000732 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000733 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000734 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000735 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000736 LDLIBRARY='libpython$(VERSION).so'
737 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000738 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000739 case $ac_sys_system in
740 FreeBSD*)
741 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
742 ;;
743 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000744 INSTSONAME="$LDLIBRARY".$SOVERSION
745 ;;
746 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000747 case `uname -m` in
748 ia64)
749 LDLIBRARY='libpython$(VERSION).so'
750 ;;
751 *)
752 LDLIBRARY='libpython$(VERSION).sl'
753 ;;
754 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000755 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000756 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000757 ;;
758 OSF*)
759 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000760 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000761 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000762 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000763 atheos*)
764 LDLIBRARY='libpython$(VERSION).so'
765 BLDLIBRARY='-L. -lpython$(VERSION)'
766 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
767 ;;
Ronald Oussoren79f90492009-01-02 10:44:46 +0000768 Darwin*)
769 LDLIBRARY='libpython$(VERSION).dylib'
770 BLDLIBRARY='-L. -lpython$(VERSION)'
771 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
772 ;;
773
Martin v. Löwis1142de32002-03-29 16:28:31 +0000774 esac
Jason Tishler30765592003-09-04 11:04:06 +0000775else # shared is disabled
776 case $ac_sys_system in
777 CYGWIN*)
778 BLDLIBRARY='$(LIBRARY)'
779 LDLIBRARY='libpython$(VERSION).dll.a'
780 ;;
781 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000782fi
783
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000784AC_MSG_RESULT($LDLIBRARY)
785
Guido van Rossum627b2d71993-12-24 10:39:16 +0000786AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000787AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000788AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000789
Tarek Ziadé99f660a2009-05-07 21:20:34 +0000790# tweak ARFLAGS only if the user didn't set it on the command line
791AC_SUBST(ARFLAGS)
792if test -z "$ARFLAGS"
793then
794 ARFLAGS="rc"
795fi
796
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000797AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000798AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000799if test $SVNVERSION = found
800then
801 SVNVERSION="svnversion \$(srcdir)"
802else
Benjamin Petersone5afa3b2009-05-23 19:24:37 +0000803 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000804fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000805
Neil Schemenauera42c8272001-03-31 00:01:55 +0000806case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000807bsdos*|hp*|HP*)
808 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000809 if test -z "$INSTALL"
810 then
811 INSTALL="${srcdir}/install-sh -c"
812 fi
813esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000814AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000815
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000816# Not every filesystem supports hard links
817AC_SUBST(LN)
818if test -z "$LN" ; then
819 case $ac_sys_system in
820 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000821 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000822 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000823 *) LN=ln;;
824 esac
825fi
826
Fred Drake9f715822001-07-11 06:27:00 +0000827# Check for --with-pydebug
828AC_MSG_CHECKING(for --with-pydebug)
829AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000830 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
831[
Fred Drake9f715822001-07-11 06:27:00 +0000832if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000833then
834 AC_DEFINE(Py_DEBUG, 1,
835 [Define if you want to build an interpreter with many run-time checks.])
836 AC_MSG_RESULT(yes);
837 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000838else AC_MSG_RESULT(no); Py_DEBUG='false'
839fi],
840[AC_MSG_RESULT(no)])
841
Skip Montanarodecc6a42003-01-01 20:07:49 +0000842# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
843# merged with this chunk of code?
844
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000845# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000846# ------------------------
847# (The following bit of code is complicated enough - please keep things
848# indented properly. Just pretend you're editing Python code. ;-)
849
850# There are two parallel sets of case statements below, one that checks to
851# see if OPT was set and one that does BASECFLAGS setting based upon
852# compiler and platform. BASECFLAGS tweaks need to be made even if the
853# user set OPT.
854
855# tweak OPT based on compiler and platform, only if the user didn't set
856# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000857AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000858if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000859then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000860 case $GCC in
861 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000862 if test "$CC" != 'g++' ; then
863 STRICT_PROTO="-Wstrict-prototypes"
864 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000865 # For gcc 4.x we need to use -fwrapv so lets check if its supported
866 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
867 WRAP="-fwrapv"
868 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000869 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000870 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000871 if test "$Py_DEBUG" = 'true' ; then
872 # Optimization messes up debuggers, so turn it off for
873 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000874 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000875 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000876 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000877 fi
878 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000879 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000880 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000881 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000882 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000883 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000884 SCO_SV*) OPT="$OPT -m486 -DSCO5"
885 ;;
886 esac
Fred Drake9f715822001-07-11 06:27:00 +0000887 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000888
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000889 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000890 OPT="-O"
891 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000892 esac
Guido van Rossum4e8af441994-08-19 15:33:54 +0000893fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000894
Skip Montanarodecc6a42003-01-01 20:07:49 +0000895AC_SUBST(BASECFLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000896
897# The -arch flags for universal builds on OSX
898UNIVERSAL_ARCH_FLAGS=
899AC_SUBST(UNIVERSAL_ARCH_FLAGS)
900
Skip Montanarodecc6a42003-01-01 20:07:49 +0000901# tweak BASECFLAGS based on compiler and platform
902case $GCC in
903yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000904 # Python violates C99 rules, by casting between incompatible
905 # pointer types. GCC may generate bad code as a result of that,
906 # so use -fno-strict-aliasing if supported.
907 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
908 ac_save_cc="$CC"
909 CC="$CC -fno-strict-aliasing"
Alexandre Vassalotti00900892009-07-17 05:26:39 +0000910 AC_CACHE_VAL(ac_cv_no_strict_aliasing_ok,
Gregory P. Smithec3b8bd2009-11-01 21:02:52 +0000911 AC_TRY_COMPILE([],[int main() { return 0; }],
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000912 ac_cv_no_strict_aliasing_ok=yes,
Alexandre Vassalotti00900892009-07-17 05:26:39 +0000913 ac_cv_no_strict_aliasing_ok=no))
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000914 CC="$ac_save_cc"
915 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
916 if test $ac_cv_no_strict_aliasing_ok = yes
917 then
918 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
919 fi
Mark Dickinson65134662008-04-25 16:11:04 +0000920
921 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
922 # support. Without this, treatment of subnormals doesn't follow
923 # the standard.
924 case $ac_sys_machine in
925 alpha*)
926 BASECFLAGS="$BASECFLAGS -mieee"
927 ;;
928 esac
929
Skip Montanarodecc6a42003-01-01 20:07:49 +0000930 case $ac_sys_system in
931 SCO_SV*)
932 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
933 ;;
934 # is there any other compiler on Darwin besides gcc?
935 Darwin*)
Jeffrey Yasskin1b4e45b2008-03-17 14:40:53 +0000936 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
937 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson4347c442008-07-17 15:59:24 +0000938
939
Ronald Oussoren988117f2006-04-29 11:31:35 +0000940 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000941 UNIVERSAL_ARCH_FLAGS=""
942 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
943 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000944 ARCH_RUN_32BIT=""
Ronald Oussoren92919a62009-12-24 13:30:58 +0000945 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000946
947 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
948 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren92919a62009-12-24 13:30:58 +0000949 LIPO_32BIT_FLAGS=""
Ronald Oussoren25967582009-09-06 10:00:26 +0000950 ARCH_RUN_32BIT="true"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000951
952 elif test "$UNIVERSAL_ARCHS" = "all" ; then
953 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussoren92919a62009-12-24 13:30:58 +0000954 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
Ronald Oussorena4cb4722008-08-12 12:29:13 +0000955 ARCH_RUN_32BIT="arch -i386 -ppc"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000956
Ronald Oussoren23d92532009-09-07 06:12:00 +0000957 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
958 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
Ronald Oussoren92919a62009-12-24 13:30:58 +0000959 LIPO_32BIT_FLAGS="-extract i386"
Ronald Oussoren23d92532009-09-07 06:12:00 +0000960 ARCH_RUN_32BIT="arch -i386"
961
962 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
963 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
Ronald Oussoren92919a62009-12-24 13:30:58 +0000964 LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
965 ARCH_RUN_32BIT="arch -i386 -ppc7400"
Ronald Oussoren23d92532009-09-07 06:12:00 +0000966
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000967 else
Ronald Oussorena9cfbde2009-09-20 20:05:44 +0000968 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000969
970 fi
971
972
973 BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
Ronald Oussoren5a849d42008-07-22 07:06:00 +0000974 tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Benjamin Peterson4347c442008-07-17 15:59:24 +0000975 if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
976 CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
977 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +0000978 fi
979
Benjamin Peterson4347c442008-07-17 15:59:24 +0000980 # Calculate the right deployment target for this build.
981 #
982 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
983 if test ${cur_target} '>' 10.2; then
984 cur_target=10.3
Ronald Oussoren25967582009-09-06 10:00:26 +0000985 if test ${enable_universalsdk}; then
986 if test "${UNIVERSAL_ARCHS}" = "all"; then
987 # Ensure that the default platform for a
988 # 4-way universal build is OSX 10.5,
989 # that's the first OS release where
990 # 4-way builds make sense.
991 cur_target='10.5'
Ronald Oussoren23d92532009-09-07 06:12:00 +0000992
993 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
994 cur_target='10.5'
995
996 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
997 cur_target='10.5'
998
999 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
1000 cur_target='10.5'
Ronald Oussoren25967582009-09-06 10:00:26 +00001001 fi
1002 else
1003 if test `arch` = "i386"; then
1004 # On Intel macs default to a deployment
1005 # target of 10.4, that's the first OSX
1006 # release with Intel support.
1007 cur_target="10.4"
1008 fi
1009 fi
Benjamin Peterson4347c442008-07-17 15:59:24 +00001010 fi
1011 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1012
1013 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1014 # environment with a value that is the same as what we'll use
1015 # in the Makefile to ensure that we'll get the same compiler
1016 # environment during configure and build time.
1017 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1018 export MACOSX_DEPLOYMENT_TARGET
1019 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1020
Skip Montanarodecc6a42003-01-01 20:07:49 +00001021 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +00001022 OSF*)
1023 BASECFLAGS="$BASECFLAGS -mieee"
1024 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001025 esac
1026 ;;
1027
1028*)
1029 case $ac_sys_system in
1030 OpenUNIX*|UnixWare*)
1031 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1032 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001033 OSF*)
1034 BASECFLAGS="$BASECFLAGS -ieee -std"
1035 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001036 SCO_SV*)
1037 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1038 ;;
1039 esac
1040 ;;
1041esac
1042
Fred Drakee1ceaa02001-12-04 20:55:47 +00001043if test "$Py_DEBUG" = 'true'; then
1044 :
1045else
1046 OPT="-DNDEBUG $OPT"
1047fi
1048
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001049if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001050then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001051 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001052fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001053
Neal Norwitz020c46a2006-01-07 21:39:28 +00001054# disable check for icc since it seems to pass, but generates a warning
1055if test "$CC" = icc
1056then
1057 ac_cv_opt_olimit_ok=no
1058fi
1059
Guido van Rossum91922671997-10-09 20:24:13 +00001060AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1061AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1062[ac_save_cc="$CC"
1063CC="$CC -OPT:Olimit=0"
Gregory P. Smithec3b8bd2009-11-01 21:02:52 +00001064AC_TRY_COMPILE([],[int main() { return 0; }],
Guido van Rossum91922671997-10-09 20:24:13 +00001065 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001066 ac_cv_opt_olimit_ok=no,
Gregory P. Smithec3b8bd2009-11-01 21:02:52 +00001067 )
Guido van Rossum91922671997-10-09 20:24:13 +00001068CC="$ac_save_cc"])
1069AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001070if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001071 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001072 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1073 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1074 # environment?
1075 Darwin*)
1076 ;;
1077 *)
1078 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1079 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001080 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001081else
1082 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1083 AC_CACHE_VAL(ac_cv_olimit_ok,
1084 [ac_save_cc="$CC"
1085 CC="$CC -Olimit 1500"
Gregory P. Smithec3b8bd2009-11-01 21:02:52 +00001086 AC_TRY_COMPILE([],[int main() { return 0; }],
Guido van Rossumf8678121998-07-07 21:05:09 +00001087 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001088 ac_cv_olimit_ok=no,
Gregory P. Smithec3b8bd2009-11-01 21:02:52 +00001089 )
Guido van Rossumf8678121998-07-07 21:05:09 +00001090 CC="$ac_save_cc"])
1091 AC_MSG_RESULT($ac_cv_olimit_ok)
1092 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001093 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001094 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001095fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001096
Martin v. Löwisaac13162006-10-19 10:58:46 +00001097# Check whether GCC supports PyArg_ParseTuple format
1098if test "$GCC" = "yes"
1099then
1100 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1101 save_CFLAGS=$CFLAGS
1102 CFLAGS="$CFLAGS -Werror"
1103 AC_TRY_COMPILE([
1104 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1105 ],,
1106 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1107 AC_MSG_RESULT(yes),
1108 AC_MSG_RESULT(no)
1109 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +00001110 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +00001111fi
1112
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001113# On some compilers, pthreads are available without further options
1114# (e.g. MacOS X). On some of these systems, the compiler will not
1115# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1116# So we have to see first whether pthreads are available without
1117# options before we can check whether -Kpthread improves anything.
1118AC_MSG_CHECKING(whether pthreads are available without options)
1119AC_CACHE_VAL(ac_cv_pthread_is_default,
1120[AC_TRY_RUN([
1121#include <pthread.h>
1122
1123void* routine(void* p){return NULL;}
1124
1125int main(){
1126 pthread_t p;
1127 if(pthread_create(&p,NULL,routine,NULL)!=0)
1128 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001129 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001130 return 0;
1131}
1132],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001133[
1134 ac_cv_pthread_is_default=yes
1135 ac_cv_kthread=no
1136 ac_cv_pthread=no
1137],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001138 ac_cv_pthread_is_default=no,
1139 ac_cv_pthread_is_default=no)
1140])
1141AC_MSG_RESULT($ac_cv_pthread_is_default)
1142
1143
1144if test $ac_cv_pthread_is_default = yes
1145then
1146 ac_cv_kpthread=no
1147else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001148# -Kpthread, if available, provides the right #defines
1149# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001150# Some compilers won't report that they do not support -Kpthread,
1151# so we need to run a program to see whether it really made the
1152# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001153AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1154AC_CACHE_VAL(ac_cv_kpthread,
1155[ac_save_cc="$CC"
1156CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001157AC_TRY_RUN([
1158#include <pthread.h>
1159
1160void* routine(void* p){return NULL;}
1161
1162int main(){
1163 pthread_t p;
1164 if(pthread_create(&p,NULL,routine,NULL)!=0)
1165 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001166 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001167 return 0;
1168}
1169],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001170 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001171 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001172 ac_cv_kpthread=no)
1173CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001174AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001175fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001176
Skip Montanarod8d39a02003-07-10 20:44:10 +00001177if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001178then
1179# -Kthread, if available, provides the right #defines
1180# and linker options to make pthread_create available
1181# Some compilers won't report that they do not support -Kthread,
1182# so we need to run a program to see whether it really made the
1183# function available.
1184AC_MSG_CHECKING(whether $CC accepts -Kthread)
1185AC_CACHE_VAL(ac_cv_kthread,
1186[ac_save_cc="$CC"
1187CC="$CC -Kthread"
1188AC_TRY_RUN([
1189#include <pthread.h>
1190
1191void* routine(void* p){return NULL;}
1192
1193int main(){
1194 pthread_t p;
1195 if(pthread_create(&p,NULL,routine,NULL)!=0)
1196 return 1;
1197 (void)pthread_detach(p);
1198 return 0;
1199}
1200],
1201 ac_cv_kthread=yes,
1202 ac_cv_kthread=no,
1203 ac_cv_kthread=no)
1204CC="$ac_save_cc"])
1205AC_MSG_RESULT($ac_cv_kthread)
1206fi
1207
Skip Montanarod8d39a02003-07-10 20:44:10 +00001208if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001209then
1210# -pthread, if available, provides the right #defines
1211# and linker options to make pthread_create available
1212# Some compilers won't report that they do not support -pthread,
1213# so we need to run a program to see whether it really made the
1214# function available.
1215AC_MSG_CHECKING(whether $CC accepts -pthread)
1216AC_CACHE_VAL(ac_cv_thread,
1217[ac_save_cc="$CC"
1218CC="$CC -pthread"
1219AC_TRY_RUN([
1220#include <pthread.h>
1221
1222void* routine(void* p){return NULL;}
1223
1224int main(){
1225 pthread_t p;
1226 if(pthread_create(&p,NULL,routine,NULL)!=0)
1227 return 1;
1228 (void)pthread_detach(p);
1229 return 0;
1230}
1231],
1232 ac_cv_pthread=yes,
1233 ac_cv_pthread=no,
1234 ac_cv_pthread=no)
1235CC="$ac_save_cc"])
1236AC_MSG_RESULT($ac_cv_pthread)
1237fi
1238
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001239# If we have set a CC compiler flag for thread support then
1240# check if it works for CXX, too.
1241ac_cv_cxx_thread=no
1242if test ! -z "$CXX"
1243then
1244AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1245ac_save_cxx="$CXX"
1246
1247if test "$ac_cv_kpthread" = "yes"
1248then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001249 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001250 ac_cv_cxx_thread=yes
1251elif test "$ac_cv_kthread" = "yes"
1252then
1253 CXX="$CXX -Kthread"
1254 ac_cv_cxx_thread=yes
1255elif test "$ac_cv_pthread" = "yes"
1256then
1257 CXX="$CXX -pthread"
1258 ac_cv_cxx_thread=yes
1259fi
1260
1261if test $ac_cv_cxx_thread = yes
1262then
1263 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1264 $CXX -c conftest.$ac_ext 2>&5
1265 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1266 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1267 then
1268 ac_cv_cxx_thread=yes
1269 else
1270 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001271 fi
1272 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001273fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001274AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001275fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001276CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001277
Fred Drakece81d592000-07-09 14:39:29 +00001278dnl # check for ANSI or K&R ("traditional") preprocessor
1279dnl AC_MSG_CHECKING(for C preprocessor type)
1280dnl AC_TRY_COMPILE([
1281dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1282dnl int foo;
1283dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1284dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1285dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001286
Guido van Rossum627b2d71993-12-24 10:39:16 +00001287# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001288AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001289AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1290fcntl.h grp.h \
Neal Norwitz9fdfaaf2008-03-28 05:34:59 +00001291ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001292shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001293unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001294sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1295sys/lock.h sys/mkdev.h sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001296sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001297sys/termio.h sys/time.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001298sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Martin v. Löwis0347a9a2006-10-27 07:06:52 +00001299sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimesfb2d25a2008-01-07 16:12:44 +00001300bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001301AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001302AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001303
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001304# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001305AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001306#ifdef HAVE_CURSES_H
1307#include <curses.h>
1308#endif
1309])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001310
Martin v. Löwis11017b12006-01-14 18:12:57 +00001311# On Linux, netlink.h requires asm/types.h
1312AC_CHECK_HEADERS(linux/netlink.h,,,[
1313#ifdef HAVE_ASM_TYPES_H
1314#include <asm/types.h>
1315#endif
1316#ifdef HAVE_SYS_SOCKET_H
1317#include <sys/socket.h>
1318#endif
1319])
1320
Guido van Rossum627b2d71993-12-24 10:39:16 +00001321# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001322was_it_defined=no
1323AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001324AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1325 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1326])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001327AC_MSG_RESULT($was_it_defined)
1328
Neal Norwitz11690112002-07-30 01:08:28 +00001329# Check whether using makedev requires defining _OSF_SOURCE
1330AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001331AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001332 [ makedev(0, 0) ],
1333 ac_cv_has_makedev=yes,
1334 ac_cv_has_makedev=no)
1335if test "$ac_cv_has_makedev" = "no"; then
1336 # we didn't link, try if _OSF_SOURCE will allow us to link
1337 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001338#define _OSF_SOURCE 1
1339#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001340 ],
1341 [ makedev(0, 0) ],
1342 ac_cv_has_makedev=yes,
1343 ac_cv_has_makedev=no)
1344 if test "$ac_cv_has_makedev" = "yes"; then
1345 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1346 fi
1347fi
1348AC_MSG_RESULT($ac_cv_has_makedev)
1349if test "$ac_cv_has_makedev" = "yes"; then
1350 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1351fi
1352
Martin v. Löwis399a6892002-10-04 10:22:02 +00001353# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1354# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1355# defined, but the compiler does not support pragma redefine_extname,
1356# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1357# structures (such as rlimit64) without declaring them. As a
1358# work-around, disable LFS on such configurations
1359
1360use_lfs=yes
1361AC_MSG_CHECKING(Solaris LFS bug)
1362AC_TRY_COMPILE([
1363#define _LARGEFILE_SOURCE 1
1364#define _FILE_OFFSET_BITS 64
1365#include <sys/resource.h>
1366],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1367AC_MSG_RESULT($sol_lfs_bug)
1368if test "$sol_lfs_bug" = "yes"; then
1369 use_lfs=no
1370fi
1371
1372if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001373# Two defines needed to enable largefile support on various platforms
1374# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001375AC_DEFINE(_LARGEFILE_SOURCE, 1,
1376[This must be defined on some systems to enable large file support.])
1377AC_DEFINE(_FILE_OFFSET_BITS, 64,
1378[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001379fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001380
Guido van Rossum300fda71996-08-19 21:58:16 +00001381# Add some code to confdefs.h so that the test for off_t works on SCO
1382cat >> confdefs.h <<\EOF
1383#if defined(SCO_DS)
1384#undef _OFF_T
1385#endif
1386EOF
1387
Guido van Rossumef2255b2000-03-10 22:30:29 +00001388# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001389AC_TYPE_MODE_T
1390AC_TYPE_OFF_T
1391AC_TYPE_PID_T
1392AC_TYPE_SIGNAL
1393AC_TYPE_SIZE_T
1394AC_TYPE_UID_T
Mark Dickinsonefc82f72009-03-20 15:51:55 +00001395AC_TYPE_UINT32_T
1396AC_TYPE_UINT64_T
1397AC_TYPE_INT32_T
1398AC_TYPE_INT64_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001399AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001400 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001401
Guido van Rossumef2255b2000-03-10 22:30:29 +00001402# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001403# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001404AC_CHECK_SIZEOF(int, 4)
1405AC_CHECK_SIZEOF(long, 4)
1406AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001407AC_CHECK_SIZEOF(short, 2)
1408AC_CHECK_SIZEOF(float, 4)
1409AC_CHECK_SIZEOF(double, 8)
1410AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001411AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001412AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001413
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001414AC_MSG_CHECKING(for long long support)
1415have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001416AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1417 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1418 have_long_long=yes
1419])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001420AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001421if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001422AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001423fi
1424
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001425AC_MSG_CHECKING(for long double support)
1426have_long_double=no
1427AC_TRY_COMPILE([], [long double x; x = (long double)0.;], [
1428 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1429 have_long_double=yes
1430])
1431AC_MSG_RESULT($have_long_double)
Mark Dickinsondc1688a2008-06-27 22:20:14 +00001432if test "$have_long_double" = yes ; then
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001433AC_CHECK_SIZEOF(long double, 12)
1434fi
1435
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001436AC_MSG_CHECKING(for _Bool support)
1437have_c99_bool=no
1438AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1439 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1440 have_c99_bool=yes
1441])
1442AC_MSG_RESULT($have_c99_bool)
1443if test "$have_c99_bool" = yes ; then
1444AC_CHECK_SIZEOF(_Bool, 1)
1445fi
1446
Martin v. Löwisebe26702006-10-02 14:55:51 +00001447AC_CHECK_TYPES(uintptr_t,
1448 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001449 [], [#ifdef HAVE_STDINT_H
1450 #include <stdint.h>
1451 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001452
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001453AC_CHECK_SIZEOF(off_t, [], [
1454#ifdef HAVE_SYS_TYPES_H
1455#include <sys/types.h>
1456#endif
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001457])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001458
1459AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001460if test "$have_long_long" = yes -a \
1461 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1462 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001463 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1464 [Defined to enable large file support when an off_t is bigger than a long
1465 and long long is available and at least as big as an off_t. You may need
1466 to add some flags for configuration and compilation to enable this mode.
1467 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001468 AC_MSG_RESULT(yes)
1469else
1470 AC_MSG_RESULT(no)
1471fi
1472
Alexandre Vassalotti856782e2009-07-17 04:59:05 +00001473AC_CHECK_SIZEOF(time_t, [], [
1474#ifdef HAVE_SYS_TYPES_H
1475#include <sys/types.h>
1476#endif
1477#ifdef HAVE_TIME_H
1478#include <time.h>
1479#endif
Fred Drakea3f6e912000-06-29 20:44:47 +00001480])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001481
Trent Mick635f6fb2000-08-23 21:33:05 +00001482# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001483ac_save_cc="$CC"
1484if test "$ac_cv_kpthread" = "yes"
1485then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001486elif test "$ac_cv_kthread" = "yes"
1487then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001488elif test "$ac_cv_pthread" = "yes"
1489then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001490fi
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 Vassalotti856782e2009-07-17 04:59:05 +00001496 AC_CHECK_SIZEOF(pthread_t, [], [
1497#ifdef HAVE_PTHREAD_H
1498#include <pthread.h>
1499#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
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001504AC_MSG_CHECKING(for --enable-toolbox-glue)
1505AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001506 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001507
1508if test -z "$enable_toolbox_glue"
1509then
1510 case $ac_sys_system/$ac_sys_release in
1511 Darwin/*)
1512 enable_toolbox_glue="yes";;
1513 *)
1514 enable_toolbox_glue="no";;
1515 esac
1516fi
1517case "$enable_toolbox_glue" in
1518yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001519 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001520 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001521 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1522 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001523 ;;
1524*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001525 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001526 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001527 ;;
1528esac
1529AC_MSG_RESULT($enable_toolbox_glue)
1530
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001531
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001532AC_SUBST(OTHER_LIBTOOL_OPT)
1533case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001534 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001535 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1536 ;;
1537 Darwin/*)
1538 OTHER_LIBTOOL_OPT=""
1539 ;;
1540esac
1541
Ronald Oussoren25967582009-09-06 10:00:26 +00001542
1543ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001544AC_SUBST(LIBTOOL_CRUFT)
1545case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001546 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001547 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1548 if test "${enable_universalsdk}"; then
1549 :
1550 else
Ronald Oussoren25967582009-09-06 10:00:26 +00001551 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001552 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001553 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001554 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001555 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001556 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1557 if test ${gcc_version} '<' 4.0
1558 then
1559 LIBTOOL_CRUFT="-lcc_dynamic"
1560 else
1561 LIBTOOL_CRUFT=""
1562 fi
Ronald Oussoren23d92532009-09-07 06:12:00 +00001563 AC_TRY_RUN([
Ronald Oussoren25967582009-09-06 10:00:26 +00001564 #include <unistd.h>
1565 int main(int argc, char*argv[])
1566 {
1567 if (sizeof(long) == 4) {
1568 return 0;
1569 } else {
1570 return 1;
1571 }
Ronald Oussoren84ddd722009-09-08 07:17:10 +00001572 }
Ronald Oussoren23d92532009-09-07 06:12:00 +00001573 ], ac_osx_32bit=yes,
Ronald Oussoren25967582009-09-06 10:00:26 +00001574 ac_osx_32bit=no,
Ronald Oussoren23d92532009-09-07 06:12:00 +00001575 ac_osx_32bit=yes)
Ronald Oussoren25967582009-09-06 10:00:26 +00001576
1577 if test "${ac_osx_32bit}" = "yes"; then
1578 case `arch` in
1579 i386)
1580 MACOSX_DEFAULT_ARCH="i386"
1581 ;;
1582 ppc)
1583 MACOSX_DEFAULT_ARCH="ppc"
1584 ;;
1585 *)
1586 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1587 ;;
1588 esac
1589 else
1590 case `arch` in
1591 i386)
1592 MACOSX_DEFAULT_ARCH="x86_64"
1593 ;;
1594 ppc)
1595 MACOSX_DEFAULT_ARCH="ppc64"
1596 ;;
1597 *)
1598 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1599 ;;
1600 esac
1601
1602 #ARCH_RUN_32BIT="true"
1603 fi
1604
1605 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001606 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001607 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001608esac
1609
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001610AC_MSG_CHECKING(for --enable-framework)
1611if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001612then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001613 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001614 # -F. is needed to allow linking to the framework while
1615 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001616 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1617 [Define if you want to produce an OpenStep/Rhapsody framework
1618 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001619 AC_MSG_RESULT(yes)
Ronald Oussoren450d5612009-06-08 21:12:41 +00001620 if test $enable_shared = "yes"
1621 then
Ronald Oussoren9ebd2422009-09-29 13:00:44 +00001622 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead. See Mac/README.])
Ronald Oussoren450d5612009-06-08 21:12:41 +00001623 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001624else
1625 AC_MSG_RESULT(no)
1626fi
1627
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001628AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001629case $ac_sys_system/$ac_sys_release in
1630 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001631 AC_DEFINE(WITH_DYLD, 1,
1632 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1633 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1634 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001635 AC_MSG_RESULT(always on for Darwin)
1636 ;;
1637 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001638 AC_MSG_RESULT(no)
1639 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001640esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001641
Guido van Rossumac405f61994-09-12 10:56:06 +00001642# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001643AC_SUBST(SO)
1644AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001645AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001646AC_SUBST(CCSHARED)
1647AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001648# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001649# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001650AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001651if test -z "$SO"
1652then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001653 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001654 hp*|HP*)
1655 case `uname -m` in
1656 ia64) SO=.so;;
1657 *) SO=.sl;;
1658 esac
1659 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001660 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001661 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001662 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001663else
1664 # this might also be a termcap variable, see #610332
1665 echo
1666 echo '====================================================================='
1667 echo '+ +'
1668 echo '+ WARNING: You have set SO in your environment. +'
1669 echo '+ Do you really mean to change the extension for shared libraries? +'
1670 echo '+ Continuing in 10 seconds to let you to ponder. +'
1671 echo '+ +'
1672 echo '====================================================================='
1673 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001674fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001675AC_MSG_RESULT($SO)
Ronald Oussoren79f90492009-01-02 10:44:46 +00001676
Neal Norwitz58e28882006-05-19 07:00:58 +00001677AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001678# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001679# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001680# (Shared libraries in this instance are shared modules to be loaded into
1681# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001682AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001683if test -z "$LDSHARED"
1684then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001685 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001686 AIX*)
1687 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001688 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001689 ;;
1690 BeOS*)
1691 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001692 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001693 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001694 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001695 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001696 SunOS/5*)
1697 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001698 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001699 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001700 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001701 hp*|HP*)
1702 if test "$GCC" = "yes"
1703 then LDSHARED='$(CC) -shared'
1704 else LDSHARED='ld -b';
1705 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001706 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001707 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001708 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 Jansena3891ea2001-09-07 14:25:12 +00001713 else
1714 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001715 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001716 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001717 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001718 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1719 if test "$enable_framework" ; then
1720 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001721 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1722 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001723 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001724 # No framework, use the Python app as bundle-loader
1725 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001726 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001727 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001728 Darwin/*)
1729 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1730 # This allows an extension to be used in any Python
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001731
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001732 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001733 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001734 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001735 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001736 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001737 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1738 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001739 else
1740 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1741 if test "$enable_framework" ; then
1742 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001743 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1744 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001745 else
1746 # No framework, use the Python app as bundle-loader
1747 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1748 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1749 fi
1750 fi
1751 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001752 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001753 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001754 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001755 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001756 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001757 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001758 else
1759 LDSHARED="ld -Bshareable ${LDFLAGS}"
1760 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001761 OpenBSD*)
1762 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1763 then
1764 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1765 else
1766 case `uname -r` in
1767 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1768 LDSHARED="ld -Bshareable ${LDFLAGS}"
1769 ;;
1770 *)
1771 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1772 ;;
1773 esac
1774 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001775 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001776 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001777 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001778 then LDSHARED='$(CC) -shared'
1779 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001780 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001781 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001782 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001783 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001784 *) LDSHARED="ld";;
1785 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001786fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001787AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001788BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001789# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001790# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001791AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001792if test -z "$CCSHARED"
1793then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001794 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001795 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001796 then CCSHARED="-fPIC";
1797 elif test `uname -p` = sparc;
1798 then CCSHARED="-xcode=pic32";
1799 else CCSHARED="-Kpic";
1800 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001801 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001802 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001803 else CCSHARED="+z";
1804 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001805 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001806 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001807 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001808 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001809 if test "$GCC" = "yes"
1810 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001811 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001812 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001813 SCO_SV*)
1814 if test "$GCC" = "yes"
1815 then CCSHARED="-fPIC"
1816 else CCSHARED="-Kpic -belf"
1817 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001818 IRIX*/6*) case $CC in
1819 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001820 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001821 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001822 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001823 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001824fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001825AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001826# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001827# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001828AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001829if test -z "$LINKFORSHARED"
1830then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001831 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001832 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001833 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001834 LINKFORSHARED="-Wl,-E -Wl,+s";;
1835# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001836 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001837 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001838 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001839 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001840 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1841 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001842 # not used by the core itself but which needs to be in the core so
1843 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001844 # -prebind is no longer used, because it actually seems to give a
1845 # slowdown in stead of a speedup, maybe due to the large number of
1846 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001847
1848 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001849 if test "$enable_framework"
1850 then
Jack Jansenda49e192005-01-07 13:08:22 +00001851 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001852 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001853 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001854 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001855 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001856 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001857 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001858 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1859 then
1860 LINKFORSHARED="-Wl,--export-dynamic"
1861 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001862 SunOS/5*) case $CC in
1863 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001864 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001865 then
1866 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001867 fi;;
1868 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001869 CYGWIN*)
1870 if test $enable_shared = "no"
1871 then
1872 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1873 fi;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001874 QNX*)
1875 # -Wl,-E causes the symbols to be added to the dynamic
1876 # symbol table so that they can be found when a module
1877 # is loaded. -N 2048K causes the stack size to be set
1878 # to 2048 kilobytes so that the stack doesn't overflow
1879 # when running test_compile.py.
1880 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001881 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001882fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001883AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001884
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001885
Neil Schemenauer61c51152001-01-26 16:18:16 +00001886AC_SUBST(CFLAGSFORSHARED)
1887AC_MSG_CHECKING(CFLAGSFORSHARED)
1888if test ! "$LIBRARY" = "$LDLIBRARY"
1889then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001890 case $ac_sys_system in
1891 CYGWIN*)
1892 # Cygwin needs CCSHARED when building extension DLLs
1893 # but not when building the interpreter DLL.
1894 CFLAGSFORSHARED='';;
1895 *)
1896 CFLAGSFORSHARED='$(CCSHARED)'
1897 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001898fi
1899AC_MSG_RESULT($CFLAGSFORSHARED)
1900
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001901# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1902# library (with --enable-shared).
1903# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001904# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1905# if it is not required, since it creates a dependency of the shared library
1906# to LIBS. This, in turn, means that applications linking the shared libpython
1907# don't need to link LIBS explicitly. The default should be only changed
1908# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001909AC_SUBST(SHLIBS)
1910AC_MSG_CHECKING(SHLIBS)
1911case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001912 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001913 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001914esac
1915AC_MSG_RESULT($SHLIBS)
1916
1917
Guido van Rossum627b2d71993-12-24 10:39:16 +00001918# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001919AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1920AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001921
Skip Montanaro4d756af2008-12-01 01:55:22 +00001922# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001923if test "$with_threads" = "yes" -o -z "$with_threads"; then
1924 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1925 # posix4 on Solaris 2.6
1926 # pthread (first!) on Linux
1927fi
1928
Martin v. Löwis19d17342003-06-14 21:03:05 +00001929# check if we need libintl for locale functions
1930AC_CHECK_LIB(intl, textdomain,
1931 AC_DEFINE(WITH_LIBINTL, 1,
1932 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001933
1934# checks for system dependent C++ extensions support
1935case "$ac_sys_system" in
1936 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1937 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1938 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001939 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1940 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1941 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001942 AC_MSG_RESULT(yes)],
1943 [AC_MSG_RESULT(no)]);;
1944 *) ;;
1945esac
1946
Guido van Rossum70c7f481998-03-26 18:44:10 +00001947# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001948# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001949AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001950AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001951
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001952case "$ac_sys_system" in
1953BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001954AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1955;;
1956esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001957
Guido van Rossumc5a39031996-07-31 17:35:03 +00001958AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001959AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001960 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1961[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001962AC_MSG_RESULT($withval)
1963LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001964],
1965[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001966
Benjamin Peterson2c196742009-12-31 03:17:18 +00001967# Check for use of the system expat library
1968AC_MSG_CHECKING(for --with-system-expat)
1969AC_ARG_WITH(system_expat,
1970 AC_HELP_STRING(--with-system-expat, build pyexpat module using an installed expat library))
1971
1972AC_MSG_RESULT($with_system_expat)
1973
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001974# Check for use of the system libffi library
1975AC_MSG_CHECKING(for --with-system-ffi)
1976AC_ARG_WITH(system_ffi,
1977 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1978
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001979AC_MSG_RESULT($with_system_ffi)
1980
Matthias Klose10cbe482009-04-29 17:18:19 +00001981# Check for --with-dbmliborder
1982AC_MSG_CHECKING(for --with-dbmliborder)
1983AC_ARG_WITH(dbmliborder,
Matthias Klose51c614e2009-04-29 19:52:49 +00001984 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'.]),
Matthias Klose10cbe482009-04-29 17:18:19 +00001985[
1986if test x$with_dbmliborder = xyes
1987then
1988AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1989else
1990 for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do
1991 if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb
1992 then
1993 AC_MSG_ERROR([proper usage is --with-dbmliborder=db1:db2:...])
1994 fi
1995 done
Matthias Klose61dbdb92009-04-29 20:09:50 +00001996fi])
1997AC_MSG_RESULT($with_dbmliborder)
Matthias Klose10cbe482009-04-29 17:18:19 +00001998
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001999# Determine if signalmodule should be used.
2000AC_SUBST(USE_SIGNAL_MODULE)
2001AC_SUBST(SIGNAL_OBJS)
2002AC_MSG_CHECKING(for --with-signal-module)
2003AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002004 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002005
2006if test -z "$with_signal_module"
2007then with_signal_module="yes"
2008fi
2009AC_MSG_RESULT($with_signal_module)
2010
2011if test "${with_signal_module}" = "yes"; then
2012 USE_SIGNAL_MODULE=""
2013 SIGNAL_OBJS=""
2014else
2015 USE_SIGNAL_MODULE="#"
2016 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2017fi
2018
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002019# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002020AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002021USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002022
Guido van Rossum54d93d41997-01-22 20:51:58 +00002023AC_MSG_CHECKING(for --with-dec-threads)
2024AC_SUBST(LDLAST)
2025AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002026 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
2027[
Barry Warsawc0d24d82000-06-29 16:12:00 +00002028AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002029LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00002030if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00002031 with_thread="$withval";
2032fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002033[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00002034
Martin v. Löwis11437992002-04-12 09:54:03 +00002035# Templates for things AC_DEFINEd more than once.
2036# For a single AC_DEFINE, no template is needed.
2037AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
2038AH_TEMPLATE(_REENTRANT,
2039 [Define to force use of thread-safe errno, h_errno, and other functions])
2040AH_TEMPLATE(WITH_THREAD,
2041 [Define if you want to compile in rudimentary thread support])
2042
Guido van Rossum54d93d41997-01-22 20:51:58 +00002043AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002044dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00002045AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002046 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002047
Barry Warsawc0d24d82000-06-29 16:12:00 +00002048# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002049dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002050AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002051 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
2052 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002053
2054if test -z "$with_threads"
2055then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002056fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00002057AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002058
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002059AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002060if test "$with_threads" = "no"
2061then
2062 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002063elif test "$ac_cv_pthread_is_default" = yes
2064then
2065 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002066 # Defining _REENTRANT on system with POSIX threads should not hurt.
2067 AC_DEFINE(_REENTRANT)
2068 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002069 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002070elif test "$ac_cv_kpthread" = "yes"
2071then
2072 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002073 if test "$ac_cv_cxx_thread" = "yes"; then
2074 CXX="$CXX -Kpthread"
2075 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002076 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002077 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002078 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002079elif test "$ac_cv_kthread" = "yes"
2080then
2081 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002082 if test "$ac_cv_cxx_thread" = "yes"; then
2083 CXX="$CXX -Kthread"
2084 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002085 AC_DEFINE(WITH_THREAD)
2086 posix_threads=yes
2087 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002088elif test "$ac_cv_pthread" = "yes"
2089then
2090 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002091 if test "$ac_cv_cxx_thread" = "yes"; then
2092 CXX="$CXX -pthread"
2093 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002094 AC_DEFINE(WITH_THREAD)
2095 posix_threads=yes
2096 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00002097else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002098 if test ! -z "$with_threads" -a -d "$with_threads"
2099 then LDFLAGS="$LDFLAGS -L$with_threads"
2100 fi
2101 if test ! -z "$withval" -a -d "$withval"
2102 then LDFLAGS="$LDFLAGS -L$withval"
2103 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002104
2105 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002106 # define _POSIX_THREADS in unistd.h. Some apparently don't
2107 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002108 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2109 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002110 [
2111#include <unistd.h>
2112#ifdef _POSIX_THREADS
2113yes
2114#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002115 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2116 AC_MSG_RESULT($unistd_defines_pthreads)
2117
Martin v. Löwis130fb172001-07-19 11:00:41 +00002118 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002119 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2120 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002121 AC_DEFINE(HURD_C_THREADS, 1,
2122 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002123 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002124 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002125 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2126 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002127 AC_DEFINE(MACH_C_THREADS, 1,
2128 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002129 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002130 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002131 AC_ARG_WITH([pth],
2132 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2133 [AC_MSG_RESULT($withval)
2134 AC_DEFINE([WITH_THREAD])
2135 AC_DEFINE([HAVE_PTH], 1,
2136 [Define if you have GNU PTH threads.])
2137 LIBS="-lpth $LIBS"
2138 THREADOBJ="Python/thread.o"],
2139 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002140
2141 # Just looking for pthread_create in libpthread is not enough:
2142 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2143 # So we really have to include pthread.h, and then link.
2144 _libs=$LIBS
2145 LIBS="$LIBS -lpthread"
2146 AC_MSG_CHECKING([for pthread_create in -lpthread])
2147 AC_TRY_LINK([#include <pthread.h>
2148
2149void * start_routine (void *arg) { exit (0); }], [
2150pthread_create (NULL, NULL, start_routine, NULL)], [
2151 AC_MSG_RESULT(yes)
2152 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002153 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002154 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002155 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002156 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002157 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002158 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002159 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2160 AC_DEFINE(ATHEOS_THREADS, 1,
2161 [Define this if you have AtheOS threads.])
2162 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002163 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002164 AC_DEFINE(BEOS_THREADS, 1,
2165 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002166 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002167 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002168 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002169 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002170 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002171 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002172 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002173 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002174 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002175 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002176 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002177 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002178 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002179 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002180 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002181 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002182 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002183 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00002184 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002185
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002186 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2187 LIBS="$LIBS -lmpc"
2188 THREADOBJ="Python/thread.o"
2189 USE_THREAD_MODULE=""])
2190
2191 if test "$posix_threads" != "yes"; then
2192 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2193 LIBS="$LIBS -lthread"
2194 THREADOBJ="Python/thread.o"
2195 USE_THREAD_MODULE=""])
2196 fi
2197
2198 if test "$USE_THREAD_MODULE" != "#"
2199 then
2200 # If the above checks didn't disable threads, (at least) OSF1
2201 # needs this '-threads' argument during linking.
2202 case $ac_sys_system in
2203 OSF1) LDLAST=-threads;;
2204 esac
2205 fi
2206fi
2207
2208if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002209 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002210 AC_DEFINE(_POSIX_THREADS, 1,
2211 [Define if you have POSIX threads,
2212 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002213 fi
2214
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002215 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2216 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002217 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2218 Defined for Solaris 2.6 bug in pthread header.)
2219 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002220 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002221 Define if the Posix semaphores do not work on your system)
2222 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002223 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2224 Define if the Posix semaphores do not work on your system)
2225 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002226 esac
2227
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002228 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2229 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2230 [AC_TRY_RUN([#include <pthread.h>
2231 void *foo(void *parm) {
2232 return NULL;
2233 }
2234 main() {
2235 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002236 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002237 if (pthread_attr_init(&attr)) exit(-1);
2238 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002239 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002240 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002241 }],
2242 ac_cv_pthread_system_supported=yes,
2243 ac_cv_pthread_system_supported=no,
2244 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002245 ])
2246 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2247 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002248 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002249 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002250 AC_CHECK_FUNCS(pthread_sigmask,
2251 [case $ac_sys_system in
2252 CYGWIN*)
2253 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2254 [Define if pthread_sigmask() does not work on your system.])
2255 ;;
2256 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002257fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002258
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002259
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002260# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002261AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002262AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002263AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002264[ --enable-ipv6 Enable ipv6 (with ipv4) support
2265 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002266[ case "$enableval" in
2267 no)
2268 AC_MSG_RESULT(no)
2269 ipv6=no
2270 ;;
2271 *) AC_MSG_RESULT(yes)
2272 AC_DEFINE(ENABLE_IPV6)
2273 ipv6=yes
2274 ;;
2275 esac ],
2276
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002277[
2278dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002279 AC_TRY_RUN([ /* AF_INET6 available check */
2280#include <sys/types.h>
2281#include <sys/socket.h>
2282main()
2283{
2284 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2285 exit(1);
2286 else
2287 exit(0);
2288}
2289],
2290 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002291 ipv6=yes,
2292 AC_MSG_RESULT(no)
2293 ipv6=no,
2294 AC_MSG_RESULT(no)
2295 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002296)
2297
2298if test "$ipv6" = "yes"; then
2299 AC_MSG_CHECKING(if RFC2553 API is available)
2300 AC_TRY_COMPILE([#include <sys/types.h>
2301#include <netinet/in.h>],
2302 [struct sockaddr_in6 x;
2303x.sin6_scope_id;],
2304 AC_MSG_RESULT(yes)
2305 ipv6=yes,
2306 AC_MSG_RESULT(no, IPv6 disabled)
2307 ipv6=no)
2308fi
2309
2310if test "$ipv6" = "yes"; then
2311 AC_DEFINE(ENABLE_IPV6)
2312fi
2313])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002314
2315ipv6type=unknown
2316ipv6lib=none
2317ipv6trylibc=no
2318
2319if test "$ipv6" = "yes"; then
2320 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002321 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2322 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002323 case $i in
2324 inria)
2325 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002326 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002327#include <netinet/in.h>
2328#ifdef IPV6_INRIA_VERSION
2329yes
2330#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002331 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002332 ;;
2333 kame)
2334 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002335 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002336#include <netinet/in.h>
2337#ifdef __KAME__
2338yes
2339#endif],
2340 [ipv6type=$i;
2341 ipv6lib=inet6
2342 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002343 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002344 ;;
2345 linux-glibc)
2346 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002347 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002348#include <features.h>
2349#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2350yes
2351#endif],
2352 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002353 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002354 ;;
2355 linux-inet6)
2356 dnl http://www.v6.linux.or.jp/
2357 if test -d /usr/inet6; then
2358 ipv6type=$i
2359 ipv6lib=inet6
2360 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002361 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002362 fi
2363 ;;
2364 solaris)
2365 if test -f /etc/netconfig; then
2366 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2367 ipv6type=$i
2368 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002369 fi
2370 fi
2371 ;;
2372 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002373 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002374#include <sys/param.h>
2375#ifdef _TOSHIBA_INET6
2376yes
2377#endif],
2378 [ipv6type=$i;
2379 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002380 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002381 ;;
2382 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002383 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002384#include </usr/local/v6/include/sys/v6config.h>
2385#ifdef __V6D__
2386yes
2387#endif],
2388 [ipv6type=$i;
2389 ipv6lib=v6;
2390 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002391 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002392 ;;
2393 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002394 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002395#include <sys/param.h>
2396#ifdef _ZETA_MINAMI_INET6
2397yes
2398#endif],
2399 [ipv6type=$i;
2400 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002401 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002402 ;;
2403 esac
2404 if test "$ipv6type" != "unknown"; then
2405 break
2406 fi
2407 done
2408 AC_MSG_RESULT($ipv6type)
2409fi
2410
2411if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2412 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2413 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2414 echo "using lib$ipv6lib"
2415 else
2416 if test $ipv6trylibc = "yes"; then
2417 echo "using libc"
2418 else
2419 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2420 echo "You need to fetch lib$ipv6lib.a from appropriate"
2421 echo 'ipv6 kit and compile beforehand.'
2422 exit 1
2423 fi
2424 fi
2425fi
2426
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002427AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2428AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2429 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2430 AC_MSG_RESULT(yes),
2431 AC_MSG_RESULT(no)
2432)
2433
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002434# Check for --with-doc-strings
2435AC_MSG_CHECKING(for --with-doc-strings)
2436AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002437 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002438
2439if test -z "$with_doc_strings"
2440then with_doc_strings="yes"
2441fi
2442if test "$with_doc_strings" != "no"
2443then
2444 AC_DEFINE(WITH_DOC_STRINGS, 1,
2445 [Define if you want documentation strings in extension modules])
2446fi
2447AC_MSG_RESULT($with_doc_strings)
2448
Neil Schemenauera35c6882001-02-27 04:45:05 +00002449# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002450AC_MSG_CHECKING(for --with-tsc)
2451AC_ARG_WITH(tsc,
2452[ --with(out)-tsc enable/disable timestamp counter profile], [
2453if test "$withval" != no
2454then
2455 AC_DEFINE(WITH_TSC, 1,
2456 [Define to profile with the Pentium timestamp counter])
2457 AC_MSG_RESULT(yes)
2458else AC_MSG_RESULT(no)
2459fi],
2460[AC_MSG_RESULT(no)])
2461
2462# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002463AC_MSG_CHECKING(for --with-pymalloc)
2464AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002465 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002466
2467if test -z "$with_pymalloc"
2468then with_pymalloc="yes"
2469fi
2470if test "$with_pymalloc" != "no"
2471then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002472 AC_DEFINE(WITH_PYMALLOC, 1,
2473 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002474fi
2475AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002476
Benjamin Peterson91c12eb2009-12-03 02:52:39 +00002477# Check for Valgrind support
2478AC_MSG_CHECKING([for --with-valgrind])
2479AC_ARG_WITH([valgrind],
2480 AC_HELP_STRING([--with-valgrind], [Enable Valgrind support]),,
2481 with_valgrind=no)
2482AC_MSG_RESULT([$with_valgrind])
2483if test "$with_valgrind" != no; then
2484 AC_CHECK_HEADER([valgrind/valgrind.h],
2485 [AC_DEFINE([WITH_VALGRIND], 1, [Define if you want pymalloc to be disabled when running under valgrind])],
2486 [AC_MSG_ERROR([Valgrind support requested but headers not available])]
2487 )
2488fi
2489
Barry Warsawef82cd72000-06-30 16:21:01 +00002490# Check for --with-wctype-functions
2491AC_MSG_CHECKING(for --with-wctype-functions)
2492AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002493 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2494[
Barry Warsawef82cd72000-06-30 16:21:01 +00002495if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002496then
2497 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2498 [Define if you want wctype.h functions to be used instead of the
2499 one supplied by Python itself. (see Include/unicodectype.h).])
2500 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002501else AC_MSG_RESULT(no)
2502fi],
2503[AC_MSG_RESULT(no)])
2504
Guido van Rossum68242b51996-05-28 22:53:03 +00002505# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002506AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002507DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002508
Guido van Rossume97ee181999-12-20 21:27:22 +00002509# the dlopen() function means we might want to use dynload_shlib.o. some
2510# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002511AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002512
2513# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2514# loading of modules.
2515AC_SUBST(DYNLOADFILE)
2516AC_MSG_CHECKING(DYNLOADFILE)
2517if test -z "$DYNLOADFILE"
2518then
2519 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002520 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2521 if test "$ac_cv_func_dlopen" = yes
2522 then DYNLOADFILE="dynload_shlib.o"
2523 else DYNLOADFILE="dynload_aix.o"
2524 fi
2525 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002526 BeOS*) DYNLOADFILE="dynload_beos.o";;
2527 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002528 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2529 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002530 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002531 *)
2532 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2533 # out any dynamic loading
2534 if test "$ac_cv_func_dlopen" = yes
2535 then DYNLOADFILE="dynload_shlib.o"
2536 else DYNLOADFILE="dynload_stub.o"
2537 fi
2538 ;;
2539 esac
2540fi
2541AC_MSG_RESULT($DYNLOADFILE)
2542if test "$DYNLOADFILE" != "dynload_stub.o"
2543then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002544 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2545 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002546fi
2547
Jack Jansenc49e5b72001-06-19 15:00:23 +00002548# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2549
2550AC_SUBST(MACHDEP_OBJS)
2551AC_MSG_CHECKING(MACHDEP_OBJS)
2552if test -z "$MACHDEP_OBJS"
2553then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002554 MACHDEP_OBJS=$extra_machdep_objs
2555else
2556 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002557fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002558AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002559
Guido van Rossum627b2d71993-12-24 10:39:16 +00002560# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002561AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2562 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002563 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis50ea4562009-11-27 13:56:01 +00002564 getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \
Antoine Pitrou30b3b352009-12-02 20:37:54 +00002565 initgroups kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002566 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002567 putenv readlink realpath \
Jesse Noller355b1262009-04-02 00:03:28 +00002568 select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \
2569 setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002570 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Martin v. Löwis50ea4562009-11-27 13:56:01 +00002571 setlocale setregid setreuid setresuid setresgid \
2572 setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002573 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002574 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002575 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002576
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002577# For some functions, having a definition is not sufficient, since
2578# we want to take their address.
2579AC_MSG_CHECKING(for chroot)
2580AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2581 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2582 AC_MSG_RESULT(yes),
2583 AC_MSG_RESULT(no)
2584)
2585AC_MSG_CHECKING(for link)
2586AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2587 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2588 AC_MSG_RESULT(yes),
2589 AC_MSG_RESULT(no)
2590)
2591AC_MSG_CHECKING(for symlink)
2592AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2593 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2594 AC_MSG_RESULT(yes),
2595 AC_MSG_RESULT(no)
2596)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002597AC_MSG_CHECKING(for fchdir)
2598AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2599 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2600 AC_MSG_RESULT(yes),
2601 AC_MSG_RESULT(no)
2602)
2603AC_MSG_CHECKING(for fsync)
2604AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002605 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002606 AC_MSG_RESULT(yes),
2607 AC_MSG_RESULT(no)
2608)
2609AC_MSG_CHECKING(for fdatasync)
2610AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2611 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2612 AC_MSG_RESULT(yes),
2613 AC_MSG_RESULT(no)
2614)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002615AC_MSG_CHECKING(for epoll)
2616AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2617 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2618 AC_MSG_RESULT(yes),
2619 AC_MSG_RESULT(no)
2620)
2621AC_MSG_CHECKING(for kqueue)
2622AC_TRY_COMPILE([
2623#include <sys/types.h>
2624#include <sys/event.h>
2625 ], int x=kqueue(),
2626 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2627 AC_MSG_RESULT(yes),
2628 AC_MSG_RESULT(no)
2629)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002630# On some systems (eg. FreeBSD 5), we would find a definition of the
2631# functions ctermid_r, setgroups in the library, but no prototype
2632# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2633# address to avoid compiler warnings and potential miscompilations
2634# because of the missing prototypes.
2635
2636AC_MSG_CHECKING(for ctermid_r)
2637AC_TRY_COMPILE([
2638#include "confdefs.h"
2639#include <stdio.h>
2640], void* p = ctermid_r,
2641 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2642 AC_MSG_RESULT(yes),
2643 AC_MSG_RESULT(no)
2644)
2645
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002646AC_MSG_CHECKING(for flock)
2647AC_TRY_COMPILE([
2648#include "confdefs.h"
2649#include <sys/file.h>
2650], void* p = flock,
2651 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2652 AC_MSG_RESULT(yes),
2653 AC_MSG_RESULT(no)
2654)
2655
2656AC_MSG_CHECKING(for getpagesize)
2657AC_TRY_COMPILE([
2658#include "confdefs.h"
2659#include <unistd.h>
2660], void* p = getpagesize,
2661 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2662 AC_MSG_RESULT(yes),
2663 AC_MSG_RESULT(no)
2664)
2665
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002666dnl check for true
2667AC_CHECK_PROGS(TRUE, true, /bin/true)
2668
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002669dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2670dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002671AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002672 AC_CHECK_LIB(resolv, inet_aton)
2673)
2674
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002675# On Tru64, chflags seems to be present, but calling it will
2676# exit Python
Gregory P. Smithbb213892009-11-02 01:37:37 +00002677AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002678AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002679#include <sys/stat.h>
2680#include <unistd.h>
2681int main(int argc, char*argv[])
2682{
2683 if(chflags(argv[0], 0) != 0)
2684 return 1;
2685 return 0;
2686}
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002687]], ac_cv_have_chflags=yes,
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002688 ac_cv_have_chflags=no,
Gregory P. Smithbb213892009-11-02 01:37:37 +00002689 ac_cv_have_chflags=cross)
2690])
2691if test "$ac_cv_have_chflags" = cross ; then
2692 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2693fi
2694if test "$ac_cv_have_chflags" = yes ; then
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002695 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2696fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002697
Gregory P. Smithbb213892009-11-02 01:37:37 +00002698AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002699AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002700#include <sys/stat.h>
2701#include <unistd.h>
2702int main(int argc, char*argv[])
2703{
2704 if(lchflags(argv[0], 0) != 0)
2705 return 1;
2706 return 0;
2707}
Alexandre Vassalotti30267d62009-07-17 06:10:06 +00002708]], ac_cv_have_lchflags=yes,
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002709 ac_cv_have_lchflags=no,
Gregory P. Smithbb213892009-11-02 01:37:37 +00002710 ac_cv_have_lchflags=cross)
2711])
2712if test "$ac_cv_have_lchflags" = cross ; then
2713 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2714fi
2715if test "$ac_cv_have_lchflags" = yes ; then
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002716 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2717fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002718
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002719dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002720dnl
2721dnl On MacOSX the linker will search for dylibs on the entire linker path
2722dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2723dnl to revert to a more traditional unix behaviour and make it possible to
2724dnl override the system libz with a local static library of libz. Temporarily
2725dnl add that flag to our CFLAGS as well to ensure that we check the version
2726dnl of libz that will be used by setup.py.
2727dnl The -L/usr/local/lib is needed as wel to get the same compilation
2728dnl environment as setup.py (and leaving it out can cause configure to use the
2729dnl wrong version of the library)
2730case $ac_sys_system/$ac_sys_release in
2731Darwin/*)
2732 _CUR_CFLAGS="${CFLAGS}"
2733 _CUR_LDFLAGS="${LDFLAGS}"
2734 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2735 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2736 ;;
2737esac
2738
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002739AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2740
Ronald Oussorenf8752642006-07-06 10:13:35 +00002741case $ac_sys_system/$ac_sys_release in
2742Darwin/*)
2743 CFLAGS="${_CUR_CFLAGS}"
2744 LDFLAGS="${_CUR_LDFLAGS}"
2745 ;;
2746esac
2747
Martin v. Löwise9416172003-05-03 10:12:45 +00002748AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002749AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002750#include "confdefs.h"
2751#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002752], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002753 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2754 AC_MSG_RESULT(yes),
2755 AC_MSG_RESULT(no)
2756)
2757
2758AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002759AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002760#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002761#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002762#include <sys/socket.h>
2763#include <netinet/in.h>
2764#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002765], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002766 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2767 AC_MSG_RESULT(yes),
2768 AC_MSG_RESULT(no)
2769)
2770
2771AC_MSG_CHECKING(for inet_pton)
2772AC_TRY_COMPILE([
2773#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002774#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002775#include <sys/socket.h>
2776#include <netinet/in.h>
2777#include <arpa/inet.h>
2778], void* p = inet_pton,
2779 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2780 AC_MSG_RESULT(yes),
2781 AC_MSG_RESULT(no)
2782)
2783
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002784# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002785AC_MSG_CHECKING(for setgroups)
2786AC_TRY_COMPILE([
2787#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002788#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002789#ifdef HAVE_GRP_H
2790#include <grp.h>
2791#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002792],
2793void* p = setgroups,
2794 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2795 AC_MSG_RESULT(yes),
2796 AC_MSG_RESULT(no)
2797)
2798
Fred Drake8cef4cf2000-06-28 16:40:38 +00002799# check for openpty and forkpty
2800
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002801AC_CHECK_FUNCS(openpty,,
2802 AC_CHECK_LIB(util,openpty,
2803 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2804 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2805 )
2806)
2807AC_CHECK_FUNCS(forkpty,,
2808 AC_CHECK_LIB(util,forkpty,
2809 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2810 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2811 )
2812)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002813
Brett Cannonaa5778d2008-03-18 04:09:00 +00002814# Stuff for expat.
2815AC_CHECK_FUNCS(memmove)
2816
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002817# check for long file support functions
2818AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2819
Brett Cannonaa5778d2008-03-18 04:09:00 +00002820AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002821AC_CHECK_FUNCS(getpgrp,
2822 AC_TRY_COMPILE([#include <unistd.h>],
2823 [getpgrp(0);],
2824 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2825 [Define if getpgrp() must be called as getpgrp(0).])
2826 )
2827)
Jack Jansen150753c2003-03-29 22:07:47 +00002828AC_CHECK_FUNCS(setpgrp,
2829 AC_TRY_COMPILE([#include <unistd.h>],
2830 [setpgrp(0,0);],
2831 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2832 [Define if setpgrp() must be called as setpgrp(0, 0).])
2833 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002834)
2835AC_CHECK_FUNCS(gettimeofday,
2836 AC_TRY_COMPILE([#include <sys/time.h>],
2837 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2838 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2839 [Define if gettimeofday() does not have second (timezone) argument
2840 This is the case on Motorola V4 (R40V4.2)])
2841 )
2842)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002843
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002844AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002845AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002846#if defined(MAJOR_IN_MKDEV)
2847#include <sys/mkdev.h>
2848#elif defined(MAJOR_IN_SYSMACROS)
2849#include <sys/sysmacros.h>
2850#else
2851#include <sys/types.h>
2852#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002853],[
2854 makedev(major(0),minor(0));
2855],[
2856 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2857 [Define to 1 if you have the device macros.])
2858 AC_MSG_RESULT(yes)
2859],[
2860 AC_MSG_RESULT(no)
2861])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002862
2863# On OSF/1 V5.1, getaddrinfo is available, but a define
2864# for [no]getaddrinfo in netdb.h.
2865AC_MSG_CHECKING(for getaddrinfo)
2866AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002867#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002868#include <sys/socket.h>
2869#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002870#include <stdio.h>
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002871], [getaddrinfo(NULL, NULL, NULL, NULL);],
2872have_getaddrinfo=yes,
2873have_getaddrinfo=no)
2874AC_MSG_RESULT($have_getaddrinfo)
2875if test $have_getaddrinfo = yes
2876then
2877 AC_MSG_CHECKING(getaddrinfo bug)
2878 AC_CACHE_VAL(ac_cv_buggy_getaddrinfo,
2879 AC_TRY_RUN([[
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002880#include <sys/types.h>
2881#include <netdb.h>
2882#include <string.h>
2883#include <sys/socket.h>
2884#include <netinet/in.h>
2885
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002886int main()
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002887{
2888 int passive, gaierr, inet4 = 0, inet6 = 0;
2889 struct addrinfo hints, *ai, *aitop;
2890 char straddr[INET6_ADDRSTRLEN], strport[16];
2891
2892 for (passive = 0; passive <= 1; passive++) {
2893 memset(&hints, 0, sizeof(hints));
2894 hints.ai_family = AF_UNSPEC;
2895 hints.ai_flags = passive ? AI_PASSIVE : 0;
2896 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002897 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002898 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2899 (void)gai_strerror(gaierr);
2900 goto bad;
2901 }
2902 for (ai = aitop; ai; ai = ai->ai_next) {
2903 if (ai->ai_addr == NULL ||
2904 ai->ai_addrlen == 0 ||
2905 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2906 straddr, sizeof(straddr), strport, sizeof(strport),
2907 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2908 goto bad;
2909 }
2910 switch (ai->ai_family) {
2911 case AF_INET:
2912 if (strcmp(strport, "54321") != 0) {
2913 goto bad;
2914 }
2915 if (passive) {
2916 if (strcmp(straddr, "0.0.0.0") != 0) {
2917 goto bad;
2918 }
2919 } else {
2920 if (strcmp(straddr, "127.0.0.1") != 0) {
2921 goto bad;
2922 }
2923 }
2924 inet4++;
2925 break;
2926 case AF_INET6:
2927 if (strcmp(strport, "54321") != 0) {
2928 goto bad;
2929 }
2930 if (passive) {
2931 if (strcmp(straddr, "::") != 0) {
2932 goto bad;
2933 }
2934 } else {
2935 if (strcmp(straddr, "::1") != 0) {
2936 goto bad;
2937 }
2938 }
2939 inet6++;
2940 break;
2941 case AF_UNSPEC:
2942 goto bad;
2943 break;
2944 default:
2945 /* another family support? */
2946 break;
2947 }
2948 }
2949 }
2950
2951 if (!(inet4 == 0 || inet4 == 2))
2952 goto bad;
2953 if (!(inet6 == 0 || inet6 == 2))
2954 goto bad;
2955
2956 if (aitop)
2957 freeaddrinfo(aitop);
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002958 return 0;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002959
2960 bad:
2961 if (aitop)
2962 freeaddrinfo(aitop);
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002963 return 1;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002964}
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002965]], ac_cv_buggy_getaddrinfo=no,
2966 ac_cv_buggy_getaddrinfo=yes,
2967 ac_cv_buggy_getaddrinfo=yes))
2968fi
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002969
Alexandre Vassalotti00900892009-07-17 05:26:39 +00002970if test $have_getaddrinfo = no -o $ac_cv_buggy_getaddrinfo = yes
2971then
2972 if test $ipv6 = yes
2973 then
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002974 echo 'Fatal: You must get working getaddrinfo() function.'
2975 echo ' or you can specify "--disable-ipv6"'.
2976 exit 1
2977 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002978else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002979 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002980fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002981AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002982
Guido van Rossum627b2d71993-12-24 10:39:16 +00002983# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002984AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002985AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002986AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002987AC_CHECK_MEMBERS([struct stat.st_rdev])
2988AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002989AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002990AC_CHECK_MEMBERS([struct stat.st_gen])
2991AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002992AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002993
2994AC_MSG_CHECKING(for time.h that defines altzone)
2995AC_CACHE_VAL(ac_cv_header_time_altzone,
2996[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2997 ac_cv_header_time_altzone=yes,
2998 ac_cv_header_time_altzone=no)])
2999AC_MSG_RESULT($ac_cv_header_time_altzone)
3000if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003001 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003002fi
3003
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003004was_it_defined=no
3005AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003006AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003007#include <sys/types.h>
3008#include <sys/select.h>
3009#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003010], [;], [
3011 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
3012 [Define if you can safely include both <sys/select.h> and <sys/time.h>
3013 (which you can't on SCO ODT 3.0).])
3014 was_it_defined=yes
3015])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003016AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003017
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003018AC_MSG_CHECKING(for addrinfo)
3019AC_CACHE_VAL(ac_cv_struct_addrinfo,
3020AC_TRY_COMPILE([
3021# include <netdb.h>],
3022 [struct addrinfo a],
3023 ac_cv_struct_addrinfo=yes,
3024 ac_cv_struct_addrinfo=no))
3025AC_MSG_RESULT($ac_cv_struct_addrinfo)
3026if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003027 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003028fi
3029
3030AC_MSG_CHECKING(for sockaddr_storage)
3031AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
3032AC_TRY_COMPILE([
3033# include <sys/types.h>
3034# include <sys/socket.h>],
3035 [struct sockaddr_storage s],
3036 ac_cv_struct_sockaddr_storage=yes,
3037 ac_cv_struct_sockaddr_storage=no))
3038AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3039if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003040 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003041fi
3042
Guido van Rossum627b2d71993-12-24 10:39:16 +00003043# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003044
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003045AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003046AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003047
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003048works=no
3049AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003050AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
3051 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
3052)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003053AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003054
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003055works=no
3056AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003057AC_TRY_COMPILE([], [signed char c;], works=yes,
3058 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
3059)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003060AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003061
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003062have_prototypes=no
3063AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003064AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
3065 AC_DEFINE(HAVE_PROTOTYPES, 1,
3066 [Define if your compiler supports function prototype])
3067 have_prototypes=yes
3068])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003069AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003070
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003071works=no
3072AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003073AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003074#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003075int foo(int x, ...) {
3076 va_list va;
3077 va_start(va, x);
3078 va_arg(va, int);
3079 va_arg(va, char *);
3080 va_arg(va, double);
3081 return 0;
3082}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003083], [return foo(10, "", 3.14);], [
3084 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3085 [Define if your compiler supports variable length function prototypes
3086 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3087 works=yes
3088])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003089AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003090
Dave Cole331708b2004-08-09 04:51:41 +00003091# check for socketpair
3092AC_MSG_CHECKING(for socketpair)
3093AC_TRY_COMPILE([
3094#include <sys/types.h>
3095#include <sys/socket.h>
3096], void *x=socketpair,
3097 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3098 AC_MSG_RESULT(yes),
3099 AC_MSG_RESULT(no)
3100)
3101
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003102# check if sockaddr has sa_len member
3103AC_MSG_CHECKING(if sockaddr has sa_len member)
3104AC_TRY_COMPILE([#include <sys/types.h>
3105#include <sys/socket.h>],
3106[struct sockaddr x;
3107x.sa_len = 0;],
3108 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003109 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003110 AC_MSG_RESULT(no))
3111
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003112va_list_is_array=no
3113AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003114AC_TRY_COMPILE([
3115#ifdef HAVE_STDARG_PROTOTYPES
3116#include <stdarg.h>
3117#else
3118#include <varargs.h>
3119#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003120], [va_list list1, list2; list1 = list2;], , [
3121 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3122 va_list_is_array=yes
3123])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003124AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003125
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003126# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003127AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3128 [Define this if you have some version of gethostbyname_r()])
3129
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003130AC_CHECK_FUNC(gethostbyname_r, [
3131 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3132 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3133 OLD_CFLAGS=$CFLAGS
3134 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3135 AC_TRY_COMPILE([
3136# include <netdb.h>
3137 ], [
3138 char *name;
3139 struct hostent *he, *res;
3140 char buffer[2048];
3141 int buflen = 2048;
3142 int h_errnop;
3143
3144 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3145 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003146 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003147 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3148 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003149 AC_MSG_RESULT(yes)
3150 ], [
3151 AC_MSG_RESULT(no)
3152 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3153 AC_TRY_COMPILE([
3154# include <netdb.h>
3155 ], [
3156 char *name;
3157 struct hostent *he;
3158 char buffer[2048];
3159 int buflen = 2048;
3160 int h_errnop;
3161
3162 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3163 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003164 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003165 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3166 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003167 AC_MSG_RESULT(yes)
3168 ], [
3169 AC_MSG_RESULT(no)
3170 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3171 AC_TRY_COMPILE([
3172# include <netdb.h>
3173 ], [
3174 char *name;
3175 struct hostent *he;
3176 struct hostent_data data;
3177
3178 (void) gethostbyname_r(name, he, &data);
3179 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003180 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003181 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3182 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003183 AC_MSG_RESULT(yes)
3184 ], [
3185 AC_MSG_RESULT(no)
3186 ])
3187 ])
3188 ])
3189 CFLAGS=$OLD_CFLAGS
3190], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003191 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003192])
3193AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3194AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3195AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003196AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003197AC_SUBST(HAVE_GETHOSTBYNAME)
3198
Guido van Rossum627b2d71993-12-24 10:39:16 +00003199# checks for system services
3200# (none yet)
3201
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003202# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003203AC_CHECK_FUNC(__fpu_control,
3204 [],
3205 [AC_CHECK_LIB(ieee, __fpu_control)
3206])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003207
Guido van Rossum93274221997-05-09 02:42:00 +00003208# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003209AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00003210AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003211 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3212[
Guido van Rossum93274221997-05-09 02:42:00 +00003213if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003214then
3215 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3216 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3217 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003218else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003219fi],
3220[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003221
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003222# check for --with-libm=...
3223AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003224case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003225Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00003226BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003227*) LIBM=-lm
3228esac
Guido van Rossum93274221997-05-09 02:42:00 +00003229AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003230AC_ARG_WITH(libm,
3231 AC_HELP_STRING(--with-libm=STRING, math library),
3232[
Guido van Rossum93274221997-05-09 02:42:00 +00003233if test "$withval" = no
3234then LIBM=
3235 AC_MSG_RESULT(force LIBM empty)
3236elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003237then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003238 AC_MSG_RESULT(set LIBM="$withval")
3239else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003240fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003241[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003242
3243# check for --with-libc=...
3244AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003245AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003246AC_ARG_WITH(libc,
3247 AC_HELP_STRING(--with-libc=STRING, C library),
3248[
Guido van Rossum93274221997-05-09 02:42:00 +00003249if test "$withval" = no
3250then LIBC=
3251 AC_MSG_RESULT(force LIBC empty)
3252elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003253then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003254 AC_MSG_RESULT(set LIBC="$withval")
3255else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003256fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003257[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003258
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003259# **************************************************
3260# * Check for various properties of floating point *
3261# **************************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003262
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003263AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
3264AC_CACHE_VAL(ac_cv_little_endian_double, [
3265AC_TRY_RUN([
3266#include <string.h>
3267int main() {
3268 double x = 9006104071832581.0;
3269 if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
3270 return 0;
3271 else
3272 return 1;
3273}
3274],
3275ac_cv_little_endian_double=yes,
3276ac_cv_little_endian_double=no,
3277ac_cv_little_endian_double=no)])
3278AC_MSG_RESULT($ac_cv_little_endian_double)
3279if test "$ac_cv_little_endian_double" = yes
3280then
3281 AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
3282 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3283 with the least significant byte first])
3284fi
3285
3286AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
3287AC_CACHE_VAL(ac_cv_big_endian_double, [
3288AC_TRY_RUN([
3289#include <string.h>
3290int main() {
3291 double x = 9006104071832581.0;
3292 if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
3293 return 0;
3294 else
3295 return 1;
3296}
3297],
3298ac_cv_big_endian_double=yes,
3299ac_cv_big_endian_double=no,
3300ac_cv_big_endian_double=no)])
3301AC_MSG_RESULT($ac_cv_big_endian_double)
3302if test "$ac_cv_big_endian_double" = yes
3303then
3304 AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
3305 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3306 with the most significant byte first])
3307fi
3308
3309# Some ARM platforms use a mixed-endian representation for doubles.
3310# While Python doesn't currently have full support for these platforms
3311# (see e.g., issue 1762561), we can at least make sure that float <-> string
3312# conversions work.
3313AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
3314AC_CACHE_VAL(ac_cv_mixed_endian_double, [
3315AC_TRY_RUN([
3316#include <string.h>
3317int main() {
3318 double x = 9006104071832581.0;
3319 if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
3320 return 0;
3321 else
3322 return 1;
3323}
3324],
3325ac_cv_mixed_endian_double=yes,
3326ac_cv_mixed_endian_double=no,
3327ac_cv_mixed_endian_double=no)])
3328AC_MSG_RESULT($ac_cv_mixed_endian_double)
3329if test "$ac_cv_mixed_endian_double" = yes
3330then
3331 AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
3332 [Define if C doubles are 64-bit IEEE 754 binary format, stored
3333 in ARM mixed-endian order (byte order 45670123)])
3334fi
3335
3336# The short float repr introduced in Python 3.1 requires the
3337# correctly-rounded string <-> double conversion functions from
3338# Python/dtoa.c, which in turn require that the FPU uses 53-bit
3339# rounding; this is a problem on x86, where the x87 FPU has a default
Mark Dickinsona548dee2009-11-15 13:12:43 +00003340# rounding precision of 64 bits. For gcc/x86, we can fix this by
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003341# using inline assembler to get and set the x87 FPU control word.
Mark Dickinsona548dee2009-11-15 13:12:43 +00003342
3343# This inline assembler syntax may also work for suncc and icc,
3344# so we try it on all platforms.
3345
3346AC_MSG_CHECKING(whether we can use gcc inline assembler to get and set x87 control word)
3347AC_TRY_COMPILE([], [
3348 unsigned short cw;
3349 __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
3350 __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
3351],
3352[have_gcc_asm_for_x87=yes], [have_gcc_asm_for_x87=no])
3353AC_MSG_RESULT($have_gcc_asm_for_x87)
3354if test "$have_gcc_asm_for_x87" = yes
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003355then
Mark Dickinsona548dee2009-11-15 13:12:43 +00003356 AC_DEFINE(HAVE_GCC_ASM_FOR_X87, 1,
3357 [Define if we can use gcc inline assembler to get and set x87 control word])
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003358fi
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003359
Mark Dickinson04b27232009-01-04 12:29:36 +00003360# Detect whether system arithmetic is subject to x87-style double
3361# rounding issues. The result of this test has little meaning on non
3362# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3363# mode is round-to-nearest and double rounding issues are present, and
3364# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3365AC_MSG_CHECKING(for x87-style double rounding)
Mark Dickinson99abd142009-10-24 13:44:16 +00003366# $BASECFLAGS may affect the result
3367ac_save_cc="$CC"
3368CC="$CC $BASECFLAGS"
Mark Dickinson04b27232009-01-04 12:29:36 +00003369AC_TRY_RUN([
3370#include <stdlib.h>
3371#include <math.h>
3372int main() {
3373 volatile double x, y, z;
3374 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3375 x = 0.99999999999999989; /* 1-2**-53 */
3376 y = 1./x;
3377 if (y != 1.)
3378 exit(0);
3379 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3380 x = 1e16;
3381 y = 2.99999;
3382 z = x + y;
3383 if (z != 1e16+4.)
3384 exit(0);
3385 /* both tests show evidence of double rounding */
3386 exit(1);
3387}
3388],
3389ac_cv_x87_double_rounding=no,
3390ac_cv_x87_double_rounding=yes,
Mark Dickinson99abd142009-10-24 13:44:16 +00003391ac_cv_x87_double_rounding=no)
3392CC="$ac_save_cc"
Mark Dickinson04b27232009-01-04 12:29:36 +00003393AC_MSG_RESULT($ac_cv_x87_double_rounding)
3394if test "$ac_cv_x87_double_rounding" = yes
3395then
3396 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3397 [Define if arithmetic is subject to x87-style double rounding issue])
3398fi
3399
Mark Dickinson1d6e2e12009-10-24 13:28:38 +00003400# ************************************
3401# * Check for mathematical functions *
3402# ************************************
3403
3404LIBS_SAVE=$LIBS
3405LIBS="$LIBS $LIBM"
3406
Mark Dickinsonc63392c2009-11-28 13:13:13 +00003407# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3408# -0. on some architectures.
3409AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3410AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3411AC_TRY_RUN([
3412#include <math.h>
3413#include <stdlib.h>
3414int main() {
3415 /* return 0 if either negative zeros don't exist
3416 on this platform or if negative zeros exist
3417 and tanh(-0.) == -0. */
3418 if (atan2(0., -1.) == atan2(-0., -1.) ||
3419 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3420 else exit(1);
3421}
3422],
3423ac_cv_tanh_preserves_zero_sign=yes,
3424ac_cv_tanh_preserves_zero_sign=no,
3425ac_cv_tanh_preserves_zero_sign=no)])
3426AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3427if test "$ac_cv_tanh_preserves_zero_sign" = yes
3428then
3429 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3430 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3431fi
3432
3433AC_CHECK_FUNCS([acosh asinh atanh copysign erf erfc expm1 finite gamma])
3434AC_CHECK_FUNCS([hypot lgamma log1p round tgamma])
3435AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
3436
3437LIBS=$LIBS_SAVE
3438
Mark Dickinsonc4920e82009-11-20 19:30:22 +00003439# For multiprocessing module, check that sem_open
3440# actually works. For FreeBSD versions <= 7.2,
3441# the kernel module that provides POSIX semaphores
3442# isn't loaded by default, so an attempt to call
3443# sem_open results in a 'Signal 12' error.
3444AC_MSG_CHECKING(whether POSIX semaphores are enabled)
3445AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
3446AC_TRY_RUN([
3447#include <unistd.h>
3448#include <fcntl.h>
3449#include <stdio.h>
3450#include <semaphore.h>
3451#include <sys/stat.h>
3452
3453int main(void) {
3454 sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0);
3455 if (a == SEM_FAILED) {
3456 perror("sem_open");
3457 return 1;
3458 }
3459 sem_close(a);
Mark Dickinson59dc89e2009-12-13 21:06:06 +00003460 sem_unlink("/autoconf");
Mark Dickinsonc4920e82009-11-20 19:30:22 +00003461 return 0;
3462}
3463], ac_cv_posix_semaphores_enabled=yes,
3464 ac_cv_posix_semaphores_enabled=no,
3465 ac_cv_posix_semaphores_enabled=yes)
3466)
3467AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
3468if test $ac_cv_posix_semaphores_enabled = no
3469then
Mark Dickinson5afa6d42009-11-28 10:44:20 +00003470 AC_DEFINE(POSIX_SEMAPHORES_NOT_ENABLED, 1,
3471 [Define if POSIX semaphores aren't enabled on your system])
Mark Dickinsonc4920e82009-11-20 19:30:22 +00003472fi
3473
Jesse Noller355b1262009-04-02 00:03:28 +00003474# Multiprocessing check for broken sem_getvalue
3475AC_MSG_CHECKING(for broken sem_getvalue)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003476AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
Jesse Noller355b1262009-04-02 00:03:28 +00003477AC_TRY_RUN([
3478#include <unistd.h>
3479#include <fcntl.h>
3480#include <stdio.h>
3481#include <semaphore.h>
3482#include <sys/stat.h>
3483
3484int main(void){
Mark Dickinson59dc89e2009-12-13 21:06:06 +00003485 sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0);
Jesse Noller355b1262009-04-02 00:03:28 +00003486 int count;
3487 int res;
3488 if(a==SEM_FAILED){
3489 perror("sem_open");
3490 return 1;
3491
3492 }
3493 res = sem_getvalue(a, &count);
3494 sem_close(a);
Mark Dickinson59dc89e2009-12-13 21:06:06 +00003495 sem_unlink("/autocftw");
Jesse Noller355b1262009-04-02 00:03:28 +00003496 return res==-1 ? 1 : 0;
3497}
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003498], ac_cv_broken_sem_getvalue=no,
3499 ac_cv_broken_sem_getvalue=yes,
3500 ac_cv_broken_sem_getvalue=yes)
Jesse Noller355b1262009-04-02 00:03:28 +00003501)
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003502AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
3503if test $ac_cv_broken_sem_getvalue = yes
3504then
3505 AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1,
3506 [define to 1 if your sem_getvalue is broken.])
3507fi
Mark Dickinson04b27232009-01-04 12:29:36 +00003508
Mark Dickinsonefc82f72009-03-20 15:51:55 +00003509# determine what size digit to use for Python's longs
3510AC_MSG_CHECKING([digit size for Python's longs])
3511AC_ARG_ENABLE(big-digits,
3512AC_HELP_STRING([--enable-big-digits@<:@=BITS@:>@],[use big digits for Python longs [[BITS=30]]]),
3513[case $enable_big_digits in
3514yes)
3515 enable_big_digits=30 ;;
3516no)
3517 enable_big_digits=15 ;;
3518[15|30])
3519 ;;
3520*)
3521 AC_MSG_ERROR([bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30]) ;;
3522esac
3523AC_MSG_RESULT($enable_big_digits)
3524AC_DEFINE_UNQUOTED(PYLONG_BITS_IN_DIGIT, $enable_big_digits, [Define as the preferred size in bits of long digits])
3525],
3526[AC_MSG_RESULT(no value specified)])
3527
Guido van Rossumef2255b2000-03-10 22:30:29 +00003528# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003529AC_CHECK_HEADER(wchar.h, [
3530 AC_DEFINE(HAVE_WCHAR_H, 1,
3531 [Define if the compiler provides a wchar.h header file.])
3532 wchar_h="yes"
3533],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003534wchar_h="no"
3535)
3536
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003537# determine wchar_t size
3538if test "$wchar_h" = yes
3539then
Guido van Rossum67b26592001-10-20 14:21:45 +00003540 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003541fi
3542
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003543AC_MSG_CHECKING(for UCS-4 tcl)
3544have_ucs4_tcl=no
3545AC_TRY_COMPILE([
3546#include <tcl.h>
3547#if TCL_UTF_MAX != 6
3548# error "NOT UCS4_TCL"
3549#endif], [], [
3550 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3551 have_ucs4_tcl=yes
3552])
3553AC_MSG_RESULT($have_ucs4_tcl)
3554
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003555# check whether wchar_t is signed or not
3556if test "$wchar_h" = yes
3557then
3558 # check whether wchar_t is signed or not
3559 AC_MSG_CHECKING(whether wchar_t is signed)
3560 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3561 AC_TRY_RUN([
3562 #include <wchar.h>
3563 int main()
3564 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003565 /* Success: exit code 0 */
3566 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003567 }
3568 ],
3569 ac_cv_wchar_t_signed=yes,
3570 ac_cv_wchar_t_signed=no,
3571 ac_cv_wchar_t_signed=yes)])
3572 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3573fi
3574
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003575AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003576dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003577AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003578 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3579 [],
3580 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003581
3582if test $enable_unicode = yes
3583then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003584 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003585 case "$have_ucs4_tcl" in
3586 yes) enable_unicode="ucs4"
3587 ;;
3588 *) enable_unicode="ucs2"
3589 ;;
3590 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003591fi
3592
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003593AH_TEMPLATE(Py_UNICODE_SIZE,
3594 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003595case "$enable_unicode" in
3596ucs2) unicode_size="2"
3597 AC_DEFINE(Py_UNICODE_SIZE,2)
3598 ;;
3599ucs4) unicode_size="4"
3600 AC_DEFINE(Py_UNICODE_SIZE,4)
3601 ;;
3602esac
3603
Martin v. Löwis11437992002-04-12 09:54:03 +00003604AH_TEMPLATE(PY_UNICODE_TYPE,
3605 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003606
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003607AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003608if test "$enable_unicode" = "no"
3609then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003610 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003611 AC_MSG_RESULT(not used)
3612else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003613 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003614 AC_DEFINE(Py_USING_UNICODE, 1,
3615 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003616
3617 # wchar_t is only usable if it maps to an unsigned type
3618 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003619 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003620 then
3621 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003622 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3623 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003624 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003625 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003626 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3627 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3628 then
3629 PY_UNICODE_TYPE="unsigned short"
3630 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3631 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3632 then
3633 PY_UNICODE_TYPE="unsigned long"
3634 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3635 else
3636 PY_UNICODE_TYPE="no type found"
3637 fi
3638 AC_MSG_RESULT($PY_UNICODE_TYPE)
3639fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003640
3641# check for endianness
3642AC_C_BIGENDIAN
3643
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003644# Check whether right shifting a negative integer extends the sign bit
3645# or fills with zeros (like the Cray J90, according to Tim Peters).
3646AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003647AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003648AC_TRY_RUN([
3649int main()
3650{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003651 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003652}
Guido van Rossum3065c942001-09-17 04:03:14 +00003653],
3654ac_cv_rshift_extends_sign=yes,
3655ac_cv_rshift_extends_sign=no,
3656ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003657AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3658if test "$ac_cv_rshift_extends_sign" = no
3659then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003660 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3661 [Define if i>>j for signed int i does not extend the sign bit
3662 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003663fi
3664
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003665# check for getc_unlocked and related locking functions
3666AC_MSG_CHECKING(for getc_unlocked() and friends)
3667AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3668AC_TRY_LINK([#include <stdio.h>],[
3669 FILE *f = fopen("/dev/null", "r");
3670 flockfile(f);
3671 getc_unlocked(f);
3672 funlockfile(f);
3673], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3674AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3675if test "$ac_cv_have_getc_unlocked" = yes
3676then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003677 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3678 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003679fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003680
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003681# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003682# save the value of LIBS so we don't actually link Python with readline
3683LIBS_no_readline=$LIBS
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003684
3685# On some systems we need to link readline to a termcap compatible
3686# library. NOTE: Keep the precedence of listed libraries synchronised
3687# with setup.py.
3688py_cv_lib_readline=no
3689AC_MSG_CHECKING([how to link readline libs])
3690for py_libtermcap in "" ncursesw ncurses curses termcap; do
3691 if test -z "$py_libtermcap"; then
3692 READLINE_LIBS="-lreadline"
3693 else
3694 READLINE_LIBS="-lreadline -l$py_libtermcap"
3695 fi
3696 LIBS="$READLINE_LIBS $LIBS_no_readline"
3697 AC_LINK_IFELSE(
3698 [AC_LANG_CALL([],[readline])],
3699 [py_cv_lib_readline=yes])
3700 if test $py_cv_lib_readline = yes; then
3701 break
3702 fi
3703done
3704# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3705#AC_SUBST([READLINE_LIBS])
Gregory P. Smith29ec7502008-09-07 19:18:16 +00003706if test $py_cv_lib_readline = no; then
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003707 AC_MSG_RESULT([none])
3708else
3709 AC_MSG_RESULT([$READLINE_LIBS])
3710 AC_DEFINE(HAVE_LIBREADLINE, 1,
3711 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003712fi
3713
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003714# check for readline 2.1
3715AC_CHECK_LIB(readline, rl_callback_handler_install,
3716 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003717 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003718
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003719# check for readline 2.2
3720AC_TRY_CPP([#include <readline/readline.h>],
3721have_readline=yes, have_readline=no)
3722if test $have_readline = yes
3723then
3724 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3725 [readline/readline.h],
3726 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3727 [Define if you have readline 2.2]), )
Antoine Pitroud9ff74e2009-10-26 19:16:46 +00003728 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3729 [readline/readline.h],
3730 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3731 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003732fi
3733
Martin v. Löwis0daad592001-09-30 21:09:59 +00003734# check for readline 4.0
3735AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003736 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003737 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003738
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003739# also in 4.0
3740AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3741 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003742 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003743
Guido van Rossum353ae582001-07-10 16:45:32 +00003744# check for readline 4.2
3745AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003746 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003747 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003748
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003749# also in readline 4.2
3750AC_TRY_CPP([#include <readline/readline.h>],
3751have_readline=yes, have_readline=no)
3752if test $have_readline = yes
3753then
3754 AC_EGREP_HEADER([extern int rl_catch_signals;],
3755 [readline/readline.h],
3756 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3757 [Define if you can turn off readline's signal handling.]), )
3758fi
3759
Martin v. Löwis82bca632006-02-10 20:49:30 +00003760# End of readline checks: restore LIBS
3761LIBS=$LIBS_no_readline
3762
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003763AC_MSG_CHECKING(for broken nice())
3764AC_CACHE_VAL(ac_cv_broken_nice, [
3765AC_TRY_RUN([
3766int main()
3767{
3768 int val1 = nice(1);
3769 if (val1 != -1 && val1 == nice(2))
3770 exit(0);
3771 exit(1);
3772}
Guido van Rossum3065c942001-09-17 04:03:14 +00003773],
3774ac_cv_broken_nice=yes,
3775ac_cv_broken_nice=no,
3776ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003777AC_MSG_RESULT($ac_cv_broken_nice)
3778if test "$ac_cv_broken_nice" = yes
3779then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003780 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3781 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003782fi
3783
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003784AC_MSG_CHECKING(for broken poll())
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003785AC_CACHE_VAL(ac_cv_broken_poll,
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003786AC_TRY_RUN([
3787#include <poll.h>
3788
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003789int main()
3790{
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003791 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003792 int poll_test;
3793
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003794 close (42);
3795
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003796 poll_test = poll(&poll_struct, 1, 0);
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003797 if (poll_test < 0)
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003798 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003799 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003800 return 0;
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003801 else
Alexandre Vassalotti66da2632009-07-17 06:17:33 +00003802 return 1;
3803}
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003804],
3805ac_cv_broken_poll=yes,
3806ac_cv_broken_poll=no,
Alexandre Vassalotti00900892009-07-17 05:26:39 +00003807ac_cv_broken_poll=no))
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003808AC_MSG_RESULT($ac_cv_broken_poll)
3809if test "$ac_cv_broken_poll" = yes
3810then
3811 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3812 [Define if poll() sets errno on invalid file descriptors.])
3813fi
3814
Brett Cannon43802422005-02-10 20:48:03 +00003815# Before we can test tzset, we need to check if struct tm has a tm_zone
3816# (which is not required by ISO C or UNIX spec) and/or if we support
3817# tzname[]
3818AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003819
Brett Cannon43802422005-02-10 20:48:03 +00003820# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003821AC_MSG_CHECKING(for working tzset())
3822AC_CACHE_VAL(ac_cv_working_tzset, [
3823AC_TRY_RUN([
3824#include <stdlib.h>
3825#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003826#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003827
3828#if HAVE_TZNAME
3829extern char *tzname[];
3830#endif
3831
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003832int main()
3833{
Brett Cannon18367812003-09-19 00:59:16 +00003834 /* Note that we need to ensure that not only does tzset(3)
3835 do 'something' with localtime, but it works as documented
3836 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003837 This includes making sure that tzname is set properly if
3838 tm->tm_zone does not exist since it is the alternative way
3839 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003840
3841 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003842 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003843 */
3844
Brett Cannon43802422005-02-10 20:48:03 +00003845 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003846 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3847
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003848 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003849 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003850 if (localtime(&groundhogday)->tm_hour != 0)
3851 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003852#if HAVE_TZNAME
3853 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3854 if (strcmp(tzname[0], "UTC") ||
3855 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3856 exit(1);
3857#endif
Brett Cannon18367812003-09-19 00:59:16 +00003858
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003859 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003860 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003861 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003862 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003863#if HAVE_TZNAME
3864 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3865 exit(1);
3866#endif
Brett Cannon18367812003-09-19 00:59:16 +00003867
3868 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3869 tzset();
3870 if (localtime(&groundhogday)->tm_hour != 11)
3871 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003872#if HAVE_TZNAME
3873 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3874 exit(1);
3875#endif
3876
3877#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003878 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3879 exit(1);
3880 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3881 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003882#endif
Brett Cannon18367812003-09-19 00:59:16 +00003883
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003884 exit(0);
3885}
3886],
3887ac_cv_working_tzset=yes,
3888ac_cv_working_tzset=no,
3889ac_cv_working_tzset=no)])
3890AC_MSG_RESULT($ac_cv_working_tzset)
3891if test "$ac_cv_working_tzset" = yes
3892then
3893 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3894 [Define if tzset() actually switches the local timezone in a meaningful way.])
3895fi
3896
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003897# Look for subsecond timestamps in struct stat
3898AC_MSG_CHECKING(for tv_nsec in struct stat)
3899AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3900AC_TRY_COMPILE([#include <sys/stat.h>], [
3901struct stat st;
3902st.st_mtim.tv_nsec = 1;
3903],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003904ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003905ac_cv_stat_tv_nsec=no,
3906ac_cv_stat_tv_nsec=no))
3907AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3908if test "$ac_cv_stat_tv_nsec" = yes
3909then
3910 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3911 [Define if you have struct stat.st_mtim.tv_nsec])
3912fi
3913
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003914# Look for BSD style subsecond timestamps in struct stat
3915AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3916AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3917AC_TRY_COMPILE([#include <sys/stat.h>], [
3918struct stat st;
3919st.st_mtimespec.tv_nsec = 1;
3920],
3921ac_cv_stat_tv_nsec2=yes,
3922ac_cv_stat_tv_nsec2=no,
3923ac_cv_stat_tv_nsec2=no))
3924AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3925if test "$ac_cv_stat_tv_nsec2" = yes
3926then
3927 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3928 [Define if you have struct stat.st_mtimensec])
3929fi
3930
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003931# On HP/UX 11.0, mvwdelch is a block with a return statement
3932AC_MSG_CHECKING(whether mvwdelch is an expression)
3933AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3934AC_TRY_COMPILE([#include <curses.h>], [
3935 int rtn;
3936 rtn = mvwdelch(0,0,0);
3937], ac_cv_mvwdelch_is_expression=yes,
3938 ac_cv_mvwdelch_is_expression=no,
3939 ac_cv_mvwdelch_is_expression=yes))
3940AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3941
3942if test "$ac_cv_mvwdelch_is_expression" = yes
3943then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003944 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3945 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003946fi
3947
3948AC_MSG_CHECKING(whether WINDOW has _flags)
3949AC_CACHE_VAL(ac_cv_window_has_flags,
3950AC_TRY_COMPILE([#include <curses.h>], [
3951 WINDOW *w;
3952 w->_flags = 0;
3953], ac_cv_window_has_flags=yes,
3954 ac_cv_window_has_flags=no,
3955 ac_cv_window_has_flags=no))
3956AC_MSG_RESULT($ac_cv_window_has_flags)
3957
3958
3959if test "$ac_cv_window_has_flags" = yes
3960then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003961 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3962 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003963fi
3964
Walter Dörwald4994d952006-06-19 08:07:50 +00003965AC_MSG_CHECKING(for is_term_resized)
3966AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3967 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3968 AC_MSG_RESULT(yes),
3969 AC_MSG_RESULT(no)
3970)
3971
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003972AC_MSG_CHECKING(for resize_term)
3973AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3974 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003975 AC_MSG_RESULT(yes),
3976 AC_MSG_RESULT(no)
3977)
3978
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003979AC_MSG_CHECKING(for resizeterm)
3980AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3981 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003982 AC_MSG_RESULT(yes),
3983 AC_MSG_RESULT(no)
3984)
3985
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003986AC_MSG_CHECKING(for /dev/ptmx)
3987
3988if test -r /dev/ptmx
3989then
3990 AC_MSG_RESULT(yes)
3991 AC_DEFINE(HAVE_DEV_PTMX, 1,
3992 [Define if we have /dev/ptmx.])
3993else
3994 AC_MSG_RESULT(no)
3995fi
3996
3997AC_MSG_CHECKING(for /dev/ptc)
3998
3999if test -r /dev/ptc
4000then
4001 AC_MSG_RESULT(yes)
4002 AC_DEFINE(HAVE_DEV_PTC, 1,
4003 [Define if we have /dev/ptc.])
4004else
4005 AC_MSG_RESULT(no)
4006fi
Neal Norwitz865400f2003-03-21 01:42:58 +00004007
Mark Dickinson82864d12009-11-15 16:18:58 +00004008if test "$have_long_long" = yes
4009then
4010 AC_MSG_CHECKING(for %lld and %llu printf() format support)
4011 AC_CACHE_VAL(ac_cv_have_long_long_format,
4012 AC_TRY_RUN([[
4013 #include <stdio.h>
4014 #include <stddef.h>
4015 #include <string.h>
4016
4017 #ifdef HAVE_SYS_TYPES_H
4018 #include <sys/types.h>
4019 #endif
4020
4021 int main()
4022 {
4023 char buffer[256];
4024
4025 if (sprintf(buffer, "%lld", (long long)123) < 0)
4026 return 1;
4027 if (strcmp(buffer, "123"))
4028 return 1;
4029
4030 if (sprintf(buffer, "%lld", (long long)-123) < 0)
4031 return 1;
4032 if (strcmp(buffer, "-123"))
4033 return 1;
4034
4035 if (sprintf(buffer, "%llu", (unsigned long long)123) < 0)
4036 return 1;
4037 if (strcmp(buffer, "123"))
4038 return 1;
4039
4040 return 0;
4041 }
4042 ]], ac_cv_have_long_long_format=yes,
4043 ac_cv_have_long_long_format=no,
4044 ac_cv_have_long_long_format=no)
4045 )
4046 AC_MSG_RESULT($ac_cv_have_long_long_format)
4047fi
4048
4049if test $ac_cv_have_long_long_format = yes
4050then
4051 AC_DEFINE(PY_FORMAT_LONG_LONG, "ll",
4052 [Define to printf format modifier for long long type])
4053fi
4054
Ronald Oussoren315cd0c2009-11-19 16:25:21 +00004055if test $ac_sys_system = Darwin
4056then
4057 LIBS="$LIBS -framework CoreFoundation"
4058fi
4059
Mark Dickinson82864d12009-11-15 16:18:58 +00004060
Gregory P. Smithd8cb2d92009-11-02 02:02:38 +00004061AC_CACHE_CHECK([for %zd printf() format support], ac_cv_have_size_t_format, [dnl
4062AC_TRY_RUN([
Alexandre Vassalottie7cf1182009-07-17 06:33:51 +00004063#include <stdio.h>
Brett Cannon09d12362006-05-11 05:11:33 +00004064#include <stddef.h>
4065#include <string.h>
4066
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00004067#ifdef HAVE_SYS_TYPES_H
4068#include <sys/types.h>
4069#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00004070
4071#ifdef HAVE_SSIZE_T
4072typedef ssize_t Py_ssize_t;
4073#elif SIZEOF_VOID_P == SIZEOF_LONG
4074typedef long Py_ssize_t;
4075#else
4076typedef int Py_ssize_t;
4077#endif
Brett Cannon09d12362006-05-11 05:11:33 +00004078
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00004079int main()
4080{
4081 char buffer[256];
4082
Brett Cannon09d12362006-05-11 05:11:33 +00004083 if(sprintf(buffer, "%zd", (size_t)123) < 0)
4084 return 1;
4085
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00004086 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00004087 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00004088
4089 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
4090 return 1;
4091
4092 if (strcmp(buffer, "-123"))
4093 return 1;
4094
Brett Cannon09d12362006-05-11 05:11:33 +00004095 return 0;
Alexandre Vassalotti00900892009-07-17 05:26:39 +00004096}
Gregory P. Smithd8cb2d92009-11-02 02:02:38 +00004097], ac_cv_have_size_t_format=yes,
Alexandre Vassalottie7cf1182009-07-17 06:33:51 +00004098 ac_cv_have_size_t_format=no,
Gregory P. Smithd8cb2d92009-11-02 02:02:38 +00004099 [ac_cv_have_size_t_format="cross -- assuming yes"]
4100)])
4101if test "$ac_cv_have_size_t_format" != no ; then
Alexandre Vassalotti00900892009-07-17 05:26:39 +00004102 AC_DEFINE(PY_FORMAT_SIZE_T, "z",
4103 [Define to printf format modifier for Py_ssize_t])
4104fi
Brett Cannon09d12362006-05-11 05:11:33 +00004105
Martin v. Löwis01c04012002-11-11 14:58:44 +00004106AC_CHECK_TYPE(socklen_t,,
4107 AC_DEFINE(socklen_t,int,
4108 Define to `int' if <sys/socket.h> does not define.),[
4109#ifdef HAVE_SYS_TYPES_H
4110#include <sys/types.h>
4111#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00004112#ifdef HAVE_SYS_SOCKET_H
4113#include <sys/socket.h>
4114#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00004115])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004116
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00004117AC_SUBST(THREADHEADERS)
4118
4119for h in `(cd $srcdir;echo Python/thread_*.h)`
4120do
4121 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
4122done
4123
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004124AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00004125SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00004126AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004127for dir in $SRCDIRS; do
4128 if test ! -d $dir; then
4129 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00004130 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00004131done
4132AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00004133
Guido van Rossum627b2d71993-12-24 10:39:16 +00004134# generate output files
Antoine Pitrouf2caeed2009-05-24 20:23:57 +00004135AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
Martin v. Löwis88afe662002-10-26 13:47:44 +00004136AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00004137
Martin v. Löwisf7afe952006-04-14 15:16:15 +00004138echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004139if test ! -f Modules/Setup
4140then
4141 cp $srcdir/Modules/Setup.dist Modules/Setup
4142fi
4143
Martin v. Löwisf7afe952006-04-14 15:16:15 +00004144echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00004145if test ! -f Modules/Setup.local
4146then
4147 echo "# Edit this file for local setup changes" >Modules/Setup.local
4148fi
4149
4150echo "creating Makefile"
4151$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
4152 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00004153 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00004154
4155case $ac_sys_system in
4156BeOS)
4157 AC_MSG_WARN([
4158
4159 Support for BeOS is deprecated as of Python 2.6.
4160 See PEP 11 for the gory details.
4161 ])
4162 ;;
4163*) ;;
4164esac
4165
Neil Schemenauer66252162001-02-19 04:47:42 +00004166mv config.c Modules