blob: f3d34f24ad77a6a62faa7662207ad164515322ae [file] [log] [blame]
Benjamin Petersond7c77842008-05-26 13:01:25 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
Georg Brandl5c7f8fb2008-12-05 09:00:55 +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)
Neal Norwitz9be57322006-08-18 05:39:20 +00007m4_define(PYTHON_VERSION, 2.6)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008
Guido van Rossum76be6ed1995-01-02 18:33:54 +00009AC_REVISION($Revision$)
Martin v. Löwiseba40652007-08-30 20:10:57 +000010AC_PREREQ(2.61)
Martin v. Löwis1d459062005-03-14 21:23:33 +000011AC_INIT(python, PYTHON_VERSION, http://www.python.org/python-bugs)
Martin v. Löwis88afe662002-10-26 13:47:44 +000012AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000013AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000014
Martin v. Löwis8316feb2003-06-14 07:48:07 +000015dnl This is for stuff that absolutely must end up in pyconfig.h.
16dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000017AH_TOP([
18#ifndef Py_PYCONFIG_H
19#define Py_PYCONFIG_H
20])
Martin v. Löwis11437992002-04-12 09:54:03 +000021AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000022/* Define the macros needed if on a UnixWare 7.x system. */
23#if defined(__USLC__) && defined(__SCO_VERSION__)
24#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
25#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000026
27#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000028])
29
Martin v. Löwis8316feb2003-06-14 07:48:07 +000030# We don't use PACKAGE_ variables, and they cause conflicts
31# with other autoconf-based packages that include Python.h
32grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
33rm confdefs.h
34mv confdefs.h.new confdefs.h
35
Guido van Rossum642b6781997-07-19 19:35:41 +000036AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000037VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000038
Martin v. Löwis1142de32002-03-29 16:28:31 +000039AC_SUBST(SOVERSION)
40SOVERSION=1.0
41
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000042# The later defininition of _XOPEN_SOURCE disables certain features
43# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
44AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
45
Martin v. Löwisbcd93962003-05-03 10:32:18 +000046# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
47# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
48# them.
49AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
50
Andrew MacIntyreabccf412003-07-02 13:53:25 +000051# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
52# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
53# them.
54AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
55
Martin v. Löwisd6320502004-08-12 13:45:08 +000056# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
57# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
58AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
59
Ronald Oussoren5640ce22008-06-05 12:58:24 +000060# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
61# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable
62# them.
63AC_DEFINE(_DARWIN_C_SOURCE, 1, [Define on Darwin to activate all library features])
64
65
Martin v. Löwise981a4e2002-11-11 13:26:51 +000066define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000067
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000068# Arguments passed to configure.
69AC_SUBST(CONFIG_ARGS)
70CONFIG_ARGS="$ac_configure_args"
71
Ronald Oussoren9b831f42010-02-07 11:57:14 +000072AC_MSG_CHECKING([for --enable-universalsdk])
Ronald Oussoren988117f2006-04-29 11:31:35 +000073AC_ARG_ENABLE(universalsdk,
Brett Cannon91a1dec2008-02-13 19:15:44 +000074 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Ronald Oussoren988117f2006-04-29 11:31:35 +000075[
76 case $enableval in
77 yes)
78 enableval=/Developer/SDKs/MacOSX10.4u.sdk
Ronald Oussoren9b831f42010-02-07 11:57:14 +000079 if test ! -d "${enableval}"
80 then
81 enableval=/
82 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +000083 ;;
84 esac
85 case $enableval in
86 no)
87 UNIVERSALSDK=
88 enable_universalsdk=
89 ;;
90 *)
91 UNIVERSALSDK=$enableval
Ronald Oussoren9b831f42010-02-07 11:57:14 +000092 if test ! -d "${UNIVERSALSDK}"
93 then
94 AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}])
95 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +000096 ;;
97 esac
Ronald Oussoren9b831f42010-02-07 11:57:14 +000098
Ronald Oussoren988117f2006-04-29 11:31:35 +000099],[
100 UNIVERSALSDK=
101 enable_universalsdk=
102])
Ronald Oussoren9b831f42010-02-07 11:57:14 +0000103if test -n "${UNIVERSALSDK}"
104then
105 AC_MSG_RESULT(${UNIVERSALSDK})
106else
107 AC_MSG_RESULT(no)
108fi
Ronald Oussoren988117f2006-04-29 11:31:35 +0000109AC_SUBST(UNIVERSALSDK)
110
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000111AC_SUBST(ARCH_RUN_32BIT)
112
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000113UNIVERSAL_ARCHS="32-bit"
Ronald Oussorenea580e12010-03-09 10:36:28 +0000114AC_SUBST(LIPO_32BIT_FLAGS)
115AC_SUBST(LIPO_64BIT_FLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000116AC_MSG_CHECKING(for --with-universal-archs)
117AC_ARG_WITH(universal-archs,
Ronald Oussoren7ab74352009-09-08 07:10:07 +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 Oussorend0841712009-09-29 13:01:59 +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 Oussorend0841712009-09-29 13:01:59 +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 Oussorenea580e12010-03-09 10:36:28 +0000181 case "${UNIVERSAL_ARCHS}" in
182 all|3-way|intel)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000183 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
Ronald Oussoren75d83852009-03-30 17:56:14 +0000184 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkaltinstallunixtools4way"
Ronald Oussorenea580e12010-03-09 10:36:28 +0000185 ;;
186 *)
Ronald Oussoren75d83852009-03-30 17:56:14 +0000187 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000188 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ronald Oussorenea580e12010-03-09 10:36:28 +0000189 ;;
190 esac
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000191
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000192 if test "x${prefix}" = "xNONE" ; then
193 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
194 else
195 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
196 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000197 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000198
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000199 # Add files for Mac specific code to the list of output
Ronald Oussoren836b0392006-05-14 19:56:34 +0000200 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000201 AC_CONFIG_FILES(Mac/Makefile)
202 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
203 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000204 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
205 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000206 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000207 ],[
208 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000209 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000210 PYTHONFRAMEWORKPREFIX=
211 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000212 FRAMEWORKINSTALLFIRST=
213 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000214 FRAMEWORKALTINSTALLFIRST=
215 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000216 if test "x${prefix}" = "xNONE" ; then
217 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
218 else
219 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
220 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000221 enable_framework=
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000222
223 if test "$UNIVERSAL_ARCHS" = "all"
224 then
225 FRAMEWORKINSTALLLAST=update4wayuniversal
226 FRAMEWORKALTINSTALLLAST=update4wayuniversal
227 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000228])
229AC_SUBST(PYTHONFRAMEWORK)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000230AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000231AC_SUBST(PYTHONFRAMEWORKDIR)
232AC_SUBST(PYTHONFRAMEWORKPREFIX)
233AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000234AC_SUBST(FRAMEWORKINSTALLFIRST)
235AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000236AC_SUBST(FRAMEWORKALTINSTALLFIRST)
237AC_SUBST(FRAMEWORKALTINSTALLLAST)
238AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000239
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000240##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000241## AC_HELP_STRING(--with-dyld,
242## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000243##
Guido van Rossumb418f891996-07-30 18:06:02 +0000244# Set name for machine-dependent library files
245AC_SUBST(MACHDEP)
246AC_MSG_CHECKING(MACHDEP)
247if test -z "$MACHDEP"
248then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000249 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000250 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
251 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000252 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000253 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000254 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000255 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000256 ac_md_system=`echo $ac_sys_system |
257 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
258 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000259 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000260 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000261
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000262 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000263 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000264 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000265 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000266 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000267 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000268 esac
269fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000270
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000271# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
272# disable features if it is defined, without any means to access these
273# features as extensions. For these systems, we skip the definition of
274# _XOPEN_SOURCE. Before adding a system to the list to gain access to
275# some feature, make sure there is no alternative way to access this
276# feature. Also, when using wildcards, make sure you have verified the
277# need for not defining _XOPEN_SOURCE on all systems matching the
278# wildcard, and that the wildcard does not include future systems
279# (which may remove their limitations).
280dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
281case $ac_sys_system/$ac_sys_release in
282 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
283 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000284 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Martin v. Löwis4c5e2c82010-02-15 21:43:41 +0000285 # In addition, Stefan Krah confirms that issue #1244610 exists through
286 # OpenBSD 4.6, but is fixed in 4.7.
287 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123456@:>@)
Martin v. Löwiscb78de62007-12-29 18:49:21 +0000288 define_xopen_source=no
289 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
290 # also defined. This can be overridden by defining _BSD_SOURCE
291 # As this has a different meaning on Linux, only define it on OpenBSD
292 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
293 ;;
Martin v. Löwis4c5e2c82010-02-15 21:43:41 +0000294 OpenBSD/4.@<:@789@:>@)
Martin v. Löwis4bacaca2010-02-15 08:34:34 +0000295 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
296 # also defined. This can be overridden by defining _BSD_SOURCE
297 # As this has a different meaning on Linux, only define it on OpenBSD
298 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
299 ;;
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000300 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
301 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
302 # Marc Recht
Georg Brandl60616122008-11-16 08:02:56 +0000303 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 +0000304 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000305 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
306 # of union __?sigval. Reported by Stuart Bishop.
307 SunOS/5.6)
308 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000309 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
310 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000311 # Reconfirmed for 7.1.4 by Martin v. Loewis.
312 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000313 define_xopen_source=no;;
314 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000315 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000316 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000317 define_xopen_source=no;;
Martin v. Löwis7f08c1f2008-11-04 20:43:31 +0000318 # On FreeBSD 4, the math functions C89 does not cover are never defined
319 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
320 FreeBSD/4.*)
321 define_xopen_source=no;;
322 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
323 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
324 # identifies itself as Darwin/7.*
325 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
326 # disables platform specific features beyond repair.
327 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
328 # has no effect, don't bother defining them
329 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000330 define_xopen_source=no;;
Ronald Oussoren668907d2010-03-08 18:21:19 +0000331 Darwin/1@<:@0-9@:>@.*)
Ronald Oussoren09416212010-03-08 07:00:08 +0000332 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000333 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
334 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
335 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000336 AIX/4)
337 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000338 AIX/5)
339 if test `uname -r` -eq 1; then
340 define_xopen_source=no
341 fi
342 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000343 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
344 # defining NI_NUMERICHOST.
345 QNX/6.3.2)
346 define_xopen_source=no
347 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000348
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000349esac
350
351if test $define_xopen_source = yes
352then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000353 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
354 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000355 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
356 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000357 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000358 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000359 AC_DEFINE(_XOPEN_SOURCE, 500,
360 Define to the level of X/Open that your system supports)
361 ;;
362 *)
363 AC_DEFINE(_XOPEN_SOURCE, 600,
364 Define to the level of X/Open that your system supports)
365 ;;
366 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000367
368 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
369 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
370 # several APIs are not declared. Since this is also needed in some
371 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000372 # except for Solaris 10, where it must not be defined,
373 # as it implies XPG4.2
374 case $ac_sys_system/$ac_sys_release in
375 SunOS/5.10)
376 ;;
377 *)
378 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
379 Define to activate Unix95-and-earlier features)
380 ;;
381 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000382
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000383 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
384
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000385fi
386
Guido van Rossum91922671997-10-09 20:24:13 +0000387#
388# SGI compilers allow the specification of the both the ABI and the
389# ISA on the command line. Depending on the values of these switches,
390# different and often incompatable code will be generated.
391#
392# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
393# thus supply support for various ABI/ISA combinations. The MACHDEP
394# variable is also adjusted.
395#
396AC_SUBST(SGI_ABI)
397if test ! -z "$SGI_ABI"
398then
399 CC="cc $SGI_ABI"
400 LDFLAGS="$SGI_ABI $LDFLAGS"
401 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
402fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000403AC_MSG_RESULT($MACHDEP)
404
Jack Jansen83f898c2002-12-30 22:23:40 +0000405# And add extra plat-mac for darwin
406AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000407AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000408AC_MSG_CHECKING(EXTRAPLATDIR)
409if test -z "$EXTRAPLATDIR"
410then
411 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000412 darwin)
413 EXTRAPLATDIR="\$(PLATMACDIRS)"
414 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
415 ;;
416 *)
417 EXTRAPLATDIR=""
418 EXTRAMACHDEPPATH=""
419 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000420 esac
421fi
422AC_MSG_RESULT($EXTRAPLATDIR)
423
Jack Jansen6b08a402004-06-03 12:41:45 +0000424# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
425# it may influence the way we can build extensions, so distutils
426# needs to check it
427AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000428AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000429CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000430EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000431
Mark Dickinson65134662008-04-25 16:11:04 +0000432AC_MSG_CHECKING(machine type as reported by uname -m)
433ac_sys_machine=`uname -m`
434AC_MSG_RESULT($ac_sys_machine)
435
Guido van Rossum627b2d71993-12-24 10:39:16 +0000436# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000437
438# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
439# for debug/optimization stuff. BASECFLAGS is for flags that are required
440# just to get things to compile and link. Users are free to override OPT
441# when running configure or make. The build should not break if they do.
442# BASECFLAGS should generally not be messed with, however.
443
444# XXX shouldn't some/most/all of this code be merged with the stuff later
445# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000446AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000447AC_ARG_WITH(gcc,
448 AC_HELP_STRING(--without-gcc,never use gcc),
449[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000450 case $withval in
Georg Brandlc04c2892009-01-14 00:00:17 +0000451 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000452 without_gcc=yes;;
453 yes) CC=gcc
454 without_gcc=no;;
455 *) CC=$withval
456 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000457 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000458 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000459 AIX*) CC=cc_r
460 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000461 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000462 case $BE_HOST_CPU in
463 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000464 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000465 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000466 BASECFLAGS="$BASECFLAGS -export pragma"
467 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000468 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000469 ;;
470 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000471 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000472 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000473 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000474 ;;
475 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000476 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000477 ;;
478 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000479 AR="\$(srcdir)/Modules/ar_beos"
480 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000481 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000482 Monterey*)
483 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000484 without_gcc=;;
485 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000486 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000487AC_MSG_RESULT($without_gcc)
488
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000489# If the user switches compilers, we can't believe the cache
490if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
491then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000492 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
493(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000494fi
495
Guido van Rossum627b2d71993-12-24 10:39:16 +0000496AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000497
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000498AC_SUBST(CXX)
499AC_SUBST(MAINCC)
500AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
501AC_ARG_WITH(cxx_main,
502 AC_HELP_STRING([--with-cxx-main=<compiler>],
503 [compile main() and link python executable with C++ compiler]),
504[
505
506 case $withval in
507 no) with_cxx_main=no
508 MAINCC='$(CC)';;
509 yes) with_cxx_main=yes
510 MAINCC='$(CXX)';;
511 *) with_cxx_main=yes
512 MAINCC=$withval
513 if test -z "$CXX"
514 then
515 CXX=$withval
516 fi;;
517 esac], [
518 with_cxx_main=no
519 MAINCC='$(CC)'
520])
521AC_MSG_RESULT($with_cxx_main)
522
523preset_cxx="$CXX"
524if test -z "$CXX"
525then
526 case "$CC" in
527 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
528 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
529 esac
530 if test "$CXX" = "notfound"
531 then
532 CXX=""
533 fi
534fi
535if test -z "$CXX"
536then
537 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
538 if test "$CXX" = "notfound"
539 then
540 CXX=""
541 fi
542fi
543if test "$preset_cxx" != "$CXX"
544then
545 AC_MSG_WARN([
546
547 By default, distutils will build C++ extension modules with "$CXX".
548 If this is not intended, then set CXX on the configure command line.
549 ])
550fi
551
552
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000553# checks for UNIX variants that set C preprocessor variables
554AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000555
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000556# Check for unsupported systems
557case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000558atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000559 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
560 echo See README for details.
561 exit 1;;
562esac
563
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000564AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000565AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000566AC_ARG_WITH(suffix,
567 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
568[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000569 case $withval in
570 no) EXEEXT=;;
571 yes) EXEEXT=.exe;;
572 *) EXEEXT=$withval;;
573 esac])
574AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000575
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000576# Test whether we're running on a non-case-sensitive system, in which
577# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000578AC_SUBST(BUILDEXEEXT)
579AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000580if test ! -d CaseSensitiveTestDir; then
581mkdir CaseSensitiveTestDir
582fi
583
584if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000585then
Jack Jansen1999ef42001-12-06 21:47:20 +0000586 AC_MSG_RESULT(yes)
587 BUILDEXEEXT=.exe
588else
589 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000590 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000591fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000592rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000593
Guido van Rossumdd997f71998-10-07 19:58:26 +0000594case $MACHDEP in
595bsdos*)
596 case $CC in
597 gcc) CC="$CC -D_HAVE_BSDI";;
598 esac;;
599esac
600
Guido van Rossum84561611997-08-21 00:08:11 +0000601case $ac_sys_system in
602hp*|HP*)
603 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000604 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000605 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000606Monterey*)
607 case $CC in
608 cc) CC="$CC -Wl,-Bexport";;
609 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000610SunOS*)
611 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000612 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000613 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000614esac
615
Martin v. Löwise8964d42001-03-06 12:09:07 +0000616
Neil Schemenauer61c51152001-01-26 16:18:16 +0000617AC_SUBST(LIBRARY)
618AC_MSG_CHECKING(LIBRARY)
619if test -z "$LIBRARY"
620then
621 LIBRARY='libpython$(VERSION).a'
622fi
623AC_MSG_RESULT($LIBRARY)
624
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000625# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000626# name of the library into which to insert object files). BLDLIBRARY is also
627# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
628# is blank as the main program is not linked directly against LDLIBRARY.
629# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
630# systems without shared libraries, LDLIBRARY is the same as LIBRARY
631# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
632# DLLLIBRARY is the shared (i.e., DLL) library.
633#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000634# RUNSHARED is used to run shared python without installed libraries
635#
636# INSTSONAME is the name of the shared library that will be use to install
637# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000638AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000639AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000640AC_SUBST(BLDLIBRARY)
641AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000642AC_SUBST(INSTSONAME)
643AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000644LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000645BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000646INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000647DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000648LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000649RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000650
Guido van Rossumfb842551997-08-06 23:42:07 +0000651# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000652# If CXX is set, and if it is needed to link a main function that was
653# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
654# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000655# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000656# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000657AC_SUBST(LINKCC)
658AC_MSG_CHECKING(LINKCC)
659if test -z "$LINKCC"
660then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000661 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000662 case $ac_sys_system in
663 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000664 exp_extra="\"\""
665 if test $ac_sys_release -ge 5 -o \
666 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
667 exp_extra="."
668 fi
669 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000670 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000671 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000672 QNX*)
673 # qcc must be used because the other compilers do not
674 # support -N.
675 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000676 esac
677fi
678AC_MSG_RESULT($LINKCC)
679
Martin v. Löwis1142de32002-03-29 16:28:31 +0000680AC_MSG_CHECKING(for --enable-shared)
681AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000682 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000683
Martin v. Löwis1142de32002-03-29 16:28:31 +0000684if test -z "$enable_shared"
685then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000686 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000687 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000688 enable_shared="yes";;
689 *)
690 enable_shared="no";;
691 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000692fi
693AC_MSG_RESULT($enable_shared)
694
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000695AC_MSG_CHECKING(for --enable-profiling)
696AC_ARG_ENABLE(profiling,
697 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
698[ac_save_cc="$CC"
699 CC="$CC -pg"
700 AC_TRY_RUN([int main() { return 0; }],
701 ac_enable_profiling="yes",
702 ac_enable_profiling="no",
703 ac_enable_profiling="no")
704 CC="$ac_save_cc"])
705AC_MSG_RESULT($ac_enable_profiling)
706
707case "$ac_enable_profiling" in
708 "yes")
709 BASECFLAGS="-pg $BASECFLAGS"
710 LDFLAGS="-pg $LDFLAGS"
711 ;;
712esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000713
714AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000715
Guido van Rossumb8552162001-09-05 14:58:11 +0000716# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
717# library that we build, but we do not want to link against it (we
718# will find it with a -framework option). For this reason there is an
719# extra variable BLDLIBRARY against which Python and the extension
720# modules are linked, BLDLIBRARY. This is normally the same as
721# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000722if test "$enable_framework"
723then
724 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000725 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000726 BLDLIBRARY=''
727else
728 BLDLIBRARY='$(LDLIBRARY)'
729fi
730
Martin v. Löwis1142de32002-03-29 16:28:31 +0000731# Other platforms follow
732if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000733 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000734 case $ac_sys_system in
735 BeOS*)
736 LDLIBRARY='libpython$(VERSION).so'
737 ;;
738 CYGWIN*)
739 LDLIBRARY='libpython$(VERSION).dll.a'
740 DLLLIBRARY='libpython$(VERSION).dll'
741 ;;
742 SunOS*)
743 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000744 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000745 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000746 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000747 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000748 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000749 LDLIBRARY='libpython$(VERSION).so'
750 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000751 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000752 case $ac_sys_system in
753 FreeBSD*)
754 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
755 ;;
756 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000757 INSTSONAME="$LDLIBRARY".$SOVERSION
758 ;;
759 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000760 case `uname -m` in
761 ia64)
762 LDLIBRARY='libpython$(VERSION).so'
763 ;;
764 *)
765 LDLIBRARY='libpython$(VERSION).sl'
766 ;;
767 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000768 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000769 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000770 ;;
771 OSF*)
772 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000773 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000774 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000775 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000776 atheos*)
777 LDLIBRARY='libpython$(VERSION).so'
778 BLDLIBRARY='-L. -lpython$(VERSION)'
779 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
780 ;;
Ronald Oussorene9cce8e2009-01-02 10:46:42 +0000781 Darwin*)
782 LDLIBRARY='libpython$(VERSION).dylib'
783 BLDLIBRARY='-L. -lpython$(VERSION)'
784 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
785 ;;
786
Martin v. Löwis1142de32002-03-29 16:28:31 +0000787 esac
Jason Tishler30765592003-09-04 11:04:06 +0000788else # shared is disabled
789 case $ac_sys_system in
790 CYGWIN*)
791 BLDLIBRARY='$(LIBRARY)'
792 LDLIBRARY='libpython$(VERSION).dll.a'
793 ;;
794 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000795fi
796
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000797AC_MSG_RESULT($LDLIBRARY)
798
Guido van Rossum627b2d71993-12-24 10:39:16 +0000799AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000800AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000801AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000802
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000803AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000804AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000805if test $SVNVERSION = found
806then
807 SVNVERSION="svnversion \$(srcdir)"
808else
Benjamin Peterson2eb65452009-05-23 19:35:33 +0000809 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000810fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000811
Neil Schemenauera42c8272001-03-31 00:01:55 +0000812case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000813bsdos*|hp*|HP*)
814 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000815 if test -z "$INSTALL"
816 then
817 INSTALL="${srcdir}/install-sh -c"
818 fi
819esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000820AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000821
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000822# Not every filesystem supports hard links
823AC_SUBST(LN)
824if test -z "$LN" ; then
825 case $ac_sys_system in
826 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000827 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000828 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000829 *) LN=ln;;
830 esac
831fi
832
Fred Drake9f715822001-07-11 06:27:00 +0000833# Check for --with-pydebug
834AC_MSG_CHECKING(for --with-pydebug)
835AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000836 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
837[
Fred Drake9f715822001-07-11 06:27:00 +0000838if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000839then
840 AC_DEFINE(Py_DEBUG, 1,
841 [Define if you want to build an interpreter with many run-time checks.])
842 AC_MSG_RESULT(yes);
843 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000844else AC_MSG_RESULT(no); Py_DEBUG='false'
845fi],
846[AC_MSG_RESULT(no)])
847
Skip Montanarodecc6a42003-01-01 20:07:49 +0000848# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
849# merged with this chunk of code?
850
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000851# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000852# ------------------------
853# (The following bit of code is complicated enough - please keep things
854# indented properly. Just pretend you're editing Python code. ;-)
855
856# There are two parallel sets of case statements below, one that checks to
857# see if OPT was set and one that does BASECFLAGS setting based upon
858# compiler and platform. BASECFLAGS tweaks need to be made even if the
859# user set OPT.
860
861# tweak OPT based on compiler and platform, only if the user didn't set
862# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000863AC_SUBST(OPT)
Benjamin Peterson5d39ab02010-03-23 21:02:50 +0000864if test "${OPT-unset}" = "unset"
Guido van Rossumb418f891996-07-30 18:06:02 +0000865then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000866 case $GCC in
867 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000868 if test "$CC" != 'g++' ; then
869 STRICT_PROTO="-Wstrict-prototypes"
870 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000871 # For gcc 4.x we need to use -fwrapv so lets check if its supported
872 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
873 WRAP="-fwrapv"
874 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000875 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000876 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000877 if test "$Py_DEBUG" = 'true' ; then
878 # Optimization messes up debuggers, so turn it off for
879 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000880 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000881 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000882 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000883 fi
884 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000885 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000886 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000887 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000888 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000889 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000890 SCO_SV*) OPT="$OPT -m486 -DSCO5"
891 ;;
892 esac
Fred Drake9f715822001-07-11 06:27:00 +0000893 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000894
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000895 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000896 OPT="-O"
897 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000898 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000899
900 # The current (beta) Monterey compiler dies with optimizations
901 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000902 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000903 Monterey*)
904 OPT=""
905 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000906 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000907
Guido van Rossum4e8af441994-08-19 15:33:54 +0000908fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000909
Skip Montanarodecc6a42003-01-01 20:07:49 +0000910AC_SUBST(BASECFLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000911
912# The -arch flags for universal builds on OSX
913UNIVERSAL_ARCH_FLAGS=
914AC_SUBST(UNIVERSAL_ARCH_FLAGS)
915
Skip Montanarodecc6a42003-01-01 20:07:49 +0000916# tweak BASECFLAGS based on compiler and platform
917case $GCC in
918yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000919 # Python violates C99 rules, by casting between incompatible
920 # pointer types. GCC may generate bad code as a result of that,
921 # so use -fno-strict-aliasing if supported.
922 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
923 ac_save_cc="$CC"
924 CC="$CC -fno-strict-aliasing"
925 AC_TRY_RUN([int main() { return 0; }],
926 ac_cv_no_strict_aliasing_ok=yes,
927 ac_cv_no_strict_aliasing_ok=no,
928 ac_cv_no_strict_aliasing_ok=no)
929 CC="$ac_save_cc"
930 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
931 if test $ac_cv_no_strict_aliasing_ok = yes
932 then
933 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
934 fi
Mark Dickinson65134662008-04-25 16:11:04 +0000935
936 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
937 # support. Without this, treatment of subnormals doesn't follow
938 # the standard.
939 case $ac_sys_machine in
940 alpha*)
941 BASECFLAGS="$BASECFLAGS -mieee"
942 ;;
943 esac
944
Skip Montanarodecc6a42003-01-01 20:07:49 +0000945 case $ac_sys_system in
946 SCO_SV*)
947 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
948 ;;
949 # is there any other compiler on Darwin besides gcc?
950 Darwin*)
Jeffrey Yasskin1b4e45b2008-03-17 14:40:53 +0000951 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
952 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson4347c442008-07-17 15:59:24 +0000953
Ronald Oussorene3eaf312010-04-18 18:21:03 +0000954 if test "${CC}" = gcc
955 then
956 AC_MSG_CHECKING(which compiler should be used)
957 case "${UNIVERSALSDK}" in
958 */MacOSX10.4u.sdk)
959 # Build using 10.4 SDK, force usage of gcc when the
960 # compiler is gcc, otherwise the user will get very
961 # confusing error messages when building on OSX 10.6
962 CC=gcc-4.0
963 CPP=cpp-4.0
964 ;;
965 esac
966 AC_MSG_RESULT($CC)
967 fi
968
969
Ronald Oussoren988117f2006-04-29 11:31:35 +0000970 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000971 UNIVERSAL_ARCH_FLAGS=""
972 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000973 ARCH_RUN_32BIT=""
Ronald Oussorenea580e12010-03-09 10:36:28 +0000974 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000975
976 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
Ronald Oussoren461f2202009-09-06 10:54:28 +0000977 ARCH_RUN_32BIT="true"
Ronald Oussorenea580e12010-03-09 10:36:28 +0000978 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000979
980 elif test "$UNIVERSAL_ARCHS" = "all" ; then
Ronald Oussorend8244f52010-02-11 13:22:03 +0000981 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussorenea580e12010-03-09 10:36:28 +0000982 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
Ronald Oussorenea580e12010-03-09 10:36:28 +0000983 LIPO_32BIT_FLAGS="-extract i386 -extract ppc7400"
984 LIPO_64BIT_FLAGS="-extract x86_64 -extract ppc64"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000985
Ronald Oussoren7ab74352009-09-08 07:10:07 +0000986 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
Ronald Oussorend8244f52010-02-11 13:22:03 +0000987 ARCH_RUN_32BIT="/usr/bin/arch -i386"
Ronald Oussorenea580e12010-03-09 10:36:28 +0000988 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
Ronald Oussorenea580e12010-03-09 10:36:28 +0000989 LIPO_32BIT_FLAGS="-extract i386"
990 LIPO_64BIT_FLAGS="-extract x86_64"
Ronald Oussoren7ab74352009-09-08 07:10:07 +0000991
992 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
Ronald Oussorend8244f52010-02-11 13:22:03 +0000993 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussorenea580e12010-03-09 10:36:28 +0000994 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
Ronald Oussorenea580e12010-03-09 10:36:28 +0000995 LIPO_32BIT_FLAGS="-extract i386 -extract ppc7400"
996 LIPO_64BIT_FLAGS="-extract x86_64"
Ronald Oussoren7ab74352009-09-08 07:10:07 +0000997
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000998 else
Ronald Oussorenba0aa6b2009-09-20 20:16:38 +0000999 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001000
1001 fi
1002
1003
Ronald Oussorene3eaf312010-04-18 18:21:03 +00001004 CFLAGS="${UNIVERSAL_ARCH_FLAGS} ${CFLAGS}"
1005 if test "${UNIVERSALSDK}" != "/"
1006 then
1007 CFLAGS="-isysroot ${UNIVERSALSDK} ${CFLAGS}"
1008 CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
Benjamin Peterson4347c442008-07-17 15:59:24 +00001009 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +00001010 fi
1011
Benjamin Peterson4347c442008-07-17 15:59:24 +00001012 # Calculate the right deployment target for this build.
1013 #
1014 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
1015 if test ${cur_target} '>' 10.2; then
1016 cur_target=10.3
Ronald Oussoren461f2202009-09-06 10:54:28 +00001017 if test ${enable_universalsdk}; then
1018 if test "${UNIVERSAL_ARCHS}" = "all"; then
1019 # Ensure that the default platform for a
1020 # 4-way universal build is OSX 10.5,
1021 # that's the first OS release where
1022 # 4-way builds make sense.
1023 cur_target='10.5'
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001024
1025 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
1026 cur_target='10.5'
1027
1028 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
1029 cur_target='10.5'
1030
1031 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
1032 cur_target='10.5'
Ronald Oussoren461f2202009-09-06 10:54:28 +00001033 fi
1034 else
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001035 if test `/usr/bin/arch` = "i386"; then
Ronald Oussoren461f2202009-09-06 10:54:28 +00001036 # On Intel macs default to a deployment
1037 # target of 10.4, that's the first OSX
1038 # release with Intel support.
1039 cur_target="10.4"
1040 fi
1041 fi
Benjamin Peterson4347c442008-07-17 15:59:24 +00001042 fi
1043 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1044
1045 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1046 # environment with a value that is the same as what we'll use
1047 # in the Makefile to ensure that we'll get the same compiler
1048 # environment during configure and build time.
1049 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1050 export MACOSX_DEPLOYMENT_TARGET
1051 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1052
Skip Montanarodecc6a42003-01-01 20:07:49 +00001053 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +00001054 OSF*)
1055 BASECFLAGS="$BASECFLAGS -mieee"
1056 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001057 esac
1058 ;;
1059
1060*)
1061 case $ac_sys_system in
1062 OpenUNIX*|UnixWare*)
1063 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1064 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001065 OSF*)
1066 BASECFLAGS="$BASECFLAGS -ieee -std"
1067 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001068 SCO_SV*)
1069 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1070 ;;
1071 esac
1072 ;;
1073esac
1074
Fred Drakee1ceaa02001-12-04 20:55:47 +00001075if test "$Py_DEBUG" = 'true'; then
1076 :
1077else
1078 OPT="-DNDEBUG $OPT"
1079fi
1080
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001081if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001082then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001083 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001084fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001085
Neal Norwitz020c46a2006-01-07 21:39:28 +00001086# disable check for icc since it seems to pass, but generates a warning
1087if test "$CC" = icc
1088then
1089 ac_cv_opt_olimit_ok=no
1090fi
1091
Guido van Rossum91922671997-10-09 20:24:13 +00001092AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1093AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1094[ac_save_cc="$CC"
1095CC="$CC -OPT:Olimit=0"
1096AC_TRY_RUN([int main() { return 0; }],
1097 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001098 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +00001099 ac_cv_opt_olimit_ok=no)
1100CC="$ac_save_cc"])
1101AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001102if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001103 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001104 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1105 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1106 # environment?
1107 Darwin*)
1108 ;;
1109 *)
1110 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1111 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001112 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001113else
1114 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1115 AC_CACHE_VAL(ac_cv_olimit_ok,
1116 [ac_save_cc="$CC"
1117 CC="$CC -Olimit 1500"
1118 AC_TRY_RUN([int main() { return 0; }],
1119 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001120 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +00001121 ac_cv_olimit_ok=no)
1122 CC="$ac_save_cc"])
1123 AC_MSG_RESULT($ac_cv_olimit_ok)
1124 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001125 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001126 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001127fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001128
Martin v. Löwisaac13162006-10-19 10:58:46 +00001129# Check whether GCC supports PyArg_ParseTuple format
1130if test "$GCC" = "yes"
1131then
1132 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1133 save_CFLAGS=$CFLAGS
1134 CFLAGS="$CFLAGS -Werror"
1135 AC_TRY_COMPILE([
1136 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1137 ],,
1138 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1139 AC_MSG_RESULT(yes),
1140 AC_MSG_RESULT(no)
1141 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +00001142 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +00001143fi
1144
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001145# On some compilers, pthreads are available without further options
1146# (e.g. MacOS X). On some of these systems, the compiler will not
1147# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1148# So we have to see first whether pthreads are available without
1149# options before we can check whether -Kpthread improves anything.
1150AC_MSG_CHECKING(whether pthreads are available without options)
1151AC_CACHE_VAL(ac_cv_pthread_is_default,
1152[AC_TRY_RUN([
1153#include <pthread.h>
1154
1155void* routine(void* p){return NULL;}
1156
1157int main(){
1158 pthread_t p;
1159 if(pthread_create(&p,NULL,routine,NULL)!=0)
1160 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001161 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001162 return 0;
1163}
1164],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001165[
1166 ac_cv_pthread_is_default=yes
1167 ac_cv_kthread=no
1168 ac_cv_pthread=no
1169],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001170 ac_cv_pthread_is_default=no,
1171 ac_cv_pthread_is_default=no)
1172])
1173AC_MSG_RESULT($ac_cv_pthread_is_default)
1174
1175
1176if test $ac_cv_pthread_is_default = yes
1177then
1178 ac_cv_kpthread=no
1179else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001180# -Kpthread, if available, provides the right #defines
1181# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001182# Some compilers won't report that they do not support -Kpthread,
1183# so we need to run a program to see whether it really made the
1184# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001185AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1186AC_CACHE_VAL(ac_cv_kpthread,
1187[ac_save_cc="$CC"
1188CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001189AC_TRY_RUN([
1190#include <pthread.h>
1191
1192void* routine(void* p){return NULL;}
1193
1194int main(){
1195 pthread_t p;
1196 if(pthread_create(&p,NULL,routine,NULL)!=0)
1197 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001198 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001199 return 0;
1200}
1201],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001202 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001203 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001204 ac_cv_kpthread=no)
1205CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001206AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001207fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001208
Skip Montanarod8d39a02003-07-10 20:44:10 +00001209if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001210then
1211# -Kthread, if available, provides the right #defines
1212# and linker options to make pthread_create available
1213# Some compilers won't report that they do not support -Kthread,
1214# so we need to run a program to see whether it really made the
1215# function available.
1216AC_MSG_CHECKING(whether $CC accepts -Kthread)
1217AC_CACHE_VAL(ac_cv_kthread,
1218[ac_save_cc="$CC"
1219CC="$CC -Kthread"
1220AC_TRY_RUN([
1221#include <pthread.h>
1222
1223void* routine(void* p){return NULL;}
1224
1225int main(){
1226 pthread_t p;
1227 if(pthread_create(&p,NULL,routine,NULL)!=0)
1228 return 1;
1229 (void)pthread_detach(p);
1230 return 0;
1231}
1232],
1233 ac_cv_kthread=yes,
1234 ac_cv_kthread=no,
1235 ac_cv_kthread=no)
1236CC="$ac_save_cc"])
1237AC_MSG_RESULT($ac_cv_kthread)
1238fi
1239
Skip Montanarod8d39a02003-07-10 20:44:10 +00001240if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001241then
1242# -pthread, if available, provides the right #defines
1243# and linker options to make pthread_create available
1244# Some compilers won't report that they do not support -pthread,
1245# so we need to run a program to see whether it really made the
1246# function available.
1247AC_MSG_CHECKING(whether $CC accepts -pthread)
1248AC_CACHE_VAL(ac_cv_thread,
1249[ac_save_cc="$CC"
1250CC="$CC -pthread"
1251AC_TRY_RUN([
1252#include <pthread.h>
1253
1254void* routine(void* p){return NULL;}
1255
1256int main(){
1257 pthread_t p;
1258 if(pthread_create(&p,NULL,routine,NULL)!=0)
1259 return 1;
1260 (void)pthread_detach(p);
1261 return 0;
1262}
1263],
1264 ac_cv_pthread=yes,
1265 ac_cv_pthread=no,
1266 ac_cv_pthread=no)
1267CC="$ac_save_cc"])
1268AC_MSG_RESULT($ac_cv_pthread)
1269fi
1270
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001271# If we have set a CC compiler flag for thread support then
1272# check if it works for CXX, too.
1273ac_cv_cxx_thread=no
1274if test ! -z "$CXX"
1275then
1276AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1277ac_save_cxx="$CXX"
1278
1279if test "$ac_cv_kpthread" = "yes"
1280then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001281 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001282 ac_cv_cxx_thread=yes
1283elif test "$ac_cv_kthread" = "yes"
1284then
1285 CXX="$CXX -Kthread"
1286 ac_cv_cxx_thread=yes
1287elif test "$ac_cv_pthread" = "yes"
1288then
1289 CXX="$CXX -pthread"
1290 ac_cv_cxx_thread=yes
1291fi
1292
1293if test $ac_cv_cxx_thread = yes
1294then
1295 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1296 $CXX -c conftest.$ac_ext 2>&5
1297 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1298 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1299 then
1300 ac_cv_cxx_thread=yes
1301 else
1302 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001303 fi
1304 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001305fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001306AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001307fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001308CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001309
Fred Drakece81d592000-07-09 14:39:29 +00001310dnl # check for ANSI or K&R ("traditional") preprocessor
1311dnl AC_MSG_CHECKING(for C preprocessor type)
1312dnl AC_TRY_COMPILE([
1313dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1314dnl int foo;
1315dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1316dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1317dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001318
Guido van Rossum627b2d71993-12-24 10:39:16 +00001319# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001320AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001321AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1322fcntl.h grp.h \
Neal Norwitz9fdfaaf2008-03-28 05:34:59 +00001323ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001324shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001325unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001326sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1327sys/lock.h sys/mkdev.h sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001328sys/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 +00001329sys/termio.h sys/time.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001330sys/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 +00001331sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimesfb2d25a2008-01-07 16:12:44 +00001332bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001333AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001334AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001335
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001336# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001337AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001338#ifdef HAVE_CURSES_H
1339#include <curses.h>
1340#endif
1341])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001342
Martin v. Löwis11017b12006-01-14 18:12:57 +00001343# On Linux, netlink.h requires asm/types.h
1344AC_CHECK_HEADERS(linux/netlink.h,,,[
1345#ifdef HAVE_ASM_TYPES_H
1346#include <asm/types.h>
1347#endif
1348#ifdef HAVE_SYS_SOCKET_H
1349#include <sys/socket.h>
1350#endif
1351])
1352
Guido van Rossum627b2d71993-12-24 10:39:16 +00001353# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001354was_it_defined=no
1355AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001356AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1357 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1358])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001359AC_MSG_RESULT($was_it_defined)
1360
Neal Norwitz11690112002-07-30 01:08:28 +00001361# Check whether using makedev requires defining _OSF_SOURCE
1362AC_MSG_CHECKING(for makedev)
Jesus Cead54cdf02010-04-28 11:11:36 +00001363AC_TRY_LINK([
1364#if defined(MAJOR_IN_MKDEV)
1365#include <sys/mkdev.h>
1366#elif defined(MAJOR_IN_SYSMACROS)
1367#include <sys/sysmacros.h>
1368#else
1369#include <sys/types.h>
1370#endif ],
Neal Norwitz11690112002-07-30 01:08:28 +00001371 [ makedev(0, 0) ],
1372 ac_cv_has_makedev=yes,
1373 ac_cv_has_makedev=no)
1374if test "$ac_cv_has_makedev" = "no"; then
1375 # we didn't link, try if _OSF_SOURCE will allow us to link
1376 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001377#define _OSF_SOURCE 1
1378#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001379 ],
1380 [ makedev(0, 0) ],
1381 ac_cv_has_makedev=yes,
1382 ac_cv_has_makedev=no)
1383 if test "$ac_cv_has_makedev" = "yes"; then
1384 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1385 fi
1386fi
1387AC_MSG_RESULT($ac_cv_has_makedev)
1388if test "$ac_cv_has_makedev" = "yes"; then
1389 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1390fi
1391
Martin v. Löwis399a6892002-10-04 10:22:02 +00001392# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1393# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1394# defined, but the compiler does not support pragma redefine_extname,
1395# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1396# structures (such as rlimit64) without declaring them. As a
1397# work-around, disable LFS on such configurations
1398
1399use_lfs=yes
1400AC_MSG_CHECKING(Solaris LFS bug)
1401AC_TRY_COMPILE([
1402#define _LARGEFILE_SOURCE 1
1403#define _FILE_OFFSET_BITS 64
1404#include <sys/resource.h>
1405],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1406AC_MSG_RESULT($sol_lfs_bug)
1407if test "$sol_lfs_bug" = "yes"; then
1408 use_lfs=no
1409fi
1410
1411if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001412# Two defines needed to enable largefile support on various platforms
1413# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001414AC_DEFINE(_LARGEFILE_SOURCE, 1,
1415[This must be defined on some systems to enable large file support.])
1416AC_DEFINE(_FILE_OFFSET_BITS, 64,
1417[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001418fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001419
Guido van Rossum300fda71996-08-19 21:58:16 +00001420# Add some code to confdefs.h so that the test for off_t works on SCO
1421cat >> confdefs.h <<\EOF
1422#if defined(SCO_DS)
1423#undef _OFF_T
1424#endif
1425EOF
1426
Guido van Rossumef2255b2000-03-10 22:30:29 +00001427# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001428AC_TYPE_MODE_T
1429AC_TYPE_OFF_T
1430AC_TYPE_PID_T
1431AC_TYPE_SIGNAL
1432AC_TYPE_SIZE_T
1433AC_TYPE_UID_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001434AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001435 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001436
Guido van Rossumef2255b2000-03-10 22:30:29 +00001437# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001438# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001439AC_CHECK_SIZEOF(int, 4)
1440AC_CHECK_SIZEOF(long, 4)
1441AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001442AC_CHECK_SIZEOF(short, 2)
1443AC_CHECK_SIZEOF(float, 4)
1444AC_CHECK_SIZEOF(double, 8)
1445AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001446AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001447AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001448
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001449AC_MSG_CHECKING(for long long support)
1450have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001451AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1452 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1453 have_long_long=yes
1454])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001455AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001456if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001457AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001458fi
1459
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001460AC_MSG_CHECKING(for long double support)
1461have_long_double=no
1462AC_TRY_COMPILE([], [long double x; x = (long double)0.;], [
1463 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1464 have_long_double=yes
1465])
1466AC_MSG_RESULT($have_long_double)
Mark Dickinsondc1688a2008-06-27 22:20:14 +00001467if test "$have_long_double" = yes ; then
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001468AC_CHECK_SIZEOF(long double, 12)
1469fi
1470
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001471AC_MSG_CHECKING(for _Bool support)
1472have_c99_bool=no
1473AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1474 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1475 have_c99_bool=yes
1476])
1477AC_MSG_RESULT($have_c99_bool)
1478if test "$have_c99_bool" = yes ; then
1479AC_CHECK_SIZEOF(_Bool, 1)
1480fi
1481
Martin v. Löwisebe26702006-10-02 14:55:51 +00001482AC_CHECK_TYPES(uintptr_t,
1483 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001484 [], [#ifdef HAVE_STDINT_H
1485 #include <stdint.h>
1486 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001487
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001488
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001489# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1490AC_MSG_CHECKING(size of off_t)
1491AC_CACHE_VAL(ac_cv_sizeof_off_t,
1492[AC_TRY_RUN([#include <stdio.h>
1493#include <sys/types.h>
1494main()
1495{
1496 FILE *f=fopen("conftestval", "w");
1497 if (!f) exit(1);
1498 fprintf(f, "%d\n", sizeof(off_t));
1499 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001500}],
1501ac_cv_sizeof_off_t=`cat conftestval`,
1502ac_cv_sizeof_off_t=0,
1503ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001504])
1505AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001506AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1507[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001508
1509AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinsoncaa44c02009-12-31 21:20:06 +00001510if test "$have_long_long" = yes
1511then
1512if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001513 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001514 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1515 [Defined to enable large file support when an off_t is bigger than a long
1516 and long long is available and at least as big as an off_t. You may need
1517 to add some flags for configuration and compilation to enable this mode.
1518 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001519 AC_MSG_RESULT(yes)
1520else
1521 AC_MSG_RESULT(no)
1522fi
Mark Dickinsoncaa44c02009-12-31 21:20:06 +00001523else
1524 AC_MSG_RESULT(no)
1525fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001526
Fred Drakea3f6e912000-06-29 20:44:47 +00001527# AC_CHECK_SIZEOF() doesn't include <time.h>.
1528AC_MSG_CHECKING(size of time_t)
1529AC_CACHE_VAL(ac_cv_sizeof_time_t,
1530[AC_TRY_RUN([#include <stdio.h>
1531#include <time.h>
1532main()
1533{
1534 FILE *f=fopen("conftestval", "w");
1535 if (!f) exit(1);
1536 fprintf(f, "%d\n", sizeof(time_t));
1537 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001538}],
1539ac_cv_sizeof_time_t=`cat conftestval`,
1540ac_cv_sizeof_time_t=0,
1541ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001542])
1543AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001544AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1545[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001546
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001547
Trent Mick635f6fb2000-08-23 21:33:05 +00001548# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001549ac_save_cc="$CC"
1550if test "$ac_cv_kpthread" = "yes"
1551then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001552elif test "$ac_cv_kthread" = "yes"
1553then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001554elif test "$ac_cv_pthread" = "yes"
1555then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001556fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001557AC_MSG_CHECKING(for pthread_t)
1558have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001559AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001560AC_MSG_RESULT($have_pthread_t)
1561if test "$have_pthread_t" = yes ; then
1562 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1563 AC_MSG_CHECKING(size of pthread_t)
1564 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1565 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001566#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001567 main()
1568 {
1569 FILE *f=fopen("conftestval", "w");
1570 if (!f) exit(1);
1571 fprintf(f, "%d\n", sizeof(pthread_t));
1572 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001573 }],
1574 ac_cv_sizeof_pthread_t=`cat conftestval`,
1575 ac_cv_sizeof_pthread_t=0,
1576 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001577 ])
1578 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001579 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1580 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001581fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001582CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001583
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001584AC_MSG_CHECKING(for --enable-toolbox-glue)
1585AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001586 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001587
1588if test -z "$enable_toolbox_glue"
1589then
1590 case $ac_sys_system/$ac_sys_release in
1591 Darwin/*)
1592 enable_toolbox_glue="yes";;
1593 *)
1594 enable_toolbox_glue="no";;
1595 esac
1596fi
1597case "$enable_toolbox_glue" in
1598yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001599 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001600 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001601 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1602 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001603 ;;
1604*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001605 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001606 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001607 ;;
1608esac
1609AC_MSG_RESULT($enable_toolbox_glue)
1610
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001611
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001612AC_SUBST(OTHER_LIBTOOL_OPT)
1613case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001614 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001615 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1616 ;;
1617 Darwin/*)
1618 OTHER_LIBTOOL_OPT=""
1619 ;;
1620esac
1621
Ronald Oussoren461f2202009-09-06 10:54:28 +00001622
1623ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001624AC_SUBST(LIBTOOL_CRUFT)
1625case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001626 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001627 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1628 if test "${enable_universalsdk}"; then
1629 :
1630 else
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001631 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001632 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001633 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001634 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001635 Darwin/*)
Ronald Oussorenc0fa2d22010-02-07 11:50:54 +00001636 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001637 if test ${gcc_version} '<' 4.0
1638 then
1639 LIBTOOL_CRUFT="-lcc_dynamic"
1640 else
1641 LIBTOOL_CRUFT=""
1642 fi
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001643 AC_TRY_RUN([
Ronald Oussoren461f2202009-09-06 10:54:28 +00001644 #include <unistd.h>
1645 int main(int argc, char*argv[])
1646 {
1647 if (sizeof(long) == 4) {
1648 return 0;
1649 } else {
1650 return 1;
1651 }
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001652 }
1653 ], ac_osx_32bit=yes,
Ronald Oussoren461f2202009-09-06 10:54:28 +00001654 ac_osx_32bit=no,
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001655 ac_osx_32bit=yes)
Ronald Oussoren461f2202009-09-06 10:54:28 +00001656
1657 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001658 case `/usr/bin/arch` in
Ronald Oussoren461f2202009-09-06 10:54:28 +00001659 i386)
1660 MACOSX_DEFAULT_ARCH="i386"
1661 ;;
1662 ppc)
1663 MACOSX_DEFAULT_ARCH="ppc"
1664 ;;
1665 *)
1666 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1667 ;;
1668 esac
1669 else
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001670 case `/usr/bin/arch` in
Ronald Oussoren461f2202009-09-06 10:54:28 +00001671 i386)
1672 MACOSX_DEFAULT_ARCH="x86_64"
1673 ;;
1674 ppc)
1675 MACOSX_DEFAULT_ARCH="ppc64"
1676 ;;
1677 *)
1678 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1679 ;;
1680 esac
1681
1682 #ARCH_RUN_32BIT="true"
1683 fi
1684
1685 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001686 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001687 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001688esac
1689
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001690AC_MSG_CHECKING(for --enable-framework)
1691if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001692then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001693 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001694 # -F. is needed to allow linking to the framework while
1695 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001696 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1697 [Define if you want to produce an OpenStep/Rhapsody framework
1698 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001699 AC_MSG_RESULT(yes)
Ronald Oussorene6e62672009-06-08 21:19:36 +00001700 if test $enable_shared = "yes"
1701 then
Ronald Oussorend0841712009-09-29 13:01:59 +00001702 AC_MSG_ERROR([Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead. See Mac/README.])
Ronald Oussorene6e62672009-06-08 21:19:36 +00001703 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001704else
1705 AC_MSG_RESULT(no)
1706fi
1707
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001708AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001709case $ac_sys_system/$ac_sys_release in
1710 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001711 AC_DEFINE(WITH_DYLD, 1,
1712 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1713 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1714 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001715 AC_MSG_RESULT(always on for Darwin)
1716 ;;
1717 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001718 AC_MSG_RESULT(no)
1719 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001720esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001721
Guido van Rossumac405f61994-09-12 10:56:06 +00001722# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001723AC_SUBST(SO)
1724AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001725AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001726AC_SUBST(CCSHARED)
1727AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001728# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001729# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001730AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001731if test -z "$SO"
1732then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001733 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001734 hp*|HP*)
1735 case `uname -m` in
1736 ia64) SO=.so;;
1737 *) SO=.sl;;
1738 esac
1739 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001740 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001741 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001742 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001743else
1744 # this might also be a termcap variable, see #610332
1745 echo
1746 echo '====================================================================='
1747 echo '+ +'
1748 echo '+ WARNING: You have set SO in your environment. +'
1749 echo '+ Do you really mean to change the extension for shared libraries? +'
1750 echo '+ Continuing in 10 seconds to let you to ponder. +'
1751 echo '+ +'
1752 echo '====================================================================='
1753 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001754fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001755AC_MSG_RESULT($SO)
Ronald Oussorene9cce8e2009-01-02 10:46:42 +00001756
Neal Norwitz58e28882006-05-19 07:00:58 +00001757AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001758# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001759# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001760# (Shared libraries in this instance are shared modules to be loaded into
1761# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001762AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001763if test -z "$LDSHARED"
1764then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001765 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001766 AIX*)
1767 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001768 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001769 ;;
1770 BeOS*)
1771 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001772 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001773 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001774 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001775 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001776 SunOS/5*)
1777 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001778 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001779 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001780 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001781 hp*|HP*)
1782 if test "$GCC" = "yes"
1783 then LDSHARED='$(CC) -shared'
1784 else LDSHARED='ld -b';
1785 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001786 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001787 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001788 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1789 if test "$enable_framework" ; then
1790 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001791 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1792 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001793 else
1794 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001795 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001796 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001797 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001798 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1799 if test "$enable_framework" ; then
1800 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001801 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1802 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001803 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001804 # No framework, use the Python app as bundle-loader
1805 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001806 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001807 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001808 Darwin/*)
1809 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1810 # This allows an extension to be used in any Python
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001811
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001812 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001813 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001814 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001815 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001816 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001817 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1818 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001819 else
1820 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1821 if test "$enable_framework" ; then
1822 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001823 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1824 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001825 else
1826 # No framework, use the Python app as bundle-loader
1827 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1828 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1829 fi
1830 fi
1831 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001832 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001833 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001834 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001835 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001836 then
Benjamin Peterson697cd212010-05-02 16:45:11 +00001837 LDSHARED='$(CC) -shared ${LDFLAGS}'
Guido van Rossum0286ae82000-08-29 15:06:49 +00001838 else
1839 LDSHARED="ld -Bshareable ${LDFLAGS}"
1840 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001841 OpenBSD*)
1842 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1843 then
1844 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1845 else
1846 case `uname -r` in
1847 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1848 LDSHARED="ld -Bshareable ${LDFLAGS}"
1849 ;;
1850 *)
1851 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1852 ;;
1853 esac
1854 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001855 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001856 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001857 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001858 then LDSHARED='$(CC) -shared'
1859 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001860 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001861 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001862 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001863 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001864 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001865 *) LDSHARED="ld";;
1866 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001867fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001868AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001869BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001870# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001871# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001872AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001873if test -z "$CCSHARED"
1874then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001875 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001876 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001877 then CCSHARED="-fPIC";
1878 elif test `uname -p` = sparc;
1879 then CCSHARED="-xcode=pic32";
1880 else CCSHARED="-Kpic";
1881 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001882 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001883 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001884 else CCSHARED="+z";
1885 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001886 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001887 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001888 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001889 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001890 if test "$GCC" = "yes"
1891 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001892 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001893 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001894 SCO_SV*)
1895 if test "$GCC" = "yes"
1896 then CCSHARED="-fPIC"
1897 else CCSHARED="-Kpic -belf"
1898 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001899 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001900 IRIX*/6*) case $CC in
1901 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001902 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001903 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001904 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001905 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001906fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001907AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001908# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001909# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001910AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001911if test -z "$LINKFORSHARED"
1912then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001913 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001914 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001915 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001916 LINKFORSHARED="-Wl,-E -Wl,+s";;
1917# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001918 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001919 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001920 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001921 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001922 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1923 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001924 # not used by the core itself but which needs to be in the core so
1925 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001926 # -prebind is no longer used, because it actually seems to give a
1927 # slowdown in stead of a speedup, maybe due to the large number of
1928 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001929
1930 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001931 if test "$enable_framework"
1932 then
Jack Jansenda49e192005-01-07 13:08:22 +00001933 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001934 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001935 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001936 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001937 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001938 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001939 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001940 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1941 then
1942 LINKFORSHARED="-Wl,--export-dynamic"
1943 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001944 SunOS/5*) case $CC in
1945 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001946 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001947 then
1948 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001949 fi;;
1950 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001951 CYGWIN*)
1952 if test $enable_shared = "no"
1953 then
1954 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1955 fi;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001956 QNX*)
1957 # -Wl,-E causes the symbols to be added to the dynamic
1958 # symbol table so that they can be found when a module
1959 # is loaded. -N 2048K causes the stack size to be set
1960 # to 2048 kilobytes so that the stack doesn't overflow
1961 # when running test_compile.py.
1962 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001963 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001964fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001965AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001966
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001967
Neil Schemenauer61c51152001-01-26 16:18:16 +00001968AC_SUBST(CFLAGSFORSHARED)
1969AC_MSG_CHECKING(CFLAGSFORSHARED)
1970if test ! "$LIBRARY" = "$LDLIBRARY"
1971then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001972 case $ac_sys_system in
1973 CYGWIN*)
1974 # Cygwin needs CCSHARED when building extension DLLs
1975 # but not when building the interpreter DLL.
1976 CFLAGSFORSHARED='';;
1977 *)
1978 CFLAGSFORSHARED='$(CCSHARED)'
1979 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001980fi
1981AC_MSG_RESULT($CFLAGSFORSHARED)
1982
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001983# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1984# library (with --enable-shared).
1985# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001986# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1987# if it is not required, since it creates a dependency of the shared library
1988# to LIBS. This, in turn, means that applications linking the shared libpython
1989# don't need to link LIBS explicitly. The default should be only changed
1990# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001991AC_SUBST(SHLIBS)
1992AC_MSG_CHECKING(SHLIBS)
1993case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001994 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001995 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001996esac
1997AC_MSG_RESULT($SHLIBS)
1998
1999
Guido van Rossum627b2d71993-12-24 10:39:16 +00002000# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002001AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
2002AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00002003
Georg Brandl5c7f8fb2008-12-05 09:00:55 +00002004# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00002005if test "$with_threads" = "yes" -o -z "$with_threads"; then
2006 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
2007 # posix4 on Solaris 2.6
2008 # pthread (first!) on Linux
2009fi
2010
Martin v. Löwis19d17342003-06-14 21:03:05 +00002011# check if we need libintl for locale functions
2012AC_CHECK_LIB(intl, textdomain,
2013 AC_DEFINE(WITH_LIBINTL, 1,
2014 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002015
2016# checks for system dependent C++ extensions support
2017case "$ac_sys_system" in
2018 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
2019 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
2020 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002021 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
2022 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
2023 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002024 AC_MSG_RESULT(yes)],
2025 [AC_MSG_RESULT(no)]);;
2026 *) ;;
2027esac
2028
Guido van Rossum70c7f481998-03-26 18:44:10 +00002029# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002030# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002031AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002032AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00002033
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00002034case "$ac_sys_system" in
2035BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002036AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
2037;;
2038esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00002039
Guido van Rossumc5a39031996-07-31 17:35:03 +00002040AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002041AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002042 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
2043[
Guido van Rossumc5a39031996-07-31 17:35:03 +00002044AC_MSG_RESULT($withval)
2045LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002046],
2047[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002048
Martin v. Löwis9176fc12006-04-11 11:12:43 +00002049# Check for use of the system libffi library
2050AC_MSG_CHECKING(for --with-system-ffi)
2051AC_ARG_WITH(system_ffi,
2052 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
2053
Martin v. Löwis9176fc12006-04-11 11:12:43 +00002054AC_MSG_RESULT($with_system_ffi)
2055
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002056# Determine if signalmodule should be used.
2057AC_SUBST(USE_SIGNAL_MODULE)
2058AC_SUBST(SIGNAL_OBJS)
2059AC_MSG_CHECKING(for --with-signal-module)
2060AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002061 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002062
2063if test -z "$with_signal_module"
2064then with_signal_module="yes"
2065fi
2066AC_MSG_RESULT($with_signal_module)
2067
2068if test "${with_signal_module}" = "yes"; then
2069 USE_SIGNAL_MODULE=""
2070 SIGNAL_OBJS=""
2071else
2072 USE_SIGNAL_MODULE="#"
2073 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2074fi
2075
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002076# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002077AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002078USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002079
Guido van Rossum54d93d41997-01-22 20:51:58 +00002080AC_MSG_CHECKING(for --with-dec-threads)
2081AC_SUBST(LDLAST)
2082AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002083 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
2084[
Barry Warsawc0d24d82000-06-29 16:12:00 +00002085AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002086LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00002087if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00002088 with_thread="$withval";
2089fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002090[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00002091
Martin v. Löwis11437992002-04-12 09:54:03 +00002092# Templates for things AC_DEFINEd more than once.
2093# For a single AC_DEFINE, no template is needed.
2094AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
2095AH_TEMPLATE(_REENTRANT,
2096 [Define to force use of thread-safe errno, h_errno, and other functions])
2097AH_TEMPLATE(WITH_THREAD,
2098 [Define if you want to compile in rudimentary thread support])
2099
Guido van Rossum54d93d41997-01-22 20:51:58 +00002100AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002101dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00002102AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002103 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002104
Barry Warsawc0d24d82000-06-29 16:12:00 +00002105# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002106dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002107AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002108 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
2109 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002110
2111if test -z "$with_threads"
2112then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002113fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00002114AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002115
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002116AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002117if test "$with_threads" = "no"
2118then
2119 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002120elif test "$ac_cv_pthread_is_default" = yes
2121then
2122 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002123 # Defining _REENTRANT on system with POSIX threads should not hurt.
2124 AC_DEFINE(_REENTRANT)
2125 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002126 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002127elif test "$ac_cv_kpthread" = "yes"
2128then
2129 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002130 if test "$ac_cv_cxx_thread" = "yes"; then
2131 CXX="$CXX -Kpthread"
2132 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002133 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002134 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002135 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002136elif test "$ac_cv_kthread" = "yes"
2137then
2138 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002139 if test "$ac_cv_cxx_thread" = "yes"; then
2140 CXX="$CXX -Kthread"
2141 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002142 AC_DEFINE(WITH_THREAD)
2143 posix_threads=yes
2144 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002145elif test "$ac_cv_pthread" = "yes"
2146then
2147 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002148 if test "$ac_cv_cxx_thread" = "yes"; then
2149 CXX="$CXX -pthread"
2150 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002151 AC_DEFINE(WITH_THREAD)
2152 posix_threads=yes
2153 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00002154else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002155 if test ! -z "$with_threads" -a -d "$with_threads"
2156 then LDFLAGS="$LDFLAGS -L$with_threads"
2157 fi
2158 if test ! -z "$withval" -a -d "$withval"
2159 then LDFLAGS="$LDFLAGS -L$withval"
2160 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002161
2162 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002163 # define _POSIX_THREADS in unistd.h. Some apparently don't
2164 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002165 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2166 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002167 [
2168#include <unistd.h>
2169#ifdef _POSIX_THREADS
2170yes
2171#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002172 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2173 AC_MSG_RESULT($unistd_defines_pthreads)
2174
Martin v. Löwis130fb172001-07-19 11:00:41 +00002175 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002176 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2177 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002178 AC_DEFINE(HURD_C_THREADS, 1,
2179 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002180 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002181 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002182 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2183 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002184 AC_DEFINE(MACH_C_THREADS, 1,
2185 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002186 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002187 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002188 AC_ARG_WITH([pth],
2189 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2190 [AC_MSG_RESULT($withval)
2191 AC_DEFINE([WITH_THREAD])
2192 AC_DEFINE([HAVE_PTH], 1,
2193 [Define if you have GNU PTH threads.])
2194 LIBS="-lpth $LIBS"
2195 THREADOBJ="Python/thread.o"],
2196 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002197
2198 # Just looking for pthread_create in libpthread is not enough:
2199 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2200 # So we really have to include pthread.h, and then link.
2201 _libs=$LIBS
2202 LIBS="$LIBS -lpthread"
2203 AC_MSG_CHECKING([for pthread_create in -lpthread])
2204 AC_TRY_LINK([#include <pthread.h>
2205
2206void * start_routine (void *arg) { exit (0); }], [
2207pthread_create (NULL, NULL, start_routine, NULL)], [
2208 AC_MSG_RESULT(yes)
2209 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002210 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002211 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002212 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002213 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002214 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002215 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002216 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2217 AC_DEFINE(ATHEOS_THREADS, 1,
2218 [Define this if you have AtheOS threads.])
2219 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002220 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002221 AC_DEFINE(BEOS_THREADS, 1,
2222 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002223 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002224 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002225 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002226 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002227 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002228 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002229 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002230 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002231 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002232 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002233 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002234 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002235 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002236 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002237 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002238 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002239 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002240 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00002241 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002242
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002243 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2244 LIBS="$LIBS -lmpc"
2245 THREADOBJ="Python/thread.o"
2246 USE_THREAD_MODULE=""])
2247
2248 if test "$posix_threads" != "yes"; then
2249 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2250 LIBS="$LIBS -lthread"
2251 THREADOBJ="Python/thread.o"
2252 USE_THREAD_MODULE=""])
2253 fi
2254
2255 if test "$USE_THREAD_MODULE" != "#"
2256 then
2257 # If the above checks didn't disable threads, (at least) OSF1
2258 # needs this '-threads' argument during linking.
2259 case $ac_sys_system in
2260 OSF1) LDLAST=-threads;;
2261 esac
2262 fi
2263fi
2264
2265if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002266 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002267 AC_DEFINE(_POSIX_THREADS, 1,
2268 [Define if you have POSIX threads,
2269 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002270 fi
2271
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002272 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2273 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002274 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2275 Defined for Solaris 2.6 bug in pthread header.)
2276 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002277 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002278 Define if the Posix semaphores do not work on your system)
2279 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002280 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2281 Define if the Posix semaphores do not work on your system)
2282 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002283 esac
2284
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002285 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2286 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2287 [AC_TRY_RUN([#include <pthread.h>
2288 void *foo(void *parm) {
2289 return NULL;
2290 }
2291 main() {
2292 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002293 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002294 if (pthread_attr_init(&attr)) exit(-1);
2295 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002296 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002297 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002298 }],
2299 ac_cv_pthread_system_supported=yes,
2300 ac_cv_pthread_system_supported=no,
2301 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002302 ])
2303 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2304 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002305 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002306 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002307 AC_CHECK_FUNCS(pthread_sigmask,
2308 [case $ac_sys_system in
2309 CYGWIN*)
2310 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2311 [Define if pthread_sigmask() does not work on your system.])
2312 ;;
2313 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002314fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002315
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002316
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002317# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002318AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002319AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002320AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002321[ --enable-ipv6 Enable ipv6 (with ipv4) support
2322 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002323[ case "$enableval" in
2324 no)
2325 AC_MSG_RESULT(no)
2326 ipv6=no
2327 ;;
2328 *) AC_MSG_RESULT(yes)
2329 AC_DEFINE(ENABLE_IPV6)
2330 ipv6=yes
2331 ;;
2332 esac ],
2333
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002334[
2335dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002336 AC_TRY_RUN([ /* AF_INET6 available check */
2337#include <sys/types.h>
2338#include <sys/socket.h>
2339main()
2340{
2341 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2342 exit(1);
2343 else
2344 exit(0);
2345}
2346],
2347 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002348 ipv6=yes,
2349 AC_MSG_RESULT(no)
2350 ipv6=no,
2351 AC_MSG_RESULT(no)
2352 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002353)
2354
2355if test "$ipv6" = "yes"; then
2356 AC_MSG_CHECKING(if RFC2553 API is available)
2357 AC_TRY_COMPILE([#include <sys/types.h>
2358#include <netinet/in.h>],
2359 [struct sockaddr_in6 x;
2360x.sin6_scope_id;],
2361 AC_MSG_RESULT(yes)
2362 ipv6=yes,
2363 AC_MSG_RESULT(no, IPv6 disabled)
2364 ipv6=no)
2365fi
2366
2367if test "$ipv6" = "yes"; then
2368 AC_DEFINE(ENABLE_IPV6)
2369fi
2370])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002371
2372ipv6type=unknown
2373ipv6lib=none
2374ipv6trylibc=no
2375
2376if test "$ipv6" = "yes"; then
2377 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002378 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2379 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002380 case $i in
2381 inria)
2382 dnl http://www.kame.net/
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 <netinet/in.h>
2385#ifdef IPV6_INRIA_VERSION
2386yes
2387#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002388 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002389 ;;
2390 kame)
2391 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002392 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002393#include <netinet/in.h>
2394#ifdef __KAME__
2395yes
2396#endif],
2397 [ipv6type=$i;
2398 ipv6lib=inet6
2399 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002400 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002401 ;;
2402 linux-glibc)
2403 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002404 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002405#include <features.h>
2406#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2407yes
2408#endif],
2409 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002410 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002411 ;;
2412 linux-inet6)
2413 dnl http://www.v6.linux.or.jp/
2414 if test -d /usr/inet6; then
2415 ipv6type=$i
2416 ipv6lib=inet6
2417 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002418 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002419 fi
2420 ;;
2421 solaris)
2422 if test -f /etc/netconfig; then
2423 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2424 ipv6type=$i
2425 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002426 fi
2427 fi
2428 ;;
2429 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002430 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002431#include <sys/param.h>
2432#ifdef _TOSHIBA_INET6
2433yes
2434#endif],
2435 [ipv6type=$i;
2436 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002437 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002438 ;;
2439 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002440 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002441#include </usr/local/v6/include/sys/v6config.h>
2442#ifdef __V6D__
2443yes
2444#endif],
2445 [ipv6type=$i;
2446 ipv6lib=v6;
2447 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002448 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002449 ;;
2450 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002451 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002452#include <sys/param.h>
2453#ifdef _ZETA_MINAMI_INET6
2454yes
2455#endif],
2456 [ipv6type=$i;
2457 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002458 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002459 ;;
2460 esac
2461 if test "$ipv6type" != "unknown"; then
2462 break
2463 fi
2464 done
2465 AC_MSG_RESULT($ipv6type)
2466fi
2467
2468if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2469 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2470 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2471 echo "using lib$ipv6lib"
2472 else
2473 if test $ipv6trylibc = "yes"; then
2474 echo "using libc"
2475 else
2476 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2477 echo "You need to fetch lib$ipv6lib.a from appropriate"
2478 echo 'ipv6 kit and compile beforehand.'
2479 exit 1
2480 fi
2481 fi
2482fi
2483
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002484AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2485AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2486 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2487 AC_MSG_RESULT(yes),
2488 AC_MSG_RESULT(no)
2489)
2490
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002491# Check for --with-doc-strings
2492AC_MSG_CHECKING(for --with-doc-strings)
2493AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002494 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002495
2496if test -z "$with_doc_strings"
2497then with_doc_strings="yes"
2498fi
2499if test "$with_doc_strings" != "no"
2500then
2501 AC_DEFINE(WITH_DOC_STRINGS, 1,
2502 [Define if you want documentation strings in extension modules])
2503fi
2504AC_MSG_RESULT($with_doc_strings)
2505
Neil Schemenauera35c6882001-02-27 04:45:05 +00002506# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002507AC_MSG_CHECKING(for --with-tsc)
2508AC_ARG_WITH(tsc,
2509[ --with(out)-tsc enable/disable timestamp counter profile], [
2510if test "$withval" != no
2511then
2512 AC_DEFINE(WITH_TSC, 1,
2513 [Define to profile with the Pentium timestamp counter])
2514 AC_MSG_RESULT(yes)
2515else AC_MSG_RESULT(no)
2516fi],
2517[AC_MSG_RESULT(no)])
2518
2519# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002520AC_MSG_CHECKING(for --with-pymalloc)
2521AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002522 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002523
2524if test -z "$with_pymalloc"
2525then with_pymalloc="yes"
2526fi
2527if test "$with_pymalloc" != "no"
2528then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002529 AC_DEFINE(WITH_PYMALLOC, 1,
2530 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002531fi
2532AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002533
Barry Warsawef82cd72000-06-30 16:21:01 +00002534# Check for --with-wctype-functions
2535AC_MSG_CHECKING(for --with-wctype-functions)
2536AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002537 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2538[
Barry Warsawef82cd72000-06-30 16:21:01 +00002539if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002540then
2541 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2542 [Define if you want wctype.h functions to be used instead of the
2543 one supplied by Python itself. (see Include/unicodectype.h).])
2544 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002545else AC_MSG_RESULT(no)
2546fi],
2547[AC_MSG_RESULT(no)])
2548
Guido van Rossum68242b51996-05-28 22:53:03 +00002549# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002550AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002551DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002552
Guido van Rossume97ee181999-12-20 21:27:22 +00002553# the dlopen() function means we might want to use dynload_shlib.o. some
2554# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002555AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002556
2557# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2558# loading of modules.
2559AC_SUBST(DYNLOADFILE)
2560AC_MSG_CHECKING(DYNLOADFILE)
2561if test -z "$DYNLOADFILE"
2562then
2563 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002564 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2565 if test "$ac_cv_func_dlopen" = yes
2566 then DYNLOADFILE="dynload_shlib.o"
2567 else DYNLOADFILE="dynload_aix.o"
2568 fi
2569 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002570 BeOS*) DYNLOADFILE="dynload_beos.o";;
2571 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002572 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2573 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002574 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002575 *)
2576 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2577 # out any dynamic loading
2578 if test "$ac_cv_func_dlopen" = yes
2579 then DYNLOADFILE="dynload_shlib.o"
2580 else DYNLOADFILE="dynload_stub.o"
2581 fi
2582 ;;
2583 esac
2584fi
2585AC_MSG_RESULT($DYNLOADFILE)
2586if test "$DYNLOADFILE" != "dynload_stub.o"
2587then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002588 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2589 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002590fi
2591
Jack Jansenc49e5b72001-06-19 15:00:23 +00002592# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2593
2594AC_SUBST(MACHDEP_OBJS)
2595AC_MSG_CHECKING(MACHDEP_OBJS)
2596if test -z "$MACHDEP_OBJS"
2597then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002598 MACHDEP_OBJS=$extra_machdep_objs
2599else
2600 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002601fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002602AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002603
Guido van Rossum627b2d71993-12-24 10:39:16 +00002604# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002605AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2606 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002607 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002608 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002609 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002610 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002611 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002612 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002613 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002614 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002615 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002616 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002617
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002618# For some functions, having a definition is not sufficient, since
2619# we want to take their address.
2620AC_MSG_CHECKING(for chroot)
2621AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2622 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2623 AC_MSG_RESULT(yes),
2624 AC_MSG_RESULT(no)
2625)
2626AC_MSG_CHECKING(for link)
2627AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2628 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2629 AC_MSG_RESULT(yes),
2630 AC_MSG_RESULT(no)
2631)
2632AC_MSG_CHECKING(for symlink)
2633AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2634 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2635 AC_MSG_RESULT(yes),
2636 AC_MSG_RESULT(no)
2637)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002638AC_MSG_CHECKING(for fchdir)
2639AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2640 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2641 AC_MSG_RESULT(yes),
2642 AC_MSG_RESULT(no)
2643)
2644AC_MSG_CHECKING(for fsync)
2645AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002646 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002647 AC_MSG_RESULT(yes),
2648 AC_MSG_RESULT(no)
2649)
2650AC_MSG_CHECKING(for fdatasync)
2651AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2652 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2653 AC_MSG_RESULT(yes),
2654 AC_MSG_RESULT(no)
2655)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002656AC_MSG_CHECKING(for epoll)
2657AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2658 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2659 AC_MSG_RESULT(yes),
2660 AC_MSG_RESULT(no)
2661)
2662AC_MSG_CHECKING(for kqueue)
2663AC_TRY_COMPILE([
2664#include <sys/types.h>
2665#include <sys/event.h>
2666 ], int x=kqueue(),
2667 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2668 AC_MSG_RESULT(yes),
2669 AC_MSG_RESULT(no)
2670)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002671# On some systems (eg. FreeBSD 5), we would find a definition of the
2672# functions ctermid_r, setgroups in the library, but no prototype
2673# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2674# address to avoid compiler warnings and potential miscompilations
2675# because of the missing prototypes.
2676
2677AC_MSG_CHECKING(for ctermid_r)
2678AC_TRY_COMPILE([
2679#include "confdefs.h"
2680#include <stdio.h>
2681], void* p = ctermid_r,
2682 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2683 AC_MSG_RESULT(yes),
2684 AC_MSG_RESULT(no)
2685)
2686
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002687AC_MSG_CHECKING(for flock)
2688AC_TRY_COMPILE([
2689#include "confdefs.h"
2690#include <sys/file.h>
2691], void* p = flock,
2692 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2693 AC_MSG_RESULT(yes),
2694 AC_MSG_RESULT(no)
2695)
2696
2697AC_MSG_CHECKING(for getpagesize)
2698AC_TRY_COMPILE([
2699#include "confdefs.h"
2700#include <unistd.h>
2701], void* p = getpagesize,
2702 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2703 AC_MSG_RESULT(yes),
2704 AC_MSG_RESULT(no)
2705)
2706
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002707dnl check for true
2708AC_CHECK_PROGS(TRUE, true, /bin/true)
2709
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002710dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2711dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002712AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002713 AC_CHECK_LIB(resolv, inet_aton)
2714)
2715
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002716# On Tru64, chflags seems to be present, but calling it will
2717# exit Python
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002718AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
2719AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002720#include <sys/stat.h>
2721#include <unistd.h>
2722int main(int argc, char*argv[])
2723{
2724 if(chflags(argv[0], 0) != 0)
2725 return 1;
2726 return 0;
2727}
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002728]], ac_cv_have_chflags=yes,
2729 ac_cv_have_chflags=no,
2730 ac_cv_have_chflags=cross)
2731])
2732if test "$ac_cv_have_chflags" = cross ; then
2733 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2734fi
2735if test "$ac_cv_have_chflags" = yes ; then
2736 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2737fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002738
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002739AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
2740AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002741#include <sys/stat.h>
2742#include <unistd.h>
2743int main(int argc, char*argv[])
2744{
2745 if(lchflags(argv[0], 0) != 0)
2746 return 1;
2747 return 0;
2748}
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002749]], ac_cv_have_lchflags=yes,
2750 ac_cv_have_lchflags=no,
2751 ac_cv_have_lchflags=cross)
2752])
2753if test "$ac_cv_have_lchflags" = cross ; then
2754 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2755fi
2756if test "$ac_cv_have_lchflags" = yes ; then
2757 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2758fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002759
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002760dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002761dnl
2762dnl On MacOSX the linker will search for dylibs on the entire linker path
2763dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2764dnl to revert to a more traditional unix behaviour and make it possible to
2765dnl override the system libz with a local static library of libz. Temporarily
2766dnl add that flag to our CFLAGS as well to ensure that we check the version
2767dnl of libz that will be used by setup.py.
2768dnl The -L/usr/local/lib is needed as wel to get the same compilation
2769dnl environment as setup.py (and leaving it out can cause configure to use the
2770dnl wrong version of the library)
2771case $ac_sys_system/$ac_sys_release in
2772Darwin/*)
2773 _CUR_CFLAGS="${CFLAGS}"
2774 _CUR_LDFLAGS="${LDFLAGS}"
2775 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2776 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2777 ;;
2778esac
2779
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002780AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2781
Ronald Oussorenf8752642006-07-06 10:13:35 +00002782case $ac_sys_system/$ac_sys_release in
2783Darwin/*)
2784 CFLAGS="${_CUR_CFLAGS}"
2785 LDFLAGS="${_CUR_LDFLAGS}"
2786 ;;
2787esac
2788
Martin v. Löwise9416172003-05-03 10:12:45 +00002789AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002790AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002791#include "confdefs.h"
2792#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002793], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002794 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2795 AC_MSG_RESULT(yes),
2796 AC_MSG_RESULT(no)
2797)
2798
2799AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002800AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002801#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002802#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002803#include <sys/socket.h>
2804#include <netinet/in.h>
2805#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002806], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002807 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2808 AC_MSG_RESULT(yes),
2809 AC_MSG_RESULT(no)
2810)
2811
2812AC_MSG_CHECKING(for inet_pton)
2813AC_TRY_COMPILE([
2814#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002815#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002816#include <sys/socket.h>
2817#include <netinet/in.h>
2818#include <arpa/inet.h>
2819], void* p = inet_pton,
2820 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2821 AC_MSG_RESULT(yes),
2822 AC_MSG_RESULT(no)
2823)
2824
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002825# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002826AC_MSG_CHECKING(for setgroups)
2827AC_TRY_COMPILE([
2828#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002829#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002830#ifdef HAVE_GRP_H
2831#include <grp.h>
2832#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002833],
2834void* p = setgroups,
2835 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2836 AC_MSG_RESULT(yes),
2837 AC_MSG_RESULT(no)
2838)
2839
Fred Drake8cef4cf2000-06-28 16:40:38 +00002840# check for openpty and forkpty
2841
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002842AC_CHECK_FUNCS(openpty,,
2843 AC_CHECK_LIB(util,openpty,
2844 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2845 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2846 )
2847)
2848AC_CHECK_FUNCS(forkpty,,
2849 AC_CHECK_LIB(util,forkpty,
2850 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2851 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2852 )
2853)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002854
Brett Cannonaa5778d2008-03-18 04:09:00 +00002855# Stuff for expat.
2856AC_CHECK_FUNCS(memmove)
2857
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002858# check for long file support functions
2859AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2860
Brett Cannonaa5778d2008-03-18 04:09:00 +00002861AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002862AC_CHECK_FUNCS(getpgrp,
2863 AC_TRY_COMPILE([#include <unistd.h>],
2864 [getpgrp(0);],
2865 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2866 [Define if getpgrp() must be called as getpgrp(0).])
2867 )
2868)
Jack Jansen150753c2003-03-29 22:07:47 +00002869AC_CHECK_FUNCS(setpgrp,
2870 AC_TRY_COMPILE([#include <unistd.h>],
2871 [setpgrp(0,0);],
2872 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2873 [Define if setpgrp() must be called as setpgrp(0, 0).])
2874 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002875)
2876AC_CHECK_FUNCS(gettimeofday,
2877 AC_TRY_COMPILE([#include <sys/time.h>],
2878 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2879 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2880 [Define if gettimeofday() does not have second (timezone) argument
2881 This is the case on Motorola V4 (R40V4.2)])
2882 )
2883)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002884
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002885AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002886AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002887#if defined(MAJOR_IN_MKDEV)
2888#include <sys/mkdev.h>
2889#elif defined(MAJOR_IN_SYSMACROS)
2890#include <sys/sysmacros.h>
2891#else
2892#include <sys/types.h>
2893#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002894],[
2895 makedev(major(0),minor(0));
2896],[
2897 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2898 [Define to 1 if you have the device macros.])
2899 AC_MSG_RESULT(yes)
2900],[
2901 AC_MSG_RESULT(no)
2902])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002903
2904# On OSF/1 V5.1, getaddrinfo is available, but a define
2905# for [no]getaddrinfo in netdb.h.
2906AC_MSG_CHECKING(for getaddrinfo)
2907AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002908#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002909#include <sys/socket.h>
2910#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002911#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002912],[
2913getaddrinfo(NULL, NULL, NULL, NULL);
2914], [
2915AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002916AC_MSG_CHECKING(getaddrinfo bug)
2917AC_TRY_RUN([
2918#include <sys/types.h>
2919#include <netdb.h>
2920#include <string.h>
2921#include <sys/socket.h>
2922#include <netinet/in.h>
2923
2924main()
2925{
2926 int passive, gaierr, inet4 = 0, inet6 = 0;
2927 struct addrinfo hints, *ai, *aitop;
2928 char straddr[INET6_ADDRSTRLEN], strport[16];
2929
2930 for (passive = 0; passive <= 1; passive++) {
2931 memset(&hints, 0, sizeof(hints));
2932 hints.ai_family = AF_UNSPEC;
2933 hints.ai_flags = passive ? AI_PASSIVE : 0;
2934 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002935 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002936 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2937 (void)gai_strerror(gaierr);
2938 goto bad;
2939 }
2940 for (ai = aitop; ai; ai = ai->ai_next) {
2941 if (ai->ai_addr == NULL ||
2942 ai->ai_addrlen == 0 ||
2943 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2944 straddr, sizeof(straddr), strport, sizeof(strport),
2945 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2946 goto bad;
2947 }
2948 switch (ai->ai_family) {
2949 case AF_INET:
2950 if (strcmp(strport, "54321") != 0) {
2951 goto bad;
2952 }
2953 if (passive) {
2954 if (strcmp(straddr, "0.0.0.0") != 0) {
2955 goto bad;
2956 }
2957 } else {
2958 if (strcmp(straddr, "127.0.0.1") != 0) {
2959 goto bad;
2960 }
2961 }
2962 inet4++;
2963 break;
2964 case AF_INET6:
2965 if (strcmp(strport, "54321") != 0) {
2966 goto bad;
2967 }
2968 if (passive) {
2969 if (strcmp(straddr, "::") != 0) {
2970 goto bad;
2971 }
2972 } else {
2973 if (strcmp(straddr, "::1") != 0) {
2974 goto bad;
2975 }
2976 }
2977 inet6++;
2978 break;
2979 case AF_UNSPEC:
2980 goto bad;
2981 break;
2982 default:
2983 /* another family support? */
2984 break;
2985 }
2986 }
2987 }
2988
2989 if (!(inet4 == 0 || inet4 == 2))
2990 goto bad;
2991 if (!(inet6 == 0 || inet6 == 2))
2992 goto bad;
2993
2994 if (aitop)
2995 freeaddrinfo(aitop);
2996 exit(0);
2997
2998 bad:
2999 if (aitop)
3000 freeaddrinfo(aitop);
3001 exit(1);
3002}
3003],
3004AC_MSG_RESULT(good)
3005buggygetaddrinfo=no,
3006AC_MSG_RESULT(buggy)
3007buggygetaddrinfo=yes,
3008AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003009buggygetaddrinfo=yes)], [
3010AC_MSG_RESULT(no)
3011buggygetaddrinfo=yes
3012])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003013
3014if test "$buggygetaddrinfo" = "yes"; then
3015 if test "$ipv6" = "yes"; then
3016 echo 'Fatal: You must get working getaddrinfo() function.'
3017 echo ' or you can specify "--disable-ipv6"'.
3018 exit 1
3019 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003020else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003021 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003022fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00003023AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003024
Guido van Rossum627b2d71993-12-24 10:39:16 +00003025# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003026AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00003027AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003028AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00003029AC_CHECK_MEMBERS([struct stat.st_rdev])
3030AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00003031AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003032AC_CHECK_MEMBERS([struct stat.st_gen])
3033AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00003034AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003035
3036AC_MSG_CHECKING(for time.h that defines altzone)
3037AC_CACHE_VAL(ac_cv_header_time_altzone,
3038[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
3039 ac_cv_header_time_altzone=yes,
3040 ac_cv_header_time_altzone=no)])
3041AC_MSG_RESULT($ac_cv_header_time_altzone)
3042if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003043 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003044fi
3045
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003046was_it_defined=no
3047AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003048AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003049#include <sys/types.h>
3050#include <sys/select.h>
3051#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003052], [;], [
3053 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
3054 [Define if you can safely include both <sys/select.h> and <sys/time.h>
3055 (which you can't on SCO ODT 3.0).])
3056 was_it_defined=yes
3057])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003058AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003059
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003060AC_MSG_CHECKING(for addrinfo)
3061AC_CACHE_VAL(ac_cv_struct_addrinfo,
3062AC_TRY_COMPILE([
3063# include <netdb.h>],
3064 [struct addrinfo a],
3065 ac_cv_struct_addrinfo=yes,
3066 ac_cv_struct_addrinfo=no))
3067AC_MSG_RESULT($ac_cv_struct_addrinfo)
3068if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003069 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003070fi
3071
3072AC_MSG_CHECKING(for sockaddr_storage)
3073AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
3074AC_TRY_COMPILE([
3075# include <sys/types.h>
3076# include <sys/socket.h>],
3077 [struct sockaddr_storage s],
3078 ac_cv_struct_sockaddr_storage=yes,
3079 ac_cv_struct_sockaddr_storage=no))
3080AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3081if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003082 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003083fi
3084
Guido van Rossum627b2d71993-12-24 10:39:16 +00003085# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003086
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003087AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003088AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003089
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003090works=no
3091AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003092AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
3093 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
3094)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003095AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003096
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003097works=no
3098AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003099AC_TRY_COMPILE([], [signed char c;], works=yes,
3100 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
3101)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003102AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003103
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003104have_prototypes=no
3105AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003106AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
3107 AC_DEFINE(HAVE_PROTOTYPES, 1,
3108 [Define if your compiler supports function prototype])
3109 have_prototypes=yes
3110])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003111AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003112
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003113works=no
3114AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003115AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003116#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003117int foo(int x, ...) {
3118 va_list va;
3119 va_start(va, x);
3120 va_arg(va, int);
3121 va_arg(va, char *);
3122 va_arg(va, double);
3123 return 0;
3124}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003125], [return foo(10, "", 3.14);], [
3126 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3127 [Define if your compiler supports variable length function prototypes
3128 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3129 works=yes
3130])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003131AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003132
Dave Cole331708b2004-08-09 04:51:41 +00003133# check for socketpair
3134AC_MSG_CHECKING(for socketpair)
3135AC_TRY_COMPILE([
3136#include <sys/types.h>
3137#include <sys/socket.h>
3138], void *x=socketpair,
3139 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3140 AC_MSG_RESULT(yes),
3141 AC_MSG_RESULT(no)
3142)
3143
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003144# check if sockaddr has sa_len member
3145AC_MSG_CHECKING(if sockaddr has sa_len member)
3146AC_TRY_COMPILE([#include <sys/types.h>
3147#include <sys/socket.h>],
3148[struct sockaddr x;
3149x.sa_len = 0;],
3150 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003151 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003152 AC_MSG_RESULT(no))
3153
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003154va_list_is_array=no
3155AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003156AC_TRY_COMPILE([
3157#ifdef HAVE_STDARG_PROTOTYPES
3158#include <stdarg.h>
3159#else
3160#include <varargs.h>
3161#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003162], [va_list list1, list2; list1 = list2;], , [
3163 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3164 va_list_is_array=yes
3165])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003166AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003167
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003168# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003169AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3170 [Define this if you have some version of gethostbyname_r()])
3171
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003172AC_CHECK_FUNC(gethostbyname_r, [
3173 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3174 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3175 OLD_CFLAGS=$CFLAGS
3176 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3177 AC_TRY_COMPILE([
3178# include <netdb.h>
3179 ], [
3180 char *name;
3181 struct hostent *he, *res;
3182 char buffer[2048];
3183 int buflen = 2048;
3184 int h_errnop;
3185
3186 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3187 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003188 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003189 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3190 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003191 AC_MSG_RESULT(yes)
3192 ], [
3193 AC_MSG_RESULT(no)
3194 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3195 AC_TRY_COMPILE([
3196# include <netdb.h>
3197 ], [
3198 char *name;
3199 struct hostent *he;
3200 char buffer[2048];
3201 int buflen = 2048;
3202 int h_errnop;
3203
3204 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3205 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003206 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003207 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3208 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003209 AC_MSG_RESULT(yes)
3210 ], [
3211 AC_MSG_RESULT(no)
3212 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3213 AC_TRY_COMPILE([
3214# include <netdb.h>
3215 ], [
3216 char *name;
3217 struct hostent *he;
3218 struct hostent_data data;
3219
3220 (void) gethostbyname_r(name, he, &data);
3221 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003222 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003223 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3224 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003225 AC_MSG_RESULT(yes)
3226 ], [
3227 AC_MSG_RESULT(no)
3228 ])
3229 ])
3230 ])
3231 CFLAGS=$OLD_CFLAGS
3232], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003233 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003234])
3235AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3236AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3237AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003238AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003239AC_SUBST(HAVE_GETHOSTBYNAME)
3240
Guido van Rossum627b2d71993-12-24 10:39:16 +00003241# checks for system services
3242# (none yet)
3243
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003244# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003245AC_CHECK_FUNC(__fpu_control,
3246 [],
3247 [AC_CHECK_LIB(ieee, __fpu_control)
3248])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003249
Guido van Rossum93274221997-05-09 02:42:00 +00003250# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003251AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00003252AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003253 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3254[
Guido van Rossum93274221997-05-09 02:42:00 +00003255if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003256then
3257 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3258 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3259 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003260else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003261fi],
3262[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003263
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003264# check for --with-libm=...
3265AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003266case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003267Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00003268BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003269*) LIBM=-lm
3270esac
Guido van Rossum93274221997-05-09 02:42:00 +00003271AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003272AC_ARG_WITH(libm,
3273 AC_HELP_STRING(--with-libm=STRING, math library),
3274[
Guido van Rossum93274221997-05-09 02:42:00 +00003275if test "$withval" = no
3276then LIBM=
3277 AC_MSG_RESULT(force LIBM empty)
3278elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003279then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003280 AC_MSG_RESULT(set LIBM="$withval")
3281else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003282fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003283[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003284
3285# check for --with-libc=...
3286AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003287AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003288AC_ARG_WITH(libc,
3289 AC_HELP_STRING(--with-libc=STRING, C library),
3290[
Guido van Rossum93274221997-05-09 02:42:00 +00003291if test "$withval" = no
3292then LIBC=
3293 AC_MSG_RESULT(force LIBC empty)
3294elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003295then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003296 AC_MSG_RESULT(set LIBC="$withval")
3297else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003298fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003299[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003300
Christian Heimes0a8143f2007-12-18 23:22:54 +00003301# ************************************
3302# * Check for mathematical functions *
3303# ************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003304
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003305LIBS_SAVE=$LIBS
3306LIBS="$LIBS $LIBM"
3307
Mark Dickinsone05e8402009-05-04 13:30:43 +00003308# Detect whether system arithmetic is subject to x87-style double
3309# rounding issues. The result of this test has little meaning on non
3310# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3311# mode is round-to-nearest and double rounding issues are present, and
3312# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3313AC_MSG_CHECKING(for x87-style double rounding)
3314AC_CACHE_VAL(ac_cv_x87_double_rounding, [
3315AC_TRY_RUN([
3316#include <stdlib.h>
3317#include <math.h>
3318int main() {
3319 volatile double x, y, z;
3320 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3321 x = 0.99999999999999989; /* 1-2**-53 */
3322 y = 1./x;
3323 if (y != 1.)
3324 exit(0);
3325 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3326 x = 1e16;
3327 y = 2.99999;
3328 z = x + y;
3329 if (z != 1e16+4.)
3330 exit(0);
3331 /* both tests show evidence of double rounding */
3332 exit(1);
3333}
3334],
3335ac_cv_x87_double_rounding=no,
3336ac_cv_x87_double_rounding=yes,
3337ac_cv_x87_double_rounding=no)])
3338AC_MSG_RESULT($ac_cv_x87_double_rounding)
3339if test "$ac_cv_x87_double_rounding" = yes
3340then
3341 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3342 [Define if arithmetic is subject to x87-style double rounding issue])
3343fi
3344
3345
Mark Dickinson265d7382008-04-21 22:32:24 +00003346# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3347# -0. on some architectures.
3348AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3349AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3350AC_TRY_RUN([
3351#include <math.h>
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003352#include <stdlib.h>
Mark Dickinson265d7382008-04-21 22:32:24 +00003353int main() {
3354 /* return 0 if either negative zeros don't exist
3355 on this platform or if negative zeros exist
3356 and tanh(-0.) == -0. */
3357 if (atan2(0., -1.) == atan2(-0., -1.) ||
3358 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3359 else exit(1);
3360}
3361],
3362ac_cv_tanh_preserves_zero_sign=yes,
3363ac_cv_tanh_preserves_zero_sign=no,
3364ac_cv_tanh_preserves_zero_sign=no)])
3365AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3366if test "$ac_cv_tanh_preserves_zero_sign" = yes
3367then
3368 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3369 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3370fi
3371
Mark Dickinsone05e8402009-05-04 13:30:43 +00003372AC_CHECK_FUNCS([acosh asinh atanh copysign expm1 finite hypot log1p])
3373AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes0a8143f2007-12-18 23:22:54 +00003374
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003375LIBS=$LIBS_SAVE
3376
Guido van Rossumef2255b2000-03-10 22:30:29 +00003377# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003378AC_CHECK_HEADER(wchar.h, [
3379 AC_DEFINE(HAVE_WCHAR_H, 1,
3380 [Define if the compiler provides a wchar.h header file.])
3381 wchar_h="yes"
3382],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003383wchar_h="no"
3384)
3385
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003386# determine wchar_t size
3387if test "$wchar_h" = yes
3388then
Guido van Rossum67b26592001-10-20 14:21:45 +00003389 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003390fi
3391
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003392AC_MSG_CHECKING(for UCS-4 tcl)
3393have_ucs4_tcl=no
3394AC_TRY_COMPILE([
3395#include <tcl.h>
3396#if TCL_UTF_MAX != 6
3397# error "NOT UCS4_TCL"
3398#endif], [], [
3399 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3400 have_ucs4_tcl=yes
3401])
3402AC_MSG_RESULT($have_ucs4_tcl)
3403
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003404# check whether wchar_t is signed or not
3405if test "$wchar_h" = yes
3406then
3407 # check whether wchar_t is signed or not
3408 AC_MSG_CHECKING(whether wchar_t is signed)
3409 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3410 AC_TRY_RUN([
3411 #include <wchar.h>
3412 int main()
3413 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003414 /* Success: exit code 0 */
3415 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003416 }
3417 ],
3418 ac_cv_wchar_t_signed=yes,
3419 ac_cv_wchar_t_signed=no,
3420 ac_cv_wchar_t_signed=yes)])
3421 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3422fi
3423
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003424AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003425dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003426AC_ARG_ENABLE(unicode,
Benjamin Petersone631ec42010-05-25 02:27:03 +00003427 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is ucs2)),
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003428 [],
3429 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003430
3431if test $enable_unicode = yes
3432then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003433 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003434 case "$have_ucs4_tcl" in
3435 yes) enable_unicode="ucs4"
3436 ;;
3437 *) enable_unicode="ucs2"
3438 ;;
3439 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003440fi
3441
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003442AH_TEMPLATE(Py_UNICODE_SIZE,
3443 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003444case "$enable_unicode" in
3445ucs2) unicode_size="2"
3446 AC_DEFINE(Py_UNICODE_SIZE,2)
3447 ;;
3448ucs4) unicode_size="4"
3449 AC_DEFINE(Py_UNICODE_SIZE,4)
3450 ;;
Benjamin Peterson726b4822010-02-27 00:15:23 +00003451*) AC_MSG_ERROR([invalid value for --enable-unicode. Use either ucs2 or ucs4 (lowercase).]) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003452esac
3453
Martin v. Löwis11437992002-04-12 09:54:03 +00003454AH_TEMPLATE(PY_UNICODE_TYPE,
3455 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003456
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003457AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003458if test "$enable_unicode" = "no"
3459then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003460 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003461 AC_MSG_RESULT(not used)
3462else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003463 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003464 AC_DEFINE(Py_USING_UNICODE, 1,
3465 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003466
3467 # wchar_t is only usable if it maps to an unsigned type
3468 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003469 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003470 then
3471 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003472 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3473 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003474 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003475 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003476 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3477 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3478 then
3479 PY_UNICODE_TYPE="unsigned short"
3480 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3481 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3482 then
3483 PY_UNICODE_TYPE="unsigned long"
3484 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3485 else
3486 PY_UNICODE_TYPE="no type found"
3487 fi
3488 AC_MSG_RESULT($PY_UNICODE_TYPE)
3489fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003490
3491# check for endianness
3492AC_C_BIGENDIAN
3493
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003494# Check whether right shifting a negative integer extends the sign bit
3495# or fills with zeros (like the Cray J90, according to Tim Peters).
3496AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003497AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003498AC_TRY_RUN([
3499int main()
3500{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003501 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003502}
Guido van Rossum3065c942001-09-17 04:03:14 +00003503],
3504ac_cv_rshift_extends_sign=yes,
3505ac_cv_rshift_extends_sign=no,
3506ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003507AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3508if test "$ac_cv_rshift_extends_sign" = no
3509then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003510 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3511 [Define if i>>j for signed int i does not extend the sign bit
3512 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003513fi
3514
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003515# check for getc_unlocked and related locking functions
3516AC_MSG_CHECKING(for getc_unlocked() and friends)
3517AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3518AC_TRY_LINK([#include <stdio.h>],[
3519 FILE *f = fopen("/dev/null", "r");
3520 flockfile(f);
3521 getc_unlocked(f);
3522 funlockfile(f);
3523], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3524AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3525if test "$ac_cv_have_getc_unlocked" = yes
3526then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003527 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3528 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003529fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003530
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003531# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003532# save the value of LIBS so we don't actually link Python with readline
3533LIBS_no_readline=$LIBS
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003534
3535# On some systems we need to link readline to a termcap compatible
3536# library. NOTE: Keep the precedence of listed libraries synchronised
3537# with setup.py.
3538py_cv_lib_readline=no
3539AC_MSG_CHECKING([how to link readline libs])
3540for py_libtermcap in "" ncursesw ncurses curses termcap; do
3541 if test -z "$py_libtermcap"; then
3542 READLINE_LIBS="-lreadline"
3543 else
3544 READLINE_LIBS="-lreadline -l$py_libtermcap"
3545 fi
3546 LIBS="$READLINE_LIBS $LIBS_no_readline"
3547 AC_LINK_IFELSE(
3548 [AC_LANG_CALL([],[readline])],
3549 [py_cv_lib_readline=yes])
3550 if test $py_cv_lib_readline = yes; then
3551 break
3552 fi
3553done
3554# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3555#AC_SUBST([READLINE_LIBS])
Gregory P. Smith29ec7502008-09-07 19:18:16 +00003556if test $py_cv_lib_readline = no; then
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003557 AC_MSG_RESULT([none])
3558else
3559 AC_MSG_RESULT([$READLINE_LIBS])
3560 AC_DEFINE(HAVE_LIBREADLINE, 1,
3561 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003562fi
3563
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003564# check for readline 2.1
3565AC_CHECK_LIB(readline, rl_callback_handler_install,
3566 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003567 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003568
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003569# check for readline 2.2
3570AC_TRY_CPP([#include <readline/readline.h>],
3571have_readline=yes, have_readline=no)
3572if test $have_readline = yes
3573then
3574 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3575 [readline/readline.h],
3576 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3577 [Define if you have readline 2.2]), )
Antoine Pitrou632e93f2009-10-27 12:30:12 +00003578 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3579 [readline/readline.h],
3580 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3581 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003582fi
3583
Martin v. Löwis0daad592001-09-30 21:09:59 +00003584# check for readline 4.0
3585AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003586 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003587 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003588
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003589# also in 4.0
3590AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3591 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003592 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003593
Guido van Rossum353ae582001-07-10 16:45:32 +00003594# check for readline 4.2
3595AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003596 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003597 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003598
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003599# also in readline 4.2
3600AC_TRY_CPP([#include <readline/readline.h>],
3601have_readline=yes, have_readline=no)
3602if test $have_readline = yes
3603then
3604 AC_EGREP_HEADER([extern int rl_catch_signals;],
3605 [readline/readline.h],
3606 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3607 [Define if you can turn off readline's signal handling.]), )
3608fi
3609
Martin v. Löwis82bca632006-02-10 20:49:30 +00003610# End of readline checks: restore LIBS
3611LIBS=$LIBS_no_readline
3612
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003613AC_MSG_CHECKING(for broken nice())
3614AC_CACHE_VAL(ac_cv_broken_nice, [
3615AC_TRY_RUN([
3616int main()
3617{
3618 int val1 = nice(1);
3619 if (val1 != -1 && val1 == nice(2))
3620 exit(0);
3621 exit(1);
3622}
Guido van Rossum3065c942001-09-17 04:03:14 +00003623],
3624ac_cv_broken_nice=yes,
3625ac_cv_broken_nice=no,
3626ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003627AC_MSG_RESULT($ac_cv_broken_nice)
3628if test "$ac_cv_broken_nice" = yes
3629then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003630 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3631 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003632fi
3633
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003634AC_MSG_CHECKING(for broken poll())
3635AC_TRY_RUN([
3636#include <poll.h>
3637
3638int main (void)
3639 {
3640 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3641
3642 close (42);
3643
3644 int poll_test = poll (&poll_struct, 1, 0);
3645
3646 if (poll_test < 0)
3647 {
3648 exit(0);
3649 }
3650 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3651 {
3652 exit(0);
3653 }
3654 else
3655 {
3656 exit(1);
3657 }
3658 }
3659],
3660ac_cv_broken_poll=yes,
3661ac_cv_broken_poll=no,
3662ac_cv_broken_poll=no)
3663AC_MSG_RESULT($ac_cv_broken_poll)
3664if test "$ac_cv_broken_poll" = yes
3665then
3666 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3667 [Define if poll() sets errno on invalid file descriptors.])
3668fi
3669
Brett Cannon43802422005-02-10 20:48:03 +00003670# Before we can test tzset, we need to check if struct tm has a tm_zone
3671# (which is not required by ISO C or UNIX spec) and/or if we support
3672# tzname[]
3673AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003674
Brett Cannon43802422005-02-10 20:48:03 +00003675# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003676AC_MSG_CHECKING(for working tzset())
3677AC_CACHE_VAL(ac_cv_working_tzset, [
3678AC_TRY_RUN([
3679#include <stdlib.h>
3680#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003681#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003682
3683#if HAVE_TZNAME
3684extern char *tzname[];
3685#endif
3686
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003687int main()
3688{
Brett Cannon18367812003-09-19 00:59:16 +00003689 /* Note that we need to ensure that not only does tzset(3)
3690 do 'something' with localtime, but it works as documented
3691 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003692 This includes making sure that tzname is set properly if
3693 tm->tm_zone does not exist since it is the alternative way
3694 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003695
3696 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003697 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003698 */
3699
Brett Cannon43802422005-02-10 20:48:03 +00003700 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003701 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3702
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003703 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003704 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003705 if (localtime(&groundhogday)->tm_hour != 0)
3706 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003707#if HAVE_TZNAME
3708 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3709 if (strcmp(tzname[0], "UTC") ||
3710 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3711 exit(1);
3712#endif
Brett Cannon18367812003-09-19 00:59:16 +00003713
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003714 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003715 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003716 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003717 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003718#if HAVE_TZNAME
3719 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3720 exit(1);
3721#endif
Brett Cannon18367812003-09-19 00:59:16 +00003722
3723 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3724 tzset();
3725 if (localtime(&groundhogday)->tm_hour != 11)
3726 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003727#if HAVE_TZNAME
3728 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3729 exit(1);
3730#endif
3731
3732#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003733 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3734 exit(1);
3735 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3736 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003737#endif
Brett Cannon18367812003-09-19 00:59:16 +00003738
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003739 exit(0);
3740}
3741],
3742ac_cv_working_tzset=yes,
3743ac_cv_working_tzset=no,
3744ac_cv_working_tzset=no)])
3745AC_MSG_RESULT($ac_cv_working_tzset)
3746if test "$ac_cv_working_tzset" = yes
3747then
3748 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3749 [Define if tzset() actually switches the local timezone in a meaningful way.])
3750fi
3751
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003752# Look for subsecond timestamps in struct stat
3753AC_MSG_CHECKING(for tv_nsec in struct stat)
3754AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3755AC_TRY_COMPILE([#include <sys/stat.h>], [
3756struct stat st;
3757st.st_mtim.tv_nsec = 1;
3758],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003759ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003760ac_cv_stat_tv_nsec=no,
3761ac_cv_stat_tv_nsec=no))
3762AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3763if test "$ac_cv_stat_tv_nsec" = yes
3764then
3765 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3766 [Define if you have struct stat.st_mtim.tv_nsec])
3767fi
3768
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003769# Look for BSD style subsecond timestamps in struct stat
3770AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3771AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3772AC_TRY_COMPILE([#include <sys/stat.h>], [
3773struct stat st;
3774st.st_mtimespec.tv_nsec = 1;
3775],
3776ac_cv_stat_tv_nsec2=yes,
3777ac_cv_stat_tv_nsec2=no,
3778ac_cv_stat_tv_nsec2=no))
3779AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3780if test "$ac_cv_stat_tv_nsec2" = yes
3781then
3782 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3783 [Define if you have struct stat.st_mtimensec])
3784fi
3785
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003786# On HP/UX 11.0, mvwdelch is a block with a return statement
3787AC_MSG_CHECKING(whether mvwdelch is an expression)
3788AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3789AC_TRY_COMPILE([#include <curses.h>], [
3790 int rtn;
3791 rtn = mvwdelch(0,0,0);
3792], ac_cv_mvwdelch_is_expression=yes,
3793 ac_cv_mvwdelch_is_expression=no,
3794 ac_cv_mvwdelch_is_expression=yes))
3795AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3796
3797if test "$ac_cv_mvwdelch_is_expression" = yes
3798then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003799 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3800 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003801fi
3802
3803AC_MSG_CHECKING(whether WINDOW has _flags)
3804AC_CACHE_VAL(ac_cv_window_has_flags,
3805AC_TRY_COMPILE([#include <curses.h>], [
3806 WINDOW *w;
3807 w->_flags = 0;
3808], ac_cv_window_has_flags=yes,
3809 ac_cv_window_has_flags=no,
3810 ac_cv_window_has_flags=no))
3811AC_MSG_RESULT($ac_cv_window_has_flags)
3812
3813
3814if test "$ac_cv_window_has_flags" = yes
3815then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003816 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3817 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003818fi
3819
Walter Dörwald4994d952006-06-19 08:07:50 +00003820AC_MSG_CHECKING(for is_term_resized)
3821AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3822 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3823 AC_MSG_RESULT(yes),
3824 AC_MSG_RESULT(no)
3825)
3826
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003827AC_MSG_CHECKING(for resize_term)
3828AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3829 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003830 AC_MSG_RESULT(yes),
3831 AC_MSG_RESULT(no)
3832)
3833
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003834AC_MSG_CHECKING(for resizeterm)
3835AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3836 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003837 AC_MSG_RESULT(yes),
3838 AC_MSG_RESULT(no)
3839)
3840
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003841AC_MSG_CHECKING(for /dev/ptmx)
3842
3843if test -r /dev/ptmx
3844then
3845 AC_MSG_RESULT(yes)
3846 AC_DEFINE(HAVE_DEV_PTMX, 1,
3847 [Define if we have /dev/ptmx.])
3848else
3849 AC_MSG_RESULT(no)
3850fi
3851
3852AC_MSG_CHECKING(for /dev/ptc)
3853
3854if test -r /dev/ptc
3855then
3856 AC_MSG_RESULT(yes)
3857 AC_DEFINE(HAVE_DEV_PTC, 1,
3858 [Define if we have /dev/ptc.])
3859else
3860 AC_MSG_RESULT(no)
3861fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003862
Brett Cannon09d12362006-05-11 05:11:33 +00003863AC_MSG_CHECKING(for %zd printf() format support)
3864AC_TRY_RUN([#include <stdio.h>
3865#include <stddef.h>
3866#include <string.h>
3867
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003868#ifdef HAVE_SYS_TYPES_H
3869#include <sys/types.h>
3870#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003871
3872#ifdef HAVE_SSIZE_T
3873typedef ssize_t Py_ssize_t;
3874#elif SIZEOF_VOID_P == SIZEOF_LONG
3875typedef long Py_ssize_t;
3876#else
3877typedef int Py_ssize_t;
3878#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003879
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003880int main()
3881{
3882 char buffer[256];
3883
Brett Cannon09d12362006-05-11 05:11:33 +00003884 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3885 return 1;
3886
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003887 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003888 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003889
3890 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3891 return 1;
3892
3893 if (strcmp(buffer, "-123"))
3894 return 1;
3895
Brett Cannon09d12362006-05-11 05:11:33 +00003896 return 0;
3897}],
3898[AC_MSG_RESULT(yes)
3899 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3900 AC_MSG_RESULT(no))
3901
Martin v. Löwis01c04012002-11-11 14:58:44 +00003902AC_CHECK_TYPE(socklen_t,,
3903 AC_DEFINE(socklen_t,int,
3904 Define to `int' if <sys/socket.h> does not define.),[
3905#ifdef HAVE_SYS_TYPES_H
3906#include <sys/types.h>
3907#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003908#ifdef HAVE_SYS_SOCKET_H
3909#include <sys/socket.h>
3910#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003911])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003912
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003913AC_SUBST(THREADHEADERS)
3914
3915for h in `(cd $srcdir;echo Python/thread_*.h)`
3916do
3917 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3918done
3919
Ronald Oussoren55114422009-11-19 16:37:33 +00003920if test $ac_sys_system = Darwin
3921then
3922 LIBS="$LIBS -framework CoreFoundation"
3923fi
3924
3925
3926
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003927AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003928SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003929AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003930for dir in $SRCDIRS; do
3931 if test ! -d $dir; then
3932 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003933 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003934done
3935AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003936
Guido van Rossum627b2d71993-12-24 10:39:16 +00003937# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003938AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3939AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003940
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003941echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003942if test ! -f Modules/Setup
3943then
3944 cp $srcdir/Modules/Setup.dist Modules/Setup
3945fi
3946
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003947echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003948if test ! -f Modules/Setup.local
3949then
3950 echo "# Edit this file for local setup changes" >Modules/Setup.local
3951fi
3952
3953echo "creating Makefile"
3954$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3955 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003956 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003957
3958case $ac_sys_system in
3959BeOS)
3960 AC_MSG_WARN([
3961
3962 Support for BeOS is deprecated as of Python 2.6.
3963 See PEP 11 for the gory details.
3964 ])
3965 ;;
3966*) ;;
3967esac
3968
Neil Schemenauer66252162001-02-19 04:47:42 +00003969mv config.c Modules