blob: 0413533a4b04ea3d7eb4af12712d73c346660838 [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)
116AC_SUBST(UNIVERSAL_ARCH32_FLAGS)
117AC_SUBST(UNIVERSAL_ARCH64_FLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000118AC_MSG_CHECKING(for --with-universal-archs)
119AC_ARG_WITH(universal-archs,
Ronald Oussoren7ab74352009-09-08 07:10:07 +0000120 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 +0000121[
122 AC_MSG_RESULT($withval)
123 UNIVERSAL_ARCHS="$withval"
Ronald Oussorend0841712009-09-29 13:01:59 +0000124 if test "${enable_universalsdk}" ; then
125 :
126 else
127 AC_MSG_ERROR([--with-universal-archs without --enable-universalsdk. See Mac/README])
128 fi
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000129],
130[
131 AC_MSG_RESULT(32-bit)
132])
133
134
135
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000136AC_ARG_WITH(framework-name,
137 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
138 specify an alternate name of the framework built with --enable-framework),
139[
Ronald Oussorend0841712009-09-29 13:01:59 +0000140 if test "${enable_framework}"; then
141 :
142 else
143 AC_MSG_ERROR([--with-framework-name without --enable-framework. See Mac/README])
144 fi
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000145 PYTHONFRAMEWORK=${withval}
146 PYTHONFRAMEWORKDIR=${withval}.framework
147 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
148 ],[
149 PYTHONFRAMEWORK=Python
150 PYTHONFRAMEWORKDIR=Python.framework
151 PYTHONFRAMEWORKIDENTIFIER=org.python.python
152])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000153dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000154AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000155 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
156[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000157 case $enableval in
158 yes)
159 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000160 esac
161 case $enableval in
162 no)
163 PYTHONFRAMEWORK=
164 PYTHONFRAMEWORKDIR=no-framework
165 PYTHONFRAMEWORKPREFIX=
166 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000167 FRAMEWORKINSTALLFIRST=
168 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000169 FRAMEWORKALTINSTALLFIRST=
170 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000171 if test "x${prefix}" = "xNONE"; then
172 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
173 else
174 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
175 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000176 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000177 ;;
178 *)
179 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000180 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000181 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000182 FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure bininstall maninstall"
Ronald Oussorenea580e12010-03-09 10:36:28 +0000183 case "${UNIVERSAL_ARCHS}" in
184 all|3-way|intel)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000185 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkinstallunixtools4way"
Ronald Oussoren75d83852009-03-30 17:56:14 +0000186 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps4way frameworkaltinstallunixtools4way"
Ronald Oussorenea580e12010-03-09 10:36:28 +0000187 ;;
188 *)
Ronald Oussoren75d83852009-03-30 17:56:14 +0000189 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000190 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ronald Oussorenea580e12010-03-09 10:36:28 +0000191 ;;
192 esac
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000193
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000194 if test "x${prefix}" = "xNONE" ; then
195 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
196 else
197 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
198 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000199 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000200
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000201 # Add files for Mac specific code to the list of output
Ronald Oussoren836b0392006-05-14 19:56:34 +0000202 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000203 AC_CONFIG_FILES(Mac/Makefile)
204 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
205 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000206 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
207 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000208 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000209 ],[
210 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000211 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000212 PYTHONFRAMEWORKPREFIX=
213 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000214 FRAMEWORKINSTALLFIRST=
215 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000216 FRAMEWORKALTINSTALLFIRST=
217 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000218 if test "x${prefix}" = "xNONE" ; then
219 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
220 else
221 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
222 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000223 enable_framework=
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000224
225 if test "$UNIVERSAL_ARCHS" = "all"
226 then
227 FRAMEWORKINSTALLLAST=update4wayuniversal
228 FRAMEWORKALTINSTALLLAST=update4wayuniversal
229 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000230])
231AC_SUBST(PYTHONFRAMEWORK)
Ronald Oussoren580c7fe2008-05-02 19:45:11 +0000232AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000233AC_SUBST(PYTHONFRAMEWORKDIR)
234AC_SUBST(PYTHONFRAMEWORKPREFIX)
235AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000236AC_SUBST(FRAMEWORKINSTALLFIRST)
237AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000238AC_SUBST(FRAMEWORKALTINSTALLFIRST)
239AC_SUBST(FRAMEWORKALTINSTALLLAST)
240AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000241
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000242##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000243## AC_HELP_STRING(--with-dyld,
244## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000245##
Guido van Rossumb418f891996-07-30 18:06:02 +0000246# Set name for machine-dependent library files
247AC_SUBST(MACHDEP)
248AC_MSG_CHECKING(MACHDEP)
249if test -z "$MACHDEP"
250then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000251 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000252 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
253 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000254 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000255 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000256 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000257 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000258 ac_md_system=`echo $ac_sys_system |
259 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
260 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000261 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000262 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000263
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000264 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000265 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000266 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000267 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000268 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000269 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000270 esac
271fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000272
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000273# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
274# disable features if it is defined, without any means to access these
275# features as extensions. For these systems, we skip the definition of
276# _XOPEN_SOURCE. Before adding a system to the list to gain access to
277# some feature, make sure there is no alternative way to access this
278# feature. Also, when using wildcards, make sure you have verified the
279# need for not defining _XOPEN_SOURCE on all systems matching the
280# wildcard, and that the wildcard does not include future systems
281# (which may remove their limitations).
282dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
283case $ac_sys_system/$ac_sys_release in
284 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
285 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000286 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Martin v. Löwis4c5e2c82010-02-15 21:43:41 +0000287 # In addition, Stefan Krah confirms that issue #1244610 exists through
288 # OpenBSD 4.6, but is fixed in 4.7.
289 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123456@:>@)
Martin v. Löwiscb78de62007-12-29 18:49:21 +0000290 define_xopen_source=no
291 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
292 # also defined. This can be overridden by defining _BSD_SOURCE
293 # As this has a different meaning on Linux, only define it on OpenBSD
294 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
295 ;;
Martin v. Löwis4c5e2c82010-02-15 21:43:41 +0000296 OpenBSD/4.@<:@789@:>@)
Martin v. Löwis4bacaca2010-02-15 08:34:34 +0000297 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
298 # also defined. This can be overridden by defining _BSD_SOURCE
299 # As this has a different meaning on Linux, only define it on OpenBSD
300 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
301 ;;
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000302 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
303 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
304 # Marc Recht
Georg Brandl60616122008-11-16 08:02:56 +0000305 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 +0000306 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000307 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
308 # of union __?sigval. Reported by Stuart Bishop.
309 SunOS/5.6)
310 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000311 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
312 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000313 # Reconfirmed for 7.1.4 by Martin v. Loewis.
314 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000315 define_xopen_source=no;;
316 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000317 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000318 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000319 define_xopen_source=no;;
Martin v. Löwis7f08c1f2008-11-04 20:43:31 +0000320 # On FreeBSD 4, the math functions C89 does not cover are never defined
321 # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them.
322 FreeBSD/4.*)
323 define_xopen_source=no;;
324 # On MacOS X 10.2, a bug in ncurses.h means that it craps out if
325 # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which
326 # identifies itself as Darwin/7.*
327 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
328 # disables platform specific features beyond repair.
329 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
330 # has no effect, don't bother defining them
331 Darwin/@<:@6789@:>@.*)
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000332 define_xopen_source=no;;
Ronald Oussoren668907d2010-03-08 18:21:19 +0000333 Darwin/1@<:@0-9@:>@.*)
Ronald Oussoren09416212010-03-08 07:00:08 +0000334 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000335 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
336 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
337 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000338 AIX/4)
339 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000340 AIX/5)
341 if test `uname -r` -eq 1; then
342 define_xopen_source=no
343 fi
344 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000345 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
346 # defining NI_NUMERICHOST.
347 QNX/6.3.2)
348 define_xopen_source=no
349 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000350
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000351esac
352
353if test $define_xopen_source = yes
354then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000355 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
356 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000357 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
358 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000359 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000360 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000361 AC_DEFINE(_XOPEN_SOURCE, 500,
362 Define to the level of X/Open that your system supports)
363 ;;
364 *)
365 AC_DEFINE(_XOPEN_SOURCE, 600,
366 Define to the level of X/Open that your system supports)
367 ;;
368 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000369
370 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
371 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
372 # several APIs are not declared. Since this is also needed in some
373 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000374 # except for Solaris 10, where it must not be defined,
375 # as it implies XPG4.2
376 case $ac_sys_system/$ac_sys_release in
377 SunOS/5.10)
378 ;;
379 *)
380 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
381 Define to activate Unix95-and-earlier features)
382 ;;
383 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000384
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000385 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
386
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000387fi
388
Guido van Rossum91922671997-10-09 20:24:13 +0000389#
390# SGI compilers allow the specification of the both the ABI and the
391# ISA on the command line. Depending on the values of these switches,
392# different and often incompatable code will be generated.
393#
394# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
395# thus supply support for various ABI/ISA combinations. The MACHDEP
396# variable is also adjusted.
397#
398AC_SUBST(SGI_ABI)
399if test ! -z "$SGI_ABI"
400then
401 CC="cc $SGI_ABI"
402 LDFLAGS="$SGI_ABI $LDFLAGS"
403 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
404fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000405AC_MSG_RESULT($MACHDEP)
406
Jack Jansen83f898c2002-12-30 22:23:40 +0000407# And add extra plat-mac for darwin
408AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000409AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000410AC_MSG_CHECKING(EXTRAPLATDIR)
411if test -z "$EXTRAPLATDIR"
412then
413 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000414 darwin)
415 EXTRAPLATDIR="\$(PLATMACDIRS)"
416 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
417 ;;
418 *)
419 EXTRAPLATDIR=""
420 EXTRAMACHDEPPATH=""
421 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000422 esac
423fi
424AC_MSG_RESULT($EXTRAPLATDIR)
425
Jack Jansen6b08a402004-06-03 12:41:45 +0000426# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
427# it may influence the way we can build extensions, so distutils
428# needs to check it
429AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000430AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000431CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000432EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000433
Mark Dickinson65134662008-04-25 16:11:04 +0000434AC_MSG_CHECKING(machine type as reported by uname -m)
435ac_sys_machine=`uname -m`
436AC_MSG_RESULT($ac_sys_machine)
437
Guido van Rossum627b2d71993-12-24 10:39:16 +0000438# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000439
440# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
441# for debug/optimization stuff. BASECFLAGS is for flags that are required
442# just to get things to compile and link. Users are free to override OPT
443# when running configure or make. The build should not break if they do.
444# BASECFLAGS should generally not be messed with, however.
445
446# XXX shouldn't some/most/all of this code be merged with the stuff later
447# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000448AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000449AC_ARG_WITH(gcc,
450 AC_HELP_STRING(--without-gcc,never use gcc),
451[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000452 case $withval in
Georg Brandlc04c2892009-01-14 00:00:17 +0000453 no) CC=${CC:-cc}
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000454 without_gcc=yes;;
455 yes) CC=gcc
456 without_gcc=no;;
457 *) CC=$withval
458 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000459 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000460 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000461 AIX*) CC=cc_r
462 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000463 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000464 case $BE_HOST_CPU in
465 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000466 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000467 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000468 BASECFLAGS="$BASECFLAGS -export pragma"
469 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000470 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000471 ;;
472 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000473 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000474 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000475 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000476 ;;
477 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000478 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000479 ;;
480 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000481 AR="\$(srcdir)/Modules/ar_beos"
482 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000483 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000484 Monterey*)
485 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000486 without_gcc=;;
487 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000488 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000489AC_MSG_RESULT($without_gcc)
490
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000491# If the user switches compilers, we can't believe the cache
492if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
493then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000494 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
495(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000496fi
497
Guido van Rossum627b2d71993-12-24 10:39:16 +0000498AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000499
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000500AC_SUBST(CXX)
501AC_SUBST(MAINCC)
502AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
503AC_ARG_WITH(cxx_main,
504 AC_HELP_STRING([--with-cxx-main=<compiler>],
505 [compile main() and link python executable with C++ compiler]),
506[
507
508 case $withval in
509 no) with_cxx_main=no
510 MAINCC='$(CC)';;
511 yes) with_cxx_main=yes
512 MAINCC='$(CXX)';;
513 *) with_cxx_main=yes
514 MAINCC=$withval
515 if test -z "$CXX"
516 then
517 CXX=$withval
518 fi;;
519 esac], [
520 with_cxx_main=no
521 MAINCC='$(CC)'
522])
523AC_MSG_RESULT($with_cxx_main)
524
525preset_cxx="$CXX"
526if test -z "$CXX"
527then
528 case "$CC" in
529 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
530 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
531 esac
532 if test "$CXX" = "notfound"
533 then
534 CXX=""
535 fi
536fi
537if test -z "$CXX"
538then
539 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
540 if test "$CXX" = "notfound"
541 then
542 CXX=""
543 fi
544fi
545if test "$preset_cxx" != "$CXX"
546then
547 AC_MSG_WARN([
548
549 By default, distutils will build C++ extension modules with "$CXX".
550 If this is not intended, then set CXX on the configure command line.
551 ])
552fi
553
554
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000555# checks for UNIX variants that set C preprocessor variables
556AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000557
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000558# Check for unsupported systems
559case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000560atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000561 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
562 echo See README for details.
563 exit 1;;
564esac
565
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000566AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000567AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000568AC_ARG_WITH(suffix,
569 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
570[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000571 case $withval in
572 no) EXEEXT=;;
573 yes) EXEEXT=.exe;;
574 *) EXEEXT=$withval;;
575 esac])
576AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000577
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000578# Test whether we're running on a non-case-sensitive system, in which
579# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000580AC_SUBST(BUILDEXEEXT)
581AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000582if test ! -d CaseSensitiveTestDir; then
583mkdir CaseSensitiveTestDir
584fi
585
586if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000587then
Jack Jansen1999ef42001-12-06 21:47:20 +0000588 AC_MSG_RESULT(yes)
589 BUILDEXEEXT=.exe
590else
591 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000592 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000593fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000594rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000595
Guido van Rossumdd997f71998-10-07 19:58:26 +0000596case $MACHDEP in
597bsdos*)
598 case $CC in
599 gcc) CC="$CC -D_HAVE_BSDI";;
600 esac;;
601esac
602
Guido van Rossum84561611997-08-21 00:08:11 +0000603case $ac_sys_system in
604hp*|HP*)
605 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000606 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000607 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000608Monterey*)
609 case $CC in
610 cc) CC="$CC -Wl,-Bexport";;
611 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000612SunOS*)
613 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000614 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000615 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000616esac
617
Martin v. Löwise8964d42001-03-06 12:09:07 +0000618
Neil Schemenauer61c51152001-01-26 16:18:16 +0000619AC_SUBST(LIBRARY)
620AC_MSG_CHECKING(LIBRARY)
621if test -z "$LIBRARY"
622then
623 LIBRARY='libpython$(VERSION).a'
624fi
625AC_MSG_RESULT($LIBRARY)
626
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000627# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000628# name of the library into which to insert object files). BLDLIBRARY is also
629# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
630# is blank as the main program is not linked directly against LDLIBRARY.
631# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
632# systems without shared libraries, LDLIBRARY is the same as LIBRARY
633# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
634# DLLLIBRARY is the shared (i.e., DLL) library.
635#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000636# RUNSHARED is used to run shared python without installed libraries
637#
638# INSTSONAME is the name of the shared library that will be use to install
639# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000640AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000641AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000642AC_SUBST(BLDLIBRARY)
643AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000644AC_SUBST(INSTSONAME)
645AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000646LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000647BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000648INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000649DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000650LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000651RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000652
Guido van Rossumfb842551997-08-06 23:42:07 +0000653# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000654# If CXX is set, and if it is needed to link a main function that was
655# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
656# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000657# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000658# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000659AC_SUBST(LINKCC)
660AC_MSG_CHECKING(LINKCC)
661if test -z "$LINKCC"
662then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000663 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000664 case $ac_sys_system in
665 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000666 exp_extra="\"\""
667 if test $ac_sys_release -ge 5 -o \
668 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
669 exp_extra="."
670 fi
671 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000672 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000673 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Martin v. Löwis8c255e42008-05-23 15:06:50 +0000674 QNX*)
675 # qcc must be used because the other compilers do not
676 # support -N.
677 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000678 esac
679fi
680AC_MSG_RESULT($LINKCC)
681
Martin v. Löwis1142de32002-03-29 16:28:31 +0000682AC_MSG_CHECKING(for --enable-shared)
683AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000684 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000685
Martin v. Löwis1142de32002-03-29 16:28:31 +0000686if test -z "$enable_shared"
687then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000688 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000689 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000690 enable_shared="yes";;
691 *)
692 enable_shared="no";;
693 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000694fi
695AC_MSG_RESULT($enable_shared)
696
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000697AC_MSG_CHECKING(for --enable-profiling)
698AC_ARG_ENABLE(profiling,
699 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
700[ac_save_cc="$CC"
701 CC="$CC -pg"
702 AC_TRY_RUN([int main() { return 0; }],
703 ac_enable_profiling="yes",
704 ac_enable_profiling="no",
705 ac_enable_profiling="no")
706 CC="$ac_save_cc"])
707AC_MSG_RESULT($ac_enable_profiling)
708
709case "$ac_enable_profiling" in
710 "yes")
711 BASECFLAGS="-pg $BASECFLAGS"
712 LDFLAGS="-pg $LDFLAGS"
713 ;;
714esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000715
716AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000717
Guido van Rossumb8552162001-09-05 14:58:11 +0000718# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
719# library that we build, but we do not want to link against it (we
720# will find it with a -framework option). For this reason there is an
721# extra variable BLDLIBRARY against which Python and the extension
722# modules are linked, BLDLIBRARY. This is normally the same as
723# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000724if test "$enable_framework"
725then
726 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000727 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000728 BLDLIBRARY=''
729else
730 BLDLIBRARY='$(LDLIBRARY)'
731fi
732
Martin v. Löwis1142de32002-03-29 16:28:31 +0000733# Other platforms follow
734if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000735 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000736 case $ac_sys_system in
737 BeOS*)
738 LDLIBRARY='libpython$(VERSION).so'
739 ;;
740 CYGWIN*)
741 LDLIBRARY='libpython$(VERSION).dll.a'
742 DLLLIBRARY='libpython$(VERSION).dll'
743 ;;
744 SunOS*)
745 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000746 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000747 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000748 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000749 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000750 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000751 LDLIBRARY='libpython$(VERSION).so'
752 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000753 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000754 case $ac_sys_system in
755 FreeBSD*)
756 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
757 ;;
758 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000759 INSTSONAME="$LDLIBRARY".$SOVERSION
760 ;;
761 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000762 case `uname -m` in
763 ia64)
764 LDLIBRARY='libpython$(VERSION).so'
765 ;;
766 *)
767 LDLIBRARY='libpython$(VERSION).sl'
768 ;;
769 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000770 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000771 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000772 ;;
773 OSF*)
774 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000775 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000776 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000777 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000778 atheos*)
779 LDLIBRARY='libpython$(VERSION).so'
780 BLDLIBRARY='-L. -lpython$(VERSION)'
781 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
782 ;;
Ronald Oussorene9cce8e2009-01-02 10:46:42 +0000783 Darwin*)
784 LDLIBRARY='libpython$(VERSION).dylib'
785 BLDLIBRARY='-L. -lpython$(VERSION)'
786 RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}'
787 ;;
788
Martin v. Löwis1142de32002-03-29 16:28:31 +0000789 esac
Jason Tishler30765592003-09-04 11:04:06 +0000790else # shared is disabled
791 case $ac_sys_system in
792 CYGWIN*)
793 BLDLIBRARY='$(LIBRARY)'
794 LDLIBRARY='libpython$(VERSION).dll.a'
795 ;;
796 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000797fi
798
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000799AC_MSG_RESULT($LDLIBRARY)
800
Guido van Rossum627b2d71993-12-24 10:39:16 +0000801AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000802AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000803AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000804
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000805AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000806AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000807if test $SVNVERSION = found
808then
809 SVNVERSION="svnversion \$(srcdir)"
810else
Benjamin Peterson2eb65452009-05-23 19:35:33 +0000811 SVNVERSION="echo Unversioned directory"
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000812fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000813
Neil Schemenauera42c8272001-03-31 00:01:55 +0000814case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000815bsdos*|hp*|HP*)
816 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000817 if test -z "$INSTALL"
818 then
819 INSTALL="${srcdir}/install-sh -c"
820 fi
821esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000822AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000823
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000824# Not every filesystem supports hard links
825AC_SUBST(LN)
826if test -z "$LN" ; then
827 case $ac_sys_system in
828 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000829 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000830 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000831 *) LN=ln;;
832 esac
833fi
834
Fred Drake9f715822001-07-11 06:27:00 +0000835# Check for --with-pydebug
836AC_MSG_CHECKING(for --with-pydebug)
837AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000838 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
839[
Fred Drake9f715822001-07-11 06:27:00 +0000840if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000841then
842 AC_DEFINE(Py_DEBUG, 1,
843 [Define if you want to build an interpreter with many run-time checks.])
844 AC_MSG_RESULT(yes);
845 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000846else AC_MSG_RESULT(no); Py_DEBUG='false'
847fi],
848[AC_MSG_RESULT(no)])
849
Skip Montanarodecc6a42003-01-01 20:07:49 +0000850# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
851# merged with this chunk of code?
852
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000853# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000854# ------------------------
855# (The following bit of code is complicated enough - please keep things
856# indented properly. Just pretend you're editing Python code. ;-)
857
858# There are two parallel sets of case statements below, one that checks to
859# see if OPT was set and one that does BASECFLAGS setting based upon
860# compiler and platform. BASECFLAGS tweaks need to be made even if the
861# user set OPT.
862
863# tweak OPT based on compiler and platform, only if the user didn't set
864# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000865AC_SUBST(OPT)
Benjamin Peterson5d39ab02010-03-23 21:02:50 +0000866if test "${OPT-unset}" = "unset"
Guido van Rossumb418f891996-07-30 18:06:02 +0000867then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000868 case $GCC in
869 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000870 if test "$CC" != 'g++' ; then
871 STRICT_PROTO="-Wstrict-prototypes"
872 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000873 # For gcc 4.x we need to use -fwrapv so lets check if its supported
874 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
875 WRAP="-fwrapv"
876 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000877 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000878 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000879 if test "$Py_DEBUG" = 'true' ; then
880 # Optimization messes up debuggers, so turn it off for
881 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000882 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000883 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000884 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000885 fi
886 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000887 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000888 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000889 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000890 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000891 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000892 SCO_SV*) OPT="$OPT -m486 -DSCO5"
893 ;;
894 esac
Fred Drake9f715822001-07-11 06:27:00 +0000895 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000896
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000897 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000898 OPT="-O"
899 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000900 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000901
902 # The current (beta) Monterey compiler dies with optimizations
903 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000904 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000905 Monterey*)
906 OPT=""
907 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000908 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000909
Guido van Rossum4e8af441994-08-19 15:33:54 +0000910fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000911
Skip Montanarodecc6a42003-01-01 20:07:49 +0000912AC_SUBST(BASECFLAGS)
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000913
914# The -arch flags for universal builds on OSX
915UNIVERSAL_ARCH_FLAGS=
916AC_SUBST(UNIVERSAL_ARCH_FLAGS)
917
Skip Montanarodecc6a42003-01-01 20:07:49 +0000918# tweak BASECFLAGS based on compiler and platform
919case $GCC in
920yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000921 # Python violates C99 rules, by casting between incompatible
922 # pointer types. GCC may generate bad code as a result of that,
923 # so use -fno-strict-aliasing if supported.
924 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
925 ac_save_cc="$CC"
926 CC="$CC -fno-strict-aliasing"
927 AC_TRY_RUN([int main() { return 0; }],
928 ac_cv_no_strict_aliasing_ok=yes,
929 ac_cv_no_strict_aliasing_ok=no,
930 ac_cv_no_strict_aliasing_ok=no)
931 CC="$ac_save_cc"
932 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
933 if test $ac_cv_no_strict_aliasing_ok = yes
934 then
935 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
936 fi
Mark Dickinson65134662008-04-25 16:11:04 +0000937
938 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
939 # support. Without this, treatment of subnormals doesn't follow
940 # the standard.
941 case $ac_sys_machine in
942 alpha*)
943 BASECFLAGS="$BASECFLAGS -mieee"
944 ;;
945 esac
946
Skip Montanarodecc6a42003-01-01 20:07:49 +0000947 case $ac_sys_system in
948 SCO_SV*)
949 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
950 ;;
951 # is there any other compiler on Darwin besides gcc?
952 Darwin*)
Jeffrey Yasskin1b4e45b2008-03-17 14:40:53 +0000953 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
954 # used to be here, but non-Apple gcc doesn't accept them.
Benjamin Peterson4347c442008-07-17 15:59:24 +0000955
Ronald Oussorene3eaf312010-04-18 18:21:03 +0000956 if test "${CC}" = gcc
957 then
958 AC_MSG_CHECKING(which compiler should be used)
959 case "${UNIVERSALSDK}" in
960 */MacOSX10.4u.sdk)
961 # Build using 10.4 SDK, force usage of gcc when the
962 # compiler is gcc, otherwise the user will get very
963 # confusing error messages when building on OSX 10.6
964 CC=gcc-4.0
965 CPP=cpp-4.0
966 ;;
967 esac
968 AC_MSG_RESULT($CC)
969 fi
970
971
Ronald Oussoren988117f2006-04-29 11:31:35 +0000972 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000973 UNIVERSAL_ARCH_FLAGS=""
974 if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
Benjamin Peterson0e6ea5d2008-07-16 20:17:04 +0000975 ARCH_RUN_32BIT=""
Ronald Oussorenea580e12010-03-09 10:36:28 +0000976 UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000977
978 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
Ronald Oussoren461f2202009-09-06 10:54:28 +0000979 ARCH_RUN_32BIT="true"
Ronald Oussorenea580e12010-03-09 10:36:28 +0000980 UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000981
982 elif test "$UNIVERSAL_ARCHS" = "all" ; then
Ronald Oussorend8244f52010-02-11 13:22:03 +0000983 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussorenea580e12010-03-09 10:36:28 +0000984 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
985 UNIVERSAL_ARCH32_FLAGS="-arch i386 -arch ppc"
Ronald Oussoren8a6e4912010-03-09 21:33:59 +0000986 UNIVERSAL_ARCH64_FLAGS="-arch x86_64 -arch ppc64"
Ronald Oussorenea580e12010-03-09 10:36:28 +0000987 LIPO_32BIT_FLAGS="-extract i386 -extract ppc7400"
988 LIPO_64BIT_FLAGS="-extract x86_64 -extract ppc64"
Ronald Oussoren5640ce22008-06-05 12:58:24 +0000989
Ronald Oussoren7ab74352009-09-08 07:10:07 +0000990 elif test "$UNIVERSAL_ARCHS" = "intel" ; then
Ronald Oussorend8244f52010-02-11 13:22:03 +0000991 ARCH_RUN_32BIT="/usr/bin/arch -i386"
Ronald Oussorenea580e12010-03-09 10:36:28 +0000992 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
993 UNIVERSAL_ARCH32_FLAGS="-arch i386"
994 UNIVERSAL_ARCH64_FLAGS="-arch x86_64"
995 LIPO_32BIT_FLAGS="-extract i386"
996 LIPO_64BIT_FLAGS="-extract x86_64"
Ronald Oussoren7ab74352009-09-08 07:10:07 +0000997
998 elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
Ronald Oussorend8244f52010-02-11 13:22:03 +0000999 ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc"
Ronald Oussorenea580e12010-03-09 10:36:28 +00001000 UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
1001 UNIVERSAL_ARCH32_FLAGS="-arch i386 -arch ppc"
1002 UNIVERSAL_ARCH64_FLAGS="-arch x86_64"
1003 LIPO_32BIT_FLAGS="-extract i386 -extract ppc7400"
1004 LIPO_64BIT_FLAGS="-extract x86_64"
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001005
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001006 else
Ronald Oussorenba0aa6b2009-09-20 20:16:38 +00001007 AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001008
1009 fi
1010
1011
Ronald Oussorene3eaf312010-04-18 18:21:03 +00001012 CFLAGS="${UNIVERSAL_ARCH_FLAGS} ${CFLAGS}"
1013 if test "${UNIVERSALSDK}" != "/"
1014 then
1015 CFLAGS="-isysroot ${UNIVERSALSDK} ${CFLAGS}"
1016 CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}"
Benjamin Peterson4347c442008-07-17 15:59:24 +00001017 fi
Ronald Oussoren988117f2006-04-29 11:31:35 +00001018 fi
1019
Benjamin Peterson4347c442008-07-17 15:59:24 +00001020 # Calculate the right deployment target for this build.
1021 #
1022 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
1023 if test ${cur_target} '>' 10.2; then
1024 cur_target=10.3
Ronald Oussoren461f2202009-09-06 10:54:28 +00001025 if test ${enable_universalsdk}; then
1026 if test "${UNIVERSAL_ARCHS}" = "all"; then
1027 # Ensure that the default platform for a
1028 # 4-way universal build is OSX 10.5,
1029 # that's the first OS release where
1030 # 4-way builds make sense.
1031 cur_target='10.5'
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001032
1033 elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
1034 cur_target='10.5'
1035
1036 elif test "${UNIVERSAL_ARCHS}" = "intel"; then
1037 cur_target='10.5'
1038
1039 elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
1040 cur_target='10.5'
Ronald Oussoren461f2202009-09-06 10:54:28 +00001041 fi
1042 else
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001043 if test `/usr/bin/arch` = "i386"; then
Ronald Oussoren461f2202009-09-06 10:54:28 +00001044 # On Intel macs default to a deployment
1045 # target of 10.4, that's the first OSX
1046 # release with Intel support.
1047 cur_target="10.4"
1048 fi
1049 fi
Benjamin Peterson4347c442008-07-17 15:59:24 +00001050 fi
1051 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
1052
1053 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1054 # environment with a value that is the same as what we'll use
1055 # in the Makefile to ensure that we'll get the same compiler
1056 # environment during configure and build time.
1057 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1058 export MACOSX_DEPLOYMENT_TARGET
1059 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
1060
Skip Montanarodecc6a42003-01-01 20:07:49 +00001061 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +00001062 OSF*)
1063 BASECFLAGS="$BASECFLAGS -mieee"
1064 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001065 esac
1066 ;;
1067
1068*)
1069 case $ac_sys_system in
1070 OpenUNIX*|UnixWare*)
1071 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
1072 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +00001073 OSF*)
1074 BASECFLAGS="$BASECFLAGS -ieee -std"
1075 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001076 SCO_SV*)
1077 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
1078 ;;
1079 esac
1080 ;;
1081esac
1082
Fred Drakee1ceaa02001-12-04 20:55:47 +00001083if test "$Py_DEBUG" = 'true'; then
1084 :
1085else
1086 OPT="-DNDEBUG $OPT"
1087fi
1088
Guido van Rossum6f2260e1996-09-09 16:21:03 +00001089if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001090then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001091 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +00001092fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001093
Neal Norwitz020c46a2006-01-07 21:39:28 +00001094# disable check for icc since it seems to pass, but generates a warning
1095if test "$CC" = icc
1096then
1097 ac_cv_opt_olimit_ok=no
1098fi
1099
Guido van Rossum91922671997-10-09 20:24:13 +00001100AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
1101AC_CACHE_VAL(ac_cv_opt_olimit_ok,
1102[ac_save_cc="$CC"
1103CC="$CC -OPT:Olimit=0"
1104AC_TRY_RUN([int main() { return 0; }],
1105 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001106 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +00001107 ac_cv_opt_olimit_ok=no)
1108CC="$ac_save_cc"])
1109AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +00001110if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +00001111 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +00001112 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
1113 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
1114 # environment?
1115 Darwin*)
1116 ;;
1117 *)
1118 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
1119 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +00001120 esac
Guido van Rossumf8678121998-07-07 21:05:09 +00001121else
1122 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
1123 AC_CACHE_VAL(ac_cv_olimit_ok,
1124 [ac_save_cc="$CC"
1125 CC="$CC -Olimit 1500"
1126 AC_TRY_RUN([int main() { return 0; }],
1127 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +00001128 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +00001129 ac_cv_olimit_ok=no)
1130 CC="$ac_save_cc"])
1131 AC_MSG_RESULT($ac_cv_olimit_ok)
1132 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001133 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +00001134 fi
Guido van Rossum201afe51997-05-14 21:14:44 +00001135fi
Guido van Rossumf8678121998-07-07 21:05:09 +00001136
Martin v. Löwisaac13162006-10-19 10:58:46 +00001137# Check whether GCC supports PyArg_ParseTuple format
1138if test "$GCC" = "yes"
1139then
1140 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
1141 save_CFLAGS=$CFLAGS
1142 CFLAGS="$CFLAGS -Werror"
1143 AC_TRY_COMPILE([
1144 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
1145 ],,
1146 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
1147 AC_MSG_RESULT(yes),
1148 AC_MSG_RESULT(no)
1149 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +00001150 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +00001151fi
1152
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001153# On some compilers, pthreads are available without further options
1154# (e.g. MacOS X). On some of these systems, the compiler will not
1155# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
1156# So we have to see first whether pthreads are available without
1157# options before we can check whether -Kpthread improves anything.
1158AC_MSG_CHECKING(whether pthreads are available without options)
1159AC_CACHE_VAL(ac_cv_pthread_is_default,
1160[AC_TRY_RUN([
1161#include <pthread.h>
1162
1163void* routine(void* p){return NULL;}
1164
1165int main(){
1166 pthread_t p;
1167 if(pthread_create(&p,NULL,routine,NULL)!=0)
1168 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001169 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001170 return 0;
1171}
1172],
Skip Montanarod8d39a02003-07-10 20:44:10 +00001173[
1174 ac_cv_pthread_is_default=yes
1175 ac_cv_kthread=no
1176 ac_cv_pthread=no
1177],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001178 ac_cv_pthread_is_default=no,
1179 ac_cv_pthread_is_default=no)
1180])
1181AC_MSG_RESULT($ac_cv_pthread_is_default)
1182
1183
1184if test $ac_cv_pthread_is_default = yes
1185then
1186 ac_cv_kpthread=no
1187else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001188# -Kpthread, if available, provides the right #defines
1189# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001190# Some compilers won't report that they do not support -Kpthread,
1191# so we need to run a program to see whether it really made the
1192# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +00001193AC_MSG_CHECKING(whether $CC accepts -Kpthread)
1194AC_CACHE_VAL(ac_cv_kpthread,
1195[ac_save_cc="$CC"
1196CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001197AC_TRY_RUN([
1198#include <pthread.h>
1199
1200void* routine(void* p){return NULL;}
1201
1202int main(){
1203 pthread_t p;
1204 if(pthread_create(&p,NULL,routine,NULL)!=0)
1205 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +00001206 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001207 return 0;
1208}
1209],
Martin v. Löwis130fb172001-07-19 11:00:41 +00001210 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +00001211 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +00001212 ac_cv_kpthread=no)
1213CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +00001214AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001215fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001216
Skip Montanarod8d39a02003-07-10 20:44:10 +00001217if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001218then
1219# -Kthread, if available, provides the right #defines
1220# and linker options to make pthread_create available
1221# Some compilers won't report that they do not support -Kthread,
1222# so we need to run a program to see whether it really made the
1223# function available.
1224AC_MSG_CHECKING(whether $CC accepts -Kthread)
1225AC_CACHE_VAL(ac_cv_kthread,
1226[ac_save_cc="$CC"
1227CC="$CC -Kthread"
1228AC_TRY_RUN([
1229#include <pthread.h>
1230
1231void* routine(void* p){return NULL;}
1232
1233int main(){
1234 pthread_t p;
1235 if(pthread_create(&p,NULL,routine,NULL)!=0)
1236 return 1;
1237 (void)pthread_detach(p);
1238 return 0;
1239}
1240],
1241 ac_cv_kthread=yes,
1242 ac_cv_kthread=no,
1243 ac_cv_kthread=no)
1244CC="$ac_save_cc"])
1245AC_MSG_RESULT($ac_cv_kthread)
1246fi
1247
Skip Montanarod8d39a02003-07-10 20:44:10 +00001248if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001249then
1250# -pthread, if available, provides the right #defines
1251# and linker options to make pthread_create available
1252# Some compilers won't report that they do not support -pthread,
1253# so we need to run a program to see whether it really made the
1254# function available.
1255AC_MSG_CHECKING(whether $CC accepts -pthread)
1256AC_CACHE_VAL(ac_cv_thread,
1257[ac_save_cc="$CC"
1258CC="$CC -pthread"
1259AC_TRY_RUN([
1260#include <pthread.h>
1261
1262void* routine(void* p){return NULL;}
1263
1264int main(){
1265 pthread_t p;
1266 if(pthread_create(&p,NULL,routine,NULL)!=0)
1267 return 1;
1268 (void)pthread_detach(p);
1269 return 0;
1270}
1271],
1272 ac_cv_pthread=yes,
1273 ac_cv_pthread=no,
1274 ac_cv_pthread=no)
1275CC="$ac_save_cc"])
1276AC_MSG_RESULT($ac_cv_pthread)
1277fi
1278
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001279# If we have set a CC compiler flag for thread support then
1280# check if it works for CXX, too.
1281ac_cv_cxx_thread=no
1282if test ! -z "$CXX"
1283then
1284AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1285ac_save_cxx="$CXX"
1286
1287if test "$ac_cv_kpthread" = "yes"
1288then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001289 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001290 ac_cv_cxx_thread=yes
1291elif test "$ac_cv_kthread" = "yes"
1292then
1293 CXX="$CXX -Kthread"
1294 ac_cv_cxx_thread=yes
1295elif test "$ac_cv_pthread" = "yes"
1296then
1297 CXX="$CXX -pthread"
1298 ac_cv_cxx_thread=yes
1299fi
1300
1301if test $ac_cv_cxx_thread = yes
1302then
1303 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1304 $CXX -c conftest.$ac_ext 2>&5
1305 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1306 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1307 then
1308 ac_cv_cxx_thread=yes
1309 else
1310 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001311 fi
1312 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001313fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001314AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001315fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001316CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001317
Fred Drakece81d592000-07-09 14:39:29 +00001318dnl # check for ANSI or K&R ("traditional") preprocessor
1319dnl AC_MSG_CHECKING(for C preprocessor type)
1320dnl AC_TRY_COMPILE([
1321dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1322dnl int foo;
1323dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1324dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1325dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001326
Guido van Rossum627b2d71993-12-24 10:39:16 +00001327# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001328AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001329AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1330fcntl.h grp.h \
Neal Norwitz9fdfaaf2008-03-28 05:34:59 +00001331ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001332shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001333unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001334sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1335sys/lock.h sys/mkdev.h sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001336sys/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 +00001337sys/termio.h sys/time.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001338sys/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 +00001339sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimesfb2d25a2008-01-07 16:12:44 +00001340bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001341AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001342AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001343
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001344# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001345AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001346#ifdef HAVE_CURSES_H
1347#include <curses.h>
1348#endif
1349])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001350
Martin v. Löwis11017b12006-01-14 18:12:57 +00001351# On Linux, netlink.h requires asm/types.h
1352AC_CHECK_HEADERS(linux/netlink.h,,,[
1353#ifdef HAVE_ASM_TYPES_H
1354#include <asm/types.h>
1355#endif
1356#ifdef HAVE_SYS_SOCKET_H
1357#include <sys/socket.h>
1358#endif
1359])
1360
Guido van Rossum627b2d71993-12-24 10:39:16 +00001361# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001362was_it_defined=no
1363AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001364AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1365 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1366])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001367AC_MSG_RESULT($was_it_defined)
1368
Neal Norwitz11690112002-07-30 01:08:28 +00001369# Check whether using makedev requires defining _OSF_SOURCE
1370AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001371AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001372 [ makedev(0, 0) ],
1373 ac_cv_has_makedev=yes,
1374 ac_cv_has_makedev=no)
1375if test "$ac_cv_has_makedev" = "no"; then
1376 # we didn't link, try if _OSF_SOURCE will allow us to link
1377 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001378#define _OSF_SOURCE 1
1379#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001380 ],
1381 [ makedev(0, 0) ],
1382 ac_cv_has_makedev=yes,
1383 ac_cv_has_makedev=no)
1384 if test "$ac_cv_has_makedev" = "yes"; then
1385 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1386 fi
1387fi
1388AC_MSG_RESULT($ac_cv_has_makedev)
1389if test "$ac_cv_has_makedev" = "yes"; then
1390 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1391fi
1392
Martin v. Löwis399a6892002-10-04 10:22:02 +00001393# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1394# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1395# defined, but the compiler does not support pragma redefine_extname,
1396# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1397# structures (such as rlimit64) without declaring them. As a
1398# work-around, disable LFS on such configurations
1399
1400use_lfs=yes
1401AC_MSG_CHECKING(Solaris LFS bug)
1402AC_TRY_COMPILE([
1403#define _LARGEFILE_SOURCE 1
1404#define _FILE_OFFSET_BITS 64
1405#include <sys/resource.h>
1406],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1407AC_MSG_RESULT($sol_lfs_bug)
1408if test "$sol_lfs_bug" = "yes"; then
1409 use_lfs=no
1410fi
1411
1412if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001413# Two defines needed to enable largefile support on various platforms
1414# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001415AC_DEFINE(_LARGEFILE_SOURCE, 1,
1416[This must be defined on some systems to enable large file support.])
1417AC_DEFINE(_FILE_OFFSET_BITS, 64,
1418[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001419fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001420
Guido van Rossum300fda71996-08-19 21:58:16 +00001421# Add some code to confdefs.h so that the test for off_t works on SCO
1422cat >> confdefs.h <<\EOF
1423#if defined(SCO_DS)
1424#undef _OFF_T
1425#endif
1426EOF
1427
Guido van Rossumef2255b2000-03-10 22:30:29 +00001428# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001429AC_TYPE_MODE_T
1430AC_TYPE_OFF_T
1431AC_TYPE_PID_T
1432AC_TYPE_SIGNAL
1433AC_TYPE_SIZE_T
1434AC_TYPE_UID_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001435AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001436 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001437
Guido van Rossumef2255b2000-03-10 22:30:29 +00001438# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001439# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001440AC_CHECK_SIZEOF(int, 4)
1441AC_CHECK_SIZEOF(long, 4)
1442AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001443AC_CHECK_SIZEOF(short, 2)
1444AC_CHECK_SIZEOF(float, 4)
1445AC_CHECK_SIZEOF(double, 8)
1446AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001447AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001448AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001449
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001450AC_MSG_CHECKING(for long long support)
1451have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001452AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1453 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1454 have_long_long=yes
1455])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001456AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001457if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001458AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001459fi
1460
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001461AC_MSG_CHECKING(for long double support)
1462have_long_double=no
1463AC_TRY_COMPILE([], [long double x; x = (long double)0.;], [
1464 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1465 have_long_double=yes
1466])
1467AC_MSG_RESULT($have_long_double)
Mark Dickinsondc1688a2008-06-27 22:20:14 +00001468if test "$have_long_double" = yes ; then
Travis E. Oliphant711c9e92008-06-06 22:33:21 +00001469AC_CHECK_SIZEOF(long double, 12)
1470fi
1471
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001472AC_MSG_CHECKING(for _Bool support)
1473have_c99_bool=no
1474AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1475 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1476 have_c99_bool=yes
1477])
1478AC_MSG_RESULT($have_c99_bool)
1479if test "$have_c99_bool" = yes ; then
1480AC_CHECK_SIZEOF(_Bool, 1)
1481fi
1482
Martin v. Löwisebe26702006-10-02 14:55:51 +00001483AC_CHECK_TYPES(uintptr_t,
1484 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001485 [], [#ifdef HAVE_STDINT_H
1486 #include <stdint.h>
1487 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001488
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001489
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001490# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1491AC_MSG_CHECKING(size of off_t)
1492AC_CACHE_VAL(ac_cv_sizeof_off_t,
1493[AC_TRY_RUN([#include <stdio.h>
1494#include <sys/types.h>
1495main()
1496{
1497 FILE *f=fopen("conftestval", "w");
1498 if (!f) exit(1);
1499 fprintf(f, "%d\n", sizeof(off_t));
1500 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001501}],
1502ac_cv_sizeof_off_t=`cat conftestval`,
1503ac_cv_sizeof_off_t=0,
1504ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001505])
1506AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001507AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1508[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001509
1510AC_MSG_CHECKING(whether to enable large file support)
Mark Dickinsoncaa44c02009-12-31 21:20:06 +00001511if test "$have_long_long" = yes
1512then
1513if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001514 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001515 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1516 [Defined to enable large file support when an off_t is bigger than a long
1517 and long long is available and at least as big as an off_t. You may need
1518 to add some flags for configuration and compilation to enable this mode.
1519 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001520 AC_MSG_RESULT(yes)
1521else
1522 AC_MSG_RESULT(no)
1523fi
Mark Dickinsoncaa44c02009-12-31 21:20:06 +00001524else
1525 AC_MSG_RESULT(no)
1526fi
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001527
Fred Drakea3f6e912000-06-29 20:44:47 +00001528# AC_CHECK_SIZEOF() doesn't include <time.h>.
1529AC_MSG_CHECKING(size of time_t)
1530AC_CACHE_VAL(ac_cv_sizeof_time_t,
1531[AC_TRY_RUN([#include <stdio.h>
1532#include <time.h>
1533main()
1534{
1535 FILE *f=fopen("conftestval", "w");
1536 if (!f) exit(1);
1537 fprintf(f, "%d\n", sizeof(time_t));
1538 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001539}],
1540ac_cv_sizeof_time_t=`cat conftestval`,
1541ac_cv_sizeof_time_t=0,
1542ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001543])
1544AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001545AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1546[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001547
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001548
Trent Mick635f6fb2000-08-23 21:33:05 +00001549# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001550ac_save_cc="$CC"
1551if test "$ac_cv_kpthread" = "yes"
1552then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001553elif test "$ac_cv_kthread" = "yes"
1554then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001555elif test "$ac_cv_pthread" = "yes"
1556then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001557fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001558AC_MSG_CHECKING(for pthread_t)
1559have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001560AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001561AC_MSG_RESULT($have_pthread_t)
1562if test "$have_pthread_t" = yes ; then
1563 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1564 AC_MSG_CHECKING(size of pthread_t)
1565 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1566 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001567#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001568 main()
1569 {
1570 FILE *f=fopen("conftestval", "w");
1571 if (!f) exit(1);
1572 fprintf(f, "%d\n", sizeof(pthread_t));
1573 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001574 }],
1575 ac_cv_sizeof_pthread_t=`cat conftestval`,
1576 ac_cv_sizeof_pthread_t=0,
1577 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001578 ])
1579 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001580 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1581 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001582fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001583CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001584
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001585AC_MSG_CHECKING(for --enable-toolbox-glue)
1586AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001587 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001588
1589if test -z "$enable_toolbox_glue"
1590then
1591 case $ac_sys_system/$ac_sys_release in
1592 Darwin/*)
1593 enable_toolbox_glue="yes";;
1594 *)
1595 enable_toolbox_glue="no";;
1596 esac
1597fi
1598case "$enable_toolbox_glue" in
1599yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001600 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001601 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001602 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1603 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001604 ;;
1605*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001606 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001607 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001608 ;;
1609esac
1610AC_MSG_RESULT($enable_toolbox_glue)
1611
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001612
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001613AC_SUBST(OTHER_LIBTOOL_OPT)
1614case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001615 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001616 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1617 ;;
1618 Darwin/*)
1619 OTHER_LIBTOOL_OPT=""
1620 ;;
1621esac
1622
Ronald Oussoren461f2202009-09-06 10:54:28 +00001623
1624ARCH_RUN_32BIT=""
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001625AC_SUBST(LIBTOOL_CRUFT)
1626case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001627 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001628 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1629 if test "${enable_universalsdk}"; then
1630 :
1631 else
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001632 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001633 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001634 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001635 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001636 Darwin/*)
Ronald Oussorenc0fa2d242010-02-07 11:50:54 +00001637 gcc_version=`gcc -dumpversion`
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001638 if test ${gcc_version} '<' 4.0
1639 then
1640 LIBTOOL_CRUFT="-lcc_dynamic"
1641 else
1642 LIBTOOL_CRUFT=""
1643 fi
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001644 AC_TRY_RUN([
Ronald Oussoren461f2202009-09-06 10:54:28 +00001645 #include <unistd.h>
1646 int main(int argc, char*argv[])
1647 {
1648 if (sizeof(long) == 4) {
1649 return 0;
1650 } else {
1651 return 1;
1652 }
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001653 }
1654 ], ac_osx_32bit=yes,
Ronald Oussoren461f2202009-09-06 10:54:28 +00001655 ac_osx_32bit=no,
Ronald Oussoren7ab74352009-09-08 07:10:07 +00001656 ac_osx_32bit=yes)
Ronald Oussoren461f2202009-09-06 10:54:28 +00001657
1658 if test "${ac_osx_32bit}" = "yes"; then
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001659 case `/usr/bin/arch` in
Ronald Oussoren461f2202009-09-06 10:54:28 +00001660 i386)
1661 MACOSX_DEFAULT_ARCH="i386"
1662 ;;
1663 ppc)
1664 MACOSX_DEFAULT_ARCH="ppc"
1665 ;;
1666 *)
1667 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1668 ;;
1669 esac
1670 else
Ronald Oussoren25e192c2010-02-11 13:27:59 +00001671 case `/usr/bin/arch` in
Ronald Oussoren461f2202009-09-06 10:54:28 +00001672 i386)
1673 MACOSX_DEFAULT_ARCH="x86_64"
1674 ;;
1675 ppc)
1676 MACOSX_DEFAULT_ARCH="ppc64"
1677 ;;
1678 *)
1679 AC_MSG_ERROR([Unexpected output of 'arch' on OSX])
1680 ;;
1681 esac
1682
1683 #ARCH_RUN_32BIT="true"
1684 fi
1685
1686 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}"
Jack Jansenb36687a2004-07-16 08:43:47 +00001687 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001688 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001689esac
1690
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001691AC_MSG_CHECKING(for --enable-framework)
1692if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001693then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001694 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001695 # -F. is needed to allow linking to the framework while
1696 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001697 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1698 [Define if you want to produce an OpenStep/Rhapsody framework
1699 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001700 AC_MSG_RESULT(yes)
Ronald Oussorene6e62672009-06-08 21:19:36 +00001701 if test $enable_shared = "yes"
1702 then
Ronald Oussorend0841712009-09-29 13:01:59 +00001703 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 +00001704 fi
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001705else
1706 AC_MSG_RESULT(no)
1707fi
1708
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001709AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001710case $ac_sys_system/$ac_sys_release in
1711 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001712 AC_DEFINE(WITH_DYLD, 1,
1713 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1714 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1715 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001716 AC_MSG_RESULT(always on for Darwin)
1717 ;;
1718 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001719 AC_MSG_RESULT(no)
1720 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001721esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001722
Guido van Rossumac405f61994-09-12 10:56:06 +00001723# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001724AC_SUBST(SO)
1725AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001726AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001727AC_SUBST(CCSHARED)
1728AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001729# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001730# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001731AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001732if test -z "$SO"
1733then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001734 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001735 hp*|HP*)
1736 case `uname -m` in
1737 ia64) SO=.so;;
1738 *) SO=.sl;;
1739 esac
1740 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001741 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001742 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001743 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001744else
1745 # this might also be a termcap variable, see #610332
1746 echo
1747 echo '====================================================================='
1748 echo '+ +'
1749 echo '+ WARNING: You have set SO in your environment. +'
1750 echo '+ Do you really mean to change the extension for shared libraries? +'
1751 echo '+ Continuing in 10 seconds to let you to ponder. +'
1752 echo '+ +'
1753 echo '====================================================================='
1754 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001755fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001756AC_MSG_RESULT($SO)
Ronald Oussorene9cce8e2009-01-02 10:46:42 +00001757
Neal Norwitz58e28882006-05-19 07:00:58 +00001758AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001759# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001760# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001761# (Shared libraries in this instance are shared modules to be loaded into
1762# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001763AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001764if test -z "$LDSHARED"
1765then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001766 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001767 AIX*)
1768 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001769 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001770 ;;
1771 BeOS*)
1772 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001773 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001774 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001775 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001776 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001777 SunOS/5*)
1778 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001779 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001780 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001781 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001782 hp*|HP*)
1783 if test "$GCC" = "yes"
1784 then LDSHARED='$(CC) -shared'
1785 else LDSHARED='ld -b';
1786 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001787 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001788 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001789 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1790 if test "$enable_framework" ; then
1791 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001792 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1793 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001794 else
1795 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001796 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001797 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001798 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001799 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1800 if test "$enable_framework" ; then
1801 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001802 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1803 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001804 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001805 # No framework, use the Python app as bundle-loader
1806 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001807 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001808 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001809 Darwin/*)
1810 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1811 # This allows an extension to be used in any Python
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001812
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001813 if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001814 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001815 if test "${enable_universalsdk}"; then
Ronald Oussoren5640ce22008-06-05 12:58:24 +00001816 LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
Ronald Oussoren988117f2006-04-29 11:31:35 +00001817 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001818 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1819 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001820 else
1821 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1822 if test "$enable_framework" ; then
1823 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001824 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1825 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001826 else
1827 # No framework, use the Python app as bundle-loader
1828 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1829 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1830 fi
1831 fi
1832 ;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001833 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001834 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001835 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001836 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001837 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001838 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001839 else
1840 LDSHARED="ld -Bshareable ${LDFLAGS}"
1841 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001842 OpenBSD*)
1843 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1844 then
1845 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1846 else
1847 case `uname -r` in
1848 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1849 LDSHARED="ld -Bshareable ${LDFLAGS}"
1850 ;;
1851 *)
1852 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1853 ;;
1854 esac
1855 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001856 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001857 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001858 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001859 then LDSHARED='$(CC) -shared'
1860 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001861 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001862 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001863 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001864 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001865 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001866 *) LDSHARED="ld";;
1867 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001868fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001869AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001870BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001871# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001872# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001873AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001874if test -z "$CCSHARED"
1875then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001876 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001877 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001878 then CCSHARED="-fPIC";
1879 elif test `uname -p` = sparc;
1880 then CCSHARED="-xcode=pic32";
1881 else CCSHARED="-Kpic";
1882 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001883 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001884 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001885 else CCSHARED="+z";
1886 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001887 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001888 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001889 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001890 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001891 if test "$GCC" = "yes"
1892 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001893 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001894 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001895 SCO_SV*)
1896 if test "$GCC" = "yes"
1897 then CCSHARED="-fPIC"
1898 else CCSHARED="-Kpic -belf"
1899 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001900 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001901 IRIX*/6*) case $CC in
1902 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001903 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001904 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001905 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001906 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001907fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001908AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001909# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001910# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001911AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001912if test -z "$LINKFORSHARED"
1913then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001914 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001915 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001916 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001917 LINKFORSHARED="-Wl,-E -Wl,+s";;
1918# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001919 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001920 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001921 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001922 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001923 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1924 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001925 # not used by the core itself but which needs to be in the core so
1926 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001927 # -prebind is no longer used, because it actually seems to give a
1928 # slowdown in stead of a speedup, maybe due to the large number of
1929 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001930
1931 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001932 if test "$enable_framework"
1933 then
Jack Jansenda49e192005-01-07 13:08:22 +00001934 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001935 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001936 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001937 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001938 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001939 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001940 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001941 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1942 then
1943 LINKFORSHARED="-Wl,--export-dynamic"
1944 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001945 SunOS/5*) case $CC in
1946 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001947 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001948 then
1949 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001950 fi;;
1951 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001952 CYGWIN*)
1953 if test $enable_shared = "no"
1954 then
1955 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1956 fi;;
Martin v. Löwis8c255e42008-05-23 15:06:50 +00001957 QNX*)
1958 # -Wl,-E causes the symbols to be added to the dynamic
1959 # symbol table so that they can be found when a module
1960 # is loaded. -N 2048K causes the stack size to be set
1961 # to 2048 kilobytes so that the stack doesn't overflow
1962 # when running test_compile.py.
1963 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001964 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001965fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001966AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001967
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00001968
Neil Schemenauer61c51152001-01-26 16:18:16 +00001969AC_SUBST(CFLAGSFORSHARED)
1970AC_MSG_CHECKING(CFLAGSFORSHARED)
1971if test ! "$LIBRARY" = "$LDLIBRARY"
1972then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001973 case $ac_sys_system in
1974 CYGWIN*)
1975 # Cygwin needs CCSHARED when building extension DLLs
1976 # but not when building the interpreter DLL.
1977 CFLAGSFORSHARED='';;
1978 *)
1979 CFLAGSFORSHARED='$(CCSHARED)'
1980 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001981fi
1982AC_MSG_RESULT($CFLAGSFORSHARED)
1983
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001984# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1985# library (with --enable-shared).
1986# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001987# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1988# if it is not required, since it creates a dependency of the shared library
1989# to LIBS. This, in turn, means that applications linking the shared libpython
1990# don't need to link LIBS explicitly. The default should be only changed
1991# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001992AC_SUBST(SHLIBS)
1993AC_MSG_CHECKING(SHLIBS)
1994case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001995 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001996 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001997esac
1998AC_MSG_RESULT($SHLIBS)
1999
2000
Guido van Rossum627b2d71993-12-24 10:39:16 +00002001# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002002AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
2003AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00002004
Georg Brandl5c7f8fb2008-12-05 09:00:55 +00002005# only check for sem_init if thread support is requested
Martin v. Löwis519adae2003-09-20 10:47:47 +00002006if test "$with_threads" = "yes" -o -z "$with_threads"; then
2007 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
2008 # posix4 on Solaris 2.6
2009 # pthread (first!) on Linux
2010fi
2011
Martin v. Löwis19d17342003-06-14 21:03:05 +00002012# check if we need libintl for locale functions
2013AC_CHECK_LIB(intl, textdomain,
2014 AC_DEFINE(WITH_LIBINTL, 1,
2015 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002016
2017# checks for system dependent C++ extensions support
2018case "$ac_sys_system" in
2019 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
2020 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
2021 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002022 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
2023 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
2024 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00002025 AC_MSG_RESULT(yes)],
2026 [AC_MSG_RESULT(no)]);;
2027 *) ;;
2028esac
2029
Guido van Rossum70c7f481998-03-26 18:44:10 +00002030# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002031# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002032AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00002033AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00002034
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00002035case "$ac_sys_system" in
2036BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002037AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
2038;;
2039esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00002040
Guido van Rossumc5a39031996-07-31 17:35:03 +00002041AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002042AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002043 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
2044[
Guido van Rossumc5a39031996-07-31 17:35:03 +00002045AC_MSG_RESULT($withval)
2046LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002047],
2048[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002049
Martin v. Löwis9176fc12006-04-11 11:12:43 +00002050# Check for use of the system libffi library
2051AC_MSG_CHECKING(for --with-system-ffi)
2052AC_ARG_WITH(system_ffi,
2053 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
2054
Martin v. Löwis9176fc12006-04-11 11:12:43 +00002055AC_MSG_RESULT($with_system_ffi)
2056
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002057# Determine if signalmodule should be used.
2058AC_SUBST(USE_SIGNAL_MODULE)
2059AC_SUBST(SIGNAL_OBJS)
2060AC_MSG_CHECKING(for --with-signal-module)
2061AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002062 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002063
2064if test -z "$with_signal_module"
2065then with_signal_module="yes"
2066fi
2067AC_MSG_RESULT($with_signal_module)
2068
2069if test "${with_signal_module}" = "yes"; then
2070 USE_SIGNAL_MODULE=""
2071 SIGNAL_OBJS=""
2072else
2073 USE_SIGNAL_MODULE="#"
2074 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
2075fi
2076
Guido van Rossum3d15bd82001-01-10 18:53:48 +00002077# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00002078AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002079USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00002080
Guido van Rossum54d93d41997-01-22 20:51:58 +00002081AC_MSG_CHECKING(for --with-dec-threads)
2082AC_SUBST(LDLAST)
2083AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002084 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
2085[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002086AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00002087LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00002088if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00002089 with_thread="$withval";
2090fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002091[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00002092
Martin v. Löwis11437992002-04-12 09:54:03 +00002093# Templates for things AC_DEFINEd more than once.
2094# For a single AC_DEFINE, no template is needed.
2095AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
2096AH_TEMPLATE(_REENTRANT,
2097 [Define to force use of thread-safe errno, h_errno, and other functions])
2098AH_TEMPLATE(WITH_THREAD,
2099 [Define if you want to compile in rudimentary thread support])
2100
Guido van Rossum54d93d41997-01-22 20:51:58 +00002101AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002102dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002103AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002104 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00002105
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002106# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002107dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00002108AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002109 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
2110 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002111
2112if test -z "$with_threads"
2113then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002114fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002115AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00002116
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002117AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002118if test "$with_threads" = "no"
2119then
2120 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002121elif test "$ac_cv_pthread_is_default" = yes
2122then
2123 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002124 # Defining _REENTRANT on system with POSIX threads should not hurt.
2125 AC_DEFINE(_REENTRANT)
2126 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002127 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00002128elif test "$ac_cv_kpthread" = "yes"
2129then
2130 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002131 if test "$ac_cv_cxx_thread" = "yes"; then
2132 CXX="$CXX -Kpthread"
2133 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00002134 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002135 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002136 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002137elif test "$ac_cv_kthread" = "yes"
2138then
2139 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002140 if test "$ac_cv_cxx_thread" = "yes"; then
2141 CXX="$CXX -Kthread"
2142 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00002143 AC_DEFINE(WITH_THREAD)
2144 posix_threads=yes
2145 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002146elif test "$ac_cv_pthread" = "yes"
2147then
2148 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00002149 if test "$ac_cv_cxx_thread" = "yes"; then
2150 CXX="$CXX -pthread"
2151 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002152 AC_DEFINE(WITH_THREAD)
2153 posix_threads=yes
2154 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002155else
Martin v. Löwis130fb172001-07-19 11:00:41 +00002156 if test ! -z "$with_threads" -a -d "$with_threads"
2157 then LDFLAGS="$LDFLAGS -L$with_threads"
2158 fi
2159 if test ! -z "$withval" -a -d "$withval"
2160 then LDFLAGS="$LDFLAGS -L$withval"
2161 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002162
2163 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00002164 # define _POSIX_THREADS in unistd.h. Some apparently don't
2165 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002166 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
2167 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002168 [
2169#include <unistd.h>
2170#ifdef _POSIX_THREADS
2171yes
2172#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002173 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
2174 AC_MSG_RESULT($unistd_defines_pthreads)
2175
Martin v. Löwis130fb172001-07-19 11:00:41 +00002176 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002177 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
2178 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002179 AC_DEFINE(HURD_C_THREADS, 1,
2180 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00002181 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002182 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002183 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
2184 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002185 AC_DEFINE(MACH_C_THREADS, 1,
2186 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002187 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002188 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002189 AC_ARG_WITH([pth],
2190 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
2191 [AC_MSG_RESULT($withval)
2192 AC_DEFINE([WITH_THREAD])
2193 AC_DEFINE([HAVE_PTH], 1,
2194 [Define if you have GNU PTH threads.])
2195 LIBS="-lpth $LIBS"
2196 THREADOBJ="Python/thread.o"],
2197 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002198
2199 # Just looking for pthread_create in libpthread is not enough:
2200 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
2201 # So we really have to include pthread.h, and then link.
2202 _libs=$LIBS
2203 LIBS="$LIBS -lpthread"
2204 AC_MSG_CHECKING([for pthread_create in -lpthread])
2205 AC_TRY_LINK([#include <pthread.h>
2206
2207void * start_routine (void *arg) { exit (0); }], [
2208pthread_create (NULL, NULL, start_routine, NULL)], [
2209 AC_MSG_RESULT(yes)
2210 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002211 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002212 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00002213 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00002214 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002215 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002216 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002217 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
2218 AC_DEFINE(ATHEOS_THREADS, 1,
2219 [Define this if you have AtheOS threads.])
2220 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002221 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002222 AC_DEFINE(BEOS_THREADS, 1,
2223 [Define this if you have BeOS threads.])
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(pthreads, pthread_create, [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 -lpthreads"
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(c_r, 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 -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002232 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002233 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002234 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002235 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002236 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00002237 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002238 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00002239 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00002240 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00002241 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00002242 ])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002243
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002244 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
2245 LIBS="$LIBS -lmpc"
2246 THREADOBJ="Python/thread.o"
2247 USE_THREAD_MODULE=""])
2248
2249 if test "$posix_threads" != "yes"; then
2250 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
2251 LIBS="$LIBS -lthread"
2252 THREADOBJ="Python/thread.o"
2253 USE_THREAD_MODULE=""])
2254 fi
2255
2256 if test "$USE_THREAD_MODULE" != "#"
2257 then
2258 # If the above checks didn't disable threads, (at least) OSF1
2259 # needs this '-threads' argument during linking.
2260 case $ac_sys_system in
2261 OSF1) LDLAST=-threads;;
2262 esac
2263 fi
2264fi
2265
2266if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002267 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002268 AC_DEFINE(_POSIX_THREADS, 1,
2269 [Define if you have POSIX threads,
2270 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00002271 fi
2272
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002273 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
2274 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002275 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2276 Defined for Solaris 2.6 bug in pthread header.)
2277 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002278 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002279 Define if the Posix semaphores do not work on your system)
2280 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002281 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2282 Define if the Posix semaphores do not work on your system)
2283 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002284 esac
2285
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002286 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2287 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2288 [AC_TRY_RUN([#include <pthread.h>
2289 void *foo(void *parm) {
2290 return NULL;
2291 }
2292 main() {
2293 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002294 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002295 if (pthread_attr_init(&attr)) exit(-1);
2296 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002297 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002298 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002299 }],
2300 ac_cv_pthread_system_supported=yes,
2301 ac_cv_pthread_system_supported=no,
2302 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002303 ])
2304 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2305 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002306 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002307 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002308 AC_CHECK_FUNCS(pthread_sigmask,
2309 [case $ac_sys_system in
2310 CYGWIN*)
2311 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2312 [Define if pthread_sigmask() does not work on your system.])
2313 ;;
2314 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002315fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002316
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002317
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002318# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002319AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002320AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002321AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002322[ --enable-ipv6 Enable ipv6 (with ipv4) support
2323 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002324[ case "$enableval" in
2325 no)
2326 AC_MSG_RESULT(no)
2327 ipv6=no
2328 ;;
2329 *) AC_MSG_RESULT(yes)
2330 AC_DEFINE(ENABLE_IPV6)
2331 ipv6=yes
2332 ;;
2333 esac ],
2334
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002335[
2336dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002337 AC_TRY_RUN([ /* AF_INET6 available check */
2338#include <sys/types.h>
2339#include <sys/socket.h>
2340main()
2341{
2342 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2343 exit(1);
2344 else
2345 exit(0);
2346}
2347],
2348 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002349 ipv6=yes,
2350 AC_MSG_RESULT(no)
2351 ipv6=no,
2352 AC_MSG_RESULT(no)
2353 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002354)
2355
2356if test "$ipv6" = "yes"; then
2357 AC_MSG_CHECKING(if RFC2553 API is available)
2358 AC_TRY_COMPILE([#include <sys/types.h>
2359#include <netinet/in.h>],
2360 [struct sockaddr_in6 x;
2361x.sin6_scope_id;],
2362 AC_MSG_RESULT(yes)
2363 ipv6=yes,
2364 AC_MSG_RESULT(no, IPv6 disabled)
2365 ipv6=no)
2366fi
2367
2368if test "$ipv6" = "yes"; then
2369 AC_DEFINE(ENABLE_IPV6)
2370fi
2371])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002372
2373ipv6type=unknown
2374ipv6lib=none
2375ipv6trylibc=no
2376
2377if test "$ipv6" = "yes"; then
2378 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002379 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2380 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002381 case $i in
2382 inria)
2383 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002384 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002385#include <netinet/in.h>
2386#ifdef IPV6_INRIA_VERSION
2387yes
2388#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002389 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002390 ;;
2391 kame)
2392 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002393 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002394#include <netinet/in.h>
2395#ifdef __KAME__
2396yes
2397#endif],
2398 [ipv6type=$i;
2399 ipv6lib=inet6
2400 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002401 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002402 ;;
2403 linux-glibc)
2404 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002405 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002406#include <features.h>
2407#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2408yes
2409#endif],
2410 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002411 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002412 ;;
2413 linux-inet6)
2414 dnl http://www.v6.linux.or.jp/
2415 if test -d /usr/inet6; then
2416 ipv6type=$i
2417 ipv6lib=inet6
2418 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002419 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002420 fi
2421 ;;
2422 solaris)
2423 if test -f /etc/netconfig; then
2424 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2425 ipv6type=$i
2426 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002427 fi
2428 fi
2429 ;;
2430 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002431 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002432#include <sys/param.h>
2433#ifdef _TOSHIBA_INET6
2434yes
2435#endif],
2436 [ipv6type=$i;
2437 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002438 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002439 ;;
2440 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002441 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002442#include </usr/local/v6/include/sys/v6config.h>
2443#ifdef __V6D__
2444yes
2445#endif],
2446 [ipv6type=$i;
2447 ipv6lib=v6;
2448 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002449 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002450 ;;
2451 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002452 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002453#include <sys/param.h>
2454#ifdef _ZETA_MINAMI_INET6
2455yes
2456#endif],
2457 [ipv6type=$i;
2458 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002459 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002460 ;;
2461 esac
2462 if test "$ipv6type" != "unknown"; then
2463 break
2464 fi
2465 done
2466 AC_MSG_RESULT($ipv6type)
2467fi
2468
2469if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2470 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2471 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2472 echo "using lib$ipv6lib"
2473 else
2474 if test $ipv6trylibc = "yes"; then
2475 echo "using libc"
2476 else
2477 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2478 echo "You need to fetch lib$ipv6lib.a from appropriate"
2479 echo 'ipv6 kit and compile beforehand.'
2480 exit 1
2481 fi
2482 fi
2483fi
2484
Ronald Oussoren0d236eb2008-06-06 21:31:33 +00002485AC_MSG_CHECKING(for OSX 10.5 SDK or later)
2486AC_TRY_COMPILE([#include <Carbon/Carbon.h>], FSIORefNum fRef = 0,
2487 AC_DEFINE(HAVE_OSX105_SDK, 1, Define if compiling using MacOS X 10.5 SDK or later.)
2488 AC_MSG_RESULT(yes),
2489 AC_MSG_RESULT(no)
2490)
2491
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002492# Check for --with-doc-strings
2493AC_MSG_CHECKING(for --with-doc-strings)
2494AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002495 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002496
2497if test -z "$with_doc_strings"
2498then with_doc_strings="yes"
2499fi
2500if test "$with_doc_strings" != "no"
2501then
2502 AC_DEFINE(WITH_DOC_STRINGS, 1,
2503 [Define if you want documentation strings in extension modules])
2504fi
2505AC_MSG_RESULT($with_doc_strings)
2506
Neil Schemenauera35c6882001-02-27 04:45:05 +00002507# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002508AC_MSG_CHECKING(for --with-tsc)
2509AC_ARG_WITH(tsc,
2510[ --with(out)-tsc enable/disable timestamp counter profile], [
2511if test "$withval" != no
2512then
2513 AC_DEFINE(WITH_TSC, 1,
2514 [Define to profile with the Pentium timestamp counter])
2515 AC_MSG_RESULT(yes)
2516else AC_MSG_RESULT(no)
2517fi],
2518[AC_MSG_RESULT(no)])
2519
2520# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002521AC_MSG_CHECKING(for --with-pymalloc)
2522AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002523 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002524
2525if test -z "$with_pymalloc"
2526then with_pymalloc="yes"
2527fi
2528if test "$with_pymalloc" != "no"
2529then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002530 AC_DEFINE(WITH_PYMALLOC, 1,
2531 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002532fi
2533AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002534
Barry Warsawef82cd72000-06-30 16:21:01 +00002535# Check for --with-wctype-functions
2536AC_MSG_CHECKING(for --with-wctype-functions)
2537AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002538 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2539[
Barry Warsawef82cd72000-06-30 16:21:01 +00002540if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002541then
2542 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2543 [Define if you want wctype.h functions to be used instead of the
2544 one supplied by Python itself. (see Include/unicodectype.h).])
2545 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002546else AC_MSG_RESULT(no)
2547fi],
2548[AC_MSG_RESULT(no)])
2549
Guido van Rossum68242b51996-05-28 22:53:03 +00002550# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002551AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002552DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002553
Guido van Rossume97ee181999-12-20 21:27:22 +00002554# the dlopen() function means we might want to use dynload_shlib.o. some
2555# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002556AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002557
2558# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2559# loading of modules.
2560AC_SUBST(DYNLOADFILE)
2561AC_MSG_CHECKING(DYNLOADFILE)
2562if test -z "$DYNLOADFILE"
2563then
2564 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002565 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2566 if test "$ac_cv_func_dlopen" = yes
2567 then DYNLOADFILE="dynload_shlib.o"
2568 else DYNLOADFILE="dynload_aix.o"
2569 fi
2570 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002571 BeOS*) DYNLOADFILE="dynload_beos.o";;
2572 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002573 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2574 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002575 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002576 *)
2577 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2578 # out any dynamic loading
2579 if test "$ac_cv_func_dlopen" = yes
2580 then DYNLOADFILE="dynload_shlib.o"
2581 else DYNLOADFILE="dynload_stub.o"
2582 fi
2583 ;;
2584 esac
2585fi
2586AC_MSG_RESULT($DYNLOADFILE)
2587if test "$DYNLOADFILE" != "dynload_stub.o"
2588then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002589 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2590 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002591fi
2592
Jack Jansenc49e5b72001-06-19 15:00:23 +00002593# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2594
2595AC_SUBST(MACHDEP_OBJS)
2596AC_MSG_CHECKING(MACHDEP_OBJS)
2597if test -z "$MACHDEP_OBJS"
2598then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002599 MACHDEP_OBJS=$extra_machdep_objs
2600else
2601 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002602fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002603AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002604
Guido van Rossum627b2d71993-12-24 10:39:16 +00002605# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002606AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2607 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002608 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002609 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002610 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002611 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002612 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002613 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002614 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002615 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002616 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002617 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002618
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002619# For some functions, having a definition is not sufficient, since
2620# we want to take their address.
2621AC_MSG_CHECKING(for chroot)
2622AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2623 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2624 AC_MSG_RESULT(yes),
2625 AC_MSG_RESULT(no)
2626)
2627AC_MSG_CHECKING(for link)
2628AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2629 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2630 AC_MSG_RESULT(yes),
2631 AC_MSG_RESULT(no)
2632)
2633AC_MSG_CHECKING(for symlink)
2634AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2635 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2636 AC_MSG_RESULT(yes),
2637 AC_MSG_RESULT(no)
2638)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002639AC_MSG_CHECKING(for fchdir)
2640AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2641 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2642 AC_MSG_RESULT(yes),
2643 AC_MSG_RESULT(no)
2644)
2645AC_MSG_CHECKING(for fsync)
2646AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002647 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002648 AC_MSG_RESULT(yes),
2649 AC_MSG_RESULT(no)
2650)
2651AC_MSG_CHECKING(for fdatasync)
2652AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2653 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2654 AC_MSG_RESULT(yes),
2655 AC_MSG_RESULT(no)
2656)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002657AC_MSG_CHECKING(for epoll)
2658AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2659 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2660 AC_MSG_RESULT(yes),
2661 AC_MSG_RESULT(no)
2662)
2663AC_MSG_CHECKING(for kqueue)
2664AC_TRY_COMPILE([
2665#include <sys/types.h>
2666#include <sys/event.h>
2667 ], int x=kqueue(),
2668 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2669 AC_MSG_RESULT(yes),
2670 AC_MSG_RESULT(no)
2671)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002672# On some systems (eg. FreeBSD 5), we would find a definition of the
2673# functions ctermid_r, setgroups in the library, but no prototype
2674# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2675# address to avoid compiler warnings and potential miscompilations
2676# because of the missing prototypes.
2677
2678AC_MSG_CHECKING(for ctermid_r)
2679AC_TRY_COMPILE([
2680#include "confdefs.h"
2681#include <stdio.h>
2682], void* p = ctermid_r,
2683 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2684 AC_MSG_RESULT(yes),
2685 AC_MSG_RESULT(no)
2686)
2687
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002688AC_MSG_CHECKING(for flock)
2689AC_TRY_COMPILE([
2690#include "confdefs.h"
2691#include <sys/file.h>
2692], void* p = flock,
2693 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2694 AC_MSG_RESULT(yes),
2695 AC_MSG_RESULT(no)
2696)
2697
2698AC_MSG_CHECKING(for getpagesize)
2699AC_TRY_COMPILE([
2700#include "confdefs.h"
2701#include <unistd.h>
2702], void* p = getpagesize,
2703 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2704 AC_MSG_RESULT(yes),
2705 AC_MSG_RESULT(no)
2706)
2707
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002708dnl check for true
2709AC_CHECK_PROGS(TRUE, true, /bin/true)
2710
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002711dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2712dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002713AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002714 AC_CHECK_LIB(resolv, inet_aton)
2715)
2716
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002717# On Tru64, chflags seems to be present, but calling it will
2718# exit Python
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002719AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl
2720AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002721#include <sys/stat.h>
2722#include <unistd.h>
2723int main(int argc, char*argv[])
2724{
2725 if(chflags(argv[0], 0) != 0)
2726 return 1;
2727 return 0;
2728}
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002729]], ac_cv_have_chflags=yes,
2730 ac_cv_have_chflags=no,
2731 ac_cv_have_chflags=cross)
2732])
2733if test "$ac_cv_have_chflags" = cross ; then
2734 AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"])
2735fi
2736if test "$ac_cv_have_chflags" = yes ; then
2737 AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2738fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002739
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002740AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl
2741AC_TRY_RUN([[
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002742#include <sys/stat.h>
2743#include <unistd.h>
2744int main(int argc, char*argv[])
2745{
2746 if(lchflags(argv[0], 0) != 0)
2747 return 1;
2748 return 0;
2749}
Benjamin Petersonb453f0b2010-01-30 19:51:50 +00002750]], ac_cv_have_lchflags=yes,
2751 ac_cv_have_lchflags=no,
2752 ac_cv_have_lchflags=cross)
2753])
2754if test "$ac_cv_have_lchflags" = cross ; then
2755 AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"])
2756fi
2757if test "$ac_cv_have_lchflags" = yes ; then
2758 AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2759fi
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002760
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002761dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002762dnl
2763dnl On MacOSX the linker will search for dylibs on the entire linker path
2764dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2765dnl to revert to a more traditional unix behaviour and make it possible to
2766dnl override the system libz with a local static library of libz. Temporarily
2767dnl add that flag to our CFLAGS as well to ensure that we check the version
2768dnl of libz that will be used by setup.py.
2769dnl The -L/usr/local/lib is needed as wel to get the same compilation
2770dnl environment as setup.py (and leaving it out can cause configure to use the
2771dnl wrong version of the library)
2772case $ac_sys_system/$ac_sys_release in
2773Darwin/*)
2774 _CUR_CFLAGS="${CFLAGS}"
2775 _CUR_LDFLAGS="${LDFLAGS}"
2776 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2777 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2778 ;;
2779esac
2780
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002781AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2782
Ronald Oussorenf8752642006-07-06 10:13:35 +00002783case $ac_sys_system/$ac_sys_release in
2784Darwin/*)
2785 CFLAGS="${_CUR_CFLAGS}"
2786 LDFLAGS="${_CUR_LDFLAGS}"
2787 ;;
2788esac
2789
Martin v. Löwise9416172003-05-03 10:12:45 +00002790AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002791AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002792#include "confdefs.h"
2793#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002794], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002795 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2796 AC_MSG_RESULT(yes),
2797 AC_MSG_RESULT(no)
2798)
2799
2800AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002801AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002802#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002803#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002804#include <sys/socket.h>
2805#include <netinet/in.h>
2806#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002807], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002808 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2809 AC_MSG_RESULT(yes),
2810 AC_MSG_RESULT(no)
2811)
2812
2813AC_MSG_CHECKING(for inet_pton)
2814AC_TRY_COMPILE([
2815#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002816#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002817#include <sys/socket.h>
2818#include <netinet/in.h>
2819#include <arpa/inet.h>
2820], void* p = inet_pton,
2821 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2822 AC_MSG_RESULT(yes),
2823 AC_MSG_RESULT(no)
2824)
2825
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002826# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002827AC_MSG_CHECKING(for setgroups)
2828AC_TRY_COMPILE([
2829#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002830#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002831#ifdef HAVE_GRP_H
2832#include <grp.h>
2833#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002834],
2835void* p = setgroups,
2836 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2837 AC_MSG_RESULT(yes),
2838 AC_MSG_RESULT(no)
2839)
2840
Fred Drake8cef4cf2000-06-28 16:40:38 +00002841# check for openpty and forkpty
2842
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002843AC_CHECK_FUNCS(openpty,,
2844 AC_CHECK_LIB(util,openpty,
2845 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2846 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2847 )
2848)
2849AC_CHECK_FUNCS(forkpty,,
2850 AC_CHECK_LIB(util,forkpty,
2851 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2852 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2853 )
2854)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002855
Brett Cannonaa5778d2008-03-18 04:09:00 +00002856# Stuff for expat.
2857AC_CHECK_FUNCS(memmove)
2858
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002859# check for long file support functions
2860AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2861
Brett Cannonaa5778d2008-03-18 04:09:00 +00002862AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002863AC_CHECK_FUNCS(getpgrp,
2864 AC_TRY_COMPILE([#include <unistd.h>],
2865 [getpgrp(0);],
2866 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2867 [Define if getpgrp() must be called as getpgrp(0).])
2868 )
2869)
Jack Jansen150753c2003-03-29 22:07:47 +00002870AC_CHECK_FUNCS(setpgrp,
2871 AC_TRY_COMPILE([#include <unistd.h>],
2872 [setpgrp(0,0);],
2873 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2874 [Define if setpgrp() must be called as setpgrp(0, 0).])
2875 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002876)
2877AC_CHECK_FUNCS(gettimeofday,
2878 AC_TRY_COMPILE([#include <sys/time.h>],
2879 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2880 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2881 [Define if gettimeofday() does not have second (timezone) argument
2882 This is the case on Motorola V4 (R40V4.2)])
2883 )
2884)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002885
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002886AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002887AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002888#if defined(MAJOR_IN_MKDEV)
2889#include <sys/mkdev.h>
2890#elif defined(MAJOR_IN_SYSMACROS)
2891#include <sys/sysmacros.h>
2892#else
2893#include <sys/types.h>
2894#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002895],[
2896 makedev(major(0),minor(0));
2897],[
2898 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2899 [Define to 1 if you have the device macros.])
2900 AC_MSG_RESULT(yes)
2901],[
2902 AC_MSG_RESULT(no)
2903])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002904
2905# On OSF/1 V5.1, getaddrinfo is available, but a define
2906# for [no]getaddrinfo in netdb.h.
2907AC_MSG_CHECKING(for getaddrinfo)
2908AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002909#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002910#include <sys/socket.h>
2911#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002912#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002913],[
2914getaddrinfo(NULL, NULL, NULL, NULL);
2915], [
2916AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002917AC_MSG_CHECKING(getaddrinfo bug)
2918AC_TRY_RUN([
2919#include <sys/types.h>
2920#include <netdb.h>
2921#include <string.h>
2922#include <sys/socket.h>
2923#include <netinet/in.h>
2924
2925main()
2926{
2927 int passive, gaierr, inet4 = 0, inet6 = 0;
2928 struct addrinfo hints, *ai, *aitop;
2929 char straddr[INET6_ADDRSTRLEN], strport[16];
2930
2931 for (passive = 0; passive <= 1; passive++) {
2932 memset(&hints, 0, sizeof(hints));
2933 hints.ai_family = AF_UNSPEC;
2934 hints.ai_flags = passive ? AI_PASSIVE : 0;
2935 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002936 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002937 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2938 (void)gai_strerror(gaierr);
2939 goto bad;
2940 }
2941 for (ai = aitop; ai; ai = ai->ai_next) {
2942 if (ai->ai_addr == NULL ||
2943 ai->ai_addrlen == 0 ||
2944 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2945 straddr, sizeof(straddr), strport, sizeof(strport),
2946 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2947 goto bad;
2948 }
2949 switch (ai->ai_family) {
2950 case AF_INET:
2951 if (strcmp(strport, "54321") != 0) {
2952 goto bad;
2953 }
2954 if (passive) {
2955 if (strcmp(straddr, "0.0.0.0") != 0) {
2956 goto bad;
2957 }
2958 } else {
2959 if (strcmp(straddr, "127.0.0.1") != 0) {
2960 goto bad;
2961 }
2962 }
2963 inet4++;
2964 break;
2965 case AF_INET6:
2966 if (strcmp(strport, "54321") != 0) {
2967 goto bad;
2968 }
2969 if (passive) {
2970 if (strcmp(straddr, "::") != 0) {
2971 goto bad;
2972 }
2973 } else {
2974 if (strcmp(straddr, "::1") != 0) {
2975 goto bad;
2976 }
2977 }
2978 inet6++;
2979 break;
2980 case AF_UNSPEC:
2981 goto bad;
2982 break;
2983 default:
2984 /* another family support? */
2985 break;
2986 }
2987 }
2988 }
2989
2990 if (!(inet4 == 0 || inet4 == 2))
2991 goto bad;
2992 if (!(inet6 == 0 || inet6 == 2))
2993 goto bad;
2994
2995 if (aitop)
2996 freeaddrinfo(aitop);
2997 exit(0);
2998
2999 bad:
3000 if (aitop)
3001 freeaddrinfo(aitop);
3002 exit(1);
3003}
3004],
3005AC_MSG_RESULT(good)
3006buggygetaddrinfo=no,
3007AC_MSG_RESULT(buggy)
3008buggygetaddrinfo=yes,
3009AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003010buggygetaddrinfo=yes)], [
3011AC_MSG_RESULT(no)
3012buggygetaddrinfo=yes
3013])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003014
3015if test "$buggygetaddrinfo" = "yes"; then
3016 if test "$ipv6" = "yes"; then
3017 echo 'Fatal: You must get working getaddrinfo() function.'
3018 echo ' or you can specify "--disable-ipv6"'.
3019 exit 1
3020 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00003021else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003022 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003023fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00003024AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003025
Guido van Rossum627b2d71993-12-24 10:39:16 +00003026# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003027AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00003028AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003029AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00003030AC_CHECK_MEMBERS([struct stat.st_rdev])
3031AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00003032AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003033AC_CHECK_MEMBERS([struct stat.st_gen])
3034AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00003035AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003036
3037AC_MSG_CHECKING(for time.h that defines altzone)
3038AC_CACHE_VAL(ac_cv_header_time_altzone,
3039[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
3040 ac_cv_header_time_altzone=yes,
3041 ac_cv_header_time_altzone=no)])
3042AC_MSG_RESULT($ac_cv_header_time_altzone)
3043if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003044 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003045fi
3046
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003047was_it_defined=no
3048AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003049AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003050#include <sys/types.h>
3051#include <sys/select.h>
3052#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003053], [;], [
3054 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
3055 [Define if you can safely include both <sys/select.h> and <sys/time.h>
3056 (which you can't on SCO ODT 3.0).])
3057 was_it_defined=yes
3058])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003059AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00003060
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003061AC_MSG_CHECKING(for addrinfo)
3062AC_CACHE_VAL(ac_cv_struct_addrinfo,
3063AC_TRY_COMPILE([
3064# include <netdb.h>],
3065 [struct addrinfo a],
3066 ac_cv_struct_addrinfo=yes,
3067 ac_cv_struct_addrinfo=no))
3068AC_MSG_RESULT($ac_cv_struct_addrinfo)
3069if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003070 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003071fi
3072
3073AC_MSG_CHECKING(for sockaddr_storage)
3074AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
3075AC_TRY_COMPILE([
3076# include <sys/types.h>
3077# include <sys/socket.h>],
3078 [struct sockaddr_storage s],
3079 ac_cv_struct_sockaddr_storage=yes,
3080 ac_cv_struct_sockaddr_storage=no))
3081AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
3082if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003083 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003084fi
3085
Guido van Rossum627b2d71993-12-24 10:39:16 +00003086# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003087
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003088AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003089AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003090
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003091works=no
3092AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003093AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
3094 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
3095)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003096AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00003097
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003098works=no
3099AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003100AC_TRY_COMPILE([], [signed char c;], works=yes,
3101 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
3102)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003103AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003104
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003105have_prototypes=no
3106AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003107AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
3108 AC_DEFINE(HAVE_PROTOTYPES, 1,
3109 [Define if your compiler supports function prototype])
3110 have_prototypes=yes
3111])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003112AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003113
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003114works=no
3115AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003116AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003117#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00003118int foo(int x, ...) {
3119 va_list va;
3120 va_start(va, x);
3121 va_arg(va, int);
3122 va_arg(va, char *);
3123 va_arg(va, double);
3124 return 0;
3125}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003126], [return foo(10, "", 3.14);], [
3127 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
3128 [Define if your compiler supports variable length function prototypes
3129 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
3130 works=yes
3131])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003132AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003133
Dave Cole331708b2004-08-09 04:51:41 +00003134# check for socketpair
3135AC_MSG_CHECKING(for socketpair)
3136AC_TRY_COMPILE([
3137#include <sys/types.h>
3138#include <sys/socket.h>
3139], void *x=socketpair,
3140 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
3141 AC_MSG_RESULT(yes),
3142 AC_MSG_RESULT(no)
3143)
3144
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003145# check if sockaddr has sa_len member
3146AC_MSG_CHECKING(if sockaddr has sa_len member)
3147AC_TRY_COMPILE([#include <sys/types.h>
3148#include <sys/socket.h>],
3149[struct sockaddr x;
3150x.sa_len = 0;],
3151 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003152 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00003153 AC_MSG_RESULT(no))
3154
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003155va_list_is_array=no
3156AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003157AC_TRY_COMPILE([
3158#ifdef HAVE_STDARG_PROTOTYPES
3159#include <stdarg.h>
3160#else
3161#include <varargs.h>
3162#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003163], [va_list list1, list2; list1 = list2;], , [
3164 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
3165 va_list_is_array=yes
3166])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00003167AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003168
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003169# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00003170AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
3171 [Define this if you have some version of gethostbyname_r()])
3172
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003173AC_CHECK_FUNC(gethostbyname_r, [
3174 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
3175 AC_MSG_CHECKING([gethostbyname_r with 6 args])
3176 OLD_CFLAGS=$CFLAGS
3177 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
3178 AC_TRY_COMPILE([
3179# include <netdb.h>
3180 ], [
3181 char *name;
3182 struct hostent *he, *res;
3183 char buffer[2048];
3184 int buflen = 2048;
3185 int h_errnop;
3186
3187 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
3188 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003189 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003190 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
3191 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003192 AC_MSG_RESULT(yes)
3193 ], [
3194 AC_MSG_RESULT(no)
3195 AC_MSG_CHECKING([gethostbyname_r with 5 args])
3196 AC_TRY_COMPILE([
3197# include <netdb.h>
3198 ], [
3199 char *name;
3200 struct hostent *he;
3201 char buffer[2048];
3202 int buflen = 2048;
3203 int h_errnop;
3204
3205 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
3206 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003207 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003208 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
3209 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003210 AC_MSG_RESULT(yes)
3211 ], [
3212 AC_MSG_RESULT(no)
3213 AC_MSG_CHECKING([gethostbyname_r with 3 args])
3214 AC_TRY_COMPILE([
3215# include <netdb.h>
3216 ], [
3217 char *name;
3218 struct hostent *he;
3219 struct hostent_data data;
3220
3221 (void) gethostbyname_r(name, he, &data);
3222 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003223 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003224 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
3225 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003226 AC_MSG_RESULT(yes)
3227 ], [
3228 AC_MSG_RESULT(no)
3229 ])
3230 ])
3231 ])
3232 CFLAGS=$OLD_CFLAGS
3233], [
Thomas Wouters3a584202000-08-05 23:28:51 +00003234 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003235])
3236AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
3237AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
3238AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00003239AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00003240AC_SUBST(HAVE_GETHOSTBYNAME)
3241
Guido van Rossum627b2d71993-12-24 10:39:16 +00003242# checks for system services
3243# (none yet)
3244
Guido van Rossum76be6ed1995-01-02 18:33:54 +00003245# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00003246AC_CHECK_FUNC(__fpu_control,
3247 [],
3248 [AC_CHECK_LIB(ieee, __fpu_control)
3249])
Guido van Rossum627b2d71993-12-24 10:39:16 +00003250
Guido van Rossum93274221997-05-09 02:42:00 +00003251# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00003252AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00003253AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003254 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
3255[
Guido van Rossum93274221997-05-09 02:42:00 +00003256if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003257then
3258 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
3259 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
3260 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00003261else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003262fi],
3263[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00003264
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003265# check for --with-libm=...
3266AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003267case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00003268Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00003269BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00003270*) LIBM=-lm
3271esac
Guido van Rossum93274221997-05-09 02:42:00 +00003272AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003273AC_ARG_WITH(libm,
3274 AC_HELP_STRING(--with-libm=STRING, math library),
3275[
Guido van Rossum93274221997-05-09 02:42:00 +00003276if test "$withval" = no
3277then LIBM=
3278 AC_MSG_RESULT(force LIBM empty)
3279elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003280then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003281 AC_MSG_RESULT(set LIBM="$withval")
3282else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003283fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003284[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003285
3286# check for --with-libc=...
3287AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00003288AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003289AC_ARG_WITH(libc,
3290 AC_HELP_STRING(--with-libc=STRING, C library),
3291[
Guido van Rossum93274221997-05-09 02:42:00 +00003292if test "$withval" = no
3293then LIBC=
3294 AC_MSG_RESULT(force LIBC empty)
3295elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003296then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003297 AC_MSG_RESULT(set LIBC="$withval")
3298else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003299fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003300[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003301
Christian Heimes0a8143f2007-12-18 23:22:54 +00003302# ************************************
3303# * Check for mathematical functions *
3304# ************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003305
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003306LIBS_SAVE=$LIBS
3307LIBS="$LIBS $LIBM"
3308
Mark Dickinsone05e8402009-05-04 13:30:43 +00003309# Detect whether system arithmetic is subject to x87-style double
3310# rounding issues. The result of this test has little meaning on non
3311# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding
3312# mode is round-to-nearest and double rounding issues are present, and
3313# 0 otherwise. See http://bugs.python.org/issue2937 for more info.
3314AC_MSG_CHECKING(for x87-style double rounding)
3315AC_CACHE_VAL(ac_cv_x87_double_rounding, [
3316AC_TRY_RUN([
3317#include <stdlib.h>
3318#include <math.h>
3319int main() {
3320 volatile double x, y, z;
3321 /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */
3322 x = 0.99999999999999989; /* 1-2**-53 */
3323 y = 1./x;
3324 if (y != 1.)
3325 exit(0);
3326 /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */
3327 x = 1e16;
3328 y = 2.99999;
3329 z = x + y;
3330 if (z != 1e16+4.)
3331 exit(0);
3332 /* both tests show evidence of double rounding */
3333 exit(1);
3334}
3335],
3336ac_cv_x87_double_rounding=no,
3337ac_cv_x87_double_rounding=yes,
3338ac_cv_x87_double_rounding=no)])
3339AC_MSG_RESULT($ac_cv_x87_double_rounding)
3340if test "$ac_cv_x87_double_rounding" = yes
3341then
3342 AC_DEFINE(X87_DOUBLE_ROUNDING, 1,
3343 [Define if arithmetic is subject to x87-style double rounding issue])
3344fi
3345
3346
Mark Dickinson265d7382008-04-21 22:32:24 +00003347# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3348# -0. on some architectures.
3349AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3350AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3351AC_TRY_RUN([
3352#include <math.h>
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003353#include <stdlib.h>
Mark Dickinson265d7382008-04-21 22:32:24 +00003354int main() {
3355 /* return 0 if either negative zeros don't exist
3356 on this platform or if negative zeros exist
3357 and tanh(-0.) == -0. */
3358 if (atan2(0., -1.) == atan2(-0., -1.) ||
3359 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3360 else exit(1);
3361}
3362],
3363ac_cv_tanh_preserves_zero_sign=yes,
3364ac_cv_tanh_preserves_zero_sign=no,
3365ac_cv_tanh_preserves_zero_sign=no)])
3366AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3367if test "$ac_cv_tanh_preserves_zero_sign" = yes
3368then
3369 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3370 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3371fi
3372
Mark Dickinsone05e8402009-05-04 13:30:43 +00003373AC_CHECK_FUNCS([acosh asinh atanh copysign expm1 finite hypot log1p])
3374AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
Christian Heimes0a8143f2007-12-18 23:22:54 +00003375
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003376LIBS=$LIBS_SAVE
3377
Guido van Rossumef2255b2000-03-10 22:30:29 +00003378# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003379AC_CHECK_HEADER(wchar.h, [
3380 AC_DEFINE(HAVE_WCHAR_H, 1,
3381 [Define if the compiler provides a wchar.h header file.])
3382 wchar_h="yes"
3383],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003384wchar_h="no"
3385)
3386
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003387# determine wchar_t size
3388if test "$wchar_h" = yes
3389then
Guido van Rossum67b26592001-10-20 14:21:45 +00003390 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003391fi
3392
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003393AC_MSG_CHECKING(for UCS-4 tcl)
3394have_ucs4_tcl=no
3395AC_TRY_COMPILE([
3396#include <tcl.h>
3397#if TCL_UTF_MAX != 6
3398# error "NOT UCS4_TCL"
3399#endif], [], [
3400 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3401 have_ucs4_tcl=yes
3402])
3403AC_MSG_RESULT($have_ucs4_tcl)
3404
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003405# check whether wchar_t is signed or not
3406if test "$wchar_h" = yes
3407then
3408 # check whether wchar_t is signed or not
3409 AC_MSG_CHECKING(whether wchar_t is signed)
3410 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3411 AC_TRY_RUN([
3412 #include <wchar.h>
3413 int main()
3414 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003415 /* Success: exit code 0 */
3416 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003417 }
3418 ],
3419 ac_cv_wchar_t_signed=yes,
3420 ac_cv_wchar_t_signed=no,
3421 ac_cv_wchar_t_signed=yes)])
3422 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3423fi
3424
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003425AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003426dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003427AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003428 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3429 [],
3430 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003431
3432if test $enable_unicode = yes
3433then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003434 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003435 case "$have_ucs4_tcl" in
3436 yes) enable_unicode="ucs4"
3437 ;;
3438 *) enable_unicode="ucs2"
3439 ;;
3440 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003441fi
3442
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003443AH_TEMPLATE(Py_UNICODE_SIZE,
3444 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003445case "$enable_unicode" in
3446ucs2) unicode_size="2"
3447 AC_DEFINE(Py_UNICODE_SIZE,2)
3448 ;;
3449ucs4) unicode_size="4"
3450 AC_DEFINE(Py_UNICODE_SIZE,4)
3451 ;;
Benjamin Peterson726b4822010-02-27 00:15:23 +00003452*) AC_MSG_ERROR([invalid value for --enable-unicode. Use either ucs2 or ucs4 (lowercase).]) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003453esac
3454
Martin v. Löwis11437992002-04-12 09:54:03 +00003455AH_TEMPLATE(PY_UNICODE_TYPE,
3456 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003457
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003458AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003459if test "$enable_unicode" = "no"
3460then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003461 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003462 AC_MSG_RESULT(not used)
3463else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003464 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003465 AC_DEFINE(Py_USING_UNICODE, 1,
3466 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003467
3468 # wchar_t is only usable if it maps to an unsigned type
3469 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003470 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003471 then
3472 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003473 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3474 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003475 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003476 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003477 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3478 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3479 then
3480 PY_UNICODE_TYPE="unsigned short"
3481 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3482 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3483 then
3484 PY_UNICODE_TYPE="unsigned long"
3485 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3486 else
3487 PY_UNICODE_TYPE="no type found"
3488 fi
3489 AC_MSG_RESULT($PY_UNICODE_TYPE)
3490fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003491
3492# check for endianness
3493AC_C_BIGENDIAN
3494
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003495# Check whether right shifting a negative integer extends the sign bit
3496# or fills with zeros (like the Cray J90, according to Tim Peters).
3497AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003498AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003499AC_TRY_RUN([
3500int main()
3501{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003502 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003503}
Guido van Rossum3065c942001-09-17 04:03:14 +00003504],
3505ac_cv_rshift_extends_sign=yes,
3506ac_cv_rshift_extends_sign=no,
3507ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003508AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3509if test "$ac_cv_rshift_extends_sign" = no
3510then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003511 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3512 [Define if i>>j for signed int i does not extend the sign bit
3513 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003514fi
3515
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003516# check for getc_unlocked and related locking functions
3517AC_MSG_CHECKING(for getc_unlocked() and friends)
3518AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3519AC_TRY_LINK([#include <stdio.h>],[
3520 FILE *f = fopen("/dev/null", "r");
3521 flockfile(f);
3522 getc_unlocked(f);
3523 funlockfile(f);
3524], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3525AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3526if test "$ac_cv_have_getc_unlocked" = yes
3527then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003528 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3529 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003530fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003531
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003532# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003533# save the value of LIBS so we don't actually link Python with readline
3534LIBS_no_readline=$LIBS
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003535
3536# On some systems we need to link readline to a termcap compatible
3537# library. NOTE: Keep the precedence of listed libraries synchronised
3538# with setup.py.
3539py_cv_lib_readline=no
3540AC_MSG_CHECKING([how to link readline libs])
3541for py_libtermcap in "" ncursesw ncurses curses termcap; do
3542 if test -z "$py_libtermcap"; then
3543 READLINE_LIBS="-lreadline"
3544 else
3545 READLINE_LIBS="-lreadline -l$py_libtermcap"
3546 fi
3547 LIBS="$READLINE_LIBS $LIBS_no_readline"
3548 AC_LINK_IFELSE(
3549 [AC_LANG_CALL([],[readline])],
3550 [py_cv_lib_readline=yes])
3551 if test $py_cv_lib_readline = yes; then
3552 break
3553 fi
3554done
3555# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts
3556#AC_SUBST([READLINE_LIBS])
Gregory P. Smith29ec7502008-09-07 19:18:16 +00003557if test $py_cv_lib_readline = no; then
Gregory P. Smith980b99b2008-09-07 05:15:18 +00003558 AC_MSG_RESULT([none])
3559else
3560 AC_MSG_RESULT([$READLINE_LIBS])
3561 AC_DEFINE(HAVE_LIBREADLINE, 1,
3562 [Define if you have the readline library (-lreadline).])
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003563fi
3564
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003565# check for readline 2.1
3566AC_CHECK_LIB(readline, rl_callback_handler_install,
3567 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003568 [Define if you have readline 2.1]), ,$READLINE_LIBS)
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003569
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003570# check for readline 2.2
3571AC_TRY_CPP([#include <readline/readline.h>],
3572have_readline=yes, have_readline=no)
3573if test $have_readline = yes
3574then
3575 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3576 [readline/readline.h],
3577 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3578 [Define if you have readline 2.2]), )
Antoine Pitrou632e93f2009-10-27 12:30:12 +00003579 AC_EGREP_HEADER([extern int rl_completion_suppress_append;],
3580 [readline/readline.h],
3581 AC_DEFINE(HAVE_RL_COMPLETION_SUPPRESS_APPEND, 1,
3582 [Define if you have rl_completion_suppress_append]), )
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003583fi
3584
Martin v. Löwis0daad592001-09-30 21:09:59 +00003585# check for readline 4.0
3586AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003587 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003588 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis0daad592001-09-30 21:09:59 +00003589
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003590# also in 4.0
3591AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3592 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003593 [Define if you have readline 4.0]), ,$READLINE_LIBS)
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003594
Guido van Rossum353ae582001-07-10 16:45:32 +00003595# check for readline 4.2
3596AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003597 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Gregory P. Smithff7b2d52008-09-03 05:57:48 +00003598 [Define if you have readline 4.2]), ,$READLINE_LIBS)
Guido van Rossum353ae582001-07-10 16:45:32 +00003599
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003600# also in readline 4.2
3601AC_TRY_CPP([#include <readline/readline.h>],
3602have_readline=yes, have_readline=no)
3603if test $have_readline = yes
3604then
3605 AC_EGREP_HEADER([extern int rl_catch_signals;],
3606 [readline/readline.h],
3607 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3608 [Define if you can turn off readline's signal handling.]), )
3609fi
3610
Martin v. Löwis82bca632006-02-10 20:49:30 +00003611# End of readline checks: restore LIBS
3612LIBS=$LIBS_no_readline
3613
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003614AC_MSG_CHECKING(for broken nice())
3615AC_CACHE_VAL(ac_cv_broken_nice, [
3616AC_TRY_RUN([
3617int main()
3618{
3619 int val1 = nice(1);
3620 if (val1 != -1 && val1 == nice(2))
3621 exit(0);
3622 exit(1);
3623}
Guido van Rossum3065c942001-09-17 04:03:14 +00003624],
3625ac_cv_broken_nice=yes,
3626ac_cv_broken_nice=no,
3627ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003628AC_MSG_RESULT($ac_cv_broken_nice)
3629if test "$ac_cv_broken_nice" = yes
3630then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003631 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3632 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003633fi
3634
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003635AC_MSG_CHECKING(for broken poll())
3636AC_TRY_RUN([
3637#include <poll.h>
3638
3639int main (void)
3640 {
3641 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3642
3643 close (42);
3644
3645 int poll_test = poll (&poll_struct, 1, 0);
3646
3647 if (poll_test < 0)
3648 {
3649 exit(0);
3650 }
3651 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3652 {
3653 exit(0);
3654 }
3655 else
3656 {
3657 exit(1);
3658 }
3659 }
3660],
3661ac_cv_broken_poll=yes,
3662ac_cv_broken_poll=no,
3663ac_cv_broken_poll=no)
3664AC_MSG_RESULT($ac_cv_broken_poll)
3665if test "$ac_cv_broken_poll" = yes
3666then
3667 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3668 [Define if poll() sets errno on invalid file descriptors.])
3669fi
3670
Brett Cannon43802422005-02-10 20:48:03 +00003671# Before we can test tzset, we need to check if struct tm has a tm_zone
3672# (which is not required by ISO C or UNIX spec) and/or if we support
3673# tzname[]
3674AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003675
Brett Cannon43802422005-02-10 20:48:03 +00003676# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003677AC_MSG_CHECKING(for working tzset())
3678AC_CACHE_VAL(ac_cv_working_tzset, [
3679AC_TRY_RUN([
3680#include <stdlib.h>
3681#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003682#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003683
3684#if HAVE_TZNAME
3685extern char *tzname[];
3686#endif
3687
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003688int main()
3689{
Brett Cannon18367812003-09-19 00:59:16 +00003690 /* Note that we need to ensure that not only does tzset(3)
3691 do 'something' with localtime, but it works as documented
3692 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003693 This includes making sure that tzname is set properly if
3694 tm->tm_zone does not exist since it is the alternative way
3695 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003696
3697 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003698 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003699 */
3700
Brett Cannon43802422005-02-10 20:48:03 +00003701 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003702 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3703
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003704 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003705 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003706 if (localtime(&groundhogday)->tm_hour != 0)
3707 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003708#if HAVE_TZNAME
3709 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3710 if (strcmp(tzname[0], "UTC") ||
3711 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3712 exit(1);
3713#endif
Brett Cannon18367812003-09-19 00:59:16 +00003714
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003715 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003716 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003717 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003718 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003719#if HAVE_TZNAME
3720 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3721 exit(1);
3722#endif
Brett Cannon18367812003-09-19 00:59:16 +00003723
3724 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3725 tzset();
3726 if (localtime(&groundhogday)->tm_hour != 11)
3727 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003728#if HAVE_TZNAME
3729 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3730 exit(1);
3731#endif
3732
3733#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003734 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3735 exit(1);
3736 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3737 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003738#endif
Brett Cannon18367812003-09-19 00:59:16 +00003739
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003740 exit(0);
3741}
3742],
3743ac_cv_working_tzset=yes,
3744ac_cv_working_tzset=no,
3745ac_cv_working_tzset=no)])
3746AC_MSG_RESULT($ac_cv_working_tzset)
3747if test "$ac_cv_working_tzset" = yes
3748then
3749 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3750 [Define if tzset() actually switches the local timezone in a meaningful way.])
3751fi
3752
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003753# Look for subsecond timestamps in struct stat
3754AC_MSG_CHECKING(for tv_nsec in struct stat)
3755AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3756AC_TRY_COMPILE([#include <sys/stat.h>], [
3757struct stat st;
3758st.st_mtim.tv_nsec = 1;
3759],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003760ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003761ac_cv_stat_tv_nsec=no,
3762ac_cv_stat_tv_nsec=no))
3763AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3764if test "$ac_cv_stat_tv_nsec" = yes
3765then
3766 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3767 [Define if you have struct stat.st_mtim.tv_nsec])
3768fi
3769
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003770# Look for BSD style subsecond timestamps in struct stat
3771AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3772AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3773AC_TRY_COMPILE([#include <sys/stat.h>], [
3774struct stat st;
3775st.st_mtimespec.tv_nsec = 1;
3776],
3777ac_cv_stat_tv_nsec2=yes,
3778ac_cv_stat_tv_nsec2=no,
3779ac_cv_stat_tv_nsec2=no))
3780AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3781if test "$ac_cv_stat_tv_nsec2" = yes
3782then
3783 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3784 [Define if you have struct stat.st_mtimensec])
3785fi
3786
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003787# On HP/UX 11.0, mvwdelch is a block with a return statement
3788AC_MSG_CHECKING(whether mvwdelch is an expression)
3789AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3790AC_TRY_COMPILE([#include <curses.h>], [
3791 int rtn;
3792 rtn = mvwdelch(0,0,0);
3793], ac_cv_mvwdelch_is_expression=yes,
3794 ac_cv_mvwdelch_is_expression=no,
3795 ac_cv_mvwdelch_is_expression=yes))
3796AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3797
3798if test "$ac_cv_mvwdelch_is_expression" = yes
3799then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003800 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3801 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003802fi
3803
3804AC_MSG_CHECKING(whether WINDOW has _flags)
3805AC_CACHE_VAL(ac_cv_window_has_flags,
3806AC_TRY_COMPILE([#include <curses.h>], [
3807 WINDOW *w;
3808 w->_flags = 0;
3809], ac_cv_window_has_flags=yes,
3810 ac_cv_window_has_flags=no,
3811 ac_cv_window_has_flags=no))
3812AC_MSG_RESULT($ac_cv_window_has_flags)
3813
3814
3815if test "$ac_cv_window_has_flags" = yes
3816then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003817 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3818 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003819fi
3820
Walter Dörwald4994d952006-06-19 08:07:50 +00003821AC_MSG_CHECKING(for is_term_resized)
3822AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3823 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3824 AC_MSG_RESULT(yes),
3825 AC_MSG_RESULT(no)
3826)
3827
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003828AC_MSG_CHECKING(for resize_term)
3829AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3830 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003831 AC_MSG_RESULT(yes),
3832 AC_MSG_RESULT(no)
3833)
3834
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003835AC_MSG_CHECKING(for resizeterm)
3836AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3837 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003838 AC_MSG_RESULT(yes),
3839 AC_MSG_RESULT(no)
3840)
3841
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003842AC_MSG_CHECKING(for /dev/ptmx)
3843
3844if test -r /dev/ptmx
3845then
3846 AC_MSG_RESULT(yes)
3847 AC_DEFINE(HAVE_DEV_PTMX, 1,
3848 [Define if we have /dev/ptmx.])
3849else
3850 AC_MSG_RESULT(no)
3851fi
3852
3853AC_MSG_CHECKING(for /dev/ptc)
3854
3855if test -r /dev/ptc
3856then
3857 AC_MSG_RESULT(yes)
3858 AC_DEFINE(HAVE_DEV_PTC, 1,
3859 [Define if we have /dev/ptc.])
3860else
3861 AC_MSG_RESULT(no)
3862fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003863
Brett Cannon09d12362006-05-11 05:11:33 +00003864AC_MSG_CHECKING(for %zd printf() format support)
3865AC_TRY_RUN([#include <stdio.h>
3866#include <stddef.h>
3867#include <string.h>
3868
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003869#ifdef HAVE_SYS_TYPES_H
3870#include <sys/types.h>
3871#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003872
3873#ifdef HAVE_SSIZE_T
3874typedef ssize_t Py_ssize_t;
3875#elif SIZEOF_VOID_P == SIZEOF_LONG
3876typedef long Py_ssize_t;
3877#else
3878typedef int Py_ssize_t;
3879#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003880
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003881int main()
3882{
3883 char buffer[256];
3884
Brett Cannon09d12362006-05-11 05:11:33 +00003885 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3886 return 1;
3887
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003888 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003889 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003890
3891 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3892 return 1;
3893
3894 if (strcmp(buffer, "-123"))
3895 return 1;
3896
Brett Cannon09d12362006-05-11 05:11:33 +00003897 return 0;
3898}],
3899[AC_MSG_RESULT(yes)
3900 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3901 AC_MSG_RESULT(no))
3902
Martin v. Löwis01c04012002-11-11 14:58:44 +00003903AC_CHECK_TYPE(socklen_t,,
3904 AC_DEFINE(socklen_t,int,
3905 Define to `int' if <sys/socket.h> does not define.),[
3906#ifdef HAVE_SYS_TYPES_H
3907#include <sys/types.h>
3908#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003909#ifdef HAVE_SYS_SOCKET_H
3910#include <sys/socket.h>
3911#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003912])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003913
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003914AC_SUBST(THREADHEADERS)
3915
3916for h in `(cd $srcdir;echo Python/thread_*.h)`
3917do
3918 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3919done
3920
Ronald Oussoren55114422009-11-19 16:37:33 +00003921if test $ac_sys_system = Darwin
3922then
3923 LIBS="$LIBS -framework CoreFoundation"
3924fi
3925
3926
3927
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003928AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003929SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003930AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003931for dir in $SRCDIRS; do
3932 if test ! -d $dir; then
3933 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003934 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003935done
3936AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003937
Guido van Rossum627b2d71993-12-24 10:39:16 +00003938# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003939AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3940AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003941
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003942echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003943if test ! -f Modules/Setup
3944then
3945 cp $srcdir/Modules/Setup.dist Modules/Setup
3946fi
3947
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003948echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003949if test ! -f Modules/Setup.local
3950then
3951 echo "# Edit this file for local setup changes" >Modules/Setup.local
3952fi
3953
3954echo "creating Makefile"
3955$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3956 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003957 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003958
3959case $ac_sys_system in
3960BeOS)
3961 AC_MSG_WARN([
3962
3963 Support for BeOS is deprecated as of Python 2.6.
3964 See PEP 11 for the gory details.
3965 ])
3966 ;;
3967*) ;;
3968esac
3969
Neil Schemenauer66252162001-02-19 04:47:42 +00003970mv config.c Modules