blob: 1674c40a600e5124ce401d8b04668a2818296f2b [file] [log] [blame]
Benjamin Petersonfbeb6b62008-05-26 16:04:49 +00001dnl ***********************************************
2dnl * Please run autoreconf to test your changes! *
3dnl ***********************************************
4dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.63).
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)
Guido van Rossum0c4eb622006-03-30 16:19:24 +00007m4_define(PYTHON_VERSION, 3.0)
Martin v. Löwis88afe662002-10-26 13:47:44 +00008
Guido van Rossum76be6ed1995-01-02 18:33:54 +00009AC_REVISION($Revision$)
Thomas Wouters47b49bf2007-08-30 22:15:33 +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
Martin v. Löwise981a4e2002-11-11 13:26:51 +000060define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000061
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000062# Arguments passed to configure.
63AC_SUBST(CONFIG_ARGS)
64CONFIG_ARGS="$ac_configure_args"
65
Thomas Wouters477c8d52006-05-27 19:21:47 +000066AC_ARG_ENABLE(universalsdk,
Christian Heimes68f5fbe2008-02-14 08:27:37 +000067 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Thomas Wouters477c8d52006-05-27 19:21:47 +000068[
69 case $enableval in
70 yes)
71 enableval=/Developer/SDKs/MacOSX10.4u.sdk
72 ;;
73 esac
74 case $enableval in
75 no)
76 UNIVERSALSDK=
77 enable_universalsdk=
78 ;;
79 *)
80 UNIVERSALSDK=$enableval
81 ;;
82 esac
83],[
84 UNIVERSALSDK=
85 enable_universalsdk=
86])
87AC_SUBST(UNIVERSALSDK)
88
Christian Heimes81ee3ef2008-05-04 22:42:01 +000089AC_ARG_WITH(framework-name,
90 AC_HELP_STRING(--with-framework-name=FRAMEWORK,
91 specify an alternate name of the framework built with --enable-framework),
92[
93 PYTHONFRAMEWORK=${withval}
94 PYTHONFRAMEWORKDIR=${withval}.framework
95 PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr '[A-Z]' '[a-z]'`
96 ],[
97 PYTHONFRAMEWORK=Python
98 PYTHONFRAMEWORKDIR=Python.framework
99 PYTHONFRAMEWORKIDENTIFIER=org.python.python
100])
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000101dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000102AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000103 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
104[
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000105 case $enableval in
106 yes)
107 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +0000108 esac
109 case $enableval in
110 no)
111 PYTHONFRAMEWORK=
112 PYTHONFRAMEWORKDIR=no-framework
113 PYTHONFRAMEWORKPREFIX=
114 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000115 FRAMEWORKINSTALLFIRST=
116 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000117 FRAMEWORKALTINSTALLFIRST=
118 FRAMEWORKALTINSTALLLAST=
119 if test "x${prefix}" = "xNONE"; then
120 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
121 else
122 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
123 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000124 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000125 ;;
126 *)
127 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000128 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Thomas Wouters477c8d52006-05-27 19:21:47 +0000129 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
130 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000131 FRAMEWORKALTINSTALLFIRST="${FRAMEWORKINSTALLFIRST} bininstall maninstall"
132 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
133 if test "x${prefix}" = "xNONE" ; then
134 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
135 else
136 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
137 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000138 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Thomas Wouters477c8d52006-05-27 19:21:47 +0000139
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000140 # Add files for Mac specific code to the list of output
Thomas Wouters477c8d52006-05-27 19:21:47 +0000141 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000142 AC_CONFIG_FILES(Mac/Makefile)
143 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000144 AC_CONFIG_FILES(Mac/Resources/framework/Info.plist)
145 AC_CONFIG_FILES(Mac/Resources/app/Info.plist)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000146 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000147 ],[
148 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000149 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000150 PYTHONFRAMEWORKPREFIX=
151 PYTHONFRAMEWORKINSTALLDIR=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000152 FRAMEWORKINSTALLFIRST=
153 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000154 FRAMEWORKALTINSTALLFIRST=
155 FRAMEWORKALTINSTALLLAST=
156 if test "x${prefix}" = "xNONE" ; then
157 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
158 else
159 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
160 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000161 enable_framework=
162])
163AC_SUBST(PYTHONFRAMEWORK)
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000164AC_SUBST(PYTHONFRAMEWORKIDENTIFIER)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000165AC_SUBST(PYTHONFRAMEWORKDIR)
166AC_SUBST(PYTHONFRAMEWORKPREFIX)
167AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000168AC_SUBST(FRAMEWORKINSTALLFIRST)
169AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000170AC_SUBST(FRAMEWORKALTINSTALLFIRST)
171AC_SUBST(FRAMEWORKALTINSTALLLAST)
172AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000173
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000174##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000175## AC_HELP_STRING(--with-dyld,
176## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000177##
Guido van Rossumb418f891996-07-30 18:06:02 +0000178# Set name for machine-dependent library files
179AC_SUBST(MACHDEP)
180AC_MSG_CHECKING(MACHDEP)
181if test -z "$MACHDEP"
182then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000183 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000184 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
185 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000186 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000187 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000188 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000189 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000190 ac_md_system=`echo $ac_sys_system |
191 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
192 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000193 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000194 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000195
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000196 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000197 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000198 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000199 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000200 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000201 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000202 esac
203fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000204
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000205# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
206# disable features if it is defined, without any means to access these
207# features as extensions. For these systems, we skip the definition of
208# _XOPEN_SOURCE. Before adding a system to the list to gain access to
209# some feature, make sure there is no alternative way to access this
210# feature. Also, when using wildcards, make sure you have verified the
211# need for not defining _XOPEN_SOURCE on all systems matching the
212# wildcard, and that the wildcard does not include future systems
213# (which may remove their limitations).
214dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
215case $ac_sys_system/$ac_sys_release in
216 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
217 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000218 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Georg Brandlf78e02b2008-06-10 17:40:04 +0000219 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0123@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000220 define_xopen_source=no
221 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
222 # also defined. This can be overridden by defining _BSD_SOURCE
223 # As this has a different meaning on Linux, only define it on OpenBSD
224 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
225 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +0000226 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
227 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
228 # Marc Recht
229 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6[A-S])
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000230 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000231 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
232 # of union __?sigval. Reported by Stuart Bishop.
233 SunOS/5.6)
234 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000235 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
236 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000237 # Reconfirmed for 7.1.4 by Martin v. Loewis.
238 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000239 define_xopen_source=no;;
240 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000241 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000242 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000243 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000244 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
245 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
246 # this is fixed in 10.3, which identifies itself as Darwin/7.*
247 # This should hopefully be fixed in FreeBSD 4.9
248 FreeBSD/4.8* | Darwin/6* )
249 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000250 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
251 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
252 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000253 AIX/4)
254 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000255 AIX/5)
256 if test `uname -r` -eq 1; then
257 define_xopen_source=no
258 fi
259 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000260 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
261 # disables platform specific features beyond repair.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000262 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000263 # has no effect, don't bother defining them
264 Darwin/@<:@789@:>@.*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000265 define_xopen_source=no
266 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000267 # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from
268 # defining NI_NUMERICHOST.
269 QNX/6.3.2)
270 define_xopen_source=no
271 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000272
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000273esac
274
275if test $define_xopen_source = yes
276then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000277 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
278 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000279 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
280 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000281 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000282 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000283 AC_DEFINE(_XOPEN_SOURCE, 500,
284 Define to the level of X/Open that your system supports)
285 ;;
286 *)
287 AC_DEFINE(_XOPEN_SOURCE, 600,
288 Define to the level of X/Open that your system supports)
289 ;;
290 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000291
292 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
293 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
294 # several APIs are not declared. Since this is also needed in some
295 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000296 # except for Solaris 10, where it must not be defined,
297 # as it implies XPG4.2
298 case $ac_sys_system/$ac_sys_release in
299 SunOS/5.10)
300 ;;
301 *)
302 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
303 Define to activate Unix95-and-earlier features)
304 ;;
305 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000306
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000307 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
308
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000309fi
310
Guido van Rossum91922671997-10-09 20:24:13 +0000311#
312# SGI compilers allow the specification of the both the ABI and the
313# ISA on the command line. Depending on the values of these switches,
314# different and often incompatable code will be generated.
315#
316# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
317# thus supply support for various ABI/ISA combinations. The MACHDEP
318# variable is also adjusted.
319#
320AC_SUBST(SGI_ABI)
321if test ! -z "$SGI_ABI"
322then
323 CC="cc $SGI_ABI"
324 LDFLAGS="$SGI_ABI $LDFLAGS"
325 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
326fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000327AC_MSG_RESULT($MACHDEP)
328
Jack Jansen6b08a402004-06-03 12:41:45 +0000329# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
330# it may influence the way we can build extensions, so distutils
331# needs to check it
332AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000333AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000334CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000335EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000336
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000337AC_MSG_CHECKING(machine type as reported by uname -m)
338ac_sys_machine=`uname -m`
339AC_MSG_RESULT($ac_sys_machine)
340
Guido van Rossum627b2d71993-12-24 10:39:16 +0000341# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000342
343# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
344# for debug/optimization stuff. BASECFLAGS is for flags that are required
345# just to get things to compile and link. Users are free to override OPT
346# when running configure or make. The build should not break if they do.
347# BASECFLAGS should generally not be messed with, however.
348
349# XXX shouldn't some/most/all of this code be merged with the stuff later
350# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000351AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000352AC_ARG_WITH(gcc,
353 AC_HELP_STRING(--without-gcc,never use gcc),
354[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000355 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000356 no) CC=cc
357 without_gcc=yes;;
358 yes) CC=gcc
359 without_gcc=no;;
360 *) CC=$withval
361 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000362 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000363 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000364 AIX*) CC=cc_r
365 without_gcc=;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000366 Monterey*)
367 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000368 without_gcc=;;
369 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000370 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000371AC_MSG_RESULT($without_gcc)
372
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000373# If the user switches compilers, we can't believe the cache
374if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
375then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000376 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
377(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000378fi
379
Guido van Rossum627b2d71993-12-24 10:39:16 +0000380AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000381
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000382AC_SUBST(CXX)
383AC_SUBST(MAINCC)
384AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
385AC_ARG_WITH(cxx_main,
386 AC_HELP_STRING([--with-cxx-main=<compiler>],
387 [compile main() and link python executable with C++ compiler]),
388[
389
390 case $withval in
391 no) with_cxx_main=no
392 MAINCC='$(CC)';;
393 yes) with_cxx_main=yes
394 MAINCC='$(CXX)';;
395 *) with_cxx_main=yes
396 MAINCC=$withval
397 if test -z "$CXX"
398 then
399 CXX=$withval
400 fi;;
401 esac], [
402 with_cxx_main=no
403 MAINCC='$(CC)'
404])
405AC_MSG_RESULT($with_cxx_main)
406
407preset_cxx="$CXX"
408if test -z "$CXX"
409then
410 case "$CC" in
411 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
412 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
413 esac
414 if test "$CXX" = "notfound"
415 then
416 CXX=""
417 fi
418fi
419if test -z "$CXX"
420then
421 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
422 if test "$CXX" = "notfound"
423 then
424 CXX=""
425 fi
426fi
427if test "$preset_cxx" != "$CXX"
428then
429 AC_MSG_WARN([
430
431 By default, distutils will build C++ extension modules with "$CXX".
432 If this is not intended, then set CXX on the configure command line.
433 ])
434fi
435
436
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000437# checks for UNIX variants that set C preprocessor variables
438AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000439
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000440# Check for unsupported systems
441case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000442atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000443 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
444 echo See README for details.
445 exit 1;;
446esac
447
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000448AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000449AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000450AC_ARG_WITH(suffix,
451 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
452[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000453 case $withval in
454 no) EXEEXT=;;
455 yes) EXEEXT=.exe;;
456 *) EXEEXT=$withval;;
457 esac])
458AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000459
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000460# Test whether we're running on a non-case-sensitive system, in which
461# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000462AC_SUBST(BUILDEXEEXT)
463AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000464if test ! -d CaseSensitiveTestDir; then
465mkdir CaseSensitiveTestDir
466fi
467
468if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000469then
Jack Jansen1999ef42001-12-06 21:47:20 +0000470 AC_MSG_RESULT(yes)
471 BUILDEXEEXT=.exe
472else
473 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000474 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000475fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000476rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000477
Guido van Rossumdd997f71998-10-07 19:58:26 +0000478case $MACHDEP in
479bsdos*)
480 case $CC in
481 gcc) CC="$CC -D_HAVE_BSDI";;
482 esac;;
483esac
484
Guido van Rossum84561611997-08-21 00:08:11 +0000485case $ac_sys_system in
486hp*|HP*)
487 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000488 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000489 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000490Monterey*)
491 case $CC in
492 cc) CC="$CC -Wl,-Bexport";;
493 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000494SunOS*)
495 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000496 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000497 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000498esac
499
Martin v. Löwise8964d42001-03-06 12:09:07 +0000500
Neil Schemenauer61c51152001-01-26 16:18:16 +0000501AC_SUBST(LIBRARY)
502AC_MSG_CHECKING(LIBRARY)
503if test -z "$LIBRARY"
504then
505 LIBRARY='libpython$(VERSION).a'
506fi
507AC_MSG_RESULT($LIBRARY)
508
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000509# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000510# name of the library into which to insert object files). BLDLIBRARY is also
511# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
512# is blank as the main program is not linked directly against LDLIBRARY.
513# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
514# systems without shared libraries, LDLIBRARY is the same as LIBRARY
515# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
516# DLLLIBRARY is the shared (i.e., DLL) library.
517#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000518# RUNSHARED is used to run shared python without installed libraries
519#
520# INSTSONAME is the name of the shared library that will be use to install
521# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000522AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000523AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000524AC_SUBST(BLDLIBRARY)
525AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000526AC_SUBST(INSTSONAME)
527AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000528LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000529BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000530INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000531DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000532LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000533RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000534
Guido van Rossumfb842551997-08-06 23:42:07 +0000535# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000536# If CXX is set, and if it is needed to link a main function that was
537# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
538# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000539# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000540# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000541AC_SUBST(LINKCC)
542AC_MSG_CHECKING(LINKCC)
543if test -z "$LINKCC"
544then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000545 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000546 case $ac_sys_system in
547 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000548 exp_extra="\"\""
549 if test $ac_sys_release -ge 5 -o \
550 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
551 exp_extra="."
552 fi
553 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000554 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000555 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Georg Brandlf78e02b2008-06-10 17:40:04 +0000556 QNX*)
557 # qcc must be used because the other compilers do not
558 # support -N.
559 LINKCC=qcc;;
Guido van Rossumfb842551997-08-06 23:42:07 +0000560 esac
561fi
562AC_MSG_RESULT($LINKCC)
563
Martin v. Löwis1142de32002-03-29 16:28:31 +0000564AC_MSG_CHECKING(for --enable-shared)
565AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000566 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000567
Martin v. Löwis1142de32002-03-29 16:28:31 +0000568if test -z "$enable_shared"
569then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000570 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000571 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000572 enable_shared="yes";;
573 *)
574 enable_shared="no";;
575 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000576fi
577AC_MSG_RESULT($enable_shared)
578
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000579AC_MSG_CHECKING(for --enable-profiling)
580AC_ARG_ENABLE(profiling,
581 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
582[ac_save_cc="$CC"
583 CC="$CC -pg"
584 AC_TRY_RUN([int main() { return 0; }],
585 ac_enable_profiling="yes",
586 ac_enable_profiling="no",
587 ac_enable_profiling="no")
588 CC="$ac_save_cc"])
589AC_MSG_RESULT($ac_enable_profiling)
590
591case "$ac_enable_profiling" in
592 "yes")
593 BASECFLAGS="-pg $BASECFLAGS"
594 LDFLAGS="-pg $LDFLAGS"
595 ;;
596esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000597
598AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000599
Guido van Rossumb8552162001-09-05 14:58:11 +0000600# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
601# library that we build, but we do not want to link against it (we
602# will find it with a -framework option). For this reason there is an
603# extra variable BLDLIBRARY against which Python and the extension
604# modules are linked, BLDLIBRARY. This is normally the same as
605# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000606if test "$enable_framework"
607then
608 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000609 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000610 BLDLIBRARY=''
611else
612 BLDLIBRARY='$(LDLIBRARY)'
613fi
614
Martin v. Löwis1142de32002-03-29 16:28:31 +0000615# Other platforms follow
616if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000617 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000618 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000619 CYGWIN*)
620 LDLIBRARY='libpython$(VERSION).dll.a'
621 DLLLIBRARY='libpython$(VERSION).dll'
622 ;;
623 SunOS*)
624 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000625 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000626 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000627 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000628 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000629 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000630 LDLIBRARY='libpython$(VERSION).so'
631 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000632 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000633 case $ac_sys_system in
634 FreeBSD*)
635 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
636 ;;
637 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000638 INSTSONAME="$LDLIBRARY".$SOVERSION
639 ;;
640 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000641 case `uname -m` in
642 ia64)
643 LDLIBRARY='libpython$(VERSION).so'
644 ;;
645 *)
646 LDLIBRARY='libpython$(VERSION).sl'
647 ;;
648 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000649 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000650 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000651 ;;
652 OSF*)
653 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000654 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000655 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000656 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000657 atheos*)
658 LDLIBRARY='libpython$(VERSION).so'
659 BLDLIBRARY='-L. -lpython$(VERSION)'
660 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
661 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000662 esac
Jason Tishler30765592003-09-04 11:04:06 +0000663else # shared is disabled
664 case $ac_sys_system in
665 CYGWIN*)
666 BLDLIBRARY='$(LIBRARY)'
667 LDLIBRARY='libpython$(VERSION).dll.a'
668 ;;
669 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000670fi
671
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000672AC_MSG_RESULT($LDLIBRARY)
673
Guido van Rossum627b2d71993-12-24 10:39:16 +0000674AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000675AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000676AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000677
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000678AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000679AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000680if test $SVNVERSION = found
681then
682 SVNVERSION="svnversion \$(srcdir)"
683else
684 SVNVERSION="echo exported"
685fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000686
Neil Schemenauera42c8272001-03-31 00:01:55 +0000687case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000688bsdos*|hp*|HP*)
689 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000690 if test -z "$INSTALL"
691 then
692 INSTALL="${srcdir}/install-sh -c"
693 fi
694esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000695AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000696
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000697# Not every filesystem supports hard links
698AC_SUBST(LN)
699if test -z "$LN" ; then
700 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000701 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000702 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000703 *) LN=ln;;
704 esac
705fi
706
Fred Drake9f715822001-07-11 06:27:00 +0000707# Check for --with-pydebug
708AC_MSG_CHECKING(for --with-pydebug)
709AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000710 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
711[
Fred Drake9f715822001-07-11 06:27:00 +0000712if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000713then
714 AC_DEFINE(Py_DEBUG, 1,
715 [Define if you want to build an interpreter with many run-time checks.])
716 AC_MSG_RESULT(yes);
717 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000718else AC_MSG_RESULT(no); Py_DEBUG='false'
719fi],
720[AC_MSG_RESULT(no)])
721
Skip Montanarodecc6a42003-01-01 20:07:49 +0000722# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
723# merged with this chunk of code?
724
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000725# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000726# ------------------------
727# (The following bit of code is complicated enough - please keep things
728# indented properly. Just pretend you're editing Python code. ;-)
729
730# There are two parallel sets of case statements below, one that checks to
731# see if OPT was set and one that does BASECFLAGS setting based upon
732# compiler and platform. BASECFLAGS tweaks need to be made even if the
733# user set OPT.
734
735# tweak OPT based on compiler and platform, only if the user didn't set
736# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000737AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000738if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000739then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000740 case $GCC in
741 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000742 if test "$CC" != 'g++' ; then
743 STRICT_PROTO="-Wstrict-prototypes"
744 fi
Christian Heimes38053212007-12-14 01:24:44 +0000745 # For gcc 4.x we need to use -fwrapv so lets check if its supported
746 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
747 WRAP="-fwrapv"
748 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000749 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000750 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000751 if test "$Py_DEBUG" = 'true' ; then
752 # Optimization messes up debuggers, so turn it off for
753 # debug builds.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000754 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000755 else
Christian Heimes38053212007-12-14 01:24:44 +0000756 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000757 fi
758 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000759 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000760 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000761 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000762 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000763 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000764 SCO_SV*) OPT="$OPT -m486 -DSCO5"
765 ;;
766 esac
Fred Drake9f715822001-07-11 06:27:00 +0000767 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000768
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000769 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000770 OPT="-O"
771 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000772 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000773
774 # The current (beta) Monterey compiler dies with optimizations
775 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000776 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000777 Monterey*)
778 OPT=""
779 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000780 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000781
Guido van Rossum4e8af441994-08-19 15:33:54 +0000782fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000783
Skip Montanarodecc6a42003-01-01 20:07:49 +0000784AC_SUBST(BASECFLAGS)
785# tweak BASECFLAGS based on compiler and platform
786case $GCC in
787yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000788 # Python violates C99 rules, by casting between incompatible
789 # pointer types. GCC may generate bad code as a result of that,
790 # so use -fno-strict-aliasing if supported.
791 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
792 ac_save_cc="$CC"
793 CC="$CC -fno-strict-aliasing"
794 AC_TRY_RUN([int main() { return 0; }],
795 ac_cv_no_strict_aliasing_ok=yes,
796 ac_cv_no_strict_aliasing_ok=no,
797 ac_cv_no_strict_aliasing_ok=no)
798 CC="$ac_save_cc"
799 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
800 if test $ac_cv_no_strict_aliasing_ok = yes
801 then
802 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
803 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000804
805 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
806 # support. Without this, treatment of subnormals doesn't follow
807 # the standard.
808 case $ac_sys_machine in
809 alpha*)
810 BASECFLAGS="$BASECFLAGS -mieee"
811 ;;
812 esac
813
Skip Montanarodecc6a42003-01-01 20:07:49 +0000814 case $ac_sys_system in
815 SCO_SV*)
816 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
817 ;;
818 # is there any other compiler on Darwin besides gcc?
819 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +0000820 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
821 # used to be here, but non-Apple gcc doesn't accept them.
Thomas Wouters477c8d52006-05-27 19:21:47 +0000822 if test "${enable_universalsdk}"; then
823 BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
824 fi
825
Skip Montanarodecc6a42003-01-01 20:07:49 +0000826 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000827 OSF*)
828 BASECFLAGS="$BASECFLAGS -mieee"
829 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000830 esac
831 ;;
832
833*)
834 case $ac_sys_system in
835 OpenUNIX*|UnixWare*)
836 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
837 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000838 OSF*)
839 BASECFLAGS="$BASECFLAGS -ieee -std"
840 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000841 SCO_SV*)
842 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
843 ;;
844 esac
845 ;;
846esac
847
Fred Drakee1ceaa02001-12-04 20:55:47 +0000848if test "$Py_DEBUG" = 'true'; then
849 :
850else
851 OPT="-DNDEBUG $OPT"
852fi
853
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000854if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000855then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000856 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000857fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000858
Neal Norwitz020c46a2006-01-07 21:39:28 +0000859# disable check for icc since it seems to pass, but generates a warning
860if test "$CC" = icc
861then
862 ac_cv_opt_olimit_ok=no
863fi
864
Guido van Rossum91922671997-10-09 20:24:13 +0000865AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
866AC_CACHE_VAL(ac_cv_opt_olimit_ok,
867[ac_save_cc="$CC"
868CC="$CC -OPT:Olimit=0"
869AC_TRY_RUN([int main() { return 0; }],
870 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000871 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000872 ac_cv_opt_olimit_ok=no)
873CC="$ac_save_cc"])
874AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000875if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000876 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000877 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
878 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
879 # environment?
880 Darwin*)
881 ;;
882 *)
883 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
884 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000885 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000886else
887 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
888 AC_CACHE_VAL(ac_cv_olimit_ok,
889 [ac_save_cc="$CC"
890 CC="$CC -Olimit 1500"
891 AC_TRY_RUN([int main() { return 0; }],
892 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000893 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000894 ac_cv_olimit_ok=no)
895 CC="$ac_save_cc"])
896 AC_MSG_RESULT($ac_cv_olimit_ok)
897 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000898 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000899 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000900fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000901
Thomas Wouters89f507f2006-12-13 04:49:30 +0000902# Check whether GCC supports PyArg_ParseTuple format
903if test "$GCC" = "yes"
904then
905 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
906 save_CFLAGS=$CFLAGS
907 CFLAGS="$CFLAGS -Werror"
908 AC_TRY_COMPILE([
909 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
910 ],,
911 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
912 AC_MSG_RESULT(yes),
913 AC_MSG_RESULT(no)
914 )
915 CFLAGS=$save_CFLAGS
916fi
917
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000918# On some compilers, pthreads are available without further options
919# (e.g. MacOS X). On some of these systems, the compiler will not
920# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
921# So we have to see first whether pthreads are available without
922# options before we can check whether -Kpthread improves anything.
923AC_MSG_CHECKING(whether pthreads are available without options)
924AC_CACHE_VAL(ac_cv_pthread_is_default,
925[AC_TRY_RUN([
926#include <pthread.h>
927
928void* routine(void* p){return NULL;}
929
930int main(){
931 pthread_t p;
932 if(pthread_create(&p,NULL,routine,NULL)!=0)
933 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000934 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000935 return 0;
936}
937],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000938[
939 ac_cv_pthread_is_default=yes
940 ac_cv_kthread=no
941 ac_cv_pthread=no
942],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000943 ac_cv_pthread_is_default=no,
944 ac_cv_pthread_is_default=no)
945])
946AC_MSG_RESULT($ac_cv_pthread_is_default)
947
948
949if test $ac_cv_pthread_is_default = yes
950then
951 ac_cv_kpthread=no
952else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000953# -Kpthread, if available, provides the right #defines
954# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000955# Some compilers won't report that they do not support -Kpthread,
956# so we need to run a program to see whether it really made the
957# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000958AC_MSG_CHECKING(whether $CC accepts -Kpthread)
959AC_CACHE_VAL(ac_cv_kpthread,
960[ac_save_cc="$CC"
961CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000962AC_TRY_RUN([
963#include <pthread.h>
964
965void* routine(void* p){return NULL;}
966
967int main(){
968 pthread_t p;
969 if(pthread_create(&p,NULL,routine,NULL)!=0)
970 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000971 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000972 return 0;
973}
974],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000975 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000976 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000977 ac_cv_kpthread=no)
978CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000979AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000980fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000981
Skip Montanarod8d39a02003-07-10 20:44:10 +0000982if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000983then
984# -Kthread, if available, provides the right #defines
985# and linker options to make pthread_create available
986# Some compilers won't report that they do not support -Kthread,
987# so we need to run a program to see whether it really made the
988# function available.
989AC_MSG_CHECKING(whether $CC accepts -Kthread)
990AC_CACHE_VAL(ac_cv_kthread,
991[ac_save_cc="$CC"
992CC="$CC -Kthread"
993AC_TRY_RUN([
994#include <pthread.h>
995
996void* routine(void* p){return NULL;}
997
998int main(){
999 pthread_t p;
1000 if(pthread_create(&p,NULL,routine,NULL)!=0)
1001 return 1;
1002 (void)pthread_detach(p);
1003 return 0;
1004}
1005],
1006 ac_cv_kthread=yes,
1007 ac_cv_kthread=no,
1008 ac_cv_kthread=no)
1009CC="$ac_save_cc"])
1010AC_MSG_RESULT($ac_cv_kthread)
1011fi
1012
Skip Montanarod8d39a02003-07-10 20:44:10 +00001013if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001014then
1015# -pthread, if available, provides the right #defines
1016# and linker options to make pthread_create available
1017# Some compilers won't report that they do not support -pthread,
1018# so we need to run a program to see whether it really made the
1019# function available.
1020AC_MSG_CHECKING(whether $CC accepts -pthread)
1021AC_CACHE_VAL(ac_cv_thread,
1022[ac_save_cc="$CC"
1023CC="$CC -pthread"
1024AC_TRY_RUN([
1025#include <pthread.h>
1026
1027void* routine(void* p){return NULL;}
1028
1029int main(){
1030 pthread_t p;
1031 if(pthread_create(&p,NULL,routine,NULL)!=0)
1032 return 1;
1033 (void)pthread_detach(p);
1034 return 0;
1035}
1036],
1037 ac_cv_pthread=yes,
1038 ac_cv_pthread=no,
1039 ac_cv_pthread=no)
1040CC="$ac_save_cc"])
1041AC_MSG_RESULT($ac_cv_pthread)
1042fi
1043
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001044# If we have set a CC compiler flag for thread support then
1045# check if it works for CXX, too.
1046ac_cv_cxx_thread=no
1047if test ! -z "$CXX"
1048then
1049AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1050ac_save_cxx="$CXX"
1051
1052if test "$ac_cv_kpthread" = "yes"
1053then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001054 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001055 ac_cv_cxx_thread=yes
1056elif test "$ac_cv_kthread" = "yes"
1057then
1058 CXX="$CXX -Kthread"
1059 ac_cv_cxx_thread=yes
1060elif test "$ac_cv_pthread" = "yes"
1061then
1062 CXX="$CXX -pthread"
1063 ac_cv_cxx_thread=yes
1064fi
1065
1066if test $ac_cv_cxx_thread = yes
1067then
1068 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1069 $CXX -c conftest.$ac_ext 2>&5
1070 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1071 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1072 then
1073 ac_cv_cxx_thread=yes
1074 else
1075 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001076 fi
1077 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001078fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001079AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001080fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001081CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001082
Fred Drakece81d592000-07-09 14:39:29 +00001083dnl # check for ANSI or K&R ("traditional") preprocessor
1084dnl AC_MSG_CHECKING(for C preprocessor type)
1085dnl AC_TRY_COMPILE([
1086dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1087dnl int foo;
1088dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1089dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1090dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001091
Guido van Rossum627b2d71993-12-24 10:39:16 +00001092# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001093AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001094AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1095fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001096ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001097shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001098unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001099sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1100sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001101sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
Georg Brandlf78e02b2008-06-10 17:40:04 +00001102sys/termio.h sys/time.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001103sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001104sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimes043d6f62008-01-07 17:19:16 +00001105bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001106AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001107AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001108
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001109# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001110AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001111#ifdef HAVE_CURSES_H
1112#include <curses.h>
1113#endif
1114])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001115
Martin v. Löwis11017b12006-01-14 18:12:57 +00001116# On Linux, netlink.h requires asm/types.h
1117AC_CHECK_HEADERS(linux/netlink.h,,,[
1118#ifdef HAVE_ASM_TYPES_H
1119#include <asm/types.h>
1120#endif
1121#ifdef HAVE_SYS_SOCKET_H
1122#include <sys/socket.h>
1123#endif
1124])
1125
Guido van Rossum627b2d71993-12-24 10:39:16 +00001126# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001127was_it_defined=no
1128AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001129AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1130 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1131])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001132AC_MSG_RESULT($was_it_defined)
1133
Neal Norwitz11690112002-07-30 01:08:28 +00001134# Check whether using makedev requires defining _OSF_SOURCE
1135AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001136AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001137 [ makedev(0, 0) ],
1138 ac_cv_has_makedev=yes,
1139 ac_cv_has_makedev=no)
1140if test "$ac_cv_has_makedev" = "no"; then
1141 # we didn't link, try if _OSF_SOURCE will allow us to link
1142 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001143#define _OSF_SOURCE 1
1144#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001145 ],
1146 [ makedev(0, 0) ],
1147 ac_cv_has_makedev=yes,
1148 ac_cv_has_makedev=no)
1149 if test "$ac_cv_has_makedev" = "yes"; then
1150 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1151 fi
1152fi
1153AC_MSG_RESULT($ac_cv_has_makedev)
1154if test "$ac_cv_has_makedev" = "yes"; then
1155 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1156fi
1157
Martin v. Löwis399a6892002-10-04 10:22:02 +00001158# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1159# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1160# defined, but the compiler does not support pragma redefine_extname,
1161# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1162# structures (such as rlimit64) without declaring them. As a
1163# work-around, disable LFS on such configurations
1164
1165use_lfs=yes
1166AC_MSG_CHECKING(Solaris LFS bug)
1167AC_TRY_COMPILE([
1168#define _LARGEFILE_SOURCE 1
1169#define _FILE_OFFSET_BITS 64
1170#include <sys/resource.h>
1171],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1172AC_MSG_RESULT($sol_lfs_bug)
1173if test "$sol_lfs_bug" = "yes"; then
1174 use_lfs=no
1175fi
1176
1177if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001178# Two defines needed to enable largefile support on various platforms
1179# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001180AC_DEFINE(_LARGEFILE_SOURCE, 1,
1181[This must be defined on some systems to enable large file support.])
1182AC_DEFINE(_FILE_OFFSET_BITS, 64,
1183[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001184fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001185
Guido van Rossum300fda71996-08-19 21:58:16 +00001186# Add some code to confdefs.h so that the test for off_t works on SCO
1187cat >> confdefs.h <<\EOF
1188#if defined(SCO_DS)
1189#undef _OFF_T
1190#endif
1191EOF
1192
Guido van Rossumef2255b2000-03-10 22:30:29 +00001193# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001194AC_TYPE_MODE_T
1195AC_TYPE_OFF_T
1196AC_TYPE_PID_T
1197AC_TYPE_SIGNAL
1198AC_TYPE_SIZE_T
1199AC_TYPE_UID_T
Christian Heimes400adb02008-02-01 08:12:03 +00001200AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001201 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001202
Guido van Rossumef2255b2000-03-10 22:30:29 +00001203# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001204# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001205AC_CHECK_SIZEOF(int, 4)
1206AC_CHECK_SIZEOF(long, 4)
1207AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001208AC_CHECK_SIZEOF(short, 2)
1209AC_CHECK_SIZEOF(float, 4)
1210AC_CHECK_SIZEOF(double, 8)
1211AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001212AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001213AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001214
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001215AC_MSG_CHECKING(for long long support)
1216have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001217AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1218 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1219 have_long_long=yes
1220])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001221AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001222if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001223AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001224fi
1225
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001226AC_MSG_CHECKING(for long double support)
1227have_long_double=no
1228AC_TRY_COMPILE([], [long double x; x = (long double)0;], [
1229 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1230 have_long_double=yes
1231])
1232AC_MSG_RESULT($have_long_double)
1233if test "$have_long_double" = yes ; then
1234AC_CHECK_SIZEOF(long double, 16)
1235fi
1236
1237
Thomas Woutersb2137042007-02-01 18:02:27 +00001238AC_MSG_CHECKING(for _Bool support)
1239have_c99_bool=no
1240AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1241 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1242 have_c99_bool=yes
1243])
1244AC_MSG_RESULT($have_c99_bool)
1245if test "$have_c99_bool" = yes ; then
1246AC_CHECK_SIZEOF(_Bool, 1)
1247fi
1248
Thomas Wouters89f507f2006-12-13 04:49:30 +00001249AC_CHECK_TYPES(uintptr_t,
1250 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1251 [], [#ifdef HAVE_STDINT_H
1252 #include <stdint.h>
1253 #endif])
1254
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001255
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001256# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1257AC_MSG_CHECKING(size of off_t)
1258AC_CACHE_VAL(ac_cv_sizeof_off_t,
1259[AC_TRY_RUN([#include <stdio.h>
1260#include <sys/types.h>
1261main()
1262{
1263 FILE *f=fopen("conftestval", "w");
1264 if (!f) exit(1);
1265 fprintf(f, "%d\n", sizeof(off_t));
1266 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001267}],
1268ac_cv_sizeof_off_t=`cat conftestval`,
1269ac_cv_sizeof_off_t=0,
1270ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001271])
1272AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001273AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1274[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001275
1276AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001277if test "$have_long_long" = yes -a \
1278 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1279 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001280 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1281 [Defined to enable large file support when an off_t is bigger than a long
1282 and long long is available and at least as big as an off_t. You may need
1283 to add some flags for configuration and compilation to enable this mode.
1284 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001285 AC_MSG_RESULT(yes)
1286else
1287 AC_MSG_RESULT(no)
1288fi
1289
Fred Drakea3f6e912000-06-29 20:44:47 +00001290# AC_CHECK_SIZEOF() doesn't include <time.h>.
1291AC_MSG_CHECKING(size of time_t)
1292AC_CACHE_VAL(ac_cv_sizeof_time_t,
1293[AC_TRY_RUN([#include <stdio.h>
1294#include <time.h>
1295main()
1296{
1297 FILE *f=fopen("conftestval", "w");
1298 if (!f) exit(1);
1299 fprintf(f, "%d\n", sizeof(time_t));
1300 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001301}],
1302ac_cv_sizeof_time_t=`cat conftestval`,
1303ac_cv_sizeof_time_t=0,
1304ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001305])
1306AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001307AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1308[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001309
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001310
Trent Mick635f6fb2000-08-23 21:33:05 +00001311# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001312ac_save_cc="$CC"
1313if test "$ac_cv_kpthread" = "yes"
1314then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001315elif test "$ac_cv_kthread" = "yes"
1316then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001317elif test "$ac_cv_pthread" = "yes"
1318then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001319fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001320AC_MSG_CHECKING(for pthread_t)
1321have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001322AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001323AC_MSG_RESULT($have_pthread_t)
1324if test "$have_pthread_t" = yes ; then
1325 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1326 AC_MSG_CHECKING(size of pthread_t)
1327 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1328 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001329#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001330 main()
1331 {
1332 FILE *f=fopen("conftestval", "w");
1333 if (!f) exit(1);
1334 fprintf(f, "%d\n", sizeof(pthread_t));
1335 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001336 }],
1337 ac_cv_sizeof_pthread_t=`cat conftestval`,
1338 ac_cv_sizeof_pthread_t=0,
1339 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001340 ])
1341 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001342 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1343 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001344fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001345CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001346
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001347
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001348AC_SUBST(OTHER_LIBTOOL_OPT)
1349case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001350 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001351 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1352 ;;
1353 Darwin/*)
1354 OTHER_LIBTOOL_OPT=""
1355 ;;
1356esac
1357
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001358AC_SUBST(LIBTOOL_CRUFT)
1359case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001360 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001361 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1362 if test "${enable_universalsdk}"; then
1363 :
1364 else
1365 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1366 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001367 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001368 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001369 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001370 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1371 if test ${gcc_version} '<' 4.0
1372 then
1373 LIBTOOL_CRUFT="-lcc_dynamic"
1374 else
1375 LIBTOOL_CRUFT=""
1376 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001377 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001378 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001379 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001380esac
1381
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001382AC_MSG_CHECKING(for --enable-framework)
1383if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001384then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001385 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001386 # -F. is needed to allow linking to the framework while
1387 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001388 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1389 [Define if you want to produce an OpenStep/Rhapsody framework
1390 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001391 AC_MSG_RESULT(yes)
1392else
1393 AC_MSG_RESULT(no)
1394fi
1395
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001396AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001397case $ac_sys_system/$ac_sys_release in
1398 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001399 AC_DEFINE(WITH_DYLD, 1,
1400 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1401 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1402 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001403 AC_MSG_RESULT(always on for Darwin)
1404 ;;
1405 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001406 AC_MSG_RESULT(no)
1407 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001408esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001409
Guido van Rossumac405f61994-09-12 10:56:06 +00001410# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001411AC_SUBST(SO)
1412AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001413AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001414AC_SUBST(CCSHARED)
1415AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001416# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001417# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001418AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001419if test -z "$SO"
1420then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001421 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001422 hp*|HP*)
1423 case `uname -m` in
1424 ia64) SO=.so;;
1425 *) SO=.sl;;
1426 esac
1427 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001428 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001429 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001430 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001431else
1432 # this might also be a termcap variable, see #610332
1433 echo
1434 echo '====================================================================='
1435 echo '+ +'
1436 echo '+ WARNING: You have set SO in your environment. +'
1437 echo '+ Do you really mean to change the extension for shared libraries? +'
1438 echo '+ Continuing in 10 seconds to let you to ponder. +'
1439 echo '+ +'
1440 echo '====================================================================='
1441 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001442fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001443AC_MSG_RESULT($SO)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001444AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001445# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001446# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001447# (Shared libraries in this instance are shared modules to be loaded into
1448# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001449AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001450if test -z "$LDSHARED"
1451then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001452 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001453 AIX*)
1454 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001455 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001456 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001457 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001458 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001459 SunOS/5*)
1460 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001461 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001462 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001463 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001464 hp*|HP*)
1465 if test "$GCC" = "yes"
1466 then LDSHARED='$(CC) -shared'
1467 else LDSHARED='ld -b';
1468 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001469 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001470 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001471 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1472 if test "$enable_framework" ; then
1473 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001474 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1475 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001476 else
1477 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001478 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001479 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001480 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001481 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1482 if test "$enable_framework" ; then
1483 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001484 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1485 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001486 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001487 # No framework, use the Python app as bundle-loader
1488 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001489 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001490 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001491 Darwin/*)
1492 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1493 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001494 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Thomas Wouters477c8d52006-05-27 19:21:47 +00001495 if test ${cur_target} '>' 10.2; then
1496 cur_target=10.3
1497 fi
Jack Jansenc110f862005-01-07 10:49:32 +00001498 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Thomas Wouters89d996e2007-09-08 17:39:28 +00001499
1500 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1501 # environment with a value that is the same as what we'll use
1502 # in the Makefile to ensure that we'll get the same compiler
1503 # environment during configure and build time.
1504 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1505 export MACOSX_DEPLOYMENT_TARGET
1506
Thomas Wouters477c8d52006-05-27 19:21:47 +00001507 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
Jack Jansenbe954622004-12-26 23:07:48 +00001508 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001509 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001510 if test "${enable_universalsdk}"; then
1511 LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1512 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001513 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1514 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001515 else
1516 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1517 if test "$enable_framework" ; then
1518 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001519 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1520 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001521 else
1522 # No framework, use the Python app as bundle-loader
1523 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1524 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1525 fi
1526 fi
1527 ;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001528 Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001529 BSD/OS*/4*) LDSHARED="gcc -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001530 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001531 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001532 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001533 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001534 else
1535 LDSHARED="ld -Bshareable ${LDFLAGS}"
1536 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001537 OpenBSD*)
1538 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1539 then
1540 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1541 else
1542 case `uname -r` in
1543 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1544 LDSHARED="ld -Bshareable ${LDFLAGS}"
1545 ;;
1546 *)
1547 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1548 ;;
1549 esac
1550 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001551 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001552 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001553 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001554 then LDSHARED='$(CC) -shared'
1555 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001556 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001557 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001558 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001559 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001560 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001561 *) LDSHARED="ld";;
1562 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001563fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001564AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001565BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001566# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001567# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001568AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001569if test -z "$CCSHARED"
1570then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001571 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001572 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001573 then CCSHARED="-fPIC";
1574 elif test `uname -p` = sparc;
1575 then CCSHARED="-xcode=pic32";
1576 else CCSHARED="-Kpic";
1577 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001578 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001579 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001580 else CCSHARED="+z";
1581 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001582 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001583 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001584 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001585 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001586 if test "$GCC" = "yes"
1587 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001588 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001589 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001590 SCO_SV*)
1591 if test "$GCC" = "yes"
1592 then CCSHARED="-fPIC"
1593 else CCSHARED="-Kpic -belf"
1594 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001595 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001596 IRIX*/6*) case $CC in
1597 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001598 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001599 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001600 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001601 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001602fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001603AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001604# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001605# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001606AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001607if test -z "$LINKFORSHARED"
1608then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001609 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001610 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001611 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001612 LINKFORSHARED="-Wl,-E -Wl,+s";;
1613# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001614 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001615 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001616 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001617 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001618 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1619 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001620 # not used by the core itself but which needs to be in the core so
1621 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001622 # -prebind is no longer used, because it actually seems to give a
1623 # slowdown in stead of a speedup, maybe due to the large number of
1624 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001625
1626 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001627 if test "$enable_framework"
1628 then
Jack Jansenda49e192005-01-07 13:08:22 +00001629 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001630 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001631 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001632 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001633 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001634 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001635 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001636 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1637 then
1638 LINKFORSHARED="-Wl,--export-dynamic"
1639 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001640 SunOS/5*) case $CC in
1641 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001642 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001643 then
1644 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001645 fi;;
1646 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001647 CYGWIN*)
1648 if test $enable_shared = "no"
1649 then
1650 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1651 fi;;
Georg Brandlf78e02b2008-06-10 17:40:04 +00001652 QNX*)
1653 # -Wl,-E causes the symbols to be added to the dynamic
1654 # symbol table so that they can be found when a module
1655 # is loaded. -N 2048K causes the stack size to be set
1656 # to 2048 kilobytes so that the stack doesn't overflow
1657 # when running test_compile.py.
1658 LINKFORSHARED='-Wl,-E -N 2048K';;
Guido van Rossumac405f61994-09-12 10:56:06 +00001659 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001660fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001661AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001662
Neil Schemenauer61c51152001-01-26 16:18:16 +00001663AC_SUBST(CFLAGSFORSHARED)
1664AC_MSG_CHECKING(CFLAGSFORSHARED)
1665if test ! "$LIBRARY" = "$LDLIBRARY"
1666then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001667 case $ac_sys_system in
1668 CYGWIN*)
1669 # Cygwin needs CCSHARED when building extension DLLs
1670 # but not when building the interpreter DLL.
1671 CFLAGSFORSHARED='';;
1672 *)
1673 CFLAGSFORSHARED='$(CCSHARED)'
1674 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001675fi
1676AC_MSG_RESULT($CFLAGSFORSHARED)
1677
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001678# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1679# library (with --enable-shared).
1680# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001681# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1682# if it is not required, since it creates a dependency of the shared library
1683# to LIBS. This, in turn, means that applications linking the shared libpython
1684# don't need to link LIBS explicitly. The default should be only changed
1685# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001686AC_SUBST(SHLIBS)
1687AC_MSG_CHECKING(SHLIBS)
1688case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001689 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001690 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001691esac
1692AC_MSG_RESULT($SHLIBS)
1693
1694
Guido van Rossum627b2d71993-12-24 10:39:16 +00001695# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001696AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1697AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001698
1699# only check for sem_ini if thread support is requested
1700if test "$with_threads" = "yes" -o -z "$with_threads"; then
1701 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1702 # posix4 on Solaris 2.6
1703 # pthread (first!) on Linux
1704fi
1705
Martin v. Löwis19d17342003-06-14 21:03:05 +00001706# check if we need libintl for locale functions
1707AC_CHECK_LIB(intl, textdomain,
1708 AC_DEFINE(WITH_LIBINTL, 1,
1709 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001710
1711# checks for system dependent C++ extensions support
1712case "$ac_sys_system" in
1713 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1714 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1715 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001716 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1717 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1718 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001719 AC_MSG_RESULT(yes)],
1720 [AC_MSG_RESULT(no)]);;
1721 *) ;;
1722esac
1723
Guido van Rossum70c7f481998-03-26 18:44:10 +00001724# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001725AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001726AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001727
Guido van Rossumc5a39031996-07-31 17:35:03 +00001728AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001729AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001730 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1731[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001732AC_MSG_RESULT($withval)
1733LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001734],
1735[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001736
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001737# Check for use of the system libffi library
1738AC_MSG_CHECKING(for --with-system-ffi)
1739AC_ARG_WITH(system_ffi,
1740 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1741
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001742AC_MSG_RESULT($with_system_ffi)
1743
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001744# Determine if signalmodule should be used.
1745AC_SUBST(USE_SIGNAL_MODULE)
1746AC_SUBST(SIGNAL_OBJS)
1747AC_MSG_CHECKING(for --with-signal-module)
1748AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001749 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001750
1751if test -z "$with_signal_module"
1752then with_signal_module="yes"
1753fi
1754AC_MSG_RESULT($with_signal_module)
1755
1756if test "${with_signal_module}" = "yes"; then
1757 USE_SIGNAL_MODULE=""
1758 SIGNAL_OBJS=""
1759else
1760 USE_SIGNAL_MODULE="#"
1761 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1762fi
1763
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001764# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001765AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001766USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001767
Guido van Rossum54d93d41997-01-22 20:51:58 +00001768AC_MSG_CHECKING(for --with-dec-threads)
1769AC_SUBST(LDLAST)
1770AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001771 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1772[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001773AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001774LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001775if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001776 with_thread="$withval";
1777fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001778[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001779
Martin v. Löwis11437992002-04-12 09:54:03 +00001780# Templates for things AC_DEFINEd more than once.
1781# For a single AC_DEFINE, no template is needed.
1782AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1783AH_TEMPLATE(_REENTRANT,
1784 [Define to force use of thread-safe errno, h_errno, and other functions])
1785AH_TEMPLATE(WITH_THREAD,
1786 [Define if you want to compile in rudimentary thread support])
1787
Guido van Rossum54d93d41997-01-22 20:51:58 +00001788AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001789dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001790AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001791 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001792
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001793# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001794dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001795AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001796 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1797 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001798
1799if test -z "$with_threads"
1800then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001801fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001802AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001803
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001804AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001805if test "$with_threads" = "no"
1806then
1807 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001808elif test "$ac_cv_pthread_is_default" = yes
1809then
1810 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001811 # Defining _REENTRANT on system with POSIX threads should not hurt.
1812 AC_DEFINE(_REENTRANT)
1813 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001814 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001815elif test "$ac_cv_kpthread" = "yes"
1816then
1817 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001818 if test "$ac_cv_cxx_thread" = "yes"; then
1819 CXX="$CXX -Kpthread"
1820 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001821 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001822 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001823 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001824elif test "$ac_cv_kthread" = "yes"
1825then
1826 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001827 if test "$ac_cv_cxx_thread" = "yes"; then
1828 CXX="$CXX -Kthread"
1829 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001830 AC_DEFINE(WITH_THREAD)
1831 posix_threads=yes
1832 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001833elif test "$ac_cv_pthread" = "yes"
1834then
1835 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001836 if test "$ac_cv_cxx_thread" = "yes"; then
1837 CXX="$CXX -pthread"
1838 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001839 AC_DEFINE(WITH_THREAD)
1840 posix_threads=yes
1841 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001842else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001843 if test ! -z "$with_threads" -a -d "$with_threads"
1844 then LDFLAGS="$LDFLAGS -L$with_threads"
1845 fi
1846 if test ! -z "$withval" -a -d "$withval"
1847 then LDFLAGS="$LDFLAGS -L$withval"
1848 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001849
1850 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001851 # define _POSIX_THREADS in unistd.h. Some apparently don't
1852 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001853 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1854 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001855 [
1856#include <unistd.h>
1857#ifdef _POSIX_THREADS
1858yes
1859#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001860 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1861 AC_MSG_RESULT($unistd_defines_pthreads)
1862
Martin v. Löwis130fb172001-07-19 11:00:41 +00001863 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001864 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1865 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001866 AC_DEFINE(HURD_C_THREADS, 1,
1867 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001868 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001869 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001870 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1871 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001872 AC_DEFINE(MACH_C_THREADS, 1,
1873 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001874 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001875 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001876 AC_ARG_WITH([pth],
1877 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1878 [AC_MSG_RESULT($withval)
1879 AC_DEFINE([WITH_THREAD])
1880 AC_DEFINE([HAVE_PTH], 1,
1881 [Define if you have GNU PTH threads.])
1882 LIBS="-lpth $LIBS"
1883 THREADOBJ="Python/thread.o"],
1884 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001885
1886 # Just looking for pthread_create in libpthread is not enough:
1887 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1888 # So we really have to include pthread.h, and then link.
1889 _libs=$LIBS
1890 LIBS="$LIBS -lpthread"
1891 AC_MSG_CHECKING([for pthread_create in -lpthread])
1892 AC_TRY_LINK([#include <pthread.h>
1893
1894void * start_routine (void *arg) { exit (0); }], [
1895pthread_create (NULL, NULL, start_routine, NULL)], [
1896 AC_MSG_RESULT(yes)
1897 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001898 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001899 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001900 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001901 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001902 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001903 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001904 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1905 AC_DEFINE(ATHEOS_THREADS, 1,
1906 [Define this if you have AtheOS threads.])
1907 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001908 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001909 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001910 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001911 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001912 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001913 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001914 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001915 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001916 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001917 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001918 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001919 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001920 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001921 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001922 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001923 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001924 USE_THREAD_MODULE="#"])
Skip Montanaroeb33e5a2007-08-17 12:57:41 +00001925 ])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001926
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001927 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1928 LIBS="$LIBS -lmpc"
1929 THREADOBJ="Python/thread.o"
1930 USE_THREAD_MODULE=""])
1931
1932 if test "$posix_threads" != "yes"; then
1933 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1934 LIBS="$LIBS -lthread"
1935 THREADOBJ="Python/thread.o"
1936 USE_THREAD_MODULE=""])
1937 fi
1938
1939 if test "$USE_THREAD_MODULE" != "#"
1940 then
1941 # If the above checks didn't disable threads, (at least) OSF1
1942 # needs this '-threads' argument during linking.
1943 case $ac_sys_system in
1944 OSF1) LDLAST=-threads;;
1945 esac
1946 fi
1947fi
1948
1949if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001950 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001951 AC_DEFINE(_POSIX_THREADS, 1,
1952 [Define if you have POSIX threads,
1953 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001954 fi
1955
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001956 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1957 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001958 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1959 Defined for Solaris 2.6 bug in pthread header.)
1960 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001961 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001962 Define if the Posix semaphores do not work on your system)
1963 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00001964 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
1965 Define if the Posix semaphores do not work on your system)
1966 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001967 esac
1968
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001969 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1970 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1971 [AC_TRY_RUN([#include <pthread.h>
1972 void *foo(void *parm) {
1973 return NULL;
1974 }
1975 main() {
1976 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001977 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001978 if (pthread_attr_init(&attr)) exit(-1);
1979 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001980 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001981 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001982 }],
1983 ac_cv_pthread_system_supported=yes,
1984 ac_cv_pthread_system_supported=no,
1985 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001986 ])
1987 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1988 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001989 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001990 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001991 AC_CHECK_FUNCS(pthread_sigmask,
1992 [case $ac_sys_system in
1993 CYGWIN*)
1994 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1995 [Define if pthread_sigmask() does not work on your system.])
1996 ;;
1997 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001998fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001999
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002000
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002001# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002002AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002003AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002004AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002005[ --enable-ipv6 Enable ipv6 (with ipv4) support
2006 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002007[ case "$enableval" in
2008 no)
2009 AC_MSG_RESULT(no)
2010 ipv6=no
2011 ;;
2012 *) AC_MSG_RESULT(yes)
2013 AC_DEFINE(ENABLE_IPV6)
2014 ipv6=yes
2015 ;;
2016 esac ],
2017
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002018[
2019dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002020 AC_TRY_RUN([ /* AF_INET6 available check */
2021#include <sys/types.h>
2022#include <sys/socket.h>
2023main()
2024{
2025 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2026 exit(1);
2027 else
2028 exit(0);
2029}
2030],
2031 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002032 ipv6=yes,
2033 AC_MSG_RESULT(no)
2034 ipv6=no,
2035 AC_MSG_RESULT(no)
2036 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002037)
2038
2039if test "$ipv6" = "yes"; then
2040 AC_MSG_CHECKING(if RFC2553 API is available)
2041 AC_TRY_COMPILE([#include <sys/types.h>
2042#include <netinet/in.h>],
2043 [struct sockaddr_in6 x;
2044x.sin6_scope_id;],
2045 AC_MSG_RESULT(yes)
2046 ipv6=yes,
2047 AC_MSG_RESULT(no, IPv6 disabled)
2048 ipv6=no)
2049fi
2050
2051if test "$ipv6" = "yes"; then
2052 AC_DEFINE(ENABLE_IPV6)
2053fi
2054])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002055
2056ipv6type=unknown
2057ipv6lib=none
2058ipv6trylibc=no
2059
2060if test "$ipv6" = "yes"; then
2061 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002062 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2063 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002064 case $i in
2065 inria)
2066 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002067 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002068#include <netinet/in.h>
2069#ifdef IPV6_INRIA_VERSION
2070yes
2071#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002072 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002073 ;;
2074 kame)
2075 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002076 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002077#include <netinet/in.h>
2078#ifdef __KAME__
2079yes
2080#endif],
2081 [ipv6type=$i;
2082 ipv6lib=inet6
2083 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002084 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002085 ;;
2086 linux-glibc)
2087 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002088 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002089#include <features.h>
2090#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2091yes
2092#endif],
2093 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002094 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002095 ;;
2096 linux-inet6)
2097 dnl http://www.v6.linux.or.jp/
2098 if test -d /usr/inet6; then
2099 ipv6type=$i
2100 ipv6lib=inet6
2101 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002102 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002103 fi
2104 ;;
2105 solaris)
2106 if test -f /etc/netconfig; then
2107 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2108 ipv6type=$i
2109 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002110 fi
2111 fi
2112 ;;
2113 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002114 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002115#include <sys/param.h>
2116#ifdef _TOSHIBA_INET6
2117yes
2118#endif],
2119 [ipv6type=$i;
2120 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002121 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002122 ;;
2123 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002124 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002125#include </usr/local/v6/include/sys/v6config.h>
2126#ifdef __V6D__
2127yes
2128#endif],
2129 [ipv6type=$i;
2130 ipv6lib=v6;
2131 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002132 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002133 ;;
2134 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002135 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002136#include <sys/param.h>
2137#ifdef _ZETA_MINAMI_INET6
2138yes
2139#endif],
2140 [ipv6type=$i;
2141 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002142 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002143 ;;
2144 esac
2145 if test "$ipv6type" != "unknown"; then
2146 break
2147 fi
2148 done
2149 AC_MSG_RESULT($ipv6type)
2150fi
2151
2152if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2153 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2154 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2155 echo "using lib$ipv6lib"
2156 else
2157 if test $ipv6trylibc = "yes"; then
2158 echo "using libc"
2159 else
2160 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2161 echo "You need to fetch lib$ipv6lib.a from appropriate"
2162 echo 'ipv6 kit and compile beforehand.'
2163 exit 1
2164 fi
2165 fi
2166fi
2167
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002168# Check for --with-doc-strings
2169AC_MSG_CHECKING(for --with-doc-strings)
2170AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002171 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002172
2173if test -z "$with_doc_strings"
2174then with_doc_strings="yes"
2175fi
2176if test "$with_doc_strings" != "no"
2177then
2178 AC_DEFINE(WITH_DOC_STRINGS, 1,
2179 [Define if you want documentation strings in extension modules])
2180fi
2181AC_MSG_RESULT($with_doc_strings)
2182
Neil Schemenauera35c6882001-02-27 04:45:05 +00002183# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002184AC_MSG_CHECKING(for --with-tsc)
2185AC_ARG_WITH(tsc,
2186[ --with(out)-tsc enable/disable timestamp counter profile], [
2187if test "$withval" != no
2188then
2189 AC_DEFINE(WITH_TSC, 1,
2190 [Define to profile with the Pentium timestamp counter])
2191 AC_MSG_RESULT(yes)
2192else AC_MSG_RESULT(no)
2193fi],
2194[AC_MSG_RESULT(no)])
2195
2196# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002197AC_MSG_CHECKING(for --with-pymalloc)
2198AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002199 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002200
2201if test -z "$with_pymalloc"
2202then with_pymalloc="yes"
2203fi
2204if test "$with_pymalloc" != "no"
2205then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002206 AC_DEFINE(WITH_PYMALLOC, 1,
2207 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002208fi
2209AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002210
Barry Warsawef82cd72000-06-30 16:21:01 +00002211# Check for --with-wctype-functions
2212AC_MSG_CHECKING(for --with-wctype-functions)
2213AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002214 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2215[
Barry Warsawef82cd72000-06-30 16:21:01 +00002216if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002217then
2218 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2219 [Define if you want wctype.h functions to be used instead of the
2220 one supplied by Python itself. (see Include/unicodectype.h).])
2221 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002222else AC_MSG_RESULT(no)
2223fi],
2224[AC_MSG_RESULT(no)])
2225
Guido van Rossum68242b51996-05-28 22:53:03 +00002226# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002227AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002228DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002229
Guido van Rossume97ee181999-12-20 21:27:22 +00002230# the dlopen() function means we might want to use dynload_shlib.o. some
2231# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002232AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002233
2234# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2235# loading of modules.
2236AC_SUBST(DYNLOADFILE)
2237AC_MSG_CHECKING(DYNLOADFILE)
2238if test -z "$DYNLOADFILE"
2239then
2240 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002241 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2242 if test "$ac_cv_func_dlopen" = yes
2243 then DYNLOADFILE="dynload_shlib.o"
2244 else DYNLOADFILE="dynload_aix.o"
2245 fi
2246 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002247 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002248 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2249 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002250 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002251 *)
2252 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2253 # out any dynamic loading
2254 if test "$ac_cv_func_dlopen" = yes
2255 then DYNLOADFILE="dynload_shlib.o"
2256 else DYNLOADFILE="dynload_stub.o"
2257 fi
2258 ;;
2259 esac
2260fi
2261AC_MSG_RESULT($DYNLOADFILE)
2262if test "$DYNLOADFILE" != "dynload_stub.o"
2263then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002264 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2265 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002266fi
2267
Jack Jansenc49e5b72001-06-19 15:00:23 +00002268# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2269
2270AC_SUBST(MACHDEP_OBJS)
2271AC_MSG_CHECKING(MACHDEP_OBJS)
2272if test -z "$MACHDEP_OBJS"
2273then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002274 MACHDEP_OBJS=$extra_machdep_objs
2275else
2276 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002277fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002278AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002279
Guido van Rossum627b2d71993-12-24 10:39:16 +00002280# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002281AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2282 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002283 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002284 getpriority getpwent getspnam getspent getsid getwd \
Christian Heimesd0764e22007-12-04 15:00:33 +00002285 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002286 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002287 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002288 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002289 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Gregory P. Smith6c357262007-09-03 16:44:06 +00002290 sigaction siginterrupt sigrelse strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002291 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis92fab752008-03-08 10:40:41 +00002292 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002293
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002294# For some functions, having a definition is not sufficient, since
2295# we want to take their address.
2296AC_MSG_CHECKING(for chroot)
2297AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2298 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2299 AC_MSG_RESULT(yes),
2300 AC_MSG_RESULT(no)
2301)
2302AC_MSG_CHECKING(for link)
2303AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2304 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2305 AC_MSG_RESULT(yes),
2306 AC_MSG_RESULT(no)
2307)
2308AC_MSG_CHECKING(for symlink)
2309AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2310 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2311 AC_MSG_RESULT(yes),
2312 AC_MSG_RESULT(no)
2313)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002314AC_MSG_CHECKING(for fchdir)
2315AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2316 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2317 AC_MSG_RESULT(yes),
2318 AC_MSG_RESULT(no)
2319)
2320AC_MSG_CHECKING(for fsync)
2321AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002322 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002323 AC_MSG_RESULT(yes),
2324 AC_MSG_RESULT(no)
2325)
2326AC_MSG_CHECKING(for fdatasync)
2327AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2328 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2329 AC_MSG_RESULT(yes),
2330 AC_MSG_RESULT(no)
2331)
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002332AC_MSG_CHECKING(for epoll)
2333AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2334 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2335 AC_MSG_RESULT(yes),
2336 AC_MSG_RESULT(no)
2337)
2338AC_MSG_CHECKING(for kqueue)
2339AC_TRY_COMPILE([
2340#include <sys/types.h>
2341#include <sys/event.h>
2342 ], int x=kqueue(),
2343 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2344 AC_MSG_RESULT(yes),
2345 AC_MSG_RESULT(no)
2346)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002347# On some systems (eg. FreeBSD 5), we would find a definition of the
2348# functions ctermid_r, setgroups in the library, but no prototype
2349# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2350# address to avoid compiler warnings and potential miscompilations
2351# because of the missing prototypes.
2352
2353AC_MSG_CHECKING(for ctermid_r)
2354AC_TRY_COMPILE([
2355#include "confdefs.h"
2356#include <stdio.h>
2357], void* p = ctermid_r,
2358 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2359 AC_MSG_RESULT(yes),
2360 AC_MSG_RESULT(no)
2361)
2362
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002363AC_MSG_CHECKING(for flock)
2364AC_TRY_COMPILE([
2365#include "confdefs.h"
2366#include <sys/file.h>
2367], void* p = flock,
2368 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2369 AC_MSG_RESULT(yes),
2370 AC_MSG_RESULT(no)
2371)
2372
2373AC_MSG_CHECKING(for getpagesize)
2374AC_TRY_COMPILE([
2375#include "confdefs.h"
2376#include <unistd.h>
2377], void* p = getpagesize,
2378 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2379 AC_MSG_RESULT(yes),
2380 AC_MSG_RESULT(no)
2381)
2382
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002383dnl check for true
2384AC_CHECK_PROGS(TRUE, true, /bin/true)
2385
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002386dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2387dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002388AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002389 AC_CHECK_LIB(resolv, inet_aton)
2390)
2391
Christian Heimesd0764e22007-12-04 15:00:33 +00002392# On Tru64, chflags seems to be present, but calling it will
2393# exit Python
2394AC_MSG_CHECKING(for chflags)
2395AC_TRY_RUN([
2396#include <sys/stat.h>
2397#include <unistd.h>
2398int main(int argc, char*argv[])
2399{
2400 if(chflags(argv[0], 0) != 0)
2401 return 1;
2402 return 0;
2403}
2404],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2405 AC_MSG_RESULT(yes),
2406 AC_MSG_RESULT(no)
2407)
2408
2409AC_MSG_CHECKING(for lchflags)
2410AC_TRY_RUN([
2411#include <sys/stat.h>
2412#include <unistd.h>
2413int main(int argc, char*argv[])
2414{
2415 if(lchflags(argv[0], 0) != 0)
2416 return 1;
2417 return 0;
2418}
2419],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2420 AC_MSG_RESULT(yes),
2421 AC_MSG_RESULT(no)
2422)
2423
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002424dnl Check if system zlib has *Copy() functions
2425dnl
2426dnl On MacOSX the linker will search for dylibs on the entire linker path
2427dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2428dnl to revert to a more traditional unix behaviour and make it possible to
2429dnl override the system libz with a local static library of libz. Temporarily
2430dnl add that flag to our CFLAGS as well to ensure that we check the version
2431dnl of libz that will be used by setup.py.
2432dnl The -L/usr/local/lib is needed as wel to get the same compilation
2433dnl environment as setup.py (and leaving it out can cause configure to use the
2434dnl wrong version of the library)
2435case $ac_sys_system/$ac_sys_release in
2436Darwin/*)
2437 _CUR_CFLAGS="${CFLAGS}"
2438 _CUR_LDFLAGS="${LDFLAGS}"
2439 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2440 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2441 ;;
2442esac
2443
2444AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2445
2446case $ac_sys_system/$ac_sys_release in
2447Darwin/*)
2448 CFLAGS="${_CUR_CFLAGS}"
2449 LDFLAGS="${_CUR_LDFLAGS}"
2450 ;;
2451esac
2452
Martin v. Löwise9416172003-05-03 10:12:45 +00002453AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002454AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002455#include "confdefs.h"
2456#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002457], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002458 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2459 AC_MSG_RESULT(yes),
2460 AC_MSG_RESULT(no)
2461)
2462
2463AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002464AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002465#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002466#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002467#include <sys/socket.h>
2468#include <netinet/in.h>
2469#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002470], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002471 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2472 AC_MSG_RESULT(yes),
2473 AC_MSG_RESULT(no)
2474)
2475
2476AC_MSG_CHECKING(for inet_pton)
2477AC_TRY_COMPILE([
2478#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002479#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002480#include <sys/socket.h>
2481#include <netinet/in.h>
2482#include <arpa/inet.h>
2483], void* p = inet_pton,
2484 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2485 AC_MSG_RESULT(yes),
2486 AC_MSG_RESULT(no)
2487)
2488
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002489# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002490AC_MSG_CHECKING(for setgroups)
2491AC_TRY_COMPILE([
2492#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002493#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002494#ifdef HAVE_GRP_H
2495#include <grp.h>
2496#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002497],
2498void* p = setgroups,
2499 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2500 AC_MSG_RESULT(yes),
2501 AC_MSG_RESULT(no)
2502)
2503
Fred Drake8cef4cf2000-06-28 16:40:38 +00002504# check for openpty and forkpty
2505
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002506AC_CHECK_FUNCS(openpty,,
2507 AC_CHECK_LIB(util,openpty,
2508 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2509 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2510 )
2511)
2512AC_CHECK_FUNCS(forkpty,,
2513 AC_CHECK_LIB(util,forkpty,
2514 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2515 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2516 )
2517)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002518
Christian Heimesb186d002008-03-18 15:15:01 +00002519# Stuff for expat.
2520AC_CHECK_FUNCS(memmove)
2521
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002522# check for long file support functions
2523AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2524
Christian Heimesb186d002008-03-18 15:15:01 +00002525AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002526AC_CHECK_FUNCS(getpgrp,
2527 AC_TRY_COMPILE([#include <unistd.h>],
2528 [getpgrp(0);],
2529 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2530 [Define if getpgrp() must be called as getpgrp(0).])
2531 )
2532)
Jack Jansen150753c2003-03-29 22:07:47 +00002533AC_CHECK_FUNCS(setpgrp,
2534 AC_TRY_COMPILE([#include <unistd.h>],
2535 [setpgrp(0,0);],
2536 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2537 [Define if setpgrp() must be called as setpgrp(0, 0).])
2538 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002539)
2540AC_CHECK_FUNCS(gettimeofday,
2541 AC_TRY_COMPILE([#include <sys/time.h>],
2542 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2543 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2544 [Define if gettimeofday() does not have second (timezone) argument
2545 This is the case on Motorola V4 (R40V4.2)])
2546 )
2547)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002548
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002549AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002550AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002551#if defined(MAJOR_IN_MKDEV)
2552#include <sys/mkdev.h>
2553#elif defined(MAJOR_IN_SYSMACROS)
2554#include <sys/sysmacros.h>
2555#else
2556#include <sys/types.h>
2557#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002558],[
2559 makedev(major(0),minor(0));
2560],[
2561 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2562 [Define to 1 if you have the device macros.])
2563 AC_MSG_RESULT(yes)
2564],[
2565 AC_MSG_RESULT(no)
2566])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002567
2568# On OSF/1 V5.1, getaddrinfo is available, but a define
2569# for [no]getaddrinfo in netdb.h.
2570AC_MSG_CHECKING(for getaddrinfo)
2571AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002572#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002573#include <sys/socket.h>
2574#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002575#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002576],[
2577getaddrinfo(NULL, NULL, NULL, NULL);
2578], [
2579AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002580AC_MSG_CHECKING(getaddrinfo bug)
2581AC_TRY_RUN([
2582#include <sys/types.h>
2583#include <netdb.h>
2584#include <string.h>
2585#include <sys/socket.h>
2586#include <netinet/in.h>
2587
2588main()
2589{
2590 int passive, gaierr, inet4 = 0, inet6 = 0;
2591 struct addrinfo hints, *ai, *aitop;
2592 char straddr[INET6_ADDRSTRLEN], strport[16];
2593
2594 for (passive = 0; passive <= 1; passive++) {
2595 memset(&hints, 0, sizeof(hints));
2596 hints.ai_family = AF_UNSPEC;
2597 hints.ai_flags = passive ? AI_PASSIVE : 0;
2598 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002599 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002600 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2601 (void)gai_strerror(gaierr);
2602 goto bad;
2603 }
2604 for (ai = aitop; ai; ai = ai->ai_next) {
2605 if (ai->ai_addr == NULL ||
2606 ai->ai_addrlen == 0 ||
2607 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2608 straddr, sizeof(straddr), strport, sizeof(strport),
2609 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2610 goto bad;
2611 }
2612 switch (ai->ai_family) {
2613 case AF_INET:
2614 if (strcmp(strport, "54321") != 0) {
2615 goto bad;
2616 }
2617 if (passive) {
2618 if (strcmp(straddr, "0.0.0.0") != 0) {
2619 goto bad;
2620 }
2621 } else {
2622 if (strcmp(straddr, "127.0.0.1") != 0) {
2623 goto bad;
2624 }
2625 }
2626 inet4++;
2627 break;
2628 case AF_INET6:
2629 if (strcmp(strport, "54321") != 0) {
2630 goto bad;
2631 }
2632 if (passive) {
2633 if (strcmp(straddr, "::") != 0) {
2634 goto bad;
2635 }
2636 } else {
2637 if (strcmp(straddr, "::1") != 0) {
2638 goto bad;
2639 }
2640 }
2641 inet6++;
2642 break;
2643 case AF_UNSPEC:
2644 goto bad;
2645 break;
2646 default:
2647 /* another family support? */
2648 break;
2649 }
2650 }
2651 }
2652
2653 if (!(inet4 == 0 || inet4 == 2))
2654 goto bad;
2655 if (!(inet6 == 0 || inet6 == 2))
2656 goto bad;
2657
2658 if (aitop)
2659 freeaddrinfo(aitop);
2660 exit(0);
2661
2662 bad:
2663 if (aitop)
2664 freeaddrinfo(aitop);
2665 exit(1);
2666}
2667],
2668AC_MSG_RESULT(good)
2669buggygetaddrinfo=no,
2670AC_MSG_RESULT(buggy)
2671buggygetaddrinfo=yes,
2672AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002673buggygetaddrinfo=yes)], [
2674AC_MSG_RESULT(no)
2675buggygetaddrinfo=yes
2676])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002677
2678if test "$buggygetaddrinfo" = "yes"; then
2679 if test "$ipv6" = "yes"; then
2680 echo 'Fatal: You must get working getaddrinfo() function.'
2681 echo ' or you can specify "--disable-ipv6"'.
2682 exit 1
2683 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002684else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002685 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002686fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002687AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002688
Guido van Rossum627b2d71993-12-24 10:39:16 +00002689# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002690AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002691AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002692AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002693AC_CHECK_MEMBERS([struct stat.st_rdev])
2694AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002695AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002696AC_CHECK_MEMBERS([struct stat.st_gen])
2697AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002698AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002699
2700AC_MSG_CHECKING(for time.h that defines altzone)
2701AC_CACHE_VAL(ac_cv_header_time_altzone,
2702[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2703 ac_cv_header_time_altzone=yes,
2704 ac_cv_header_time_altzone=no)])
2705AC_MSG_RESULT($ac_cv_header_time_altzone)
2706if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002707 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002708fi
2709
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002710was_it_defined=no
2711AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002712AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002713#include <sys/types.h>
2714#include <sys/select.h>
2715#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002716], [;], [
2717 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2718 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2719 (which you can't on SCO ODT 3.0).])
2720 was_it_defined=yes
2721])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002722AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002723
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002724AC_MSG_CHECKING(for addrinfo)
2725AC_CACHE_VAL(ac_cv_struct_addrinfo,
2726AC_TRY_COMPILE([
2727# include <netdb.h>],
2728 [struct addrinfo a],
2729 ac_cv_struct_addrinfo=yes,
2730 ac_cv_struct_addrinfo=no))
2731AC_MSG_RESULT($ac_cv_struct_addrinfo)
2732if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002733 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002734fi
2735
2736AC_MSG_CHECKING(for sockaddr_storage)
2737AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2738AC_TRY_COMPILE([
2739# include <sys/types.h>
2740# include <sys/socket.h>],
2741 [struct sockaddr_storage s],
2742 ac_cv_struct_sockaddr_storage=yes,
2743 ac_cv_struct_sockaddr_storage=no))
2744AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2745if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002746 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002747fi
2748
Guido van Rossum627b2d71993-12-24 10:39:16 +00002749# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002750
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002751AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002752AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002753
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002754works=no
2755AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002756AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2757 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2758)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002759AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002760
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002761works=no
2762AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002763AC_TRY_COMPILE([], [signed char c;], works=yes,
2764 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2765)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002766AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002767
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002768have_prototypes=no
2769AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002770AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2771 AC_DEFINE(HAVE_PROTOTYPES, 1,
2772 [Define if your compiler supports function prototype])
2773 have_prototypes=yes
2774])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002775AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002776
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002777works=no
2778AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002779AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002780#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002781int foo(int x, ...) {
2782 va_list va;
2783 va_start(va, x);
2784 va_arg(va, int);
2785 va_arg(va, char *);
2786 va_arg(va, double);
2787 return 0;
2788}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002789], [return foo(10, "", 3.14);], [
2790 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2791 [Define if your compiler supports variable length function prototypes
2792 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2793 works=yes
2794])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002795AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002796
Dave Cole331708b2004-08-09 04:51:41 +00002797# check for socketpair
2798AC_MSG_CHECKING(for socketpair)
2799AC_TRY_COMPILE([
2800#include <sys/types.h>
2801#include <sys/socket.h>
2802], void *x=socketpair,
2803 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2804 AC_MSG_RESULT(yes),
2805 AC_MSG_RESULT(no)
2806)
2807
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002808# check if sockaddr has sa_len member
2809AC_MSG_CHECKING(if sockaddr has sa_len member)
2810AC_TRY_COMPILE([#include <sys/types.h>
2811#include <sys/socket.h>],
2812[struct sockaddr x;
2813x.sa_len = 0;],
2814 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002815 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002816 AC_MSG_RESULT(no))
2817
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002818va_list_is_array=no
2819AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002820AC_TRY_COMPILE([
2821#ifdef HAVE_STDARG_PROTOTYPES
2822#include <stdarg.h>
2823#else
2824#include <varargs.h>
2825#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002826], [va_list list1, list2; list1 = list2;], , [
2827 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2828 va_list_is_array=yes
2829])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002830AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002831
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002832# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002833AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2834 [Define this if you have some version of gethostbyname_r()])
2835
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002836AC_CHECK_FUNC(gethostbyname_r, [
2837 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2838 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2839 OLD_CFLAGS=$CFLAGS
2840 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2841 AC_TRY_COMPILE([
2842# include <netdb.h>
2843 ], [
2844 char *name;
2845 struct hostent *he, *res;
2846 char buffer[2048];
2847 int buflen = 2048;
2848 int h_errnop;
2849
2850 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2851 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002852 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002853 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2854 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002855 AC_MSG_RESULT(yes)
2856 ], [
2857 AC_MSG_RESULT(no)
2858 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2859 AC_TRY_COMPILE([
2860# include <netdb.h>
2861 ], [
2862 char *name;
2863 struct hostent *he;
2864 char buffer[2048];
2865 int buflen = 2048;
2866 int h_errnop;
2867
2868 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2869 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002870 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002871 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2872 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002873 AC_MSG_RESULT(yes)
2874 ], [
2875 AC_MSG_RESULT(no)
2876 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2877 AC_TRY_COMPILE([
2878# include <netdb.h>
2879 ], [
2880 char *name;
2881 struct hostent *he;
2882 struct hostent_data data;
2883
2884 (void) gethostbyname_r(name, he, &data);
2885 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002886 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002887 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2888 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002889 AC_MSG_RESULT(yes)
2890 ], [
2891 AC_MSG_RESULT(no)
2892 ])
2893 ])
2894 ])
2895 CFLAGS=$OLD_CFLAGS
2896], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002897 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002898])
2899AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2900AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2901AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002902AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002903AC_SUBST(HAVE_GETHOSTBYNAME)
2904
Guido van Rossum627b2d71993-12-24 10:39:16 +00002905# checks for system services
2906# (none yet)
2907
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002908# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002909AC_CHECK_FUNC(__fpu_control,
2910 [],
2911 [AC_CHECK_LIB(ieee, __fpu_control)
2912])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002913
Guido van Rossum93274221997-05-09 02:42:00 +00002914# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002915AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002916AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002917 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2918[
Guido van Rossum93274221997-05-09 02:42:00 +00002919if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002920then
2921 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2922 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2923 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002924else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002925fi],
2926[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002927
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002928# check for --with-libm=...
2929AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002930case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002931Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002932*) LIBM=-lm
2933esac
Guido van Rossum93274221997-05-09 02:42:00 +00002934AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002935AC_ARG_WITH(libm,
2936 AC_HELP_STRING(--with-libm=STRING, math library),
2937[
Guido van Rossum93274221997-05-09 02:42:00 +00002938if test "$withval" = no
2939then LIBM=
2940 AC_MSG_RESULT(force LIBM empty)
2941elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002942then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002943 AC_MSG_RESULT(set LIBM="$withval")
2944else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002945fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002946[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002947
2948# check for --with-libc=...
2949AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002950AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002951AC_ARG_WITH(libc,
2952 AC_HELP_STRING(--with-libc=STRING, C library),
2953[
Guido van Rossum93274221997-05-09 02:42:00 +00002954if test "$withval" = no
2955then LIBC=
2956 AC_MSG_RESULT(force LIBC empty)
2957elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002958then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002959 AC_MSG_RESULT(set LIBC="$withval")
2960else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002961fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002962[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002963
Christian Heimes99170a52007-12-19 02:07:34 +00002964# ************************************
2965# * Check for mathematical functions *
2966# ************************************
Christian Heimes81ee3ef2008-05-04 22:42:01 +00002967
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002968LIBS_SAVE=$LIBS
2969LIBS="$LIBS $LIBM"
Christian Heimes81ee3ef2008-05-04 22:42:01 +00002970
2971# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
2972# -0. on some architectures.
2973AC_MSG_CHECKING(whether tanh preserves the sign of zero)
2974AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
2975AC_TRY_RUN([
2976#include <math.h>
2977#include <stdlib.h>
2978int main() {
2979 /* return 0 if either negative zeros don't exist
2980 on this platform or if negative zeros exist
2981 and tanh(-0.) == -0. */
2982 if (atan2(0., -1.) == atan2(-0., -1.) ||
2983 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
2984 else exit(1);
2985}
2986],
2987ac_cv_tanh_preserves_zero_sign=yes,
2988ac_cv_tanh_preserves_zero_sign=no,
2989ac_cv_tanh_preserves_zero_sign=no)])
2990AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
2991if test "$ac_cv_tanh_preserves_zero_sign" = yes
2992then
2993 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
2994 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
2995fi
2996
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002997AC_REPLACE_FUNCS(hypot)
Christian Heimes99170a52007-12-19 02:07:34 +00002998
Christian Heimes9bd667a2008-01-20 15:14:11 +00002999AC_CHECK_FUNCS(acosh asinh atanh copysign expm1 finite isinf isnan log1p)
Christian Heimes99170a52007-12-19 02:07:34 +00003000
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003001LIBS=$LIBS_SAVE
3002
Guido van Rossumef2255b2000-03-10 22:30:29 +00003003# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003004AC_CHECK_HEADER(wchar.h, [
3005 AC_DEFINE(HAVE_WCHAR_H, 1,
3006 [Define if the compiler provides a wchar.h header file.])
3007 wchar_h="yes"
3008],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003009wchar_h="no"
3010)
3011
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003012# determine wchar_t size
3013if test "$wchar_h" = yes
3014then
Guido van Rossum67b26592001-10-20 14:21:45 +00003015 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003016fi
3017
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003018AC_MSG_CHECKING(for UCS-4 tcl)
3019have_ucs4_tcl=no
3020AC_TRY_COMPILE([
3021#include <tcl.h>
3022#if TCL_UTF_MAX != 6
3023# error "NOT UCS4_TCL"
3024#endif], [], [
3025 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3026 have_ucs4_tcl=yes
3027])
3028AC_MSG_RESULT($have_ucs4_tcl)
3029
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003030# check whether wchar_t is signed or not
3031if test "$wchar_h" = yes
3032then
3033 # check whether wchar_t is signed or not
3034 AC_MSG_CHECKING(whether wchar_t is signed)
3035 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3036 AC_TRY_RUN([
3037 #include <wchar.h>
3038 int main()
3039 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003040 /* Success: exit code 0 */
3041 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003042 }
3043 ],
3044 ac_cv_wchar_t_signed=yes,
3045 ac_cv_wchar_t_signed=no,
3046 ac_cv_wchar_t_signed=yes)])
3047 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3048fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003049
Georg Brandl52d168a2008-01-07 18:10:24 +00003050AC_MSG_CHECKING(what type to use for str)
3051AC_ARG_WITH(wide-unicode,
3052 AC_HELP_STRING(--with-wide-unicode, Use 4-byte Unicode characters (default is 2 bytes)),
3053[
3054if test "$withval" != no
3055then unicode_size="4"
3056else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003057fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003058],
3059[
3060case "$have_ucs4_tcl" in
3061 yes) unicode_size="4" ;;
3062 *) unicode_size="2" ;;
3063esac
3064])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003065
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003066AH_TEMPLATE(Py_UNICODE_SIZE,
3067 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003068case "$unicode_size" in
3069 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3070 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003071esac
3072
Martin v. Löwis11437992002-04-12 09:54:03 +00003073AH_TEMPLATE(PY_UNICODE_TYPE,
3074 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003075
Georg Brandl52d168a2008-01-07 18:10:24 +00003076# wchar_t is only usable if it maps to an unsigned type
3077if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003078 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003079then
3080 PY_UNICODE_TYPE="wchar_t"
3081 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3082 [Define if you have a useable wchar_t type defined in wchar.h; useable
3083 means wchar_t must be an unsigned type with at least 16 bits. (see
3084 Include/unicodeobject.h).])
3085 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3086elif test "$ac_cv_sizeof_short" = "$unicode_size"
3087then
3088 PY_UNICODE_TYPE="unsigned short"
3089 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3090elif test "$ac_cv_sizeof_long" = "$unicode_size"
3091then
3092 PY_UNICODE_TYPE="unsigned long"
3093 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3094else
3095 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003096fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003097AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003098
3099# check for endianness
3100AC_C_BIGENDIAN
Thomas Wouters477c8d52006-05-27 19:21:47 +00003101AH_VERBATIM([WORDS_BIGENDIAN],
3102[
3103 /* Define to 1 if your processor stores words with the most significant byte
3104 first (like Motorola and SPARC, unlike Intel and VAX).
3105
3106 The block below does compile-time checking for endianness on platforms
3107 that use GCC and therefore allows compiling fat binaries on OSX by using
3108 '-arch ppc -arch i386' as the compile flags. The phrasing was choosen
3109 such that the configure-result is used on systems that don't use GCC.
3110 */
3111#ifdef __BIG_ENDIAN__
3112#define WORDS_BIGENDIAN 1
3113#else
3114#ifndef __LITTLE_ENDIAN__
3115#undef WORDS_BIGENDIAN
3116#endif
3117#endif])
Guido van Rossumef2255b2000-03-10 22:30:29 +00003118
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003119# Check whether right shifting a negative integer extends the sign bit
3120# or fills with zeros (like the Cray J90, according to Tim Peters).
3121AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003122AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003123AC_TRY_RUN([
3124int main()
3125{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003126 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003127}
Guido van Rossum3065c942001-09-17 04:03:14 +00003128],
3129ac_cv_rshift_extends_sign=yes,
3130ac_cv_rshift_extends_sign=no,
3131ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003132AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3133if test "$ac_cv_rshift_extends_sign" = no
3134then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003135 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3136 [Define if i>>j for signed int i does not extend the sign bit
3137 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003138fi
3139
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003140# check for getc_unlocked and related locking functions
3141AC_MSG_CHECKING(for getc_unlocked() and friends)
3142AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3143AC_TRY_LINK([#include <stdio.h>],[
3144 FILE *f = fopen("/dev/null", "r");
3145 flockfile(f);
3146 getc_unlocked(f);
3147 funlockfile(f);
3148], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3149AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3150if test "$ac_cv_have_getc_unlocked" = yes
3151then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003152 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3153 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003154fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003155
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003156# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003157# save the value of LIBS so we don't actually link Python with readline
3158LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003159AC_CHECK_LIB(readline, readline)
3160if test "$ac_cv_have_readline_readline" = no
3161then
3162 AC_CHECK_LIB(termcap, readline)
3163fi
3164
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003165# check for readline 2.1
3166AC_CHECK_LIB(readline, rl_callback_handler_install,
3167 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003168 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003169
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003170# check for readline 2.2
3171AC_TRY_CPP([#include <readline/readline.h>],
3172have_readline=yes, have_readline=no)
3173if test $have_readline = yes
3174then
3175 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3176 [readline/readline.h],
3177 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3178 [Define if you have readline 2.2]), )
3179fi
3180
Martin v. Löwis0daad592001-09-30 21:09:59 +00003181# check for readline 4.0
3182AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003183 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003184 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00003185
Thomas Wouters89d996e2007-09-08 17:39:28 +00003186# also in 4.0
3187AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3188 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
3189 [Define if you have readline 4.0]), , )
3190
Guido van Rossum353ae582001-07-10 16:45:32 +00003191# check for readline 4.2
3192AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003193 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003194 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00003195
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003196# also in readline 4.2
3197AC_TRY_CPP([#include <readline/readline.h>],
3198have_readline=yes, have_readline=no)
3199if test $have_readline = yes
3200then
3201 AC_EGREP_HEADER([extern int rl_catch_signals;],
3202 [readline/readline.h],
3203 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3204 [Define if you can turn off readline's signal handling.]), )
3205fi
3206
Martin v. Löwis82bca632006-02-10 20:49:30 +00003207# End of readline checks: restore LIBS
3208LIBS=$LIBS_no_readline
3209
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003210AC_MSG_CHECKING(for broken nice())
3211AC_CACHE_VAL(ac_cv_broken_nice, [
3212AC_TRY_RUN([
3213int main()
3214{
3215 int val1 = nice(1);
3216 if (val1 != -1 && val1 == nice(2))
3217 exit(0);
3218 exit(1);
3219}
Guido van Rossum3065c942001-09-17 04:03:14 +00003220],
3221ac_cv_broken_nice=yes,
3222ac_cv_broken_nice=no,
3223ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003224AC_MSG_RESULT($ac_cv_broken_nice)
3225if test "$ac_cv_broken_nice" = yes
3226then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003227 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3228 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003229fi
3230
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003231AC_MSG_CHECKING(for broken poll())
3232AC_TRY_RUN([
3233#include <poll.h>
3234
3235int main (void)
3236 {
3237 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3238
3239 close (42);
3240
3241 int poll_test = poll (&poll_struct, 1, 0);
3242
3243 if (poll_test < 0)
3244 {
3245 exit(0);
3246 }
3247 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3248 {
3249 exit(0);
3250 }
3251 else
3252 {
3253 exit(1);
3254 }
3255 }
3256],
3257ac_cv_broken_poll=yes,
3258ac_cv_broken_poll=no,
3259ac_cv_broken_poll=no)
3260AC_MSG_RESULT($ac_cv_broken_poll)
3261if test "$ac_cv_broken_poll" = yes
3262then
3263 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3264 [Define if poll() sets errno on invalid file descriptors.])
3265fi
3266
Brett Cannon43802422005-02-10 20:48:03 +00003267# Before we can test tzset, we need to check if struct tm has a tm_zone
3268# (which is not required by ISO C or UNIX spec) and/or if we support
3269# tzname[]
3270AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003271
Brett Cannon43802422005-02-10 20:48:03 +00003272# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003273AC_MSG_CHECKING(for working tzset())
3274AC_CACHE_VAL(ac_cv_working_tzset, [
3275AC_TRY_RUN([
3276#include <stdlib.h>
3277#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003278#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003279
3280#if HAVE_TZNAME
3281extern char *tzname[];
3282#endif
3283
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003284int main()
3285{
Brett Cannon18367812003-09-19 00:59:16 +00003286 /* Note that we need to ensure that not only does tzset(3)
3287 do 'something' with localtime, but it works as documented
3288 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003289 This includes making sure that tzname is set properly if
3290 tm->tm_zone does not exist since it is the alternative way
3291 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003292
3293 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003294 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003295 */
3296
Brett Cannon43802422005-02-10 20:48:03 +00003297 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003298 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3299
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003300 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003301 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003302 if (localtime(&groundhogday)->tm_hour != 0)
3303 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003304#if HAVE_TZNAME
3305 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3306 if (strcmp(tzname[0], "UTC") ||
3307 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3308 exit(1);
3309#endif
Brett Cannon18367812003-09-19 00:59:16 +00003310
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003311 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003312 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003313 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003314 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003315#if HAVE_TZNAME
3316 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3317 exit(1);
3318#endif
Brett Cannon18367812003-09-19 00:59:16 +00003319
3320 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3321 tzset();
3322 if (localtime(&groundhogday)->tm_hour != 11)
3323 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003324#if HAVE_TZNAME
3325 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3326 exit(1);
3327#endif
3328
3329#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003330 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3331 exit(1);
3332 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3333 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003334#endif
Brett Cannon18367812003-09-19 00:59:16 +00003335
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003336 exit(0);
3337}
3338],
3339ac_cv_working_tzset=yes,
3340ac_cv_working_tzset=no,
3341ac_cv_working_tzset=no)])
3342AC_MSG_RESULT($ac_cv_working_tzset)
3343if test "$ac_cv_working_tzset" = yes
3344then
3345 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3346 [Define if tzset() actually switches the local timezone in a meaningful way.])
3347fi
3348
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003349# Look for subsecond timestamps in struct stat
3350AC_MSG_CHECKING(for tv_nsec in struct stat)
3351AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3352AC_TRY_COMPILE([#include <sys/stat.h>], [
3353struct stat st;
3354st.st_mtim.tv_nsec = 1;
3355],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003356ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003357ac_cv_stat_tv_nsec=no,
3358ac_cv_stat_tv_nsec=no))
3359AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3360if test "$ac_cv_stat_tv_nsec" = yes
3361then
3362 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3363 [Define if you have struct stat.st_mtim.tv_nsec])
3364fi
3365
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003366# Look for BSD style subsecond timestamps in struct stat
3367AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3368AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3369AC_TRY_COMPILE([#include <sys/stat.h>], [
3370struct stat st;
3371st.st_mtimespec.tv_nsec = 1;
3372],
3373ac_cv_stat_tv_nsec2=yes,
3374ac_cv_stat_tv_nsec2=no,
3375ac_cv_stat_tv_nsec2=no))
3376AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3377if test "$ac_cv_stat_tv_nsec2" = yes
3378then
3379 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3380 [Define if you have struct stat.st_mtimensec])
3381fi
3382
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003383# On HP/UX 11.0, mvwdelch is a block with a return statement
3384AC_MSG_CHECKING(whether mvwdelch is an expression)
3385AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3386AC_TRY_COMPILE([#include <curses.h>], [
3387 int rtn;
3388 rtn = mvwdelch(0,0,0);
3389], ac_cv_mvwdelch_is_expression=yes,
3390 ac_cv_mvwdelch_is_expression=no,
3391 ac_cv_mvwdelch_is_expression=yes))
3392AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3393
3394if test "$ac_cv_mvwdelch_is_expression" = yes
3395then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003396 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3397 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003398fi
3399
3400AC_MSG_CHECKING(whether WINDOW has _flags)
3401AC_CACHE_VAL(ac_cv_window_has_flags,
3402AC_TRY_COMPILE([#include <curses.h>], [
3403 WINDOW *w;
3404 w->_flags = 0;
3405], ac_cv_window_has_flags=yes,
3406 ac_cv_window_has_flags=no,
3407 ac_cv_window_has_flags=no))
3408AC_MSG_RESULT($ac_cv_window_has_flags)
3409
3410
3411if test "$ac_cv_window_has_flags" = yes
3412then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003413 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3414 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003415fi
3416
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003417AC_MSG_CHECKING(for is_term_resized)
3418AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3419 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3420 AC_MSG_RESULT(yes),
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003421 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003422)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003423
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003424AC_MSG_CHECKING(for resize_term)
3425AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3426 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3427 AC_MSG_RESULT(yes),
Neal Norwitz865400f2003-03-21 01:42:58 +00003428 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003429)
3430
3431AC_MSG_CHECKING(for resizeterm)
3432AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3433 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3434 AC_MSG_RESULT(yes),
3435 AC_MSG_RESULT(no)
3436)
3437
Thomas Wouters89f507f2006-12-13 04:49:30 +00003438AC_MSG_CHECKING(for /dev/ptmx)
3439
3440if test -r /dev/ptmx
3441then
3442 AC_MSG_RESULT(yes)
3443 AC_DEFINE(HAVE_DEV_PTMX, 1,
3444 [Define if we have /dev/ptmx.])
3445else
3446 AC_MSG_RESULT(no)
3447fi
3448
3449AC_MSG_CHECKING(for /dev/ptc)
3450
3451if test -r /dev/ptc
3452then
3453 AC_MSG_RESULT(yes)
3454 AC_DEFINE(HAVE_DEV_PTC, 1,
3455 [Define if we have /dev/ptc.])
3456else
3457 AC_MSG_RESULT(no)
3458fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003459
Thomas Wouters477c8d52006-05-27 19:21:47 +00003460AC_MSG_CHECKING(for %zd printf() format support)
3461AC_TRY_RUN([#include <stdio.h>
3462#include <stddef.h>
3463#include <string.h>
3464
Christian Heimes2c181612007-12-17 20:04:13 +00003465#ifdef HAVE_SYS_TYPES_H
3466#include <sys/types.h>
3467#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00003468
3469#ifdef HAVE_SSIZE_T
3470typedef ssize_t Py_ssize_t;
3471#elif SIZEOF_VOID_P == SIZEOF_LONG
3472typedef long Py_ssize_t;
3473#else
3474typedef int Py_ssize_t;
3475#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00003476
Christian Heimes2c181612007-12-17 20:04:13 +00003477int main()
3478{
3479 char buffer[256];
3480
Thomas Wouters477c8d52006-05-27 19:21:47 +00003481 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3482 return 1;
3483
Thomas Wouters89f507f2006-12-13 04:49:30 +00003484 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00003485 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00003486
3487 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3488 return 1;
3489
3490 if (strcmp(buffer, "-123"))
3491 return 1;
3492
Thomas Wouters477c8d52006-05-27 19:21:47 +00003493 return 0;
3494}],
3495[AC_MSG_RESULT(yes)
3496 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3497 AC_MSG_RESULT(no))
3498
Martin v. Löwis01c04012002-11-11 14:58:44 +00003499AC_CHECK_TYPE(socklen_t,,
3500 AC_DEFINE(socklen_t,int,
3501 Define to `int' if <sys/socket.h> does not define.),[
3502#ifdef HAVE_SYS_TYPES_H
3503#include <sys/types.h>
3504#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003505#ifdef HAVE_SYS_SOCKET_H
3506#include <sys/socket.h>
3507#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003508])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003509
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003510AC_SUBST(THREADHEADERS)
3511
3512for h in `(cd $srcdir;echo Python/thread_*.h)`
3513do
3514 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3515done
3516
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003517AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003518SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003519AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003520for dir in $SRCDIRS; do
3521 if test ! -d $dir; then
3522 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003523 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003524done
3525AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003526
Guido van Rossum627b2d71993-12-24 10:39:16 +00003527# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003528AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3529AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003530
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003531echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003532if test ! -f Modules/Setup
3533then
3534 cp $srcdir/Modules/Setup.dist Modules/Setup
3535fi
3536
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003537echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003538if test ! -f Modules/Setup.local
3539then
3540 echo "# Edit this file for local setup changes" >Modules/Setup.local
3541fi
3542
3543echo "creating Makefile"
3544$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3545 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003546 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003547mv config.c Modules