blob: 125a9269a5bc27d4a0ed8450c23496a13d0cedcd [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)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001363AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001364 [ makedev(0, 0) ],
1365 ac_cv_has_makedev=yes,
1366 ac_cv_has_makedev=no)
1367if test "$ac_cv_has_makedev" = "no"; then
1368 # we didn't link, try if _OSF_SOURCE will allow us to link
1369 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001370#define _OSF_SOURCE 1
1371#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001372 ],
1373 [ makedev(0, 0) ],
1374 ac_cv_has_makedev=yes,
1375 ac_cv_has_makedev=no)
1376 if test "$ac_cv_has_makedev" = "yes"; then
1377 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1378 fi
1379fi
1380AC_MSG_RESULT($ac_cv_has_makedev)
1381if test "$ac_cv_has_makedev" = "yes"; then
1382 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1383fi
1384
Martin v. Löwis399a6892002-10-04 10:22:02 +00001385# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1386# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1387# defined, but the compiler does not support pragma redefine_extname,
1388# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1389# structures (such as rlimit64) without declaring them. As a
1390# work-around, disable LFS on such configurations
1391
1392use_lfs=yes
1393AC_MSG_CHECKING(Solaris LFS bug)
1394AC_TRY_COMPILE([
1395#define _LARGEFILE_SOURCE 1
1396#define _FILE_OFFSET_BITS 64
1397#include <sys/resource.h>
1398],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1399AC_MSG_RESULT($sol_lfs_bug)
1400if test "$sol_lfs_bug" = "yes"; then
1401 use_lfs=no
1402fi
1403
1404if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001405# Two defines needed to enable largefile support on various platforms
1406# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001407AC_DEFINE(_LARGEFILE_SOURCE, 1,
1408[This must be defined on some systems to enable large file support.])
1409AC_DEFINE(_FILE_OFFSET_BITS, 64,
1410[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001411fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001412
Guido van Rossum300fda71996-08-19 21:58:16 +00001413# Add some code to confdefs.h so that the test for off_t works on SCO
1414cat >> confdefs.h <<\EOF
1415#if defined(SCO_DS)
1416#undef _OFF_T
1417#endif
1418EOF
1419
Guido van Rossumef2255b2000-03-10 22:30:29 +00001420# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001421AC_TYPE_MODE_T
1422AC_TYPE_OFF_T
1423AC_TYPE_PID_T
1424AC_TYPE_SIGNAL
1425AC_TYPE_SIZE_T
1426AC_TYPE_UID_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001427AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001428 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001429
Guido van Rossumef2255b2000-03-10 22:30:29 +00001430# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001431# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001432AC_CHECK_SIZEOF(int, 4)
1433AC_CHECK_SIZEOF(long, 4)
1434AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001435AC_CHECK_SIZEOF(short, 2)
1436AC_CHECK_SIZEOF(float, 4)
1437AC_CHECK_SIZEOF(double, 8)
1438AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001439AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001440AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001441
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001442AC_MSG_CHECKING(for long long support)
1443have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001444AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1445 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1446 have_long_long=yes
1447])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001448AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001449if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001450AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001451fi
1452
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001453AC_MSG_CHECKING(for long double support)
1454have_long_double=no
1455AC_TRY_COMPILE([], [long double x; x = (long double)0.;], [
1456 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1457 have_long_double=yes
1458])
1459AC_MSG_RESULT($have_long_double)
Mark Dickinsondc1688a2008-06-27 22:20:14 +00001460if test "$have_long_double" = yes ; then
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001461AC_CHECK_SIZEOF(long double, 12)
1462fi
1463
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001464AC_MSG_CHECKING(for _Bool support)
1465have_c99_bool=no
1466AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1467 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1468 have_c99_bool=yes
1469])
1470AC_MSG_RESULT($have_c99_bool)
1471if test "$have_c99_bool" = yes ; then
1472AC_CHECK_SIZEOF(_Bool, 1)
1473fi
1474
Martin v. Löwisebe26702006-10-02 14:55:51 +00001475AC_CHECK_TYPES(uintptr_t,
1476 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001477 [], [#ifdef HAVE_STDINT_H
1478 #include <stdint.h>
1479 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001480
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001481
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001482# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1483AC_MSG_CHECKING(size of off_t)
1484AC_CACHE_VAL(ac_cv_sizeof_off_t,
1485[AC_TRY_RUN([#include <stdio.h>
1486#include <sys/types.h>
1487main()
1488{
1489 FILE *f=fopen("conftestval", "w");
1490 if (!f) exit(1);
1491 fprintf(f, "%d\n", sizeof(off_t));
1492 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001493}],
1494ac_cv_sizeof_off_t=`cat conftestval`,
1495ac_cv_sizeof_off_t=0,
1496ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001497])
1498AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001499AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1500[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001501
1502AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinsoncaa44c02009-12-31 21:20:06 +00001503if test "$have_long_long" = yes
1504then
1505if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001506 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001507 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1508 [Defined to enable large file support when an off_t is bigger than a long
1509 and long long is available and at least as big as an off_t. You may need
1510 to add some flags for configuration and compilation to enable this mode.
1511 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001512 AC_MSG_RESULT(yes)
1513else
1514 AC_MSG_RESULT(no)
1515fi
Mark Dickinsoncaa44c02009-12-31 21:20:06 +00001516else
1517 AC_MSG_RESULT(no)
1518fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001519
Fred Drakea3f6e912000-06-29 20:44:47 +00001520# AC_CHECK_SIZEOF() doesn't include <time.h>.
1521AC_MSG_CHECKING(size of time_t)
1522AC_CACHE_VAL(ac_cv_sizeof_time_t,
1523[AC_TRY_RUN([#include <stdio.h>
1524#include <time.h>
1525main()
1526{
1527 FILE *f=fopen("conftestval", "w");
1528 if (!f) exit(1);
1529 fprintf(f, "%d\n", sizeof(time_t));
1530 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001531}],
1532ac_cv_sizeof_time_t=`cat conftestval`,
1533ac_cv_sizeof_time_t=0,
1534ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001535])
1536AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001537AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1538[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001539
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001540
Trent Mick635f6fb2000-08-23 21:33:05 +00001541# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001542ac_save_cc="$CC"
1543if test "$ac_cv_kpthread" = "yes"
1544then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001545elif test "$ac_cv_kthread" = "yes"
1546then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001547elif test "$ac_cv_pthread" = "yes"
1548then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001549fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001550AC_MSG_CHECKING(for pthread_t)
1551have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001552AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001553AC_MSG_RESULT($have_pthread_t)
1554if test "$have_pthread_t" = yes ; then
1555 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1556 AC_MSG_CHECKING(size of pthread_t)
1557 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1558 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001559#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001560 main()
1561 {
1562 FILE *f=fopen("conftestval", "w");
1563 if (!f) exit(1);
1564 fprintf(f, "%d\n", sizeof(pthread_t));
1565 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001566 }],
1567 ac_cv_sizeof_pthread_t=`cat conftestval`,
1568 ac_cv_sizeof_pthread_t=0,
1569 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001570 ])
1571 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001572 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1573 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001574fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001575CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001576
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001577AC_MSG_CHECKING(for --enable-toolbox-glue)
1578AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001579 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001580
1581if test -z "$enable_toolbox_glue"
1582then
1583 case $ac_sys_system/$ac_sys_release in
1584 Darwin/*)
1585 enable_toolbox_glue="yes";;
1586 *)
1587 enable_toolbox_glue="no";;
1588 esac
1589fi
1590case "$enable_toolbox_glue" in
1591yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001592 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001593 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001594 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1595 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001596 ;;
1597*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001598 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001599 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001600 ;;
1601esac
1602AC_MSG_RESULT($enable_toolbox_glue)
1603
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001604
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001605AC_SUBST(OTHER_LIBTOOL_OPT)
1606case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001607 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001608 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1609 ;;
1610 Darwin/*)
1611 OTHER_LIBTOOL_OPT=""
1612 ;;
1613esac
1614
Ronald Oussoren461f2202009-09-06 10:54:28 +00001615
1616ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001617AC_SUBST(LIBTOOL_CRUFT)
1618case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001619 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001620 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1621 if test "${enable_universalsdk}"; then
1622 :
1623 else
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001624 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001625 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001626 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001627 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001628 Darwin/*)
Ronald Oussorenc0fa2d22010-02-07 11:50:54 +00001629 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001630 if test ${gcc_version} '<' 4.0
1631 then
1632 LIBTOOL_CRUFT="-lcc_dynamic"
1633 else
1634 LIBTOOL_CRUFT=""
1635 fi
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001636 AC_TRY_RUN([
Ronald Oussoren461f2202009-09-06 10:54:28 +00001637 #include <unistd.h>
1638 int main(int argc, char*argv[])
1639 {
1640 if (sizeof(long) == 4) {
1641 return 0;
1642 } else {
1643 return 1;
1644 }
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001645 }
1646 ], ac_osx_32bit=yes,
Ronald Oussoren461f2202009-09-06 10:54:28 +00001647 ac_osx_32bit=no,
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001648 ac_osx_32bit=yes)
Ronald Oussoren461f2202009-09-06 10:54:28 +00001649
1650 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001651 case `/usr/bin/arch` in
Ronald Oussoren461f2202009-09-06 10:54:28 +00001652 i386)
1653 MACOSX_DEFAULT_ARCH="i386"
1654 ;;
1655 ppc)
1656 MACOSX_DEFAULT_ARCH="ppc"
1657 ;;
1658 *)
1659 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1660 ;;
1661 esac
1662 else
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001663 case `/usr/bin/arch` in
Ronald Oussoren461f2202009-09-06 10:54:28 +00001664 i386)
1665 MACOSX_DEFAULT_ARCH="x86_64"
1666 ;;
1667 ppc)
1668 MACOSX_DEFAULT_ARCH="ppc64"
1669 ;;
1670 *)
1671 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1672 ;;
1673 esac
1674
1675 #ARCH_RUN_32BIT="true"
1676 fi
1677
1678 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001679 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001680 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001681esac
1682
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001683AC_MSG_CHECKING(for --enable-framework)
1684if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001685then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001686 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001687 # -F. is needed to allow linking to the framework while
1688 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001689 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1690 [Define if you want to produce an OpenStep/Rhapsody framework
1691 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001692 AC_MSG_RESULT(yes)
Ronald Oussorene6e62672009-06-08 21:19:36 +00001693 if test $enable_shared = "yes"
1694 then
Ronald Oussorend0841712009-09-29 13:01:59 +00001695 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 +00001696 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001697else
1698 AC_MSG_RESULT(no)
1699fi
1700
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001701AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001702case $ac_sys_system/$ac_sys_release in
1703 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001704 AC_DEFINE(WITH_DYLD, 1,
1705 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1706 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1707 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001708 AC_MSG_RESULT(always on for Darwin)
1709 ;;
1710 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001711 AC_MSG_RESULT(no)
1712 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001713esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001714
Guido van Rossumac405f61994-09-12 10:56:06 +00001715# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001716AC_SUBST(SO)
1717AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001718AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001719AC_SUBST(CCSHARED)
1720AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001721# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001722# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001723AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001724if test -z "$SO"
1725then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001726 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001727 hp*|HP*)
1728 case `uname -m` in
1729 ia64) SO=.so;;
1730 *) SO=.sl;;
1731 esac
1732 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001733 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001734 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001735 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001736else
1737 # this might also be a termcap variable, see #610332
1738 echo
1739 echo '====================================================================='
1740 echo '+ +'
1741 echo '+ WARNING: You have set SO in your environment. +'
1742 echo '+ Do you really mean to change the extension for shared libraries? +'
1743 echo '+ Continuing in 10 seconds to let you to ponder. +'
1744 echo '+ +'
1745 echo '====================================================================='
1746 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001747fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001748AC_MSG_RESULT($SO)
Ronald Oussorene9cce8e2009-01-02 10:46:42 +00001749
Neal Norwitz58e28882006-05-19 07:00:58 +00001750AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001751# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001752# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001753# (Shared libraries in this instance are shared modules to be loaded into
1754# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001755AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001756if test -z "$LDSHARED"
1757then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001758 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001759 AIX*)
1760 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001761 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001762 ;;
1763 BeOS*)
1764 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001765 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001766 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001767 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001768 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001769 SunOS/5*)
1770 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001771 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001772 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001773 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001774 hp*|HP*)
1775 if test "$GCC" = "yes"
1776 then LDSHARED='$(CC) -shared'
1777 else LDSHARED='ld -b';
1778 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001779 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001780 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001781 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1782 if test "$enable_framework" ; then
1783 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001784 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1785 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001786 else
1787 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001788 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001789 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001790 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001791 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1792 if test "$enable_framework" ; then
1793 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001794 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1795 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001796 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001797 # No framework, use the Python app as bundle-loader
1798 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001799 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001800 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001801 Darwin/*)
1802 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1803 # This allows an extension to be used in any Python
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001804
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001805 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001806 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001807 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001808 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001809 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001810 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1811 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001812 else
1813 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1814 if test "$enable_framework" ; then
1815 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001816 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1817 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001818 else
1819 # No framework, use the Python app as bundle-loader
1820 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1821 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1822 fi
1823 fi
1824 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001825 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001826 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001827 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001828 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001829 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001830 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001831 else
1832 LDSHARED="ld -Bshareable ${LDFLAGS}"
1833 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001834 OpenBSD*)
1835 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1836 then
1837 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1838 else
1839 case `uname -r` in
1840 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1841 LDSHARED="ld -Bshareable ${LDFLAGS}"
1842 ;;
1843 *)
1844 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1845 ;;
1846 esac
1847 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001848 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001849 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001850 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001851 then LDSHARED='$(CC) -shared'
1852 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001853 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001854 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001855 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001856 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001857 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001858 *) LDSHARED="ld";;
1859 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001860fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001861AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001862BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001863# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001864# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001865AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001866if test -z "$CCSHARED"
1867then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001868 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001869 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001870 then CCSHARED="-fPIC";
1871 elif test `uname -p` = sparc;
1872 then CCSHARED="-xcode=pic32";
1873 else CCSHARED="-Kpic";
1874 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001875 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001876 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001877 else CCSHARED="+z";
1878 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001879 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001880 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001881 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001882 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001883 if test "$GCC" = "yes"
1884 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001885 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001886 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001887 SCO_SV*)
1888 if test "$GCC" = "yes"
1889 then CCSHARED="-fPIC"
1890 else CCSHARED="-Kpic -belf"
1891 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001892 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001893 IRIX*/6*) case $CC in
1894 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001895 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001896 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001897 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001898 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001899fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001900AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001901# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001902# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001903AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001904if test -z "$LINKFORSHARED"
1905then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001906 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001907 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001908 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001909 LINKFORSHARED="-Wl,-E -Wl,+s";;
1910# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001911 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001912 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001913 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001914 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001915 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1916 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001917 # not used by the core itself but which needs to be in the core so
1918 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001919 # -prebind is no longer used, because it actually seems to give a
1920 # slowdown in stead of a speedup, maybe due to the large number of
1921 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001922
1923 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001924 if test "$enable_framework"
1925 then
Jack Jansenda49e192005-01-07 13:08:22 +00001926 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001927 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001928 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001929 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001930 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001931 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001932 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001933 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1934 then
1935 LINKFORSHARED="-Wl,--export-dynamic"
1936 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001937 SunOS/5*) case $CC in
1938 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001939 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001940 then
1941 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001942 fi;;
1943 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001944 CYGWIN*)
1945 if test $enable_shared = "no"
1946 then
1947 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1948 fi;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001949 QNX*)
1950 # -Wl,-E causes the symbols to be added to the dynamic
1951 # symbol table so that they can be found when a module
1952 # is loaded. -N 2048K causes the stack size to be set
1953 # to 2048 kilobytes so that the stack doesn't overflow
1954 # when running test_compile.py.
1955 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001956 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001957fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001958AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001959
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001960
Neil Schemenauer61c51152001-01-26 16:18:16 +00001961AC_SUBST(CFLAGSFORSHARED)
1962AC_MSG_CHECKING(CFLAGSFORSHARED)
1963if test ! "$LIBRARY" = "$LDLIBRARY"
1964then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001965 case $ac_sys_system in
1966 CYGWIN*)
1967 # Cygwin needs CCSHARED when building extension DLLs
1968 # but not when building the interpreter DLL.
1969 CFLAGSFORSHARED='';;
1970 *)
1971 CFLAGSFORSHARED='$(CCSHARED)'
1972 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001973fi
1974AC_MSG_RESULT($CFLAGSFORSHARED)
1975
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001976# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1977# library (with --enable-shared).
1978# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001979# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1980# if it is not required, since it creates a dependency of the shared library
1981# to LIBS. This, in turn, means that applications linking the shared libpython
1982# don't need to link LIBS explicitly. The default should be only changed
1983# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001984AC_SUBST(SHLIBS)
1985AC_MSG_CHECKING(SHLIBS)
1986case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001987 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001988 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001989esac
1990AC_MSG_RESULT($SHLIBS)
1991
1992
Guido van Rossum627b2d71993-12-24 10:39:16 +00001993# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001994AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1995AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001996
Georg Brandl5c7f8fb2008-12-05 09:00:55 +00001997# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00001998if test "$with_threads" = "yes" -o -z "$with_threads"; then
1999 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
2000 # posix4 on Solaris 2.6
2001 # pthread (first!) on Linux
2002fi
2003
Martin v. Löwis19d17342003-06-14 21:03:05 +00002004# check if we need libintl for locale functions
2005AC_CHECK_LIB(intl, textdomain,
2006 AC_DEFINE(WITH_LIBINTL, 1,
2007 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002008
2009# checks for system dependent C++ extensions support
2010case "$ac_sys_system" in
2011 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
2012 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
2013 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002014 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
2015 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
2016 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002017 AC_MSG_RESULT(yes)],
2018 [AC_MSG_RESULT(no)]);;
2019 *) ;;
2020esac
2021
Guido van Rossum70c7f481998-03-26 18:44:10 +00002022# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002023# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002024AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002025AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00002026
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00002027case "$ac_sys_system" in
2028BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002029AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
2030;;
2031esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00002032
Guido van Rossumc5a39031996-07-31 17:35:03 +00002033AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002034AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002035 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
2036[
Guido van Rossumc5a39031996-07-31 17:35:03 +00002037AC_MSG_RESULT($withval)
2038LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002039],
2040[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002041
Martin v. Löwis9176fc12006-04-11 11:12:43 +00002042# Check for use of the system libffi library
2043AC_MSG_CHECKING(for --with-system-ffi)
2044AC_ARG_WITH(system_ffi,
2045 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
2046
Martin v. Löwis9176fc12006-04-11 11:12:43 +00002047AC_MSG_RESULT($with_system_ffi)
2048
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002049# Determine if signalmodule should be used.
2050AC_SUBST(USE_SIGNAL_MODULE)
2051AC_SUBST(SIGNAL_OBJS)
2052AC_MSG_CHECKING(for --with-signal-module)
2053AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002054 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002055
2056if test -z "$with_signal_module"
2057then with_signal_module="yes"
2058fi
2059AC_MSG_RESULT($with_signal_module)
2060
2061if test "${with_signal_module}" = "yes"; then
2062 USE_SIGNAL_MODULE=""
2063 SIGNAL_OBJS=""
2064else
2065 USE_SIGNAL_MODULE="#"
2066 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2067fi
2068
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002069# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002070AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002071USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002072
Guido van Rossum54d93d41997-01-22 20:51:58 +00002073AC_MSG_CHECKING(for --with-dec-threads)
2074AC_SUBST(LDLAST)
2075AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002076 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
2077[
Barry Warsawc0d24d82000-06-29 16:12:00 +00002078AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002079LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00002080if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00002081 with_thread="$withval";
2082fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002083[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00002084
Martin v. Löwis11437992002-04-12 09:54:03 +00002085# Templates for things AC_DEFINEd more than once.
2086# For a single AC_DEFINE, no template is needed.
2087AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
2088AH_TEMPLATE(_REENTRANT,
2089 [Define to force use of thread-safe errno, h_errno, and other functions])
2090AH_TEMPLATE(WITH_THREAD,
2091 [Define if you want to compile in rudimentary thread support])
2092
Guido van Rossum54d93d41997-01-22 20:51:58 +00002093AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002094dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00002095AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002096 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002097
Barry Warsawc0d24d82000-06-29 16:12:00 +00002098# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002099dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002100AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002101 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
2102 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002103
2104if test -z "$with_threads"
2105then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002106fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00002107AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002108
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002109AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002110if test "$with_threads" = "no"
2111then
2112 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002113elif test "$ac_cv_pthread_is_default" = yes
2114then
2115 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002116 # Defining _REENTRANT on system with POSIX threads should not hurt.
2117 AC_DEFINE(_REENTRANT)
2118 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002119 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002120elif test "$ac_cv_kpthread" = "yes"
2121then
2122 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002123 if test "$ac_cv_cxx_thread" = "yes"; then
2124 CXX="$CXX -Kpthread"
2125 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002126 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002127 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002128 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002129elif test "$ac_cv_kthread" = "yes"
2130then
2131 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002132 if test "$ac_cv_cxx_thread" = "yes"; then
2133 CXX="$CXX -Kthread"
2134 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002135 AC_DEFINE(WITH_THREAD)
2136 posix_threads=yes
2137 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002138elif test "$ac_cv_pthread" = "yes"
2139then
2140 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002141 if test "$ac_cv_cxx_thread" = "yes"; then
2142 CXX="$CXX -pthread"
2143 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002144 AC_DEFINE(WITH_THREAD)
2145 posix_threads=yes
2146 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00002147else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002148 if test ! -z "$with_threads" -a -d "$with_threads"
2149 then LDFLAGS="$LDFLAGS -L$with_threads"
2150 fi
2151 if test ! -z "$withval" -a -d "$withval"
2152 then LDFLAGS="$LDFLAGS -L$withval"
2153 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002154
2155 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002156 # define _POSIX_THREADS in unistd.h. Some apparently don't
2157 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002158 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2159 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002160 [
2161#include <unistd.h>
2162#ifdef _POSIX_THREADS
2163yes
2164#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002165 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2166 AC_MSG_RESULT($unistd_defines_pthreads)
2167
Martin v. Löwis130fb172001-07-19 11:00:41 +00002168 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002169 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2170 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002171 AC_DEFINE(HURD_C_THREADS, 1,
2172 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002173 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002174 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002175 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2176 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002177 AC_DEFINE(MACH_C_THREADS, 1,
2178 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002179 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002180 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002181 AC_ARG_WITH([pth],
2182 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2183 [AC_MSG_RESULT($withval)
2184 AC_DEFINE([WITH_THREAD])
2185 AC_DEFINE([HAVE_PTH], 1,
2186 [Define if you have GNU PTH threads.])
2187 LIBS="-lpth $LIBS"
2188 THREADOBJ="Python/thread.o"],
2189 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002190
2191 # Just looking for pthread_create in libpthread is not enough:
2192 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2193 # So we really have to include pthread.h, and then link.
2194 _libs=$LIBS
2195 LIBS="$LIBS -lpthread"
2196 AC_MSG_CHECKING([for pthread_create in -lpthread])
2197 AC_TRY_LINK([#include <pthread.h>
2198
2199void * start_routine (void *arg) { exit (0); }], [
2200pthread_create (NULL, NULL, start_routine, NULL)], [
2201 AC_MSG_RESULT(yes)
2202 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002203 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002204 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002205 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002206 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002207 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002208 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002209 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2210 AC_DEFINE(ATHEOS_THREADS, 1,
2211 [Define this if you have AtheOS threads.])
2212 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002213 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002214 AC_DEFINE(BEOS_THREADS, 1,
2215 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002216 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002217 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002218 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002219 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002220 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002221 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002222 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002223 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002224 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002225 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002226 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002227 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002228 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002229 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002230 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002231 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002232 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002233 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00002234 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002235
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002236 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2237 LIBS="$LIBS -lmpc"
2238 THREADOBJ="Python/thread.o"
2239 USE_THREAD_MODULE=""])
2240
2241 if test "$posix_threads" != "yes"; then
2242 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2243 LIBS="$LIBS -lthread"
2244 THREADOBJ="Python/thread.o"
2245 USE_THREAD_MODULE=""])
2246 fi
2247
2248 if test "$USE_THREAD_MODULE" != "#"
2249 then
2250 # If the above checks didn't disable threads, (at least) OSF1
2251 # needs this '-threads' argument during linking.
2252 case $ac_sys_system in
2253 OSF1) LDLAST=-threads;;
2254 esac
2255 fi
2256fi
2257
2258if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002259 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002260 AC_DEFINE(_POSIX_THREADS, 1,
2261 [Define if you have POSIX threads,
2262 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002263 fi
2264
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002265 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2266 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002267 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2268 Defined for Solaris 2.6 bug in pthread header.)
2269 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002270 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002271 Define if the Posix semaphores do not work on your system)
2272 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002273 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2274 Define if the Posix semaphores do not work on your system)
2275 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002276 esac
2277
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002278 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2279 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2280 [AC_TRY_RUN([#include <pthread.h>
2281 void *foo(void *parm) {
2282 return NULL;
2283 }
2284 main() {
2285 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002286 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002287 if (pthread_attr_init(&attr)) exit(-1);
2288 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002289 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002290 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002291 }],
2292 ac_cv_pthread_system_supported=yes,
2293 ac_cv_pthread_system_supported=no,
2294 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002295 ])
2296 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2297 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002298 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002299 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002300 AC_CHECK_FUNCS(pthread_sigmask,
2301 [case $ac_sys_system in
2302 CYGWIN*)
2303 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2304 [Define if pthread_sigmask() does not work on your system.])
2305 ;;
2306 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002307fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002308
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002309
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002310# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002311AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002312AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002313AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002314[ --enable-ipv6 Enable ipv6 (with ipv4) support
2315 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002316[ case "$enableval" in
2317 no)
2318 AC_MSG_RESULT(no)
2319 ipv6=no
2320 ;;
2321 *) AC_MSG_RESULT(yes)
2322 AC_DEFINE(ENABLE_IPV6)
2323 ipv6=yes
2324 ;;
2325 esac ],
2326
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002327[
2328dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002329 AC_TRY_RUN([ /* AF_INET6 available check */
2330#include <sys/types.h>
2331#include <sys/socket.h>
2332main()
2333{
2334 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2335 exit(1);
2336 else
2337 exit(0);
2338}
2339],
2340 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002341 ipv6=yes,
2342 AC_MSG_RESULT(no)
2343 ipv6=no,
2344 AC_MSG_RESULT(no)
2345 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002346)
2347
2348if test "$ipv6" = "yes"; then
2349 AC_MSG_CHECKING(if RFC2553 API is available)
2350 AC_TRY_COMPILE([#include <sys/types.h>
2351#include <netinet/in.h>],
2352 [struct sockaddr_in6 x;
2353x.sin6_scope_id;],
2354 AC_MSG_RESULT(yes)
2355 ipv6=yes,
2356 AC_MSG_RESULT(no, IPv6 disabled)
2357 ipv6=no)
2358fi
2359
2360if test "$ipv6" = "yes"; then
2361 AC_DEFINE(ENABLE_IPV6)
2362fi
2363])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002364
2365ipv6type=unknown
2366ipv6lib=none
2367ipv6trylibc=no
2368
2369if test "$ipv6" = "yes"; then
2370 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002371 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2372 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002373 case $i in
2374 inria)
2375 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002376 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002377#include <netinet/in.h>
2378#ifdef IPV6_INRIA_VERSION
2379yes
2380#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002381 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002382 ;;
2383 kame)
2384 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002385 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002386#include <netinet/in.h>
2387#ifdef __KAME__
2388yes
2389#endif],
2390 [ipv6type=$i;
2391 ipv6lib=inet6
2392 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002393 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002394 ;;
2395 linux-glibc)
2396 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002397 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002398#include <features.h>
2399#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2400yes
2401#endif],
2402 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002403 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002404 ;;
2405 linux-inet6)
2406 dnl http://www.v6.linux.or.jp/
2407 if test -d /usr/inet6; then
2408 ipv6type=$i
2409 ipv6lib=inet6
2410 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002411 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002412 fi
2413 ;;
2414 solaris)
2415 if test -f /etc/netconfig; then
2416 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2417 ipv6type=$i
2418 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002419 fi
2420 fi
2421 ;;
2422 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002423 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002424#include <sys/param.h>
2425#ifdef _TOSHIBA_INET6
2426yes
2427#endif],
2428 [ipv6type=$i;
2429 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002430 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002431 ;;
2432 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002433 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002434#include </usr/local/v6/include/sys/v6config.h>
2435#ifdef __V6D__
2436yes
2437#endif],
2438 [ipv6type=$i;
2439 ipv6lib=v6;
2440 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002441 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002442 ;;
2443 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002444 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002445#include <sys/param.h>
2446#ifdef _ZETA_MINAMI_INET6
2447yes
2448#endif],
2449 [ipv6type=$i;
2450 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002451 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002452 ;;
2453 esac
2454 if test "$ipv6type" != "unknown"; then
2455 break
2456 fi
2457 done
2458 AC_MSG_RESULT($ipv6type)
2459fi
2460
2461if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2462 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2463 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2464 echo "using lib$ipv6lib"
2465 else
2466 if test $ipv6trylibc = "yes"; then
2467 echo "using libc"
2468 else
2469 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2470 echo "You need to fetch lib$ipv6lib.a from appropriate"
2471 echo 'ipv6 kit and compile beforehand.'
2472 exit 1
2473 fi
2474 fi
2475fi
2476
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002477AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2478AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2479 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2480 AC_MSG_RESULT(yes),
2481 AC_MSG_RESULT(no)
2482)
2483
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002484# Check for --with-doc-strings
2485AC_MSG_CHECKING(for --with-doc-strings)
2486AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002487 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002488
2489if test -z "$with_doc_strings"
2490then with_doc_strings="yes"
2491fi
2492if test "$with_doc_strings" != "no"
2493then
2494 AC_DEFINE(WITH_DOC_STRINGS, 1,
2495 [Define if you want documentation strings in extension modules])
2496fi
2497AC_MSG_RESULT($with_doc_strings)
2498
Neil Schemenauera35c6882001-02-27 04:45:05 +00002499# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002500AC_MSG_CHECKING(for --with-tsc)
2501AC_ARG_WITH(tsc,
2502[ --with(out)-tsc enable/disable timestamp counter profile], [
2503if test "$withval" != no
2504then
2505 AC_DEFINE(WITH_TSC, 1,
2506 [Define to profile with the Pentium timestamp counter])
2507 AC_MSG_RESULT(yes)
2508else AC_MSG_RESULT(no)
2509fi],
2510[AC_MSG_RESULT(no)])
2511
2512# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002513AC_MSG_CHECKING(for --with-pymalloc)
2514AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002515 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002516
2517if test -z "$with_pymalloc"
2518then with_pymalloc="yes"
2519fi
2520if test "$with_pymalloc" != "no"
2521then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002522 AC_DEFINE(WITH_PYMALLOC, 1,
2523 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002524fi
2525AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002526
Barry Warsawef82cd72000-06-30 16:21:01 +00002527# Check for --with-wctype-functions
2528AC_MSG_CHECKING(for --with-wctype-functions)
2529AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002530 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2531[
Barry Warsawef82cd72000-06-30 16:21:01 +00002532if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002533then
2534 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2535 [Define if you want wctype.h functions to be used instead of the
2536 one supplied by Python itself. (see Include/unicodectype.h).])
2537 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002538else AC_MSG_RESULT(no)
2539fi],
2540[AC_MSG_RESULT(no)])
2541
Guido van Rossum68242b51996-05-28 22:53:03 +00002542# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002543AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002544DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002545
Guido van Rossume97ee181999-12-20 21:27:22 +00002546# the dlopen() function means we might want to use dynload_shlib.o. some
2547# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002548AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002549
2550# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2551# loading of modules.
2552AC_SUBST(DYNLOADFILE)
2553AC_MSG_CHECKING(DYNLOADFILE)
2554if test -z "$DYNLOADFILE"
2555then
2556 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002557 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2558 if test "$ac_cv_func_dlopen" = yes
2559 then DYNLOADFILE="dynload_shlib.o"
2560 else DYNLOADFILE="dynload_aix.o"
2561 fi
2562 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002563 BeOS*) DYNLOADFILE="dynload_beos.o";;
2564 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002565 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2566 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002567 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002568 *)
2569 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2570 # out any dynamic loading
2571 if test "$ac_cv_func_dlopen" = yes
2572 then DYNLOADFILE="dynload_shlib.o"
2573 else DYNLOADFILE="dynload_stub.o"
2574 fi
2575 ;;
2576 esac
2577fi
2578AC_MSG_RESULT($DYNLOADFILE)
2579if test "$DYNLOADFILE" != "dynload_stub.o"
2580then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002581 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2582 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002583fi
2584
Jack Jansenc49e5b72001-06-19 15:00:23 +00002585# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2586
2587AC_SUBST(MACHDEP_OBJS)
2588AC_MSG_CHECKING(MACHDEP_OBJS)
2589if test -z "$MACHDEP_OBJS"
2590then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002591 MACHDEP_OBJS=$extra_machdep_objs
2592else
2593 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002594fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002595AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002596
Guido van Rossum627b2d71993-12-24 10:39:16 +00002597# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002598AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2599 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002600 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002601 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002602 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002603 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002604 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002605 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002606 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002607 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002608 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002609 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002610
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002611# For some functions, having a definition is not sufficient, since
2612# we want to take their address.
2613AC_MSG_CHECKING(for chroot)
2614AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2615 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2616 AC_MSG_RESULT(yes),
2617 AC_MSG_RESULT(no)
2618)
2619AC_MSG_CHECKING(for link)
2620AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2621 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2622 AC_MSG_RESULT(yes),
2623 AC_MSG_RESULT(no)
2624)
2625AC_MSG_CHECKING(for symlink)
2626AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2627 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2628 AC_MSG_RESULT(yes),
2629 AC_MSG_RESULT(no)
2630)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002631AC_MSG_CHECKING(for fchdir)
2632AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2633 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2634 AC_MSG_RESULT(yes),
2635 AC_MSG_RESULT(no)
2636)
2637AC_MSG_CHECKING(for fsync)
2638AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002639 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002640 AC_MSG_RESULT(yes),
2641 AC_MSG_RESULT(no)
2642)
2643AC_MSG_CHECKING(for fdatasync)
2644AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2645 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2646 AC_MSG_RESULT(yes),
2647 AC_MSG_RESULT(no)
2648)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002649AC_MSG_CHECKING(for epoll)
2650AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2651 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2652 AC_MSG_RESULT(yes),
2653 AC_MSG_RESULT(no)
2654)
2655AC_MSG_CHECKING(for kqueue)
2656AC_TRY_COMPILE([
2657#include <sys/types.h>
2658#include <sys/event.h>
2659 ], int x=kqueue(),
2660 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2661 AC_MSG_RESULT(yes),
2662 AC_MSG_RESULT(no)
2663)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002664# On some systems (eg. FreeBSD 5), we would find a definition of the
2665# functions ctermid_r, setgroups in the library, but no prototype
2666# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2667# address to avoid compiler warnings and potential miscompilations
2668# because of the missing prototypes.
2669
2670AC_MSG_CHECKING(for ctermid_r)
2671AC_TRY_COMPILE([
2672#include "confdefs.h"
2673#include <stdio.h>
2674], void* p = ctermid_r,
2675 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2676 AC_MSG_RESULT(yes),
2677 AC_MSG_RESULT(no)
2678)
2679
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002680AC_MSG_CHECKING(for flock)
2681AC_TRY_COMPILE([
2682#include "confdefs.h"
2683#include <sys/file.h>
2684], void* p = flock,
2685 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2686 AC_MSG_RESULT(yes),
2687 AC_MSG_RESULT(no)
2688)
2689
2690AC_MSG_CHECKING(for getpagesize)
2691AC_TRY_COMPILE([
2692#include "confdefs.h"
2693#include <unistd.h>
2694], void* p = getpagesize,
2695 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2696 AC_MSG_RESULT(yes),
2697 AC_MSG_RESULT(no)
2698)
2699
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002700dnl check for true
2701AC_CHECK_PROGS(TRUE, true, /bin/true)
2702
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002703dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2704dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002705AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002706 AC_CHECK_LIB(resolv, inet_aton)
2707)
2708
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002709# On Tru64, chflags seems to be present, but calling it will
2710# exit Python
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002711AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
2712AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002713#include <sys/stat.h>
2714#include <unistd.h>
2715int main(int argc, char*argv[])
2716{
2717 if(chflags(argv[0], 0) != 0)
2718 return 1;
2719 return 0;
2720}
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002721]], ac_cv_have_chflags=yes,
2722 ac_cv_have_chflags=no,
2723 ac_cv_have_chflags=cross)
2724])
2725if test "$ac_cv_have_chflags" = cross ; then
2726 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2727fi
2728if test "$ac_cv_have_chflags" = yes ; then
2729 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2730fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002731
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002732AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
2733AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002734#include <sys/stat.h>
2735#include <unistd.h>
2736int main(int argc, char*argv[])
2737{
2738 if(lchflags(argv[0], 0) != 0)
2739 return 1;
2740 return 0;
2741}
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002742]], ac_cv_have_lchflags=yes,
2743 ac_cv_have_lchflags=no,
2744 ac_cv_have_lchflags=cross)
2745])
2746if test "$ac_cv_have_lchflags" = cross ; then
2747 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2748fi
2749if test "$ac_cv_have_lchflags" = yes ; then
2750 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2751fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002752
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002753dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002754dnl
2755dnl On MacOSX the linker will search for dylibs on the entire linker path
2756dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2757dnl to revert to a more traditional unix behaviour and make it possible to
2758dnl override the system libz with a local static library of libz. Temporarily
2759dnl add that flag to our CFLAGS as well to ensure that we check the version
2760dnl of libz that will be used by setup.py.
2761dnl The -L/usr/local/lib is needed as wel to get the same compilation
2762dnl environment as setup.py (and leaving it out can cause configure to use the
2763dnl wrong version of the library)
2764case $ac_sys_system/$ac_sys_release in
2765Darwin/*)
2766 _CUR_CFLAGS="${CFLAGS}"
2767 _CUR_LDFLAGS="${LDFLAGS}"
2768 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2769 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2770 ;;
2771esac
2772
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002773AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2774
Ronald Oussorenf8752642006-07-06 10:13:35 +00002775case $ac_sys_system/$ac_sys_release in
2776Darwin/*)
2777 CFLAGS="${_CUR_CFLAGS}"
2778 LDFLAGS="${_CUR_LDFLAGS}"
2779 ;;
2780esac
2781
Martin v. Löwise9416172003-05-03 10:12:45 +00002782AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002783AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002784#include "confdefs.h"
2785#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002786], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002787 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2788 AC_MSG_RESULT(yes),
2789 AC_MSG_RESULT(no)
2790)
2791
2792AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002793AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002794#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002795#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002796#include <sys/socket.h>
2797#include <netinet/in.h>
2798#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002799], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002800 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2801 AC_MSG_RESULT(yes),
2802 AC_MSG_RESULT(no)
2803)
2804
2805AC_MSG_CHECKING(for inet_pton)
2806AC_TRY_COMPILE([
2807#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002808#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002809#include <sys/socket.h>
2810#include <netinet/in.h>
2811#include <arpa/inet.h>
2812], void* p = inet_pton,
2813 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2814 AC_MSG_RESULT(yes),
2815 AC_MSG_RESULT(no)
2816)
2817
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002818# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002819AC_MSG_CHECKING(for setgroups)
2820AC_TRY_COMPILE([
2821#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002822#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002823#ifdef HAVE_GRP_H
2824#include <grp.h>
2825#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002826],
2827void* p = setgroups,
2828 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2829 AC_MSG_RESULT(yes),
2830 AC_MSG_RESULT(no)
2831)
2832
Fred Drake8cef4cf2000-06-28 16:40:38 +00002833# check for openpty and forkpty
2834
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002835AC_CHECK_FUNCS(openpty,,
2836 AC_CHECK_LIB(util,openpty,
2837 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2838 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2839 )
2840)
2841AC_CHECK_FUNCS(forkpty,,
2842 AC_CHECK_LIB(util,forkpty,
2843 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2844 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2845 )
2846)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002847
Brett Cannonaa5778d2008-03-18 04:09:00 +00002848# Stuff for expat.
2849AC_CHECK_FUNCS(memmove)
2850
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002851# check for long file support functions
2852AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2853
Brett Cannonaa5778d2008-03-18 04:09:00 +00002854AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002855AC_CHECK_FUNCS(getpgrp,
2856 AC_TRY_COMPILE([#include <unistd.h>],
2857 [getpgrp(0);],
2858 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2859 [Define if getpgrp() must be called as getpgrp(0).])
2860 )
2861)
Jack Jansen150753c2003-03-29 22:07:47 +00002862AC_CHECK_FUNCS(setpgrp,
2863 AC_TRY_COMPILE([#include <unistd.h>],
2864 [setpgrp(0,0);],
2865 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2866 [Define if setpgrp() must be called as setpgrp(0, 0).])
2867 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002868)
2869AC_CHECK_FUNCS(gettimeofday,
2870 AC_TRY_COMPILE([#include <sys/time.h>],
2871 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2872 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2873 [Define if gettimeofday() does not have second (timezone) argument
2874 This is the case on Motorola V4 (R40V4.2)])
2875 )
2876)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002877
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002878AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002879AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002880#if defined(MAJOR_IN_MKDEV)
2881#include <sys/mkdev.h>
2882#elif defined(MAJOR_IN_SYSMACROS)
2883#include <sys/sysmacros.h>
2884#else
2885#include <sys/types.h>
2886#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002887],[
2888 makedev(major(0),minor(0));
2889],[
2890 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2891 [Define to 1 if you have the device macros.])
2892 AC_MSG_RESULT(yes)
2893],[
2894 AC_MSG_RESULT(no)
2895])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002896
2897# On OSF/1 V5.1, getaddrinfo is available, but a define
2898# for [no]getaddrinfo in netdb.h.
2899AC_MSG_CHECKING(for getaddrinfo)
2900AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002901#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002902#include <sys/socket.h>
2903#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002904#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002905],[
2906getaddrinfo(NULL, NULL, NULL, NULL);
2907], [
2908AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002909AC_MSG_CHECKING(getaddrinfo bug)
2910AC_TRY_RUN([
2911#include <sys/types.h>
2912#include <netdb.h>
2913#include <string.h>
2914#include <sys/socket.h>
2915#include <netinet/in.h>
2916
2917main()
2918{
2919 int passive, gaierr, inet4 = 0, inet6 = 0;
2920 struct addrinfo hints, *ai, *aitop;
2921 char straddr[INET6_ADDRSTRLEN], strport[16];
2922
2923 for (passive = 0; passive <= 1; passive++) {
2924 memset(&hints, 0, sizeof(hints));
2925 hints.ai_family = AF_UNSPEC;
2926 hints.ai_flags = passive ? AI_PASSIVE : 0;
2927 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002928 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002929 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2930 (void)gai_strerror(gaierr);
2931 goto bad;
2932 }
2933 for (ai = aitop; ai; ai = ai->ai_next) {
2934 if (ai->ai_addr == NULL ||
2935 ai->ai_addrlen == 0 ||
2936 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2937 straddr, sizeof(straddr), strport, sizeof(strport),
2938 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2939 goto bad;
2940 }
2941 switch (ai->ai_family) {
2942 case AF_INET:
2943 if (strcmp(strport, "54321") != 0) {
2944 goto bad;
2945 }
2946 if (passive) {
2947 if (strcmp(straddr, "0.0.0.0") != 0) {
2948 goto bad;
2949 }
2950 } else {
2951 if (strcmp(straddr, "127.0.0.1") != 0) {
2952 goto bad;
2953 }
2954 }
2955 inet4++;
2956 break;
2957 case AF_INET6:
2958 if (strcmp(strport, "54321") != 0) {
2959 goto bad;
2960 }
2961 if (passive) {
2962 if (strcmp(straddr, "::") != 0) {
2963 goto bad;
2964 }
2965 } else {
2966 if (strcmp(straddr, "::1") != 0) {
2967 goto bad;
2968 }
2969 }
2970 inet6++;
2971 break;
2972 case AF_UNSPEC:
2973 goto bad;
2974 break;
2975 default:
2976 /* another family support? */
2977 break;
2978 }
2979 }
2980 }
2981
2982 if (!(inet4 == 0 || inet4 == 2))
2983 goto bad;
2984 if (!(inet6 == 0 || inet6 == 2))
2985 goto bad;
2986
2987 if (aitop)
2988 freeaddrinfo(aitop);
2989 exit(0);
2990
2991 bad:
2992 if (aitop)
2993 freeaddrinfo(aitop);
2994 exit(1);
2995}
2996],
2997AC_MSG_RESULT(good)
2998buggygetaddrinfo=no,
2999AC_MSG_RESULT(buggy)
3000buggygetaddrinfo=yes,
3001AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003002buggygetaddrinfo=yes)], [
3003AC_MSG_RESULT(no)
3004buggygetaddrinfo=yes
3005])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003006
3007if test "$buggygetaddrinfo" = "yes"; then
3008 if test "$ipv6" = "yes"; then
3009 echo 'Fatal: You must get working getaddrinfo() function.'
3010 echo ' or you can specify "--disable-ipv6"'.
3011 exit 1
3012 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003013else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003014 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003015fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00003016AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003017
Guido van Rossum627b2d71993-12-24 10:39:16 +00003018# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003019AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00003020AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003021AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00003022AC_CHECK_MEMBERS([struct stat.st_rdev])
3023AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00003024AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003025AC_CHECK_MEMBERS([struct stat.st_gen])
3026AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00003027AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003028
3029AC_MSG_CHECKING(for time.h that defines altzone)
3030AC_CACHE_VAL(ac_cv_header_time_altzone,
3031[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
3032 ac_cv_header_time_altzone=yes,
3033 ac_cv_header_time_altzone=no)])
3034AC_MSG_RESULT($ac_cv_header_time_altzone)
3035if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003036 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003037fi
3038
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003039was_it_defined=no
3040AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003041AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003042#include <sys/types.h>
3043#include <sys/select.h>
3044#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003045], [;], [
3046 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
3047 [Define if you can safely include both <sys/select.h> and <sys/time.h>
3048 (which you can't on SCO ODT 3.0).])
3049 was_it_defined=yes
3050])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003051AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003052
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003053AC_MSG_CHECKING(for addrinfo)
3054AC_CACHE_VAL(ac_cv_struct_addrinfo,
3055AC_TRY_COMPILE([
3056# include <netdb.h>],
3057 [struct addrinfo a],
3058 ac_cv_struct_addrinfo=yes,
3059 ac_cv_struct_addrinfo=no))
3060AC_MSG_RESULT($ac_cv_struct_addrinfo)
3061if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003062 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003063fi
3064
3065AC_MSG_CHECKING(for sockaddr_storage)
3066AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
3067AC_TRY_COMPILE([
3068# include <sys/types.h>
3069# include <sys/socket.h>],
3070 [struct sockaddr_storage s],
3071 ac_cv_struct_sockaddr_storage=yes,
3072 ac_cv_struct_sockaddr_storage=no))
3073AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3074if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003075 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003076fi
3077
Guido van Rossum627b2d71993-12-24 10:39:16 +00003078# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003079
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003080AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003081AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003082
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003083works=no
3084AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003085AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
3086 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
3087)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003088AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003089
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003090works=no
3091AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003092AC_TRY_COMPILE([], [signed char c;], works=yes,
3093 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
3094)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003095AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003096
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003097have_prototypes=no
3098AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003099AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
3100 AC_DEFINE(HAVE_PROTOTYPES, 1,
3101 [Define if your compiler supports function prototype])
3102 have_prototypes=yes
3103])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003104AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003105
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003106works=no
3107AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003108AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003109#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003110int foo(int x, ...) {
3111 va_list va;
3112 va_start(va, x);
3113 va_arg(va, int);
3114 va_arg(va, char *);
3115 va_arg(va, double);
3116 return 0;
3117}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003118], [return foo(10, "", 3.14);], [
3119 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3120 [Define if your compiler supports variable length function prototypes
3121 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3122 works=yes
3123])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003124AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003125
Dave Cole331708b2004-08-09 04:51:41 +00003126# check for socketpair
3127AC_MSG_CHECKING(for socketpair)
3128AC_TRY_COMPILE([
3129#include <sys/types.h>
3130#include <sys/socket.h>
3131], void *x=socketpair,
3132 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3133 AC_MSG_RESULT(yes),
3134 AC_MSG_RESULT(no)
3135)
3136
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003137# check if sockaddr has sa_len member
3138AC_MSG_CHECKING(if sockaddr has sa_len member)
3139AC_TRY_COMPILE([#include <sys/types.h>
3140#include <sys/socket.h>],
3141[struct sockaddr x;
3142x.sa_len = 0;],
3143 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003144 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003145 AC_MSG_RESULT(no))
3146
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003147va_list_is_array=no
3148AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003149AC_TRY_COMPILE([
3150#ifdef HAVE_STDARG_PROTOTYPES
3151#include <stdarg.h>
3152#else
3153#include <varargs.h>
3154#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003155], [va_list list1, list2; list1 = list2;], , [
3156 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3157 va_list_is_array=yes
3158])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003159AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003160
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003161# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003162AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3163 [Define this if you have some version of gethostbyname_r()])
3164
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003165AC_CHECK_FUNC(gethostbyname_r, [
3166 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3167 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3168 OLD_CFLAGS=$CFLAGS
3169 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3170 AC_TRY_COMPILE([
3171# include <netdb.h>
3172 ], [
3173 char *name;
3174 struct hostent *he, *res;
3175 char buffer[2048];
3176 int buflen = 2048;
3177 int h_errnop;
3178
3179 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3180 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003181 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003182 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3183 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003184 AC_MSG_RESULT(yes)
3185 ], [
3186 AC_MSG_RESULT(no)
3187 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3188 AC_TRY_COMPILE([
3189# include <netdb.h>
3190 ], [
3191 char *name;
3192 struct hostent *he;
3193 char buffer[2048];
3194 int buflen = 2048;
3195 int h_errnop;
3196
3197 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3198 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003199 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003200 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3201 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003202 AC_MSG_RESULT(yes)
3203 ], [
3204 AC_MSG_RESULT(no)
3205 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3206 AC_TRY_COMPILE([
3207# include <netdb.h>
3208 ], [
3209 char *name;
3210 struct hostent *he;
3211 struct hostent_data data;
3212
3213 (void) gethostbyname_r(name, he, &data);
3214 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003215 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003216 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3217 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003218 AC_MSG_RESULT(yes)
3219 ], [
3220 AC_MSG_RESULT(no)
3221 ])
3222 ])
3223 ])
3224 CFLAGS=$OLD_CFLAGS
3225], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003226 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003227])
3228AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3229AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3230AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003231AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003232AC_SUBST(HAVE_GETHOSTBYNAME)
3233
Guido van Rossum627b2d71993-12-24 10:39:16 +00003234# checks for system services
3235# (none yet)
3236
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003237# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003238AC_CHECK_FUNC(__fpu_control,
3239 [],
3240 [AC_CHECK_LIB(ieee, __fpu_control)
3241])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003242
Guido van Rossum93274221997-05-09 02:42:00 +00003243# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003244AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00003245AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003246 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3247[
Guido van Rossum93274221997-05-09 02:42:00 +00003248if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003249then
3250 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3251 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3252 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003253else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003254fi],
3255[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003256
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003257# check for --with-libm=...
3258AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003259case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003260Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00003261BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003262*) LIBM=-lm
3263esac
Guido van Rossum93274221997-05-09 02:42:00 +00003264AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003265AC_ARG_WITH(libm,
3266 AC_HELP_STRING(--with-libm=STRING, math library),
3267[
Guido van Rossum93274221997-05-09 02:42:00 +00003268if test "$withval" = no
3269then LIBM=
3270 AC_MSG_RESULT(force LIBM empty)
3271elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003272then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003273 AC_MSG_RESULT(set LIBM="$withval")
3274else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003275fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003276[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003277
3278# check for --with-libc=...
3279AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003280AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003281AC_ARG_WITH(libc,
3282 AC_HELP_STRING(--with-libc=STRING, C library),
3283[
Guido van Rossum93274221997-05-09 02:42:00 +00003284if test "$withval" = no
3285then LIBC=
3286 AC_MSG_RESULT(force LIBC empty)
3287elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003288then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003289 AC_MSG_RESULT(set LIBC="$withval")
3290else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003291fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003292[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003293
Christian Heimes0a8143f2007-12-18 23:22:54 +00003294# ************************************
3295# * Check for mathematical functions *
3296# ************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003297
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003298LIBS_SAVE=$LIBS
3299LIBS="$LIBS $LIBM"
3300
Mark Dickinsone05e8402009-05-04 13:30:43 +00003301# Detect whether system arithmetic is subject to x87-style double
3302# rounding issues. The result of this test has little meaning on non
3303# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3304# mode is round-to-nearest and double rounding issues are present, and
3305# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3306AC_MSG_CHECKING(for x87-style double rounding)
3307AC_CACHE_VAL(ac_cv_x87_double_rounding, [
3308AC_TRY_RUN([
3309#include <stdlib.h>
3310#include <math.h>
3311int main() {
3312 volatile double x, y, z;
3313 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3314 x = 0.99999999999999989; /* 1-2**-53 */
3315 y = 1./x;
3316 if (y != 1.)
3317 exit(0);
3318 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3319 x = 1e16;
3320 y = 2.99999;
3321 z = x + y;
3322 if (z != 1e16+4.)
3323 exit(0);
3324 /* both tests show evidence of double rounding */
3325 exit(1);
3326}
3327],
3328ac_cv_x87_double_rounding=no,
3329ac_cv_x87_double_rounding=yes,
3330ac_cv_x87_double_rounding=no)])
3331AC_MSG_RESULT($ac_cv_x87_double_rounding)
3332if test "$ac_cv_x87_double_rounding" = yes
3333then
3334 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3335 [Define if arithmetic is subject to x87-style double rounding issue])
3336fi
3337
3338
Mark Dickinson265d7382008-04-21 22:32:24 +00003339# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3340# -0. on some architectures.
3341AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3342AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3343AC_TRY_RUN([
3344#include <math.h>
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003345#include <stdlib.h>
Mark Dickinson265d7382008-04-21 22:32:24 +00003346int main() {
3347 /* return 0 if either negative zeros don't exist
3348 on this platform or if negative zeros exist
3349 and tanh(-0.) == -0. */
3350 if (atan2(0., -1.) == atan2(-0., -1.) ||
3351 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3352 else exit(1);
3353}
3354],
3355ac_cv_tanh_preserves_zero_sign=yes,
3356ac_cv_tanh_preserves_zero_sign=no,
3357ac_cv_tanh_preserves_zero_sign=no)])
3358AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3359if test "$ac_cv_tanh_preserves_zero_sign" = yes
3360then
3361 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3362 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3363fi
3364
Mark Dickinsone05e8402009-05-04 13:30:43 +00003365AC_CHECK_FUNCS([acosh asinh atanh copysign expm1 finite hypot log1p])
3366AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes0a8143f2007-12-18 23:22:54 +00003367
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003368LIBS=$LIBS_SAVE
3369
Guido van Rossumef2255b2000-03-10 22:30:29 +00003370# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003371AC_CHECK_HEADER(wchar.h, [
3372 AC_DEFINE(HAVE_WCHAR_H, 1,
3373 [Define if the compiler provides a wchar.h header file.])
3374 wchar_h="yes"
3375],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003376wchar_h="no"
3377)
3378
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003379# determine wchar_t size
3380if test "$wchar_h" = yes
3381then
Guido van Rossum67b26592001-10-20 14:21:45 +00003382 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003383fi
3384
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003385AC_MSG_CHECKING(for UCS-4 tcl)
3386have_ucs4_tcl=no
3387AC_TRY_COMPILE([
3388#include <tcl.h>
3389#if TCL_UTF_MAX != 6
3390# error "NOT UCS4_TCL"
3391#endif], [], [
3392 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3393 have_ucs4_tcl=yes
3394])
3395AC_MSG_RESULT($have_ucs4_tcl)
3396
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003397# check whether wchar_t is signed or not
3398if test "$wchar_h" = yes
3399then
3400 # check whether wchar_t is signed or not
3401 AC_MSG_CHECKING(whether wchar_t is signed)
3402 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3403 AC_TRY_RUN([
3404 #include <wchar.h>
3405 int main()
3406 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003407 /* Success: exit code 0 */
3408 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003409 }
3410 ],
3411 ac_cv_wchar_t_signed=yes,
3412 ac_cv_wchar_t_signed=no,
3413 ac_cv_wchar_t_signed=yes)])
3414 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3415fi
3416
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003417AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003418dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003419AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003420 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3421 [],
3422 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003423
3424if test $enable_unicode = yes
3425then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003426 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003427 case "$have_ucs4_tcl" in
3428 yes) enable_unicode="ucs4"
3429 ;;
3430 *) enable_unicode="ucs2"
3431 ;;
3432 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003433fi
3434
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003435AH_TEMPLATE(Py_UNICODE_SIZE,
3436 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003437case "$enable_unicode" in
3438ucs2) unicode_size="2"
3439 AC_DEFINE(Py_UNICODE_SIZE,2)
3440 ;;
3441ucs4) unicode_size="4"
3442 AC_DEFINE(Py_UNICODE_SIZE,4)
3443 ;;
Benjamin Peterson726b4822010-02-27 00:15:23 +00003444*) AC_MSG_ERROR([invalid value for --enable-unicode. Use either ucs2 or ucs4 (lowercase).]) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003445esac
3446
Martin v. Löwis11437992002-04-12 09:54:03 +00003447AH_TEMPLATE(PY_UNICODE_TYPE,
3448 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003449
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003450AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003451if test "$enable_unicode" = "no"
3452then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003453 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003454 AC_MSG_RESULT(not used)
3455else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003456 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003457 AC_DEFINE(Py_USING_UNICODE, 1,
3458 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003459
3460 # wchar_t is only usable if it maps to an unsigned type
3461 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003462 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003463 then
3464 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003465 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3466 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003467 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003468 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003469 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3470 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3471 then
3472 PY_UNICODE_TYPE="unsigned short"
3473 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3474 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3475 then
3476 PY_UNICODE_TYPE="unsigned long"
3477 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3478 else
3479 PY_UNICODE_TYPE="no type found"
3480 fi
3481 AC_MSG_RESULT($PY_UNICODE_TYPE)
3482fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003483
3484# check for endianness
3485AC_C_BIGENDIAN
3486
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003487# Check whether right shifting a negative integer extends the sign bit
3488# or fills with zeros (like the Cray J90, according to Tim Peters).
3489AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003490AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003491AC_TRY_RUN([
3492int main()
3493{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003494 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003495}
Guido van Rossum3065c942001-09-17 04:03:14 +00003496],
3497ac_cv_rshift_extends_sign=yes,
3498ac_cv_rshift_extends_sign=no,
3499ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003500AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3501if test "$ac_cv_rshift_extends_sign" = no
3502then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003503 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3504 [Define if i>>j for signed int i does not extend the sign bit
3505 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003506fi
3507
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003508# check for getc_unlocked and related locking functions
3509AC_MSG_CHECKING(for getc_unlocked() and friends)
3510AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3511AC_TRY_LINK([#include <stdio.h>],[
3512 FILE *f = fopen("/dev/null", "r");
3513 flockfile(f);
3514 getc_unlocked(f);
3515 funlockfile(f);
3516], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3517AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3518if test "$ac_cv_have_getc_unlocked" = yes
3519then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003520 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3521 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003522fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003523
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003524# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003525# save the value of LIBS so we don't actually link Python with readline
3526LIBS_no_readline=$LIBS
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003527
3528# On some systems we need to link readline to a termcap compatible
3529# library. NOTE: Keep the precedence of listed libraries synchronised
3530# with setup.py.
3531py_cv_lib_readline=no
3532AC_MSG_CHECKING([how to link readline libs])
3533for py_libtermcap in "" ncursesw ncurses curses termcap; do
3534 if test -z "$py_libtermcap"; then
3535 READLINE_LIBS="-lreadline"
3536 else
3537 READLINE_LIBS="-lreadline -l$py_libtermcap"
3538 fi
3539 LIBS="$READLINE_LIBS $LIBS_no_readline"
3540 AC_LINK_IFELSE(
3541 [AC_LANG_CALL([],[readline])],
3542 [py_cv_lib_readline=yes])
3543 if test $py_cv_lib_readline = yes; then
3544 break
3545 fi
3546done
3547# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3548#AC_SUBST([READLINE_LIBS])
Gregory P. Smith29ec7502008-09-07 19:18:16 +00003549if test $py_cv_lib_readline = no; then
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003550 AC_MSG_RESULT([none])
3551else
3552 AC_MSG_RESULT([$READLINE_LIBS])
3553 AC_DEFINE(HAVE_LIBREADLINE, 1,
3554 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003555fi
3556
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003557# check for readline 2.1
3558AC_CHECK_LIB(readline, rl_callback_handler_install,
3559 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003560 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003561
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003562# check for readline 2.2
3563AC_TRY_CPP([#include <readline/readline.h>],
3564have_readline=yes, have_readline=no)
3565if test $have_readline = yes
3566then
3567 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3568 [readline/readline.h],
3569 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3570 [Define if you have readline 2.2]), )
Antoine Pitrou632e93f2009-10-27 12:30:12 +00003571 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3572 [readline/readline.h],
3573 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3574 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003575fi
3576
Martin v. Löwis0daad592001-09-30 21:09:59 +00003577# check for readline 4.0
3578AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003579 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003580 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003581
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003582# also in 4.0
3583AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3584 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003585 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003586
Guido van Rossum353ae582001-07-10 16:45:32 +00003587# check for readline 4.2
3588AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003589 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003590 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003591
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003592# also in readline 4.2
3593AC_TRY_CPP([#include <readline/readline.h>],
3594have_readline=yes, have_readline=no)
3595if test $have_readline = yes
3596then
3597 AC_EGREP_HEADER([extern int rl_catch_signals;],
3598 [readline/readline.h],
3599 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3600 [Define if you can turn off readline's signal handling.]), )
3601fi
3602
Martin v. Löwis82bca632006-02-10 20:49:30 +00003603# End of readline checks: restore LIBS
3604LIBS=$LIBS_no_readline
3605
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003606AC_MSG_CHECKING(for broken nice())
3607AC_CACHE_VAL(ac_cv_broken_nice, [
3608AC_TRY_RUN([
3609int main()
3610{
3611 int val1 = nice(1);
3612 if (val1 != -1 && val1 == nice(2))
3613 exit(0);
3614 exit(1);
3615}
Guido van Rossum3065c942001-09-17 04:03:14 +00003616],
3617ac_cv_broken_nice=yes,
3618ac_cv_broken_nice=no,
3619ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003620AC_MSG_RESULT($ac_cv_broken_nice)
3621if test "$ac_cv_broken_nice" = yes
3622then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003623 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3624 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003625fi
3626
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003627AC_MSG_CHECKING(for broken poll())
3628AC_TRY_RUN([
3629#include <poll.h>
3630
3631int main (void)
3632 {
3633 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3634
3635 close (42);
3636
3637 int poll_test = poll (&poll_struct, 1, 0);
3638
3639 if (poll_test < 0)
3640 {
3641 exit(0);
3642 }
3643 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3644 {
3645 exit(0);
3646 }
3647 else
3648 {
3649 exit(1);
3650 }
3651 }
3652],
3653ac_cv_broken_poll=yes,
3654ac_cv_broken_poll=no,
3655ac_cv_broken_poll=no)
3656AC_MSG_RESULT($ac_cv_broken_poll)
3657if test "$ac_cv_broken_poll" = yes
3658then
3659 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3660 [Define if poll() sets errno on invalid file descriptors.])
3661fi
3662
Brett Cannon43802422005-02-10 20:48:03 +00003663# Before we can test tzset, we need to check if struct tm has a tm_zone
3664# (which is not required by ISO C or UNIX spec) and/or if we support
3665# tzname[]
3666AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003667
Brett Cannon43802422005-02-10 20:48:03 +00003668# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003669AC_MSG_CHECKING(for working tzset())
3670AC_CACHE_VAL(ac_cv_working_tzset, [
3671AC_TRY_RUN([
3672#include <stdlib.h>
3673#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003674#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003675
3676#if HAVE_TZNAME
3677extern char *tzname[];
3678#endif
3679
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003680int main()
3681{
Brett Cannon18367812003-09-19 00:59:16 +00003682 /* Note that we need to ensure that not only does tzset(3)
3683 do 'something' with localtime, but it works as documented
3684 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003685 This includes making sure that tzname is set properly if
3686 tm->tm_zone does not exist since it is the alternative way
3687 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003688
3689 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003690 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003691 */
3692
Brett Cannon43802422005-02-10 20:48:03 +00003693 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003694 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3695
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003696 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003697 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003698 if (localtime(&groundhogday)->tm_hour != 0)
3699 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003700#if HAVE_TZNAME
3701 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3702 if (strcmp(tzname[0], "UTC") ||
3703 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3704 exit(1);
3705#endif
Brett Cannon18367812003-09-19 00:59:16 +00003706
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003707 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003708 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003709 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003710 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003711#if HAVE_TZNAME
3712 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3713 exit(1);
3714#endif
Brett Cannon18367812003-09-19 00:59:16 +00003715
3716 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3717 tzset();
3718 if (localtime(&groundhogday)->tm_hour != 11)
3719 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003720#if HAVE_TZNAME
3721 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3722 exit(1);
3723#endif
3724
3725#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003726 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3727 exit(1);
3728 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3729 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003730#endif
Brett Cannon18367812003-09-19 00:59:16 +00003731
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003732 exit(0);
3733}
3734],
3735ac_cv_working_tzset=yes,
3736ac_cv_working_tzset=no,
3737ac_cv_working_tzset=no)])
3738AC_MSG_RESULT($ac_cv_working_tzset)
3739if test "$ac_cv_working_tzset" = yes
3740then
3741 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3742 [Define if tzset() actually switches the local timezone in a meaningful way.])
3743fi
3744
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003745# Look for subsecond timestamps in struct stat
3746AC_MSG_CHECKING(for tv_nsec in struct stat)
3747AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3748AC_TRY_COMPILE([#include <sys/stat.h>], [
3749struct stat st;
3750st.st_mtim.tv_nsec = 1;
3751],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003752ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003753ac_cv_stat_tv_nsec=no,
3754ac_cv_stat_tv_nsec=no))
3755AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3756if test "$ac_cv_stat_tv_nsec" = yes
3757then
3758 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3759 [Define if you have struct stat.st_mtim.tv_nsec])
3760fi
3761
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003762# Look for BSD style subsecond timestamps in struct stat
3763AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3764AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3765AC_TRY_COMPILE([#include <sys/stat.h>], [
3766struct stat st;
3767st.st_mtimespec.tv_nsec = 1;
3768],
3769ac_cv_stat_tv_nsec2=yes,
3770ac_cv_stat_tv_nsec2=no,
3771ac_cv_stat_tv_nsec2=no))
3772AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3773if test "$ac_cv_stat_tv_nsec2" = yes
3774then
3775 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3776 [Define if you have struct stat.st_mtimensec])
3777fi
3778
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003779# On HP/UX 11.0, mvwdelch is a block with a return statement
3780AC_MSG_CHECKING(whether mvwdelch is an expression)
3781AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3782AC_TRY_COMPILE([#include <curses.h>], [
3783 int rtn;
3784 rtn = mvwdelch(0,0,0);
3785], ac_cv_mvwdelch_is_expression=yes,
3786 ac_cv_mvwdelch_is_expression=no,
3787 ac_cv_mvwdelch_is_expression=yes))
3788AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3789
3790if test "$ac_cv_mvwdelch_is_expression" = yes
3791then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003792 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3793 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003794fi
3795
3796AC_MSG_CHECKING(whether WINDOW has _flags)
3797AC_CACHE_VAL(ac_cv_window_has_flags,
3798AC_TRY_COMPILE([#include <curses.h>], [
3799 WINDOW *w;
3800 w->_flags = 0;
3801], ac_cv_window_has_flags=yes,
3802 ac_cv_window_has_flags=no,
3803 ac_cv_window_has_flags=no))
3804AC_MSG_RESULT($ac_cv_window_has_flags)
3805
3806
3807if test "$ac_cv_window_has_flags" = yes
3808then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003809 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3810 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003811fi
3812
Walter Dörwald4994d952006-06-19 08:07:50 +00003813AC_MSG_CHECKING(for is_term_resized)
3814AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3815 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3816 AC_MSG_RESULT(yes),
3817 AC_MSG_RESULT(no)
3818)
3819
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003820AC_MSG_CHECKING(for resize_term)
3821AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3822 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003823 AC_MSG_RESULT(yes),
3824 AC_MSG_RESULT(no)
3825)
3826
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003827AC_MSG_CHECKING(for resizeterm)
3828AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3829 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003830 AC_MSG_RESULT(yes),
3831 AC_MSG_RESULT(no)
3832)
3833
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003834AC_MSG_CHECKING(for /dev/ptmx)
3835
3836if test -r /dev/ptmx
3837then
3838 AC_MSG_RESULT(yes)
3839 AC_DEFINE(HAVE_DEV_PTMX, 1,
3840 [Define if we have /dev/ptmx.])
3841else
3842 AC_MSG_RESULT(no)
3843fi
3844
3845AC_MSG_CHECKING(for /dev/ptc)
3846
3847if test -r /dev/ptc
3848then
3849 AC_MSG_RESULT(yes)
3850 AC_DEFINE(HAVE_DEV_PTC, 1,
3851 [Define if we have /dev/ptc.])
3852else
3853 AC_MSG_RESULT(no)
3854fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003855
Brett Cannon09d12362006-05-11 05:11:33 +00003856AC_MSG_CHECKING(for %zd printf() format support)
3857AC_TRY_RUN([#include <stdio.h>
3858#include <stddef.h>
3859#include <string.h>
3860
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003861#ifdef HAVE_SYS_TYPES_H
3862#include <sys/types.h>
3863#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003864
3865#ifdef HAVE_SSIZE_T
3866typedef ssize_t Py_ssize_t;
3867#elif SIZEOF_VOID_P == SIZEOF_LONG
3868typedef long Py_ssize_t;
3869#else
3870typedef int Py_ssize_t;
3871#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003872
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003873int main()
3874{
3875 char buffer[256];
3876
Brett Cannon09d12362006-05-11 05:11:33 +00003877 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3878 return 1;
3879
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003880 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003881 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003882
3883 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3884 return 1;
3885
3886 if (strcmp(buffer, "-123"))
3887 return 1;
3888
Brett Cannon09d12362006-05-11 05:11:33 +00003889 return 0;
3890}],
3891[AC_MSG_RESULT(yes)
3892 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3893 AC_MSG_RESULT(no))
3894
Martin v. Löwis01c04012002-11-11 14:58:44 +00003895AC_CHECK_TYPE(socklen_t,,
3896 AC_DEFINE(socklen_t,int,
3897 Define to `int' if <sys/socket.h> does not define.),[
3898#ifdef HAVE_SYS_TYPES_H
3899#include <sys/types.h>
3900#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003901#ifdef HAVE_SYS_SOCKET_H
3902#include <sys/socket.h>
3903#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003904])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003905
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003906AC_SUBST(THREADHEADERS)
3907
3908for h in `(cd $srcdir;echo Python/thread_*.h)`
3909do
3910 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3911done
3912
Ronald Oussoren55114422009-11-19 16:37:33 +00003913if test $ac_sys_system = Darwin
3914then
3915 LIBS="$LIBS -framework CoreFoundation"
3916fi
3917
3918
3919
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003920AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003921SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003922AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003923for dir in $SRCDIRS; do
3924 if test ! -d $dir; then
3925 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003926 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003927done
3928AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003929
Guido van Rossum627b2d71993-12-24 10:39:16 +00003930# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003931AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3932AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003933
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003934echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003935if test ! -f Modules/Setup
3936then
3937 cp $srcdir/Modules/Setup.dist Modules/Setup
3938fi
3939
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003940echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003941if test ! -f Modules/Setup.local
3942then
3943 echo "# Edit this file for local setup changes" >Modules/Setup.local
3944fi
3945
3946echo "creating Makefile"
3947$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3948 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003949 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003950
3951case $ac_sys_system in
3952BeOS)
3953 AC_MSG_WARN([
3954
3955 Support for BeOS is deprecated as of Python 2.6.
3956 See PEP 11 for the gory details.
3957 ])
3958 ;;
3959*) ;;
3960esac
3961
Neil Schemenauer66252162001-02-19 04:47:42 +00003962mv config.c Modules