blob: a4793aa999e40f9b4f117d1bed6f97fc22da0fbe [file] [log] [blame]
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001dnl Process this file with autoconf 2.0 or later to make a configure script.
Martin v. Löwis88afe662002-10-26 13:47:44 +00002
3# Set VERSION so we only need to edit in one place (i.e., here)
Neal Norwitz9be57322006-08-18 05:39:20 +00004m4_define(PYTHON_VERSION, 2.6)
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
Guido van Rossum76be6ed1995-01-02 18:33:54 +00006AC_REVISION($Revision$)
Martin v. Löwiseba40652007-08-30 20:10:57 +00007AC_PREREQ(2.61)
Martin v. Löwis1d459062005-03-14 21:23:33 +00008AC_INIT(python, PYTHON_VERSION, http://www.python.org/python-bugs)
Martin v. Löwis88afe662002-10-26 13:47:44 +00009AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000010AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000011
Martin v. Löwis8316feb2003-06-14 07:48:07 +000012dnl This is for stuff that absolutely must end up in pyconfig.h.
13dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000014AH_TOP([
15#ifndef Py_PYCONFIG_H
16#define Py_PYCONFIG_H
17])
Martin v. Löwis11437992002-04-12 09:54:03 +000018AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000019/* Define the macros needed if on a UnixWare 7.x system. */
20#if defined(__USLC__) && defined(__SCO_VERSION__)
21#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
22#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000023
24#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000025])
26
Martin v. Löwis8316feb2003-06-14 07:48:07 +000027# We don't use PACKAGE_ variables, and they cause conflicts
28# with other autoconf-based packages that include Python.h
29grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
30rm confdefs.h
31mv confdefs.h.new confdefs.h
32
Guido van Rossum642b6781997-07-19 19:35:41 +000033AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000034VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000035
Martin v. Löwis1142de32002-03-29 16:28:31 +000036AC_SUBST(SOVERSION)
37SOVERSION=1.0
38
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000039# The later defininition of _XOPEN_SOURCE disables certain features
40# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
41AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
42
Martin v. Löwisbcd93962003-05-03 10:32:18 +000043# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
44# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
45# them.
46AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
47
Andrew MacIntyreabccf412003-07-02 13:53:25 +000048# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
49# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
50# them.
51AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
52
Martin v. Löwisd6320502004-08-12 13:45:08 +000053# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
54# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
55AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
56
Martin v. Löwise981a4e2002-11-11 13:26:51 +000057define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000058
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000059# Arguments passed to configure.
60AC_SUBST(CONFIG_ARGS)
61CONFIG_ARGS="$ac_configure_args"
62
Ronald Oussoren988117f2006-04-29 11:31:35 +000063AC_ARG_ENABLE(universalsdk,
Brett Cannon91a1dec2008-02-13 19:15:44 +000064 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Ronald Oussoren988117f2006-04-29 11:31:35 +000065[
66 case $enableval in
67 yes)
68 enableval=/Developer/SDKs/MacOSX10.4u.sdk
69 ;;
70 esac
71 case $enableval in
72 no)
73 UNIVERSALSDK=
74 enable_universalsdk=
75 ;;
76 *)
77 UNIVERSALSDK=$enableval
78 ;;
79 esac
80],[
81 UNIVERSALSDK=
82 enable_universalsdk=
83])
84AC_SUBST(UNIVERSALSDK)
85
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000086dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000087AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000088 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
89[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000090 case $enableval in
91 yes)
92 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000093 esac
94 case $enableval in
95 no)
96 PYTHONFRAMEWORK=
97 PYTHONFRAMEWORKDIR=no-framework
98 PYTHONFRAMEWORKPREFIX=
99 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000100 FRAMEWORKINSTALLFIRST=
101 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000102 FRAMEWORKALTINSTALLFIRST=
103 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000104 if test "x${prefix}" = "xNONE"; then
105 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
106 else
107 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
108 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000109 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000110 ;;
111 *)
Jack Jansen127e56e2001-09-11 14:41:54 +0000112 PYTHONFRAMEWORK=Python
113 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000114 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000115 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000116 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
117 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Ronald Oussoren5b787322006-06-06 19:50:24 +0000118 FRAMEWORKALTINSTALLFIRST="${FRAMEWORKINSTALLFIRST} bininstall maninstall"
119 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000120 if test "x${prefix}" = "xNONE" ; then
121 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
122 else
123 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
124 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000125 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000126
127 # Add makefiles for Mac specific code to the list of output
128 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000129 AC_CONFIG_FILES(Mac/Makefile)
130 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
131 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000132 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000133 ],[
134 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000135 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000136 PYTHONFRAMEWORKPREFIX=
137 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000138 FRAMEWORKINSTALLFIRST=
139 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000140 FRAMEWORKALTINSTALLFIRST=
141 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000142 if test "x${prefix}" = "xNONE" ; then
143 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
144 else
145 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
146 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000147 enable_framework=
148])
149AC_SUBST(PYTHONFRAMEWORK)
150AC_SUBST(PYTHONFRAMEWORKDIR)
151AC_SUBST(PYTHONFRAMEWORKPREFIX)
152AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000153AC_SUBST(FRAMEWORKINSTALLFIRST)
154AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000155AC_SUBST(FRAMEWORKALTINSTALLFIRST)
156AC_SUBST(FRAMEWORKALTINSTALLLAST)
157AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000158
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000159##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000160## AC_HELP_STRING(--with-dyld,
161## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000162##
Guido van Rossumb418f891996-07-30 18:06:02 +0000163# Set name for machine-dependent library files
164AC_SUBST(MACHDEP)
165AC_MSG_CHECKING(MACHDEP)
166if test -z "$MACHDEP"
167then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000168 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000169 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
170 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000171 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000172 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000173 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000174 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000175 ac_md_system=`echo $ac_sys_system |
176 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
177 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000178 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000179 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000180
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000181 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000182 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000183 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000184 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000185 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000186 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000187 esac
188fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000189
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000190# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
191# disable features if it is defined, without any means to access these
192# features as extensions. For these systems, we skip the definition of
193# _XOPEN_SOURCE. Before adding a system to the list to gain access to
194# some feature, make sure there is no alternative way to access this
195# feature. Also, when using wildcards, make sure you have verified the
196# need for not defining _XOPEN_SOURCE on all systems matching the
197# wildcard, and that the wildcard does not include future systems
198# (which may remove their limitations).
199dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
200case $ac_sys_system/$ac_sys_release in
201 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
202 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000203 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Neal Norwitz4bc2c092006-09-05 02:57:01 +0000204 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0@:>@)
Martin v. Löwiscb78de62007-12-29 18:49:21 +0000205 define_xopen_source=no
206 # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is
207 # also defined. This can be overridden by defining _BSD_SOURCE
208 # As this has a different meaning on Linux, only define it on OpenBSD
209 AC_DEFINE(_BSD_SOURCE, 1, [Define on OpenBSD to activate all library features])
210 ;;
Martin v. Löwis4d542ec2006-11-25 15:39:19 +0000211 # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of
212 # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by
213 # Marc Recht
214 NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6[A-S])
215 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000216 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
217 # of union __?sigval. Reported by Stuart Bishop.
218 SunOS/5.6)
219 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000220 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
221 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000222 # Reconfirmed for 7.1.4 by Martin v. Loewis.
223 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000224 define_xopen_source=no;;
225 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000226 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000227 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000228 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000229 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
230 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
231 # this is fixed in 10.3, which identifies itself as Darwin/7.*
232 # This should hopefully be fixed in FreeBSD 4.9
233 FreeBSD/4.8* | Darwin/6* )
234 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000235 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
236 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
237 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000238 AIX/4)
239 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000240 AIX/5)
241 if test `uname -r` -eq 1; then
242 define_xopen_source=no
243 fi
244 ;;
Neal Norwitze8fb9922006-04-04 05:32:17 +0000245 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
246 # disables platform specific features beyond repair.
Martin v. Löwisa0588362006-04-04 06:03:50 +0000247 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
Neal Norwitz7659f0f2006-06-12 02:09:03 +0000248 # has no effect, don't bother defining them
Ronald Oussorenc95f7562006-08-09 14:56:33 +0000249 Darwin/@<:@789@:>@.*)
Neal Norwitze8fb9922006-04-04 05:32:17 +0000250 define_xopen_source=no
251 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000252
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000253esac
254
255if test $define_xopen_source = yes
256then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000257 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
258 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000259 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
260 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000261 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000262 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000263 AC_DEFINE(_XOPEN_SOURCE, 500,
264 Define to the level of X/Open that your system supports)
265 ;;
266 *)
267 AC_DEFINE(_XOPEN_SOURCE, 600,
268 Define to the level of X/Open that your system supports)
269 ;;
270 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000271
272 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
273 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
274 # several APIs are not declared. Since this is also needed in some
275 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000276 # except for Solaris 10, where it must not be defined,
277 # as it implies XPG4.2
278 case $ac_sys_system/$ac_sys_release in
279 SunOS/5.10)
280 ;;
281 *)
282 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
283 Define to activate Unix95-and-earlier features)
284 ;;
285 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000286
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000287 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
288
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000289fi
290
Guido van Rossum91922671997-10-09 20:24:13 +0000291#
292# SGI compilers allow the specification of the both the ABI and the
293# ISA on the command line. Depending on the values of these switches,
294# different and often incompatable code will be generated.
295#
296# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
297# thus supply support for various ABI/ISA combinations. The MACHDEP
298# variable is also adjusted.
299#
300AC_SUBST(SGI_ABI)
301if test ! -z "$SGI_ABI"
302then
303 CC="cc $SGI_ABI"
304 LDFLAGS="$SGI_ABI $LDFLAGS"
305 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
306fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000307AC_MSG_RESULT($MACHDEP)
308
Jack Jansen83f898c2002-12-30 22:23:40 +0000309# And add extra plat-mac for darwin
310AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000311AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000312AC_MSG_CHECKING(EXTRAPLATDIR)
313if test -z "$EXTRAPLATDIR"
314then
315 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000316 darwin)
317 EXTRAPLATDIR="\$(PLATMACDIRS)"
318 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
319 ;;
320 *)
321 EXTRAPLATDIR=""
322 EXTRAMACHDEPPATH=""
323 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000324 esac
325fi
326AC_MSG_RESULT($EXTRAPLATDIR)
327
Jack Jansen6b08a402004-06-03 12:41:45 +0000328# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
329# it may influence the way we can build extensions, so distutils
330# needs to check it
331AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000332AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000333CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000334EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000335
Mark Dickinson65134662008-04-25 16:11:04 +0000336AC_MSG_CHECKING(machine type as reported by uname -m)
337ac_sys_machine=`uname -m`
338AC_MSG_RESULT($ac_sys_machine)
339
Guido van Rossum627b2d71993-12-24 10:39:16 +0000340# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000341
342# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
343# for debug/optimization stuff. BASECFLAGS is for flags that are required
344# just to get things to compile and link. Users are free to override OPT
345# when running configure or make. The build should not break if they do.
346# BASECFLAGS should generally not be messed with, however.
347
348# XXX shouldn't some/most/all of this code be merged with the stuff later
349# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000350AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000351AC_ARG_WITH(gcc,
352 AC_HELP_STRING(--without-gcc,never use gcc),
353[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000354 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000355 no) CC=cc
356 without_gcc=yes;;
357 yes) CC=gcc
358 without_gcc=no;;
359 *) CC=$withval
360 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000361 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000362 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000363 AIX*) CC=cc_r
364 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000365 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000366 case $BE_HOST_CPU in
367 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000368 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000369 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000370 BASECFLAGS="$BASECFLAGS -export pragma"
371 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000372 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000373 ;;
374 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000375 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000376 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000377 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000378 ;;
379 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000380 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000381 ;;
382 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000383 AR="\$(srcdir)/Modules/ar_beos"
384 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000385 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000386 Monterey*)
387 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000388 without_gcc=;;
389 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000390 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000391AC_MSG_RESULT($without_gcc)
392
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000393# If the user switches compilers, we can't believe the cache
394if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
395then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000396 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
397(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000398fi
399
Guido van Rossum627b2d71993-12-24 10:39:16 +0000400AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000401
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000402AC_SUBST(CXX)
403AC_SUBST(MAINCC)
404AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
405AC_ARG_WITH(cxx_main,
406 AC_HELP_STRING([--with-cxx-main=<compiler>],
407 [compile main() and link python executable with C++ compiler]),
408[
409
410 case $withval in
411 no) with_cxx_main=no
412 MAINCC='$(CC)';;
413 yes) with_cxx_main=yes
414 MAINCC='$(CXX)';;
415 *) with_cxx_main=yes
416 MAINCC=$withval
417 if test -z "$CXX"
418 then
419 CXX=$withval
420 fi;;
421 esac], [
422 with_cxx_main=no
423 MAINCC='$(CC)'
424])
425AC_MSG_RESULT($with_cxx_main)
426
427preset_cxx="$CXX"
428if test -z "$CXX"
429then
430 case "$CC" in
431 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
432 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
433 esac
434 if test "$CXX" = "notfound"
435 then
436 CXX=""
437 fi
438fi
439if test -z "$CXX"
440then
441 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
442 if test "$CXX" = "notfound"
443 then
444 CXX=""
445 fi
446fi
447if test "$preset_cxx" != "$CXX"
448then
449 AC_MSG_WARN([
450
451 By default, distutils will build C++ extension modules with "$CXX".
452 If this is not intended, then set CXX on the configure command line.
453 ])
454fi
455
456
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000457# checks for UNIX variants that set C preprocessor variables
458AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000459
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000460# Check for unsupported systems
461case $ac_sys_system/$ac_sys_release in
Brett Cannon19fab762007-06-02 03:02:29 +0000462atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000463 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
464 echo See README for details.
465 exit 1;;
466esac
467
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000468AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000469AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000470AC_ARG_WITH(suffix,
471 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
472[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000473 case $withval in
474 no) EXEEXT=;;
475 yes) EXEEXT=.exe;;
476 *) EXEEXT=$withval;;
477 esac])
478AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000479
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000480# Test whether we're running on a non-case-sensitive system, in which
481# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000482AC_SUBST(BUILDEXEEXT)
483AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000484if test ! -d CaseSensitiveTestDir; then
485mkdir CaseSensitiveTestDir
486fi
487
488if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000489then
Jack Jansen1999ef42001-12-06 21:47:20 +0000490 AC_MSG_RESULT(yes)
491 BUILDEXEEXT=.exe
492else
493 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000494 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000495fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000496rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000497
Guido van Rossumdd997f71998-10-07 19:58:26 +0000498case $MACHDEP in
499bsdos*)
500 case $CC in
501 gcc) CC="$CC -D_HAVE_BSDI";;
502 esac;;
503esac
504
Guido van Rossum84561611997-08-21 00:08:11 +0000505case $ac_sys_system in
506hp*|HP*)
507 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000508 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000509 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000510Monterey*)
511 case $CC in
512 cc) CC="$CC -Wl,-Bexport";;
513 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000514SunOS*)
515 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000516 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000517 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000518esac
519
Martin v. Löwise8964d42001-03-06 12:09:07 +0000520
Neil Schemenauer61c51152001-01-26 16:18:16 +0000521AC_SUBST(LIBRARY)
522AC_MSG_CHECKING(LIBRARY)
523if test -z "$LIBRARY"
524then
525 LIBRARY='libpython$(VERSION).a'
526fi
527AC_MSG_RESULT($LIBRARY)
528
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000529# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000530# name of the library into which to insert object files). BLDLIBRARY is also
531# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
532# is blank as the main program is not linked directly against LDLIBRARY.
533# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
534# systems without shared libraries, LDLIBRARY is the same as LIBRARY
535# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
536# DLLLIBRARY is the shared (i.e., DLL) library.
537#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000538# RUNSHARED is used to run shared python without installed libraries
539#
540# INSTSONAME is the name of the shared library that will be use to install
541# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000542AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000543AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000544AC_SUBST(BLDLIBRARY)
545AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000546AC_SUBST(INSTSONAME)
547AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000548LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000549BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000550INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000551DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000552LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000553RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000554
Guido van Rossumfb842551997-08-06 23:42:07 +0000555# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000556# If CXX is set, and if it is needed to link a main function that was
557# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
558# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000559# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000560# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000561AC_SUBST(LINKCC)
562AC_MSG_CHECKING(LINKCC)
563if test -z "$LINKCC"
564then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000565 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000566 case $ac_sys_system in
567 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000568 exp_extra="\"\""
569 if test $ac_sys_release -ge 5 -o \
570 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
571 exp_extra="."
572 fi
573 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000574 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000575 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000576 esac
577fi
578AC_MSG_RESULT($LINKCC)
579
Martin v. Löwis1142de32002-03-29 16:28:31 +0000580AC_MSG_CHECKING(for --enable-shared)
581AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000582 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000583
Martin v. Löwis1142de32002-03-29 16:28:31 +0000584if test -z "$enable_shared"
585then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000586 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000587 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000588 enable_shared="yes";;
589 *)
590 enable_shared="no";;
591 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000592fi
593AC_MSG_RESULT($enable_shared)
594
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000595AC_MSG_CHECKING(for --enable-profiling)
596AC_ARG_ENABLE(profiling,
597 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
598[ac_save_cc="$CC"
599 CC="$CC -pg"
600 AC_TRY_RUN([int main() { return 0; }],
601 ac_enable_profiling="yes",
602 ac_enable_profiling="no",
603 ac_enable_profiling="no")
604 CC="$ac_save_cc"])
605AC_MSG_RESULT($ac_enable_profiling)
606
607case "$ac_enable_profiling" in
608 "yes")
609 BASECFLAGS="-pg $BASECFLAGS"
610 LDFLAGS="-pg $LDFLAGS"
611 ;;
612esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000613
614AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000615
Guido van Rossumb8552162001-09-05 14:58:11 +0000616# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
617# library that we build, but we do not want to link against it (we
618# will find it with a -framework option). For this reason there is an
619# extra variable BLDLIBRARY against which Python and the extension
620# modules are linked, BLDLIBRARY. This is normally the same as
621# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000622if test "$enable_framework"
623then
624 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000625 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000626 BLDLIBRARY=''
627else
628 BLDLIBRARY='$(LDLIBRARY)'
629fi
630
Martin v. Löwis1142de32002-03-29 16:28:31 +0000631# Other platforms follow
632if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000633 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000634 case $ac_sys_system in
635 BeOS*)
636 LDLIBRARY='libpython$(VERSION).so'
637 ;;
638 CYGWIN*)
639 LDLIBRARY='libpython$(VERSION).dll.a'
640 DLLLIBRARY='libpython$(VERSION).dll'
641 ;;
642 SunOS*)
643 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000644 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000645 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000646 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000647 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000648 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000649 LDLIBRARY='libpython$(VERSION).so'
650 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000651 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000652 case $ac_sys_system in
653 FreeBSD*)
654 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
655 ;;
656 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000657 INSTSONAME="$LDLIBRARY".$SOVERSION
658 ;;
659 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000660 case `uname -m` in
661 ia64)
662 LDLIBRARY='libpython$(VERSION).so'
663 ;;
664 *)
665 LDLIBRARY='libpython$(VERSION).sl'
666 ;;
667 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000668 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000669 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000670 ;;
671 OSF*)
672 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000673 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000674 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000675 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000676 atheos*)
677 LDLIBRARY='libpython$(VERSION).so'
678 BLDLIBRARY='-L. -lpython$(VERSION)'
679 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
680 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000681 esac
Jason Tishler30765592003-09-04 11:04:06 +0000682else # shared is disabled
683 case $ac_sys_system in
684 CYGWIN*)
685 BLDLIBRARY='$(LIBRARY)'
686 LDLIBRARY='libpython$(VERSION).dll.a'
687 ;;
688 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000689fi
690
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000691AC_MSG_RESULT($LDLIBRARY)
692
Guido van Rossum627b2d71993-12-24 10:39:16 +0000693AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000694AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000695AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000696
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000697AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000698AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000699if test $SVNVERSION = found
700then
701 SVNVERSION="svnversion \$(srcdir)"
702else
703 SVNVERSION="echo exported"
704fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000705
Neil Schemenauera42c8272001-03-31 00:01:55 +0000706case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000707bsdos*|hp*|HP*)
708 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000709 if test -z "$INSTALL"
710 then
711 INSTALL="${srcdir}/install-sh -c"
712 fi
713esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000714AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000715
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000716# Not every filesystem supports hard links
717AC_SUBST(LN)
718if test -z "$LN" ; then
719 case $ac_sys_system in
720 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000721 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000722 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000723 *) LN=ln;;
724 esac
725fi
726
Fred Drake9f715822001-07-11 06:27:00 +0000727# Check for --with-pydebug
728AC_MSG_CHECKING(for --with-pydebug)
729AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000730 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
731[
Fred Drake9f715822001-07-11 06:27:00 +0000732if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000733then
734 AC_DEFINE(Py_DEBUG, 1,
735 [Define if you want to build an interpreter with many run-time checks.])
736 AC_MSG_RESULT(yes);
737 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000738else AC_MSG_RESULT(no); Py_DEBUG='false'
739fi],
740[AC_MSG_RESULT(no)])
741
Skip Montanarodecc6a42003-01-01 20:07:49 +0000742# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
743# merged with this chunk of code?
744
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000745# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000746# ------------------------
747# (The following bit of code is complicated enough - please keep things
748# indented properly. Just pretend you're editing Python code. ;-)
749
750# There are two parallel sets of case statements below, one that checks to
751# see if OPT was set and one that does BASECFLAGS setting based upon
752# compiler and platform. BASECFLAGS tweaks need to be made even if the
753# user set OPT.
754
755# tweak OPT based on compiler and platform, only if the user didn't set
756# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000757AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000758if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000759then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000760 case $GCC in
761 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000762 if test "$CC" != 'g++' ; then
763 STRICT_PROTO="-Wstrict-prototypes"
764 fi
Guido van Rossum7c862f82007-12-13 20:50:10 +0000765 # For gcc 4.x we need to use -fwrapv so lets check if its supported
766 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
767 WRAP="-fwrapv"
768 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000769 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000770 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000771 if test "$Py_DEBUG" = 'true' ; then
772 # Optimization messes up debuggers, so turn it off for
773 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000774 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000775 else
Guido van Rossum7c862f82007-12-13 20:50:10 +0000776 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000777 fi
778 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000779 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000780 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000781 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000782 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000783 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000784 SCO_SV*) OPT="$OPT -m486 -DSCO5"
785 ;;
786 esac
Fred Drake9f715822001-07-11 06:27:00 +0000787 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000788
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000789 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000790 OPT="-O"
791 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000792 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000793
794 # The current (beta) Monterey compiler dies with optimizations
795 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000796 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000797 Monterey*)
798 OPT=""
799 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000800 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000801
Guido van Rossum4e8af441994-08-19 15:33:54 +0000802fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000803
Skip Montanarodecc6a42003-01-01 20:07:49 +0000804AC_SUBST(BASECFLAGS)
805# tweak BASECFLAGS based on compiler and platform
806case $GCC in
807yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000808 # Python violates C99 rules, by casting between incompatible
809 # pointer types. GCC may generate bad code as a result of that,
810 # so use -fno-strict-aliasing if supported.
811 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
812 ac_save_cc="$CC"
813 CC="$CC -fno-strict-aliasing"
814 AC_TRY_RUN([int main() { return 0; }],
815 ac_cv_no_strict_aliasing_ok=yes,
816 ac_cv_no_strict_aliasing_ok=no,
817 ac_cv_no_strict_aliasing_ok=no)
818 CC="$ac_save_cc"
819 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
820 if test $ac_cv_no_strict_aliasing_ok = yes
821 then
822 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
823 fi
Mark Dickinson65134662008-04-25 16:11:04 +0000824
825 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
826 # support. Without this, treatment of subnormals doesn't follow
827 # the standard.
828 case $ac_sys_machine in
829 alpha*)
830 BASECFLAGS="$BASECFLAGS -mieee"
831 ;;
832 esac
833
Skip Montanarodecc6a42003-01-01 20:07:49 +0000834 case $ac_sys_system in
835 SCO_SV*)
836 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
837 ;;
838 # is there any other compiler on Darwin besides gcc?
839 Darwin*)
Jeffrey Yasskin1b4e45b2008-03-17 14:40:53 +0000840 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
841 # used to be here, but non-Apple gcc doesn't accept them.
Ronald Oussoren988117f2006-04-29 11:31:35 +0000842 if test "${enable_universalsdk}"; then
843 BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
844 fi
845
Skip Montanarodecc6a42003-01-01 20:07:49 +0000846 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +0000847 OSF*)
848 BASECFLAGS="$BASECFLAGS -mieee"
849 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000850 esac
851 ;;
852
853*)
854 case $ac_sys_system in
855 OpenUNIX*|UnixWare*)
856 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
857 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000858 OSF*)
859 BASECFLAGS="$BASECFLAGS -ieee -std"
860 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000861 SCO_SV*)
862 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
863 ;;
864 esac
865 ;;
866esac
867
Fred Drakee1ceaa02001-12-04 20:55:47 +0000868if test "$Py_DEBUG" = 'true'; then
869 :
870else
871 OPT="-DNDEBUG $OPT"
872fi
873
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000874if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000875then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000876 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000877fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000878
Neal Norwitz020c46a2006-01-07 21:39:28 +0000879# disable check for icc since it seems to pass, but generates a warning
880if test "$CC" = icc
881then
882 ac_cv_opt_olimit_ok=no
883fi
884
Guido van Rossum91922671997-10-09 20:24:13 +0000885AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
886AC_CACHE_VAL(ac_cv_opt_olimit_ok,
887[ac_save_cc="$CC"
888CC="$CC -OPT:Olimit=0"
889AC_TRY_RUN([int main() { return 0; }],
890 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000891 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000892 ac_cv_opt_olimit_ok=no)
893CC="$ac_save_cc"])
894AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000895if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000896 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000897 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
898 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
899 # environment?
900 Darwin*)
901 ;;
902 *)
903 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
904 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000905 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000906else
907 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
908 AC_CACHE_VAL(ac_cv_olimit_ok,
909 [ac_save_cc="$CC"
910 CC="$CC -Olimit 1500"
911 AC_TRY_RUN([int main() { return 0; }],
912 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000913 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000914 ac_cv_olimit_ok=no)
915 CC="$ac_save_cc"])
916 AC_MSG_RESULT($ac_cv_olimit_ok)
917 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000918 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000919 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000920fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000921
Martin v. Löwisaac13162006-10-19 10:58:46 +0000922# Check whether GCC supports PyArg_ParseTuple format
923if test "$GCC" = "yes"
924then
925 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
926 save_CFLAGS=$CFLAGS
927 CFLAGS="$CFLAGS -Werror"
928 AC_TRY_COMPILE([
929 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
930 ],,
931 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
932 AC_MSG_RESULT(yes),
933 AC_MSG_RESULT(no)
934 )
Martin v. Löwisc1d75972006-10-19 16:01:37 +0000935 CFLAGS=$save_CFLAGS
Martin v. Löwisaac13162006-10-19 10:58:46 +0000936fi
937
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000938# On some compilers, pthreads are available without further options
939# (e.g. MacOS X). On some of these systems, the compiler will not
940# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
941# So we have to see first whether pthreads are available without
942# options before we can check whether -Kpthread improves anything.
943AC_MSG_CHECKING(whether pthreads are available without options)
944AC_CACHE_VAL(ac_cv_pthread_is_default,
945[AC_TRY_RUN([
946#include <pthread.h>
947
948void* routine(void* p){return NULL;}
949
950int main(){
951 pthread_t p;
952 if(pthread_create(&p,NULL,routine,NULL)!=0)
953 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000954 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000955 return 0;
956}
957],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000958[
959 ac_cv_pthread_is_default=yes
960 ac_cv_kthread=no
961 ac_cv_pthread=no
962],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000963 ac_cv_pthread_is_default=no,
964 ac_cv_pthread_is_default=no)
965])
966AC_MSG_RESULT($ac_cv_pthread_is_default)
967
968
969if test $ac_cv_pthread_is_default = yes
970then
971 ac_cv_kpthread=no
972else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000973# -Kpthread, if available, provides the right #defines
974# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000975# Some compilers won't report that they do not support -Kpthread,
976# so we need to run a program to see whether it really made the
977# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000978AC_MSG_CHECKING(whether $CC accepts -Kpthread)
979AC_CACHE_VAL(ac_cv_kpthread,
980[ac_save_cc="$CC"
981CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000982AC_TRY_RUN([
983#include <pthread.h>
984
985void* routine(void* p){return NULL;}
986
987int main(){
988 pthread_t p;
989 if(pthread_create(&p,NULL,routine,NULL)!=0)
990 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000991 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000992 return 0;
993}
994],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000995 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000996 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000997 ac_cv_kpthread=no)
998CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000999AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001000fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001001
Skip Montanarod8d39a02003-07-10 20:44:10 +00001002if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001003then
1004# -Kthread, if available, provides the right #defines
1005# and linker options to make pthread_create available
1006# Some compilers won't report that they do not support -Kthread,
1007# so we need to run a program to see whether it really made the
1008# function available.
1009AC_MSG_CHECKING(whether $CC accepts -Kthread)
1010AC_CACHE_VAL(ac_cv_kthread,
1011[ac_save_cc="$CC"
1012CC="$CC -Kthread"
1013AC_TRY_RUN([
1014#include <pthread.h>
1015
1016void* routine(void* p){return NULL;}
1017
1018int main(){
1019 pthread_t p;
1020 if(pthread_create(&p,NULL,routine,NULL)!=0)
1021 return 1;
1022 (void)pthread_detach(p);
1023 return 0;
1024}
1025],
1026 ac_cv_kthread=yes,
1027 ac_cv_kthread=no,
1028 ac_cv_kthread=no)
1029CC="$ac_save_cc"])
1030AC_MSG_RESULT($ac_cv_kthread)
1031fi
1032
Skip Montanarod8d39a02003-07-10 20:44:10 +00001033if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001034then
1035# -pthread, if available, provides the right #defines
1036# and linker options to make pthread_create available
1037# Some compilers won't report that they do not support -pthread,
1038# so we need to run a program to see whether it really made the
1039# function available.
1040AC_MSG_CHECKING(whether $CC accepts -pthread)
1041AC_CACHE_VAL(ac_cv_thread,
1042[ac_save_cc="$CC"
1043CC="$CC -pthread"
1044AC_TRY_RUN([
1045#include <pthread.h>
1046
1047void* routine(void* p){return NULL;}
1048
1049int main(){
1050 pthread_t p;
1051 if(pthread_create(&p,NULL,routine,NULL)!=0)
1052 return 1;
1053 (void)pthread_detach(p);
1054 return 0;
1055}
1056],
1057 ac_cv_pthread=yes,
1058 ac_cv_pthread=no,
1059 ac_cv_pthread=no)
1060CC="$ac_save_cc"])
1061AC_MSG_RESULT($ac_cv_pthread)
1062fi
1063
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001064# If we have set a CC compiler flag for thread support then
1065# check if it works for CXX, too.
1066ac_cv_cxx_thread=no
1067if test ! -z "$CXX"
1068then
1069AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1070ac_save_cxx="$CXX"
1071
1072if test "$ac_cv_kpthread" = "yes"
1073then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001074 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001075 ac_cv_cxx_thread=yes
1076elif test "$ac_cv_kthread" = "yes"
1077then
1078 CXX="$CXX -Kthread"
1079 ac_cv_cxx_thread=yes
1080elif test "$ac_cv_pthread" = "yes"
1081then
1082 CXX="$CXX -pthread"
1083 ac_cv_cxx_thread=yes
1084fi
1085
1086if test $ac_cv_cxx_thread = yes
1087then
1088 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1089 $CXX -c conftest.$ac_ext 2>&5
1090 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1091 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1092 then
1093 ac_cv_cxx_thread=yes
1094 else
1095 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001096 fi
1097 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001098fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001099AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001100fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001101CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001102
Fred Drakece81d592000-07-09 14:39:29 +00001103dnl # check for ANSI or K&R ("traditional") preprocessor
1104dnl AC_MSG_CHECKING(for C preprocessor type)
1105dnl AC_TRY_COMPILE([
1106dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1107dnl int foo;
1108dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1109dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1110dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001111
Guido van Rossum627b2d71993-12-24 10:39:16 +00001112# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001113AC_HEADER_STDC
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001114AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1115fcntl.h grp.h \
Neal Norwitz9fdfaaf2008-03-28 05:34:59 +00001116ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001117shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001118unistd.h utime.h \
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00001119sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1120sys/lock.h sys/mkdev.h sys/modem.h \
Martin v. Löwis0e8bd7e2006-06-10 12:23:46 +00001121sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
1122sys/time.h \
1123sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Martin v. Löwis0347a9a2006-10-27 07:06:52 +00001124sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimesfb2d25a2008-01-07 16:12:44 +00001125bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001126AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001127AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001128
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001129# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001130AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001131#ifdef HAVE_CURSES_H
1132#include <curses.h>
1133#endif
1134])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001135
Martin v. Löwis11017b12006-01-14 18:12:57 +00001136# On Linux, netlink.h requires asm/types.h
1137AC_CHECK_HEADERS(linux/netlink.h,,,[
1138#ifdef HAVE_ASM_TYPES_H
1139#include <asm/types.h>
1140#endif
1141#ifdef HAVE_SYS_SOCKET_H
1142#include <sys/socket.h>
1143#endif
1144])
1145
Guido van Rossum627b2d71993-12-24 10:39:16 +00001146# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001147was_it_defined=no
1148AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001149AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1150 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1151])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001152AC_MSG_RESULT($was_it_defined)
1153
Neal Norwitz11690112002-07-30 01:08:28 +00001154# Check whether using makedev requires defining _OSF_SOURCE
1155AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001156AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001157 [ makedev(0, 0) ],
1158 ac_cv_has_makedev=yes,
1159 ac_cv_has_makedev=no)
1160if test "$ac_cv_has_makedev" = "no"; then
1161 # we didn't link, try if _OSF_SOURCE will allow us to link
1162 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001163#define _OSF_SOURCE 1
1164#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001165 ],
1166 [ makedev(0, 0) ],
1167 ac_cv_has_makedev=yes,
1168 ac_cv_has_makedev=no)
1169 if test "$ac_cv_has_makedev" = "yes"; then
1170 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1171 fi
1172fi
1173AC_MSG_RESULT($ac_cv_has_makedev)
1174if test "$ac_cv_has_makedev" = "yes"; then
1175 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1176fi
1177
Martin v. Löwis399a6892002-10-04 10:22:02 +00001178# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1179# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1180# defined, but the compiler does not support pragma redefine_extname,
1181# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1182# structures (such as rlimit64) without declaring them. As a
1183# work-around, disable LFS on such configurations
1184
1185use_lfs=yes
1186AC_MSG_CHECKING(Solaris LFS bug)
1187AC_TRY_COMPILE([
1188#define _LARGEFILE_SOURCE 1
1189#define _FILE_OFFSET_BITS 64
1190#include <sys/resource.h>
1191],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1192AC_MSG_RESULT($sol_lfs_bug)
1193if test "$sol_lfs_bug" = "yes"; then
1194 use_lfs=no
1195fi
1196
1197if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001198# Two defines needed to enable largefile support on various platforms
1199# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001200AC_DEFINE(_LARGEFILE_SOURCE, 1,
1201[This must be defined on some systems to enable large file support.])
1202AC_DEFINE(_FILE_OFFSET_BITS, 64,
1203[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001204fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001205
Guido van Rossum300fda71996-08-19 21:58:16 +00001206# Add some code to confdefs.h so that the test for off_t works on SCO
1207cat >> confdefs.h <<\EOF
1208#if defined(SCO_DS)
1209#undef _OFF_T
1210#endif
1211EOF
1212
Guido van Rossumef2255b2000-03-10 22:30:29 +00001213# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001214AC_TYPE_MODE_T
1215AC_TYPE_OFF_T
1216AC_TYPE_PID_T
1217AC_TYPE_SIGNAL
1218AC_TYPE_SIZE_T
1219AC_TYPE_UID_T
Christian Heimes951cc0f2008-01-31 23:08:23 +00001220AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001221 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001222
Guido van Rossumef2255b2000-03-10 22:30:29 +00001223# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001224# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001225AC_CHECK_SIZEOF(int, 4)
1226AC_CHECK_SIZEOF(long, 4)
1227AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001228AC_CHECK_SIZEOF(short, 2)
1229AC_CHECK_SIZEOF(float, 4)
1230AC_CHECK_SIZEOF(double, 8)
1231AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001232AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes951cc0f2008-01-31 23:08:23 +00001233AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001234
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001235AC_MSG_CHECKING(for long long support)
1236have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001237AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1238 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1239 have_long_long=yes
1240])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001241AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001242if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001243AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001244fi
1245
Martin v. Löwisaef4c6b2007-01-21 09:33:07 +00001246AC_MSG_CHECKING(for _Bool support)
1247have_c99_bool=no
1248AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1249 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1250 have_c99_bool=yes
1251])
1252AC_MSG_RESULT($have_c99_bool)
1253if test "$have_c99_bool" = yes ; then
1254AC_CHECK_SIZEOF(_Bool, 1)
1255fi
1256
Martin v. Löwisebe26702006-10-02 14:55:51 +00001257AC_CHECK_TYPES(uintptr_t,
1258 [AC_CHECK_SIZEOF(uintptr_t, 4)],
Martin v. Löwis40e9aed2006-10-02 15:20:37 +00001259 [], [#ifdef HAVE_STDINT_H
1260 #include <stdint.h>
1261 #endif])
Martin v. Löwisebe26702006-10-02 14:55:51 +00001262
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001263
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001264# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1265AC_MSG_CHECKING(size of off_t)
1266AC_CACHE_VAL(ac_cv_sizeof_off_t,
1267[AC_TRY_RUN([#include <stdio.h>
1268#include <sys/types.h>
1269main()
1270{
1271 FILE *f=fopen("conftestval", "w");
1272 if (!f) exit(1);
1273 fprintf(f, "%d\n", sizeof(off_t));
1274 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001275}],
1276ac_cv_sizeof_off_t=`cat conftestval`,
1277ac_cv_sizeof_off_t=0,
1278ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001279])
1280AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001281AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1282[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001283
1284AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001285if test "$have_long_long" = yes -a \
1286 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1287 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001288 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1289 [Defined to enable large file support when an off_t is bigger than a long
1290 and long long is available and at least as big as an off_t. You may need
1291 to add some flags for configuration and compilation to enable this mode.
1292 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001293 AC_MSG_RESULT(yes)
1294else
1295 AC_MSG_RESULT(no)
1296fi
1297
Fred Drakea3f6e912000-06-29 20:44:47 +00001298# AC_CHECK_SIZEOF() doesn't include <time.h>.
1299AC_MSG_CHECKING(size of time_t)
1300AC_CACHE_VAL(ac_cv_sizeof_time_t,
1301[AC_TRY_RUN([#include <stdio.h>
1302#include <time.h>
1303main()
1304{
1305 FILE *f=fopen("conftestval", "w");
1306 if (!f) exit(1);
1307 fprintf(f, "%d\n", sizeof(time_t));
1308 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001309}],
1310ac_cv_sizeof_time_t=`cat conftestval`,
1311ac_cv_sizeof_time_t=0,
1312ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001313])
1314AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001315AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1316[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001317
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001318
Trent Mick635f6fb2000-08-23 21:33:05 +00001319# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001320ac_save_cc="$CC"
1321if test "$ac_cv_kpthread" = "yes"
1322then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001323elif test "$ac_cv_kthread" = "yes"
1324then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001325elif test "$ac_cv_pthread" = "yes"
1326then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001327fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001328AC_MSG_CHECKING(for pthread_t)
1329have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001330AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001331AC_MSG_RESULT($have_pthread_t)
1332if test "$have_pthread_t" = yes ; then
1333 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1334 AC_MSG_CHECKING(size of pthread_t)
1335 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1336 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001337#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001338 main()
1339 {
1340 FILE *f=fopen("conftestval", "w");
1341 if (!f) exit(1);
1342 fprintf(f, "%d\n", sizeof(pthread_t));
1343 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001344 }],
1345 ac_cv_sizeof_pthread_t=`cat conftestval`,
1346 ac_cv_sizeof_pthread_t=0,
1347 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001348 ])
1349 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001350 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1351 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001352fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001353CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001354
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001355AC_MSG_CHECKING(for --enable-toolbox-glue)
1356AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001357 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001358
1359if test -z "$enable_toolbox_glue"
1360then
1361 case $ac_sys_system/$ac_sys_release in
1362 Darwin/*)
1363 enable_toolbox_glue="yes";;
1364 *)
1365 enable_toolbox_glue="no";;
1366 esac
1367fi
1368case "$enable_toolbox_glue" in
1369yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001370 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001371 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001372 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1373 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001374 ;;
1375*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001376 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001377 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001378 ;;
1379esac
1380AC_MSG_RESULT($enable_toolbox_glue)
1381
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001382AC_SUBST(OTHER_LIBTOOL_OPT)
1383case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001384 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001385 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1386 ;;
1387 Darwin/*)
1388 OTHER_LIBTOOL_OPT=""
1389 ;;
1390esac
1391
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001392AC_SUBST(LIBTOOL_CRUFT)
1393case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001394 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001395 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1396 if test "${enable_universalsdk}"; then
1397 :
1398 else
1399 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1400 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001401 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001402 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001403 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001404 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1405 if test ${gcc_version} '<' 4.0
1406 then
1407 LIBTOOL_CRUFT="-lcc_dynamic"
1408 else
1409 LIBTOOL_CRUFT=""
1410 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001411 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001412 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001413 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001414esac
1415
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001416AC_MSG_CHECKING(for --enable-framework)
1417if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001418then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001419 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001420 # -F. is needed to allow linking to the framework while
1421 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001422 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1423 [Define if you want to produce an OpenStep/Rhapsody framework
1424 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001425 AC_MSG_RESULT(yes)
1426else
1427 AC_MSG_RESULT(no)
1428fi
1429
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001430AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001431case $ac_sys_system/$ac_sys_release in
1432 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001433 AC_DEFINE(WITH_DYLD, 1,
1434 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1435 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1436 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001437 AC_MSG_RESULT(always on for Darwin)
1438 ;;
1439 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001440 AC_MSG_RESULT(no)
1441 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001442esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001443
Guido van Rossumac405f61994-09-12 10:56:06 +00001444# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001445AC_SUBST(SO)
1446AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001447AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001448AC_SUBST(CCSHARED)
1449AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001450# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001451# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001452AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001453if test -z "$SO"
1454then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001455 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001456 hp*|HP*)
1457 case `uname -m` in
1458 ia64) SO=.so;;
1459 *) SO=.sl;;
1460 esac
1461 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001462 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001463 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001464 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001465else
1466 # this might also be a termcap variable, see #610332
1467 echo
1468 echo '====================================================================='
1469 echo '+ +'
1470 echo '+ WARNING: You have set SO in your environment. +'
1471 echo '+ Do you really mean to change the extension for shared libraries? +'
1472 echo '+ Continuing in 10 seconds to let you to ponder. +'
1473 echo '+ +'
1474 echo '====================================================================='
1475 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001476fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001477AC_MSG_RESULT($SO)
Neal Norwitz58e28882006-05-19 07:00:58 +00001478AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001479# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001480# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001481# (Shared libraries in this instance are shared modules to be loaded into
1482# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001483AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001484if test -z "$LDSHARED"
1485then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001486 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001487 AIX*)
1488 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001489 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001490 ;;
1491 BeOS*)
1492 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001493 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001494 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001495 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001496 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001497 SunOS/5*)
1498 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001499 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001500 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001501 fi ;;
Thomas Hellerdc96a772008-04-04 10:07:55 +00001502 hp*|HP*)
1503 if test "$GCC" = "yes"
1504 then LDSHARED='$(CC) -shared'
1505 else LDSHARED='ld -b';
1506 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001507 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001508 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001509 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1510 if test "$enable_framework" ; then
1511 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001512 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1513 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001514 else
1515 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001516 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001517 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001518 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001519 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1520 if test "$enable_framework" ; then
1521 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001522 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1523 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001524 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001525 # No framework, use the Python app as bundle-loader
1526 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001527 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001528 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001529 Darwin/*)
1530 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1531 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001532 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Ronald Oussoren988117f2006-04-29 11:31:35 +00001533 if test ${cur_target} '>' 10.2; then
1534 cur_target=10.3
1535 fi
Jack Jansenc110f862005-01-07 10:49:32 +00001536 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Ronald Oussoren38f1b982007-09-02 09:46:07 +00001537
1538 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1539 # environment with a value that is the same as what we'll use
1540 # in the Makefile to ensure that we'll get the same compiler
1541 # environment during configure and build time.
1542 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1543 export MACOSX_DEPLOYMENT_TARGET
1544
Ronald Oussoren988117f2006-04-29 11:31:35 +00001545 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
Jack Jansenbe954622004-12-26 23:07:48 +00001546 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001547 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001548 if test "${enable_universalsdk}"; then
1549 LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1550 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001551 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1552 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001553 else
1554 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1555 if test "$enable_framework" ; then
1556 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001557 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1558 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001559 else
1560 # No framework, use the Python app as bundle-loader
1561 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1562 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1563 fi
1564 fi
1565 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001566 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001567 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001568 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001569 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001570 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001571 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001572 else
1573 LDSHARED="ld -Bshareable ${LDFLAGS}"
1574 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001575 OpenBSD*)
1576 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1577 then
1578 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1579 else
1580 case `uname -r` in
1581 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1582 LDSHARED="ld -Bshareable ${LDFLAGS}"
1583 ;;
1584 *)
1585 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1586 ;;
1587 esac
1588 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001589 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001590 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001591 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001592 then LDSHARED='$(CC) -shared'
1593 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001594 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001595 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001596 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001597 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001598 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001599 *) LDSHARED="ld";;
1600 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001601fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001602AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001603BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001604# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001605# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001606AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001607if test -z "$CCSHARED"
1608then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001609 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001610 SunOS*) if test "$GCC" = yes;
Martin v. Löwiseb623572007-03-12 10:50:39 +00001611 then CCSHARED="-fPIC";
1612 elif test `uname -p` = sparc;
1613 then CCSHARED="-xcode=pic32";
1614 else CCSHARED="-Kpic";
1615 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001616 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001617 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001618 else CCSHARED="+z";
1619 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001620 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001621 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001622 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001623 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001624 if test "$GCC" = "yes"
1625 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001626 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001627 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001628 SCO_SV*)
1629 if test "$GCC" = "yes"
1630 then CCSHARED="-fPIC"
1631 else CCSHARED="-Kpic -belf"
1632 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001633 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001634 IRIX*/6*) case $CC in
1635 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001636 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001637 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001638 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001639 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001640fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001641AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001642# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001643# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001644AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001645if test -z "$LINKFORSHARED"
1646then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001647 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001648 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001649 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001650 LINKFORSHARED="-Wl,-E -Wl,+s";;
1651# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001652 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001653 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001654 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001655 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001656 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1657 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001658 # not used by the core itself but which needs to be in the core so
1659 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001660 # -prebind is no longer used, because it actually seems to give a
1661 # slowdown in stead of a speedup, maybe due to the large number of
1662 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001663
1664 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001665 if test "$enable_framework"
1666 then
Jack Jansenda49e192005-01-07 13:08:22 +00001667 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001668 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001669 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001670 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001671 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001672 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001673 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001674 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1675 then
1676 LINKFORSHARED="-Wl,--export-dynamic"
1677 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001678 SunOS/5*) case $CC in
1679 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001680 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001681 then
1682 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001683 fi;;
1684 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001685 CYGWIN*)
1686 if test $enable_shared = "no"
1687 then
1688 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1689 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001690 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001691fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001692AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001693
Neil Schemenauer61c51152001-01-26 16:18:16 +00001694AC_SUBST(CFLAGSFORSHARED)
1695AC_MSG_CHECKING(CFLAGSFORSHARED)
1696if test ! "$LIBRARY" = "$LDLIBRARY"
1697then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001698 case $ac_sys_system in
1699 CYGWIN*)
1700 # Cygwin needs CCSHARED when building extension DLLs
1701 # but not when building the interpreter DLL.
1702 CFLAGSFORSHARED='';;
1703 *)
1704 CFLAGSFORSHARED='$(CCSHARED)'
1705 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001706fi
1707AC_MSG_RESULT($CFLAGSFORSHARED)
1708
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001709# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1710# library (with --enable-shared).
1711# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001712# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1713# if it is not required, since it creates a dependency of the shared library
1714# to LIBS. This, in turn, means that applications linking the shared libpython
1715# don't need to link LIBS explicitly. The default should be only changed
1716# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001717AC_SUBST(SHLIBS)
1718AC_MSG_CHECKING(SHLIBS)
1719case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001720 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001721 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001722esac
1723AC_MSG_RESULT($SHLIBS)
1724
1725
Guido van Rossum627b2d71993-12-24 10:39:16 +00001726# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001727AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1728AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001729
1730# only check for sem_ini if thread support is requested
1731if test "$with_threads" = "yes" -o -z "$with_threads"; then
1732 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1733 # posix4 on Solaris 2.6
1734 # pthread (first!) on Linux
1735fi
1736
Martin v. Löwis19d17342003-06-14 21:03:05 +00001737# check if we need libintl for locale functions
1738AC_CHECK_LIB(intl, textdomain,
1739 AC_DEFINE(WITH_LIBINTL, 1,
1740 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001741
1742# checks for system dependent C++ extensions support
1743case "$ac_sys_system" in
1744 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1745 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1746 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001747 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1748 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1749 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001750 AC_MSG_RESULT(yes)],
1751 [AC_MSG_RESULT(no)]);;
1752 *) ;;
1753esac
1754
Guido van Rossum70c7f481998-03-26 18:44:10 +00001755# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001756# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001757AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001758AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001759
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001760case "$ac_sys_system" in
1761BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001762AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1763;;
1764esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001765
Guido van Rossumc5a39031996-07-31 17:35:03 +00001766AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001767AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001768 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1769[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001770AC_MSG_RESULT($withval)
1771LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001772],
1773[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001774
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001775# Check for use of the system libffi library
1776AC_MSG_CHECKING(for --with-system-ffi)
1777AC_ARG_WITH(system_ffi,
1778 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1779
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001780AC_MSG_RESULT($with_system_ffi)
1781
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001782# Determine if signalmodule should be used.
1783AC_SUBST(USE_SIGNAL_MODULE)
1784AC_SUBST(SIGNAL_OBJS)
1785AC_MSG_CHECKING(for --with-signal-module)
1786AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001787 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001788
1789if test -z "$with_signal_module"
1790then with_signal_module="yes"
1791fi
1792AC_MSG_RESULT($with_signal_module)
1793
1794if test "${with_signal_module}" = "yes"; then
1795 USE_SIGNAL_MODULE=""
1796 SIGNAL_OBJS=""
1797else
1798 USE_SIGNAL_MODULE="#"
1799 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1800fi
1801
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001802# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001803AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001804USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001805
Guido van Rossum54d93d41997-01-22 20:51:58 +00001806AC_MSG_CHECKING(for --with-dec-threads)
1807AC_SUBST(LDLAST)
1808AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001809 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1810[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001811AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001812LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001813if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001814 with_thread="$withval";
1815fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001816[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001817
Martin v. Löwis11437992002-04-12 09:54:03 +00001818# Templates for things AC_DEFINEd more than once.
1819# For a single AC_DEFINE, no template is needed.
1820AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1821AH_TEMPLATE(_REENTRANT,
1822 [Define to force use of thread-safe errno, h_errno, and other functions])
1823AH_TEMPLATE(WITH_THREAD,
1824 [Define if you want to compile in rudimentary thread support])
1825
Guido van Rossum54d93d41997-01-22 20:51:58 +00001826AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001827dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00001828AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001829 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001830
Barry Warsawc0d24d82000-06-29 16:12:00 +00001831# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001832dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001833AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001834 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1835 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001836
1837if test -z "$with_threads"
1838then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001839fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00001840AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001841
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001842AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001843if test "$with_threads" = "no"
1844then
1845 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001846elif test "$ac_cv_pthread_is_default" = yes
1847then
1848 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001849 # Defining _REENTRANT on system with POSIX threads should not hurt.
1850 AC_DEFINE(_REENTRANT)
1851 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001852 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001853elif test "$ac_cv_kpthread" = "yes"
1854then
1855 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001856 if test "$ac_cv_cxx_thread" = "yes"; then
1857 CXX="$CXX -Kpthread"
1858 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001859 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001860 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001861 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001862elif test "$ac_cv_kthread" = "yes"
1863then
1864 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001865 if test "$ac_cv_cxx_thread" = "yes"; then
1866 CXX="$CXX -Kthread"
1867 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001868 AC_DEFINE(WITH_THREAD)
1869 posix_threads=yes
1870 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001871elif test "$ac_cv_pthread" = "yes"
1872then
1873 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001874 if test "$ac_cv_cxx_thread" = "yes"; then
1875 CXX="$CXX -pthread"
1876 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001877 AC_DEFINE(WITH_THREAD)
1878 posix_threads=yes
1879 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00001880else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001881 if test ! -z "$with_threads" -a -d "$with_threads"
1882 then LDFLAGS="$LDFLAGS -L$with_threads"
1883 fi
1884 if test ! -z "$withval" -a -d "$withval"
1885 then LDFLAGS="$LDFLAGS -L$withval"
1886 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001887
1888 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001889 # define _POSIX_THREADS in unistd.h. Some apparently don't
1890 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001891 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1892 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001893 [
1894#include <unistd.h>
1895#ifdef _POSIX_THREADS
1896yes
1897#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001898 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1899 AC_MSG_RESULT($unistd_defines_pthreads)
1900
Martin v. Löwis130fb172001-07-19 11:00:41 +00001901 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001902 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1903 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001904 AC_DEFINE(HURD_C_THREADS, 1,
1905 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001906 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001907 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001908 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1909 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001910 AC_DEFINE(MACH_C_THREADS, 1,
1911 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001912 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001913 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001914 AC_ARG_WITH([pth],
1915 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1916 [AC_MSG_RESULT($withval)
1917 AC_DEFINE([WITH_THREAD])
1918 AC_DEFINE([HAVE_PTH], 1,
1919 [Define if you have GNU PTH threads.])
1920 LIBS="-lpth $LIBS"
1921 THREADOBJ="Python/thread.o"],
1922 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001923
1924 # Just looking for pthread_create in libpthread is not enough:
1925 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1926 # So we really have to include pthread.h, and then link.
1927 _libs=$LIBS
1928 LIBS="$LIBS -lpthread"
1929 AC_MSG_CHECKING([for pthread_create in -lpthread])
1930 AC_TRY_LINK([#include <pthread.h>
1931
1932void * start_routine (void *arg) { exit (0); }], [
1933pthread_create (NULL, NULL, start_routine, NULL)], [
1934 AC_MSG_RESULT(yes)
1935 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001936 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001937 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001938 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001939 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001940 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001941 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001942 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1943 AC_DEFINE(ATHEOS_THREADS, 1,
1944 [Define this if you have AtheOS threads.])
1945 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001946 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001947 AC_DEFINE(BEOS_THREADS, 1,
1948 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001949 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001950 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001951 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001952 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001953 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001954 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001955 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001956 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001957 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001958 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001959 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001960 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001961 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001962 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001963 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001964 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001965 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001966 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001967 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001968
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001969 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1970 LIBS="$LIBS -lmpc"
1971 THREADOBJ="Python/thread.o"
1972 USE_THREAD_MODULE=""])
1973
1974 if test "$posix_threads" != "yes"; then
1975 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1976 LIBS="$LIBS -lthread"
1977 THREADOBJ="Python/thread.o"
1978 USE_THREAD_MODULE=""])
1979 fi
1980
1981 if test "$USE_THREAD_MODULE" != "#"
1982 then
1983 # If the above checks didn't disable threads, (at least) OSF1
1984 # needs this '-threads' argument during linking.
1985 case $ac_sys_system in
1986 OSF1) LDLAST=-threads;;
1987 esac
1988 fi
1989fi
1990
1991if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001992 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001993 AC_DEFINE(_POSIX_THREADS, 1,
1994 [Define if you have POSIX threads,
1995 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001996 fi
1997
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001998 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1999 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002000 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
2001 Defined for Solaris 2.6 bug in pthread header.)
2002 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002003 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002004 Define if the Posix semaphores do not work on your system)
2005 ;;
Christian Heimescba36bb2008-01-30 22:54:18 +00002006 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
2007 Define if the Posix semaphores do not work on your system)
2008 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00002009 esac
2010
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002011 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
2012 AC_CACHE_VAL(ac_cv_pthread_system_supported,
2013 [AC_TRY_RUN([#include <pthread.h>
2014 void *foo(void *parm) {
2015 return NULL;
2016 }
2017 main() {
2018 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002019 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002020 if (pthread_attr_init(&attr)) exit(-1);
2021 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00002022 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002023 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00002024 }],
2025 ac_cv_pthread_system_supported=yes,
2026 ac_cv_pthread_system_supported=no,
2027 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002028 ])
2029 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2030 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002031 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002032 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002033 AC_CHECK_FUNCS(pthread_sigmask,
2034 [case $ac_sys_system in
2035 CYGWIN*)
2036 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2037 [Define if pthread_sigmask() does not work on your system.])
2038 ;;
2039 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00002040fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002041
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002042
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002043# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002044AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002045AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002046AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002047[ --enable-ipv6 Enable ipv6 (with ipv4) support
2048 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002049[ case "$enableval" in
2050 no)
2051 AC_MSG_RESULT(no)
2052 ipv6=no
2053 ;;
2054 *) AC_MSG_RESULT(yes)
2055 AC_DEFINE(ENABLE_IPV6)
2056 ipv6=yes
2057 ;;
2058 esac ],
2059
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002060[
2061dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002062 AC_TRY_RUN([ /* AF_INET6 available check */
2063#include <sys/types.h>
2064#include <sys/socket.h>
2065main()
2066{
2067 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2068 exit(1);
2069 else
2070 exit(0);
2071}
2072],
2073 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002074 ipv6=yes,
2075 AC_MSG_RESULT(no)
2076 ipv6=no,
2077 AC_MSG_RESULT(no)
2078 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002079)
2080
2081if test "$ipv6" = "yes"; then
2082 AC_MSG_CHECKING(if RFC2553 API is available)
2083 AC_TRY_COMPILE([#include <sys/types.h>
2084#include <netinet/in.h>],
2085 [struct sockaddr_in6 x;
2086x.sin6_scope_id;],
2087 AC_MSG_RESULT(yes)
2088 ipv6=yes,
2089 AC_MSG_RESULT(no, IPv6 disabled)
2090 ipv6=no)
2091fi
2092
2093if test "$ipv6" = "yes"; then
2094 AC_DEFINE(ENABLE_IPV6)
2095fi
2096])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002097
2098ipv6type=unknown
2099ipv6lib=none
2100ipv6trylibc=no
2101
2102if test "$ipv6" = "yes"; then
2103 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002104 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2105 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002106 case $i in
2107 inria)
2108 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002109 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002110#include <netinet/in.h>
2111#ifdef IPV6_INRIA_VERSION
2112yes
2113#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002114 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002115 ;;
2116 kame)
2117 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002118 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002119#include <netinet/in.h>
2120#ifdef __KAME__
2121yes
2122#endif],
2123 [ipv6type=$i;
2124 ipv6lib=inet6
2125 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002126 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002127 ;;
2128 linux-glibc)
2129 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002130 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002131#include <features.h>
2132#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2133yes
2134#endif],
2135 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002136 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002137 ;;
2138 linux-inet6)
2139 dnl http://www.v6.linux.or.jp/
2140 if test -d /usr/inet6; then
2141 ipv6type=$i
2142 ipv6lib=inet6
2143 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002144 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002145 fi
2146 ;;
2147 solaris)
2148 if test -f /etc/netconfig; then
2149 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2150 ipv6type=$i
2151 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002152 fi
2153 fi
2154 ;;
2155 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002156 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002157#include <sys/param.h>
2158#ifdef _TOSHIBA_INET6
2159yes
2160#endif],
2161 [ipv6type=$i;
2162 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002163 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002164 ;;
2165 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002166 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002167#include </usr/local/v6/include/sys/v6config.h>
2168#ifdef __V6D__
2169yes
2170#endif],
2171 [ipv6type=$i;
2172 ipv6lib=v6;
2173 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002174 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002175 ;;
2176 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002177 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002178#include <sys/param.h>
2179#ifdef _ZETA_MINAMI_INET6
2180yes
2181#endif],
2182 [ipv6type=$i;
2183 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002184 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002185 ;;
2186 esac
2187 if test "$ipv6type" != "unknown"; then
2188 break
2189 fi
2190 done
2191 AC_MSG_RESULT($ipv6type)
2192fi
2193
2194if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2195 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2196 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2197 echo "using lib$ipv6lib"
2198 else
2199 if test $ipv6trylibc = "yes"; then
2200 echo "using libc"
2201 else
2202 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2203 echo "You need to fetch lib$ipv6lib.a from appropriate"
2204 echo 'ipv6 kit and compile beforehand.'
2205 exit 1
2206 fi
2207 fi
2208fi
2209
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002210# Check for --with-doc-strings
2211AC_MSG_CHECKING(for --with-doc-strings)
2212AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002213 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002214
2215if test -z "$with_doc_strings"
2216then with_doc_strings="yes"
2217fi
2218if test "$with_doc_strings" != "no"
2219then
2220 AC_DEFINE(WITH_DOC_STRINGS, 1,
2221 [Define if you want documentation strings in extension modules])
2222fi
2223AC_MSG_RESULT($with_doc_strings)
2224
Neil Schemenauera35c6882001-02-27 04:45:05 +00002225# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002226AC_MSG_CHECKING(for --with-tsc)
2227AC_ARG_WITH(tsc,
2228[ --with(out)-tsc enable/disable timestamp counter profile], [
2229if test "$withval" != no
2230then
2231 AC_DEFINE(WITH_TSC, 1,
2232 [Define to profile with the Pentium timestamp counter])
2233 AC_MSG_RESULT(yes)
2234else AC_MSG_RESULT(no)
2235fi],
2236[AC_MSG_RESULT(no)])
2237
2238# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002239AC_MSG_CHECKING(for --with-pymalloc)
2240AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002241 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002242
2243if test -z "$with_pymalloc"
2244then with_pymalloc="yes"
2245fi
2246if test "$with_pymalloc" != "no"
2247then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002248 AC_DEFINE(WITH_PYMALLOC, 1,
2249 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002250fi
2251AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002252
Barry Warsawef82cd72000-06-30 16:21:01 +00002253# Check for --with-wctype-functions
2254AC_MSG_CHECKING(for --with-wctype-functions)
2255AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002256 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2257[
Barry Warsawef82cd72000-06-30 16:21:01 +00002258if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002259then
2260 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2261 [Define if you want wctype.h functions to be used instead of the
2262 one supplied by Python itself. (see Include/unicodectype.h).])
2263 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002264else AC_MSG_RESULT(no)
2265fi],
2266[AC_MSG_RESULT(no)])
2267
Guido van Rossum68242b51996-05-28 22:53:03 +00002268# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002269AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002270DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002271
Guido van Rossume97ee181999-12-20 21:27:22 +00002272# the dlopen() function means we might want to use dynload_shlib.o. some
2273# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002274AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002275
2276# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2277# loading of modules.
2278AC_SUBST(DYNLOADFILE)
2279AC_MSG_CHECKING(DYNLOADFILE)
2280if test -z "$DYNLOADFILE"
2281then
2282 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002283 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2284 if test "$ac_cv_func_dlopen" = yes
2285 then DYNLOADFILE="dynload_shlib.o"
2286 else DYNLOADFILE="dynload_aix.o"
2287 fi
2288 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002289 BeOS*) DYNLOADFILE="dynload_beos.o";;
2290 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002291 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2292 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002293 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002294 *)
2295 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2296 # out any dynamic loading
2297 if test "$ac_cv_func_dlopen" = yes
2298 then DYNLOADFILE="dynload_shlib.o"
2299 else DYNLOADFILE="dynload_stub.o"
2300 fi
2301 ;;
2302 esac
2303fi
2304AC_MSG_RESULT($DYNLOADFILE)
2305if test "$DYNLOADFILE" != "dynload_stub.o"
2306then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002307 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2308 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002309fi
2310
Jack Jansenc49e5b72001-06-19 15:00:23 +00002311# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2312
2313AC_SUBST(MACHDEP_OBJS)
2314AC_MSG_CHECKING(MACHDEP_OBJS)
2315if test -z "$MACHDEP_OBJS"
2316then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002317 MACHDEP_OBJS=$extra_machdep_objs
2318else
2319 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002320fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002321AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002322
Guido van Rossum627b2d71993-12-24 10:39:16 +00002323# checks for library functions
Martin v. Löwisaef18b12008-03-24 13:31:16 +00002324AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2325 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002326 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002327 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002328 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002329 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002330 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002331 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002332 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002333 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002334 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002335 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002336
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002337# For some functions, having a definition is not sufficient, since
2338# we want to take their address.
2339AC_MSG_CHECKING(for chroot)
2340AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2341 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2342 AC_MSG_RESULT(yes),
2343 AC_MSG_RESULT(no)
2344)
2345AC_MSG_CHECKING(for link)
2346AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2347 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2348 AC_MSG_RESULT(yes),
2349 AC_MSG_RESULT(no)
2350)
2351AC_MSG_CHECKING(for symlink)
2352AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2353 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2354 AC_MSG_RESULT(yes),
2355 AC_MSG_RESULT(no)
2356)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002357AC_MSG_CHECKING(for fchdir)
2358AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2359 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2360 AC_MSG_RESULT(yes),
2361 AC_MSG_RESULT(no)
2362)
2363AC_MSG_CHECKING(for fsync)
2364AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002365 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002366 AC_MSG_RESULT(yes),
2367 AC_MSG_RESULT(no)
2368)
2369AC_MSG_CHECKING(for fdatasync)
2370AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2371 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2372 AC_MSG_RESULT(yes),
2373 AC_MSG_RESULT(no)
2374)
Christian Heimes0e9ab5f2008-03-21 23:49:44 +00002375AC_MSG_CHECKING(for epoll)
2376AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2377 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2378 AC_MSG_RESULT(yes),
2379 AC_MSG_RESULT(no)
2380)
2381AC_MSG_CHECKING(for kqueue)
2382AC_TRY_COMPILE([
2383#include <sys/types.h>
2384#include <sys/event.h>
2385 ], int x=kqueue(),
2386 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2387 AC_MSG_RESULT(yes),
2388 AC_MSG_RESULT(no)
2389)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002390# On some systems (eg. FreeBSD 5), we would find a definition of the
2391# functions ctermid_r, setgroups in the library, but no prototype
2392# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2393# address to avoid compiler warnings and potential miscompilations
2394# because of the missing prototypes.
2395
2396AC_MSG_CHECKING(for ctermid_r)
2397AC_TRY_COMPILE([
2398#include "confdefs.h"
2399#include <stdio.h>
2400], void* p = ctermid_r,
2401 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2402 AC_MSG_RESULT(yes),
2403 AC_MSG_RESULT(no)
2404)
2405
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002406AC_MSG_CHECKING(for flock)
2407AC_TRY_COMPILE([
2408#include "confdefs.h"
2409#include <sys/file.h>
2410], void* p = flock,
2411 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2412 AC_MSG_RESULT(yes),
2413 AC_MSG_RESULT(no)
2414)
2415
2416AC_MSG_CHECKING(for getpagesize)
2417AC_TRY_COMPILE([
2418#include "confdefs.h"
2419#include <unistd.h>
2420], void* p = getpagesize,
2421 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2422 AC_MSG_RESULT(yes),
2423 AC_MSG_RESULT(no)
2424)
2425
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002426dnl check for true
2427AC_CHECK_PROGS(TRUE, true, /bin/true)
2428
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002429dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2430dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002431AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002432 AC_CHECK_LIB(resolv, inet_aton)
2433)
2434
Martin v. Löwisa51d5c82007-12-04 08:37:59 +00002435# On Tru64, chflags seems to be present, but calling it will
2436# exit Python
2437AC_MSG_CHECKING(for chflags)
2438AC_TRY_RUN([
2439#include <sys/stat.h>
2440#include <unistd.h>
2441int main(int argc, char*argv[])
2442{
2443 if(chflags(argv[0], 0) != 0)
2444 return 1;
2445 return 0;
2446}
2447],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2448 AC_MSG_RESULT(yes),
2449 AC_MSG_RESULT(no)
2450)
2451
2452AC_MSG_CHECKING(for lchflags)
2453AC_TRY_RUN([
2454#include <sys/stat.h>
2455#include <unistd.h>
2456int main(int argc, char*argv[])
2457{
2458 if(lchflags(argv[0], 0) != 0)
2459 return 1;
2460 return 0;
2461}
2462],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2463 AC_MSG_RESULT(yes),
2464 AC_MSG_RESULT(no)
2465)
2466
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002467dnl Check if system zlib has *Copy() functions
Ronald Oussorenf8752642006-07-06 10:13:35 +00002468dnl
2469dnl On MacOSX the linker will search for dylibs on the entire linker path
2470dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2471dnl to revert to a more traditional unix behaviour and make it possible to
2472dnl override the system libz with a local static library of libz. Temporarily
2473dnl add that flag to our CFLAGS as well to ensure that we check the version
2474dnl of libz that will be used by setup.py.
2475dnl The -L/usr/local/lib is needed as wel to get the same compilation
2476dnl environment as setup.py (and leaving it out can cause configure to use the
2477dnl wrong version of the library)
2478case $ac_sys_system/$ac_sys_release in
2479Darwin/*)
2480 _CUR_CFLAGS="${CFLAGS}"
2481 _CUR_LDFLAGS="${LDFLAGS}"
2482 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2483 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2484 ;;
2485esac
2486
Neal Norwitz6e73aaa2006-06-12 03:33:09 +00002487AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2488
Ronald Oussorenf8752642006-07-06 10:13:35 +00002489case $ac_sys_system/$ac_sys_release in
2490Darwin/*)
2491 CFLAGS="${_CUR_CFLAGS}"
2492 LDFLAGS="${_CUR_LDFLAGS}"
2493 ;;
2494esac
2495
Martin v. Löwise9416172003-05-03 10:12:45 +00002496AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002497AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002498#include "confdefs.h"
2499#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002500], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002501 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2502 AC_MSG_RESULT(yes),
2503 AC_MSG_RESULT(no)
2504)
2505
2506AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002507AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002508#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002509#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002510#include <sys/socket.h>
2511#include <netinet/in.h>
2512#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002513], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002514 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2515 AC_MSG_RESULT(yes),
2516 AC_MSG_RESULT(no)
2517)
2518
2519AC_MSG_CHECKING(for inet_pton)
2520AC_TRY_COMPILE([
2521#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002522#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002523#include <sys/socket.h>
2524#include <netinet/in.h>
2525#include <arpa/inet.h>
2526], void* p = inet_pton,
2527 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2528 AC_MSG_RESULT(yes),
2529 AC_MSG_RESULT(no)
2530)
2531
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002532# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002533AC_MSG_CHECKING(for setgroups)
2534AC_TRY_COMPILE([
2535#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002536#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002537#ifdef HAVE_GRP_H
2538#include <grp.h>
2539#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002540],
2541void* p = setgroups,
2542 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2543 AC_MSG_RESULT(yes),
2544 AC_MSG_RESULT(no)
2545)
2546
Fred Drake8cef4cf2000-06-28 16:40:38 +00002547# check for openpty and forkpty
2548
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002549AC_CHECK_FUNCS(openpty,,
2550 AC_CHECK_LIB(util,openpty,
2551 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2552 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2553 )
2554)
2555AC_CHECK_FUNCS(forkpty,,
2556 AC_CHECK_LIB(util,forkpty,
2557 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2558 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2559 )
2560)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002561
Brett Cannonaa5778d2008-03-18 04:09:00 +00002562# Stuff for expat.
2563AC_CHECK_FUNCS(memmove)
2564
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002565# check for long file support functions
2566AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2567
Brett Cannonaa5778d2008-03-18 04:09:00 +00002568AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002569AC_CHECK_FUNCS(getpgrp,
2570 AC_TRY_COMPILE([#include <unistd.h>],
2571 [getpgrp(0);],
2572 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2573 [Define if getpgrp() must be called as getpgrp(0).])
2574 )
2575)
Jack Jansen150753c2003-03-29 22:07:47 +00002576AC_CHECK_FUNCS(setpgrp,
2577 AC_TRY_COMPILE([#include <unistd.h>],
2578 [setpgrp(0,0);],
2579 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2580 [Define if setpgrp() must be called as setpgrp(0, 0).])
2581 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002582)
2583AC_CHECK_FUNCS(gettimeofday,
2584 AC_TRY_COMPILE([#include <sys/time.h>],
2585 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2586 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2587 [Define if gettimeofday() does not have second (timezone) argument
2588 This is the case on Motorola V4 (R40V4.2)])
2589 )
2590)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002591
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002592AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002593AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002594#if defined(MAJOR_IN_MKDEV)
2595#include <sys/mkdev.h>
2596#elif defined(MAJOR_IN_SYSMACROS)
2597#include <sys/sysmacros.h>
2598#else
2599#include <sys/types.h>
2600#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002601],[
2602 makedev(major(0),minor(0));
2603],[
2604 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2605 [Define to 1 if you have the device macros.])
2606 AC_MSG_RESULT(yes)
2607],[
2608 AC_MSG_RESULT(no)
2609])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002610
2611# On OSF/1 V5.1, getaddrinfo is available, but a define
2612# for [no]getaddrinfo in netdb.h.
2613AC_MSG_CHECKING(for getaddrinfo)
2614AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002615#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002616#include <sys/socket.h>
2617#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002618#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002619],[
2620getaddrinfo(NULL, NULL, NULL, NULL);
2621], [
2622AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002623AC_MSG_CHECKING(getaddrinfo bug)
2624AC_TRY_RUN([
2625#include <sys/types.h>
2626#include <netdb.h>
2627#include <string.h>
2628#include <sys/socket.h>
2629#include <netinet/in.h>
2630
2631main()
2632{
2633 int passive, gaierr, inet4 = 0, inet6 = 0;
2634 struct addrinfo hints, *ai, *aitop;
2635 char straddr[INET6_ADDRSTRLEN], strport[16];
2636
2637 for (passive = 0; passive <= 1; passive++) {
2638 memset(&hints, 0, sizeof(hints));
2639 hints.ai_family = AF_UNSPEC;
2640 hints.ai_flags = passive ? AI_PASSIVE : 0;
2641 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002642 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002643 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2644 (void)gai_strerror(gaierr);
2645 goto bad;
2646 }
2647 for (ai = aitop; ai; ai = ai->ai_next) {
2648 if (ai->ai_addr == NULL ||
2649 ai->ai_addrlen == 0 ||
2650 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2651 straddr, sizeof(straddr), strport, sizeof(strport),
2652 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2653 goto bad;
2654 }
2655 switch (ai->ai_family) {
2656 case AF_INET:
2657 if (strcmp(strport, "54321") != 0) {
2658 goto bad;
2659 }
2660 if (passive) {
2661 if (strcmp(straddr, "0.0.0.0") != 0) {
2662 goto bad;
2663 }
2664 } else {
2665 if (strcmp(straddr, "127.0.0.1") != 0) {
2666 goto bad;
2667 }
2668 }
2669 inet4++;
2670 break;
2671 case AF_INET6:
2672 if (strcmp(strport, "54321") != 0) {
2673 goto bad;
2674 }
2675 if (passive) {
2676 if (strcmp(straddr, "::") != 0) {
2677 goto bad;
2678 }
2679 } else {
2680 if (strcmp(straddr, "::1") != 0) {
2681 goto bad;
2682 }
2683 }
2684 inet6++;
2685 break;
2686 case AF_UNSPEC:
2687 goto bad;
2688 break;
2689 default:
2690 /* another family support? */
2691 break;
2692 }
2693 }
2694 }
2695
2696 if (!(inet4 == 0 || inet4 == 2))
2697 goto bad;
2698 if (!(inet6 == 0 || inet6 == 2))
2699 goto bad;
2700
2701 if (aitop)
2702 freeaddrinfo(aitop);
2703 exit(0);
2704
2705 bad:
2706 if (aitop)
2707 freeaddrinfo(aitop);
2708 exit(1);
2709}
2710],
2711AC_MSG_RESULT(good)
2712buggygetaddrinfo=no,
2713AC_MSG_RESULT(buggy)
2714buggygetaddrinfo=yes,
2715AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002716buggygetaddrinfo=yes)], [
2717AC_MSG_RESULT(no)
2718buggygetaddrinfo=yes
2719])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002720
2721if test "$buggygetaddrinfo" = "yes"; then
2722 if test "$ipv6" = "yes"; then
2723 echo 'Fatal: You must get working getaddrinfo() function.'
2724 echo ' or you can specify "--disable-ipv6"'.
2725 exit 1
2726 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002727else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002728 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002729fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002730AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002731
Guido van Rossum627b2d71993-12-24 10:39:16 +00002732# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002733AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002734AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002735AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002736AC_CHECK_MEMBERS([struct stat.st_rdev])
2737AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002738AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002739AC_CHECK_MEMBERS([struct stat.st_gen])
2740AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002741AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002742
2743AC_MSG_CHECKING(for time.h that defines altzone)
2744AC_CACHE_VAL(ac_cv_header_time_altzone,
2745[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2746 ac_cv_header_time_altzone=yes,
2747 ac_cv_header_time_altzone=no)])
2748AC_MSG_RESULT($ac_cv_header_time_altzone)
2749if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002750 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002751fi
2752
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002753was_it_defined=no
2754AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002755AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002756#include <sys/types.h>
2757#include <sys/select.h>
2758#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002759], [;], [
2760 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2761 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2762 (which you can't on SCO ODT 3.0).])
2763 was_it_defined=yes
2764])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002765AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002766
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002767AC_MSG_CHECKING(for addrinfo)
2768AC_CACHE_VAL(ac_cv_struct_addrinfo,
2769AC_TRY_COMPILE([
2770# include <netdb.h>],
2771 [struct addrinfo a],
2772 ac_cv_struct_addrinfo=yes,
2773 ac_cv_struct_addrinfo=no))
2774AC_MSG_RESULT($ac_cv_struct_addrinfo)
2775if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002776 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002777fi
2778
2779AC_MSG_CHECKING(for sockaddr_storage)
2780AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2781AC_TRY_COMPILE([
2782# include <sys/types.h>
2783# include <sys/socket.h>],
2784 [struct sockaddr_storage s],
2785 ac_cv_struct_sockaddr_storage=yes,
2786 ac_cv_struct_sockaddr_storage=no))
2787AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2788if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002789 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002790fi
2791
Guido van Rossum627b2d71993-12-24 10:39:16 +00002792# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002793
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002794AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002795AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002796
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002797works=no
2798AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002799AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2800 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2801)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002802AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002803
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002804works=no
2805AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002806AC_TRY_COMPILE([], [signed char c;], works=yes,
2807 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2808)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002809AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002810
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002811have_prototypes=no
2812AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002813AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2814 AC_DEFINE(HAVE_PROTOTYPES, 1,
2815 [Define if your compiler supports function prototype])
2816 have_prototypes=yes
2817])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002818AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002819
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002820works=no
2821AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002822AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002823#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002824int foo(int x, ...) {
2825 va_list va;
2826 va_start(va, x);
2827 va_arg(va, int);
2828 va_arg(va, char *);
2829 va_arg(va, double);
2830 return 0;
2831}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002832], [return foo(10, "", 3.14);], [
2833 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2834 [Define if your compiler supports variable length function prototypes
2835 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2836 works=yes
2837])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002838AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002839
Dave Cole331708b2004-08-09 04:51:41 +00002840# check for socketpair
2841AC_MSG_CHECKING(for socketpair)
2842AC_TRY_COMPILE([
2843#include <sys/types.h>
2844#include <sys/socket.h>
2845], void *x=socketpair,
2846 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2847 AC_MSG_RESULT(yes),
2848 AC_MSG_RESULT(no)
2849)
2850
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002851# check if sockaddr has sa_len member
2852AC_MSG_CHECKING(if sockaddr has sa_len member)
2853AC_TRY_COMPILE([#include <sys/types.h>
2854#include <sys/socket.h>],
2855[struct sockaddr x;
2856x.sa_len = 0;],
2857 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002858 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002859 AC_MSG_RESULT(no))
2860
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002861va_list_is_array=no
2862AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002863AC_TRY_COMPILE([
2864#ifdef HAVE_STDARG_PROTOTYPES
2865#include <stdarg.h>
2866#else
2867#include <varargs.h>
2868#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002869], [va_list list1, list2; list1 = list2;], , [
2870 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2871 va_list_is_array=yes
2872])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002873AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002874
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002875# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002876AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2877 [Define this if you have some version of gethostbyname_r()])
2878
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002879AC_CHECK_FUNC(gethostbyname_r, [
2880 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2881 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2882 OLD_CFLAGS=$CFLAGS
2883 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2884 AC_TRY_COMPILE([
2885# include <netdb.h>
2886 ], [
2887 char *name;
2888 struct hostent *he, *res;
2889 char buffer[2048];
2890 int buflen = 2048;
2891 int h_errnop;
2892
2893 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2894 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002895 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002896 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2897 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002898 AC_MSG_RESULT(yes)
2899 ], [
2900 AC_MSG_RESULT(no)
2901 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2902 AC_TRY_COMPILE([
2903# include <netdb.h>
2904 ], [
2905 char *name;
2906 struct hostent *he;
2907 char buffer[2048];
2908 int buflen = 2048;
2909 int h_errnop;
2910
2911 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2912 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002913 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002914 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2915 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002916 AC_MSG_RESULT(yes)
2917 ], [
2918 AC_MSG_RESULT(no)
2919 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2920 AC_TRY_COMPILE([
2921# include <netdb.h>
2922 ], [
2923 char *name;
2924 struct hostent *he;
2925 struct hostent_data data;
2926
2927 (void) gethostbyname_r(name, he, &data);
2928 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002929 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002930 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2931 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002932 AC_MSG_RESULT(yes)
2933 ], [
2934 AC_MSG_RESULT(no)
2935 ])
2936 ])
2937 ])
2938 CFLAGS=$OLD_CFLAGS
2939], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002940 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002941])
2942AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2943AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2944AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002945AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002946AC_SUBST(HAVE_GETHOSTBYNAME)
2947
Guido van Rossum627b2d71993-12-24 10:39:16 +00002948# checks for system services
2949# (none yet)
2950
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002951# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002952AC_CHECK_FUNC(__fpu_control,
2953 [],
2954 [AC_CHECK_LIB(ieee, __fpu_control)
2955])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002956
Guido van Rossum93274221997-05-09 02:42:00 +00002957# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002958AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002959AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002960 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2961[
Guido van Rossum93274221997-05-09 02:42:00 +00002962if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002963then
2964 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2965 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2966 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002967else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002968fi],
2969[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002970
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002971# check for --with-libm=...
2972AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002973case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002974Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002975BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002976*) LIBM=-lm
2977esac
Guido van Rossum93274221997-05-09 02:42:00 +00002978AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002979AC_ARG_WITH(libm,
2980 AC_HELP_STRING(--with-libm=STRING, math library),
2981[
Guido van Rossum93274221997-05-09 02:42:00 +00002982if test "$withval" = no
2983then LIBM=
2984 AC_MSG_RESULT(force LIBM empty)
2985elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002986then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002987 AC_MSG_RESULT(set LIBM="$withval")
2988else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002989fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002990[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002991
2992# check for --with-libc=...
2993AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002994AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002995AC_ARG_WITH(libc,
2996 AC_HELP_STRING(--with-libc=STRING, C library),
2997[
Guido van Rossum93274221997-05-09 02:42:00 +00002998if test "$withval" = no
2999then LIBC=
3000 AC_MSG_RESULT(force LIBC empty)
3001elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003002then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003003 AC_MSG_RESULT(set LIBC="$withval")
3004else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00003005fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003006[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00003007
Christian Heimes0a8143f2007-12-18 23:22:54 +00003008# ************************************
3009# * Check for mathematical functions *
3010# ************************************
Mark Dickinson265d7382008-04-21 22:32:24 +00003011
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003012LIBS_SAVE=$LIBS
3013LIBS="$LIBS $LIBM"
3014
Mark Dickinson265d7382008-04-21 22:32:24 +00003015# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of
3016# -0. on some architectures.
3017AC_MSG_CHECKING(whether tanh preserves the sign of zero)
3018AC_CACHE_VAL(ac_cv_tanh_preserves_zero_sign, [
3019AC_TRY_RUN([
3020#include <math.h>
Mark Dickinson7a3d8642008-04-22 00:54:27 +00003021#include <stdlib.h>
Mark Dickinson265d7382008-04-21 22:32:24 +00003022int main() {
3023 /* return 0 if either negative zeros don't exist
3024 on this platform or if negative zeros exist
3025 and tanh(-0.) == -0. */
3026 if (atan2(0., -1.) == atan2(-0., -1.) ||
3027 atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0);
3028 else exit(1);
3029}
3030],
3031ac_cv_tanh_preserves_zero_sign=yes,
3032ac_cv_tanh_preserves_zero_sign=no,
3033ac_cv_tanh_preserves_zero_sign=no)])
3034AC_MSG_RESULT($ac_cv_tanh_preserves_zero_sign)
3035if test "$ac_cv_tanh_preserves_zero_sign" = yes
3036then
3037 AC_DEFINE(TANH_PRESERVES_ZERO_SIGN, 1,
3038 [Define if tanh(-0.) is -0., or if platform doesn't have signed zeros])
3039fi
3040
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00003041AC_REPLACE_FUNCS(hypot)
Christian Heimes0a8143f2007-12-18 23:22:54 +00003042
Christian Heimes48723512008-01-20 14:28:28 +00003043AC_CHECK_FUNCS(acosh asinh atanh copysign expm1 finite isinf isnan log1p)
Christian Heimes0a8143f2007-12-18 23:22:54 +00003044
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003045LIBS=$LIBS_SAVE
3046
Guido van Rossumef2255b2000-03-10 22:30:29 +00003047# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003048AC_CHECK_HEADER(wchar.h, [
3049 AC_DEFINE(HAVE_WCHAR_H, 1,
3050 [Define if the compiler provides a wchar.h header file.])
3051 wchar_h="yes"
3052],
Guido van Rossumef2255b2000-03-10 22:30:29 +00003053wchar_h="no"
3054)
3055
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003056# determine wchar_t size
3057if test "$wchar_h" = yes
3058then
Guido van Rossum67b26592001-10-20 14:21:45 +00003059 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003060fi
3061
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003062AC_MSG_CHECKING(for UCS-4 tcl)
3063have_ucs4_tcl=no
3064AC_TRY_COMPILE([
3065#include <tcl.h>
3066#if TCL_UTF_MAX != 6
3067# error "NOT UCS4_TCL"
3068#endif], [], [
3069 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3070 have_ucs4_tcl=yes
3071])
3072AC_MSG_RESULT($have_ucs4_tcl)
3073
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003074# check whether wchar_t is signed or not
3075if test "$wchar_h" = yes
3076then
3077 # check whether wchar_t is signed or not
3078 AC_MSG_CHECKING(whether wchar_t is signed)
3079 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3080 AC_TRY_RUN([
3081 #include <wchar.h>
3082 int main()
3083 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00003084 /* Success: exit code 0 */
3085 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003086 }
3087 ],
3088 ac_cv_wchar_t_signed=yes,
3089 ac_cv_wchar_t_signed=no,
3090 ac_cv_wchar_t_signed=yes)])
3091 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3092fi
3093
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003094AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003095dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003096AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00003097 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
3098 [],
3099 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003100
3101if test $enable_unicode = yes
3102then
Martin v. Löwisfd917792001-06-27 20:22:04 +00003103 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003104 case "$have_ucs4_tcl" in
3105 yes) enable_unicode="ucs4"
3106 ;;
3107 *) enable_unicode="ucs2"
3108 ;;
3109 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003110fi
3111
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003112AH_TEMPLATE(Py_UNICODE_SIZE,
3113 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003114case "$enable_unicode" in
3115ucs2) unicode_size="2"
3116 AC_DEFINE(Py_UNICODE_SIZE,2)
3117 ;;
3118ucs4) unicode_size="4"
3119 AC_DEFINE(Py_UNICODE_SIZE,4)
3120 ;;
3121esac
3122
Martin v. Löwis11437992002-04-12 09:54:03 +00003123AH_TEMPLATE(PY_UNICODE_TYPE,
3124 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003125
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003126AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003127if test "$enable_unicode" = "no"
3128then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003129 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003130 AC_MSG_RESULT(not used)
3131else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00003132 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003133 AC_DEFINE(Py_USING_UNICODE, 1,
3134 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003135
3136 # wchar_t is only usable if it maps to an unsigned type
3137 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003138 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003139 then
3140 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003141 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3142 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003143 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003144 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003145 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3146 elif test "$ac_cv_sizeof_short" = "$unicode_size"
3147 then
3148 PY_UNICODE_TYPE="unsigned short"
3149 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3150 elif test "$ac_cv_sizeof_long" = "$unicode_size"
3151 then
3152 PY_UNICODE_TYPE="unsigned long"
3153 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3154 else
3155 PY_UNICODE_TYPE="no type found"
3156 fi
3157 AC_MSG_RESULT($PY_UNICODE_TYPE)
3158fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00003159
3160# check for endianness
3161AC_C_BIGENDIAN
Ronald Oussoren988117f2006-04-29 11:31:35 +00003162AH_VERBATIM([WORDS_BIGENDIAN],
3163[
3164 /* Define to 1 if your processor stores words with the most significant byte
3165 first (like Motorola and SPARC, unlike Intel and VAX).
3166
3167 The block below does compile-time checking for endianness on platforms
3168 that use GCC and therefore allows compiling fat binaries on OSX by using
3169 '-arch ppc -arch i386' as the compile flags. The phrasing was choosen
3170 such that the configure-result is used on systems that don't use GCC.
3171 */
3172#ifdef __BIG_ENDIAN__
3173#define WORDS_BIGENDIAN 1
3174#else
3175#ifndef __LITTLE_ENDIAN__
3176#undef WORDS_BIGENDIAN
3177#endif
3178#endif])
Guido van Rossumef2255b2000-03-10 22:30:29 +00003179
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003180# Check whether right shifting a negative integer extends the sign bit
3181# or fills with zeros (like the Cray J90, according to Tim Peters).
3182AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003183AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003184AC_TRY_RUN([
3185int main()
3186{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003187 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003188}
Guido van Rossum3065c942001-09-17 04:03:14 +00003189],
3190ac_cv_rshift_extends_sign=yes,
3191ac_cv_rshift_extends_sign=no,
3192ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003193AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3194if test "$ac_cv_rshift_extends_sign" = no
3195then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003196 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3197 [Define if i>>j for signed int i does not extend the sign bit
3198 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003199fi
3200
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003201# check for getc_unlocked and related locking functions
3202AC_MSG_CHECKING(for getc_unlocked() and friends)
3203AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3204AC_TRY_LINK([#include <stdio.h>],[
3205 FILE *f = fopen("/dev/null", "r");
3206 flockfile(f);
3207 getc_unlocked(f);
3208 funlockfile(f);
3209], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3210AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3211if test "$ac_cv_have_getc_unlocked" = yes
3212then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003213 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3214 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003215fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003216
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003217# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003218# save the value of LIBS so we don't actually link Python with readline
3219LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003220AC_CHECK_LIB(readline, readline)
3221if test "$ac_cv_have_readline_readline" = no
3222then
3223 AC_CHECK_LIB(termcap, readline)
3224fi
3225
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003226# check for readline 2.1
3227AC_CHECK_LIB(readline, rl_callback_handler_install,
3228 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003229 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003230
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003231# check for readline 2.2
3232AC_TRY_CPP([#include <readline/readline.h>],
3233have_readline=yes, have_readline=no)
3234if test $have_readline = yes
3235then
3236 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3237 [readline/readline.h],
3238 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3239 [Define if you have readline 2.2]), )
3240fi
3241
Martin v. Löwis0daad592001-09-30 21:09:59 +00003242# check for readline 4.0
3243AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003244 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003245 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00003246
Martin v. Löwis58bd49f2007-09-04 13:13:14 +00003247# also in 4.0
3248AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3249 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
3250 [Define if you have readline 4.0]), , )
3251
Guido van Rossum353ae582001-07-10 16:45:32 +00003252# check for readline 4.2
3253AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003254 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003255 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00003256
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003257# also in readline 4.2
3258AC_TRY_CPP([#include <readline/readline.h>],
3259have_readline=yes, have_readline=no)
3260if test $have_readline = yes
3261then
3262 AC_EGREP_HEADER([extern int rl_catch_signals;],
3263 [readline/readline.h],
3264 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3265 [Define if you can turn off readline's signal handling.]), )
3266fi
3267
Martin v. Löwis82bca632006-02-10 20:49:30 +00003268# End of readline checks: restore LIBS
3269LIBS=$LIBS_no_readline
3270
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003271AC_MSG_CHECKING(for broken nice())
3272AC_CACHE_VAL(ac_cv_broken_nice, [
3273AC_TRY_RUN([
3274int main()
3275{
3276 int val1 = nice(1);
3277 if (val1 != -1 && val1 == nice(2))
3278 exit(0);
3279 exit(1);
3280}
Guido van Rossum3065c942001-09-17 04:03:14 +00003281],
3282ac_cv_broken_nice=yes,
3283ac_cv_broken_nice=no,
3284ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003285AC_MSG_RESULT($ac_cv_broken_nice)
3286if test "$ac_cv_broken_nice" = yes
3287then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003288 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3289 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003290fi
3291
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003292AC_MSG_CHECKING(for broken poll())
3293AC_TRY_RUN([
3294#include <poll.h>
3295
3296int main (void)
3297 {
3298 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3299
3300 close (42);
3301
3302 int poll_test = poll (&poll_struct, 1, 0);
3303
3304 if (poll_test < 0)
3305 {
3306 exit(0);
3307 }
3308 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3309 {
3310 exit(0);
3311 }
3312 else
3313 {
3314 exit(1);
3315 }
3316 }
3317],
3318ac_cv_broken_poll=yes,
3319ac_cv_broken_poll=no,
3320ac_cv_broken_poll=no)
3321AC_MSG_RESULT($ac_cv_broken_poll)
3322if test "$ac_cv_broken_poll" = yes
3323then
3324 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3325 [Define if poll() sets errno on invalid file descriptors.])
3326fi
3327
Brett Cannon43802422005-02-10 20:48:03 +00003328# Before we can test tzset, we need to check if struct tm has a tm_zone
3329# (which is not required by ISO C or UNIX spec) and/or if we support
3330# tzname[]
3331AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003332
Brett Cannon43802422005-02-10 20:48:03 +00003333# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003334AC_MSG_CHECKING(for working tzset())
3335AC_CACHE_VAL(ac_cv_working_tzset, [
3336AC_TRY_RUN([
3337#include <stdlib.h>
3338#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003339#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003340
3341#if HAVE_TZNAME
3342extern char *tzname[];
3343#endif
3344
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003345int main()
3346{
Brett Cannon18367812003-09-19 00:59:16 +00003347 /* Note that we need to ensure that not only does tzset(3)
3348 do 'something' with localtime, but it works as documented
3349 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003350 This includes making sure that tzname is set properly if
3351 tm->tm_zone does not exist since it is the alternative way
3352 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003353
3354 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003355 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003356 */
3357
Brett Cannon43802422005-02-10 20:48:03 +00003358 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003359 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3360
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003361 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003362 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003363 if (localtime(&groundhogday)->tm_hour != 0)
3364 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003365#if HAVE_TZNAME
3366 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3367 if (strcmp(tzname[0], "UTC") ||
3368 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3369 exit(1);
3370#endif
Brett Cannon18367812003-09-19 00:59:16 +00003371
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003372 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003373 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003374 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003375 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003376#if HAVE_TZNAME
3377 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3378 exit(1);
3379#endif
Brett Cannon18367812003-09-19 00:59:16 +00003380
3381 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3382 tzset();
3383 if (localtime(&groundhogday)->tm_hour != 11)
3384 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003385#if HAVE_TZNAME
3386 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3387 exit(1);
3388#endif
3389
3390#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003391 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3392 exit(1);
3393 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3394 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003395#endif
Brett Cannon18367812003-09-19 00:59:16 +00003396
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003397 exit(0);
3398}
3399],
3400ac_cv_working_tzset=yes,
3401ac_cv_working_tzset=no,
3402ac_cv_working_tzset=no)])
3403AC_MSG_RESULT($ac_cv_working_tzset)
3404if test "$ac_cv_working_tzset" = yes
3405then
3406 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3407 [Define if tzset() actually switches the local timezone in a meaningful way.])
3408fi
3409
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003410# Look for subsecond timestamps in struct stat
3411AC_MSG_CHECKING(for tv_nsec in struct stat)
3412AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3413AC_TRY_COMPILE([#include <sys/stat.h>], [
3414struct stat st;
3415st.st_mtim.tv_nsec = 1;
3416],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003417ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003418ac_cv_stat_tv_nsec=no,
3419ac_cv_stat_tv_nsec=no))
3420AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3421if test "$ac_cv_stat_tv_nsec" = yes
3422then
3423 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3424 [Define if you have struct stat.st_mtim.tv_nsec])
3425fi
3426
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003427# Look for BSD style subsecond timestamps in struct stat
3428AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3429AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3430AC_TRY_COMPILE([#include <sys/stat.h>], [
3431struct stat st;
3432st.st_mtimespec.tv_nsec = 1;
3433],
3434ac_cv_stat_tv_nsec2=yes,
3435ac_cv_stat_tv_nsec2=no,
3436ac_cv_stat_tv_nsec2=no))
3437AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3438if test "$ac_cv_stat_tv_nsec2" = yes
3439then
3440 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3441 [Define if you have struct stat.st_mtimensec])
3442fi
3443
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003444# On HP/UX 11.0, mvwdelch is a block with a return statement
3445AC_MSG_CHECKING(whether mvwdelch is an expression)
3446AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3447AC_TRY_COMPILE([#include <curses.h>], [
3448 int rtn;
3449 rtn = mvwdelch(0,0,0);
3450], ac_cv_mvwdelch_is_expression=yes,
3451 ac_cv_mvwdelch_is_expression=no,
3452 ac_cv_mvwdelch_is_expression=yes))
3453AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3454
3455if test "$ac_cv_mvwdelch_is_expression" = yes
3456then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003457 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3458 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003459fi
3460
3461AC_MSG_CHECKING(whether WINDOW has _flags)
3462AC_CACHE_VAL(ac_cv_window_has_flags,
3463AC_TRY_COMPILE([#include <curses.h>], [
3464 WINDOW *w;
3465 w->_flags = 0;
3466], ac_cv_window_has_flags=yes,
3467 ac_cv_window_has_flags=no,
3468 ac_cv_window_has_flags=no))
3469AC_MSG_RESULT($ac_cv_window_has_flags)
3470
3471
3472if test "$ac_cv_window_has_flags" = yes
3473then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003474 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3475 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003476fi
3477
Walter Dörwald4994d952006-06-19 08:07:50 +00003478AC_MSG_CHECKING(for is_term_resized)
3479AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3480 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3481 AC_MSG_RESULT(yes),
3482 AC_MSG_RESULT(no)
3483)
3484
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003485AC_MSG_CHECKING(for resize_term)
3486AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3487 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003488 AC_MSG_RESULT(yes),
3489 AC_MSG_RESULT(no)
3490)
3491
Walter Dörwald05fdbf12006-06-19 08:14:09 +00003492AC_MSG_CHECKING(for resizeterm)
3493AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3494 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
Walter Dörwald4994d952006-06-19 08:07:50 +00003495 AC_MSG_RESULT(yes),
3496 AC_MSG_RESULT(no)
3497)
3498
Martin v. Löwisfefbc202006-10-17 18:59:23 +00003499AC_MSG_CHECKING(for /dev/ptmx)
3500
3501if test -r /dev/ptmx
3502then
3503 AC_MSG_RESULT(yes)
3504 AC_DEFINE(HAVE_DEV_PTMX, 1,
3505 [Define if we have /dev/ptmx.])
3506else
3507 AC_MSG_RESULT(no)
3508fi
3509
3510AC_MSG_CHECKING(for /dev/ptc)
3511
3512if test -r /dev/ptc
3513then
3514 AC_MSG_RESULT(yes)
3515 AC_DEFINE(HAVE_DEV_PTC, 1,
3516 [Define if we have /dev/ptc.])
3517else
3518 AC_MSG_RESULT(no)
3519fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003520
Brett Cannon09d12362006-05-11 05:11:33 +00003521AC_MSG_CHECKING(for %zd printf() format support)
3522AC_TRY_RUN([#include <stdio.h>
3523#include <stddef.h>
3524#include <string.h>
3525
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003526#ifdef HAVE_SYS_TYPES_H
3527#include <sys/types.h>
3528#endif
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003529
3530#ifdef HAVE_SSIZE_T
3531typedef ssize_t Py_ssize_t;
3532#elif SIZEOF_VOID_P == SIZEOF_LONG
3533typedef long Py_ssize_t;
3534#else
3535typedef int Py_ssize_t;
3536#endif
Brett Cannon09d12362006-05-11 05:11:33 +00003537
Christian Heimesdb3d6cb2007-12-16 21:39:43 +00003538int main()
3539{
3540 char buffer[256];
3541
Brett Cannon09d12362006-05-11 05:11:33 +00003542 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3543 return 1;
3544
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003545 if (strcmp(buffer, "123"))
Brett Cannon09d12362006-05-11 05:11:33 +00003546 return 1;
Neal Norwitz4a8fbdb2006-09-22 08:16:26 +00003547
3548 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3549 return 1;
3550
3551 if (strcmp(buffer, "-123"))
3552 return 1;
3553
Brett Cannon09d12362006-05-11 05:11:33 +00003554 return 0;
3555}],
3556[AC_MSG_RESULT(yes)
3557 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3558 AC_MSG_RESULT(no))
3559
Martin v. Löwis01c04012002-11-11 14:58:44 +00003560AC_CHECK_TYPE(socklen_t,,
3561 AC_DEFINE(socklen_t,int,
3562 Define to `int' if <sys/socket.h> does not define.),[
3563#ifdef HAVE_SYS_TYPES_H
3564#include <sys/types.h>
3565#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003566#ifdef HAVE_SYS_SOCKET_H
3567#include <sys/socket.h>
3568#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003569])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003570
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003571AC_SUBST(THREADHEADERS)
3572
3573for h in `(cd $srcdir;echo Python/thread_*.h)`
3574do
3575 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3576done
3577
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003578AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003579SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003580AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003581for dir in $SRCDIRS; do
3582 if test ! -d $dir; then
3583 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003584 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003585done
3586AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003587
Guido van Rossum627b2d71993-12-24 10:39:16 +00003588# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003589AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3590AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003591
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003592echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003593if test ! -f Modules/Setup
3594then
3595 cp $srcdir/Modules/Setup.dist Modules/Setup
3596fi
3597
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003598echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003599if test ! -f Modules/Setup.local
3600then
3601 echo "# Edit this file for local setup changes" >Modules/Setup.local
3602fi
3603
3604echo "creating Makefile"
3605$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3606 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003607 Modules/Setup.local Modules/Setup
Skip Montanaro7221d932007-08-22 19:02:16 +00003608
3609case $ac_sys_system in
3610BeOS)
3611 AC_MSG_WARN([
3612
3613 Support for BeOS is deprecated as of Python 2.6.
3614 See PEP 11 for the gory details.
3615 ])
3616 ;;
3617*) ;;
3618esac
3619
Neil Schemenauer66252162001-02-19 04:47:42 +00003620mv config.c Modules