blob: 43d6ae0ee4afdbc4cb7f7204f373eae67b324747 [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)
Guido van Rossum0c4eb622006-03-30 16:19:24 +00004m4_define(PYTHON_VERSION, 3.0)
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
Guido van Rossum76be6ed1995-01-02 18:33:54 +00006AC_REVISION($Revision$)
Thomas Wouters47b49bf2007-08-30 22:15:33 +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
Thomas Wouters477c8d52006-05-27 19:21:47 +000063AC_ARG_ENABLE(universalsdk,
Christian Heimes68f5fbe2008-02-14 08:27:37 +000064 AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)),
Thomas Wouters477c8d52006-05-27 19:21:47 +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=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000100 FRAMEWORKINSTALLFIRST=
101 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000102 FRAMEWORKALTINSTALLFIRST=
103 FRAMEWORKALTINSTALLLAST=
104 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
Thomas Wouters477c8d52006-05-27 19:21:47 +0000116 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
117 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000118 FRAMEWORKALTINSTALLFIRST="${FRAMEWORKINSTALLFIRST} bininstall maninstall"
119 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
120 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
Thomas Wouters477c8d52006-05-27 19:21:47 +0000126
127 # Add makefiles for Mac specific code to the list of output
128 # files:
Thomas Wouters73e5a5b2006-06-08 15:35:45 +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=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000138 FRAMEWORKINSTALLFIRST=
139 FRAMEWORKINSTALLLAST=
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000140 FRAMEWORKALTINSTALLFIRST=
141 FRAMEWORKALTINSTALLLAST=
142 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)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000153AC_SUBST(FRAMEWORKINSTALLFIRST)
154AC_SUBST(FRAMEWORKINSTALLLAST)
Thomas Wouters73e5a5b2006-06-08 15:35:45 +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.
Thomas Wouters89f507f2006-12-13 04:49:30 +0000204 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@ | OpenBSD/4.@<:@0@:>@)
Christian Heimes5b5e81c2007-12-31 16:14:33 +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 ;;
Thomas Wouters89f507f2006-12-13 04:49:30 +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])
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000215 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 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000245 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
246 # disables platform specific features beyond repair.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000247 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000248 # has no effect, don't bother defining them
249 Darwin/@<:@789@:>@.*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000250 define_xopen_source=no
251 ;;
252
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)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000332AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000333CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Thomas Wouters477c8d52006-05-27 19:21:47 +0000334EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000335
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +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=;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000365 Monterey*)
366 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000367 without_gcc=;;
368 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000369 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000370AC_MSG_RESULT($without_gcc)
371
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000372# If the user switches compilers, we can't believe the cache
373if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
374then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000375 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
376(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000377fi
378
Guido van Rossum627b2d71993-12-24 10:39:16 +0000379AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000380
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000381AC_SUBST(CXX)
382AC_SUBST(MAINCC)
383AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
384AC_ARG_WITH(cxx_main,
385 AC_HELP_STRING([--with-cxx-main=<compiler>],
386 [compile main() and link python executable with C++ compiler]),
387[
388
389 case $withval in
390 no) with_cxx_main=no
391 MAINCC='$(CC)';;
392 yes) with_cxx_main=yes
393 MAINCC='$(CXX)';;
394 *) with_cxx_main=yes
395 MAINCC=$withval
396 if test -z "$CXX"
397 then
398 CXX=$withval
399 fi;;
400 esac], [
401 with_cxx_main=no
402 MAINCC='$(CC)'
403])
404AC_MSG_RESULT($with_cxx_main)
405
406preset_cxx="$CXX"
407if test -z "$CXX"
408then
409 case "$CC" in
410 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
411 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
412 esac
413 if test "$CXX" = "notfound"
414 then
415 CXX=""
416 fi
417fi
418if test -z "$CXX"
419then
420 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
421 if test "$CXX" = "notfound"
422 then
423 CXX=""
424 fi
425fi
426if test "$preset_cxx" != "$CXX"
427then
428 AC_MSG_WARN([
429
430 By default, distutils will build C++ extension modules with "$CXX".
431 If this is not intended, then set CXX on the configure command line.
432 ])
433fi
434
435
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000436# checks for UNIX variants that set C preprocessor variables
437AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000438
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000439# Check for unsupported systems
440case $ac_sys_system/$ac_sys_release in
Guido van Rossumcd16bf62007-06-13 18:07:49 +0000441atheos*|Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000442 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
443 echo See README for details.
444 exit 1;;
445esac
446
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000447AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000448AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000449AC_ARG_WITH(suffix,
450 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
451[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000452 case $withval in
453 no) EXEEXT=;;
454 yes) EXEEXT=.exe;;
455 *) EXEEXT=$withval;;
456 esac])
457AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000458
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000459# Test whether we're running on a non-case-sensitive system, in which
460# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000461AC_SUBST(BUILDEXEEXT)
462AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000463if test ! -d CaseSensitiveTestDir; then
464mkdir CaseSensitiveTestDir
465fi
466
467if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000468then
Jack Jansen1999ef42001-12-06 21:47:20 +0000469 AC_MSG_RESULT(yes)
470 BUILDEXEEXT=.exe
471else
472 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000473 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000474fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000475rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000476
Guido van Rossumdd997f71998-10-07 19:58:26 +0000477case $MACHDEP in
478bsdos*)
479 case $CC in
480 gcc) CC="$CC -D_HAVE_BSDI";;
481 esac;;
482esac
483
Guido van Rossum84561611997-08-21 00:08:11 +0000484case $ac_sys_system in
485hp*|HP*)
486 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000487 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000488 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000489Monterey*)
490 case $CC in
491 cc) CC="$CC -Wl,-Bexport";;
492 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000493SunOS*)
494 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000495 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000496 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000497esac
498
Martin v. Löwise8964d42001-03-06 12:09:07 +0000499
Neil Schemenauer61c51152001-01-26 16:18:16 +0000500AC_SUBST(LIBRARY)
501AC_MSG_CHECKING(LIBRARY)
502if test -z "$LIBRARY"
503then
504 LIBRARY='libpython$(VERSION).a'
505fi
506AC_MSG_RESULT($LIBRARY)
507
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000508# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000509# name of the library into which to insert object files). BLDLIBRARY is also
510# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
511# is blank as the main program is not linked directly against LDLIBRARY.
512# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
513# systems without shared libraries, LDLIBRARY is the same as LIBRARY
514# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
515# DLLLIBRARY is the shared (i.e., DLL) library.
516#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000517# RUNSHARED is used to run shared python without installed libraries
518#
519# INSTSONAME is the name of the shared library that will be use to install
520# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000521AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000522AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000523AC_SUBST(BLDLIBRARY)
524AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000525AC_SUBST(INSTSONAME)
526AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000527LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000528BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000529INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000530DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000531LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000532RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000533
Guido van Rossumfb842551997-08-06 23:42:07 +0000534# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000535# If CXX is set, and if it is needed to link a main function that was
536# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
537# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000538# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000539# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000540AC_SUBST(LINKCC)
541AC_MSG_CHECKING(LINKCC)
542if test -z "$LINKCC"
543then
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000544 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000545 case $ac_sys_system in
546 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000547 exp_extra="\"\""
548 if test $ac_sys_release -ge 5 -o \
549 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
550 exp_extra="."
551 fi
552 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000553 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000554 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000555 esac
556fi
557AC_MSG_RESULT($LINKCC)
558
Martin v. Löwis1142de32002-03-29 16:28:31 +0000559AC_MSG_CHECKING(for --enable-shared)
560AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000561 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000562
Martin v. Löwis1142de32002-03-29 16:28:31 +0000563if test -z "$enable_shared"
564then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000565 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000566 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000567 enable_shared="yes";;
568 *)
569 enable_shared="no";;
570 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000571fi
572AC_MSG_RESULT($enable_shared)
573
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000574AC_MSG_CHECKING(for --enable-profiling)
575AC_ARG_ENABLE(profiling,
576 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
577[ac_save_cc="$CC"
578 CC="$CC -pg"
579 AC_TRY_RUN([int main() { return 0; }],
580 ac_enable_profiling="yes",
581 ac_enable_profiling="no",
582 ac_enable_profiling="no")
583 CC="$ac_save_cc"])
584AC_MSG_RESULT($ac_enable_profiling)
585
586case "$ac_enable_profiling" in
587 "yes")
588 BASECFLAGS="-pg $BASECFLAGS"
589 LDFLAGS="-pg $LDFLAGS"
590 ;;
591esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000592
593AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000594
Guido van Rossumb8552162001-09-05 14:58:11 +0000595# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
596# library that we build, but we do not want to link against it (we
597# will find it with a -framework option). For this reason there is an
598# extra variable BLDLIBRARY against which Python and the extension
599# modules are linked, BLDLIBRARY. This is normally the same as
600# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000601if test "$enable_framework"
602then
603 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000604 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000605 BLDLIBRARY=''
606else
607 BLDLIBRARY='$(LDLIBRARY)'
608fi
609
Martin v. Löwis1142de32002-03-29 16:28:31 +0000610# Other platforms follow
611if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000612 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000613 case $ac_sys_system in
Martin v. Löwis1142de32002-03-29 16:28:31 +0000614 CYGWIN*)
615 LDLIBRARY='libpython$(VERSION).dll.a'
616 DLLLIBRARY='libpython$(VERSION).dll'
617 ;;
618 SunOS*)
619 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000620 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000621 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000622 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000623 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000624 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000625 LDLIBRARY='libpython$(VERSION).so'
626 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000627 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000628 case $ac_sys_system in
629 FreeBSD*)
630 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
631 ;;
632 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000633 INSTSONAME="$LDLIBRARY".$SOVERSION
634 ;;
635 hp*|HP*)
Thomas Wouters477c8d52006-05-27 19:21:47 +0000636 case `uname -m` in
637 ia64)
638 LDLIBRARY='libpython$(VERSION).so'
639 ;;
640 *)
641 LDLIBRARY='libpython$(VERSION).sl'
642 ;;
643 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000644 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000645 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000646 ;;
647 OSF*)
648 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000649 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000650 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000651 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000652 atheos*)
653 LDLIBRARY='libpython$(VERSION).so'
654 BLDLIBRARY='-L. -lpython$(VERSION)'
655 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
656 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000657 esac
Jason Tishler30765592003-09-04 11:04:06 +0000658else # shared is disabled
659 case $ac_sys_system in
660 CYGWIN*)
661 BLDLIBRARY='$(LIBRARY)'
662 LDLIBRARY='libpython$(VERSION).dll.a'
663 ;;
664 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000665fi
666
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000667AC_MSG_RESULT($LDLIBRARY)
668
Guido van Rossum627b2d71993-12-24 10:39:16 +0000669AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000670AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000671AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000672
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000673AC_SUBST(SVNVERSION)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000674AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000675if test $SVNVERSION = found
676then
677 SVNVERSION="svnversion \$(srcdir)"
678else
679 SVNVERSION="echo exported"
680fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000681
Neil Schemenauera42c8272001-03-31 00:01:55 +0000682case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000683bsdos*|hp*|HP*)
684 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000685 if test -z "$INSTALL"
686 then
687 INSTALL="${srcdir}/install-sh -c"
688 fi
689esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000690AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000691
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000692# Not every filesystem supports hard links
693AC_SUBST(LN)
694if test -z "$LN" ; then
695 case $ac_sys_system in
Guido van Rossumaef734b2001-01-10 21:09:12 +0000696 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000697 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000698 *) LN=ln;;
699 esac
700fi
701
Fred Drake9f715822001-07-11 06:27:00 +0000702# Check for --with-pydebug
703AC_MSG_CHECKING(for --with-pydebug)
704AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000705 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
706[
Fred Drake9f715822001-07-11 06:27:00 +0000707if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000708then
709 AC_DEFINE(Py_DEBUG, 1,
710 [Define if you want to build an interpreter with many run-time checks.])
711 AC_MSG_RESULT(yes);
712 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000713else AC_MSG_RESULT(no); Py_DEBUG='false'
714fi],
715[AC_MSG_RESULT(no)])
716
Skip Montanarodecc6a42003-01-01 20:07:49 +0000717# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
718# merged with this chunk of code?
719
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000720# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000721# ------------------------
722# (The following bit of code is complicated enough - please keep things
723# indented properly. Just pretend you're editing Python code. ;-)
724
725# There are two parallel sets of case statements below, one that checks to
726# see if OPT was set and one that does BASECFLAGS setting based upon
727# compiler and platform. BASECFLAGS tweaks need to be made even if the
728# user set OPT.
729
730# tweak OPT based on compiler and platform, only if the user didn't set
731# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000732AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000733if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000734then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000735 case $GCC in
736 yes)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000737 if test "$CC" != 'g++' ; then
738 STRICT_PROTO="-Wstrict-prototypes"
739 fi
Christian Heimes38053212007-12-14 01:24:44 +0000740 # For gcc 4.x we need to use -fwrapv so lets check if its supported
741 if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then
742 WRAP="-fwrapv"
743 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000744 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000745 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000746 if test "$Py_DEBUG" = 'true' ; then
747 # Optimization messes up debuggers, so turn it off for
748 # debug builds.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000749 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000750 else
Christian Heimes38053212007-12-14 01:24:44 +0000751 OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000752 fi
753 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000754 *)
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000755 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000756 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000757 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000758 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000759 SCO_SV*) OPT="$OPT -m486 -DSCO5"
760 ;;
761 esac
Fred Drake9f715822001-07-11 06:27:00 +0000762 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000763
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000764 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000765 OPT="-O"
766 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000767 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000768
769 # The current (beta) Monterey compiler dies with optimizations
770 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000771 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000772 Monterey*)
773 OPT=""
774 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000775 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000776
Guido van Rossum4e8af441994-08-19 15:33:54 +0000777fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000778
Skip Montanarodecc6a42003-01-01 20:07:49 +0000779AC_SUBST(BASECFLAGS)
780# tweak BASECFLAGS based on compiler and platform
781case $GCC in
782yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000783 # Python violates C99 rules, by casting between incompatible
784 # pointer types. GCC may generate bad code as a result of that,
785 # so use -fno-strict-aliasing if supported.
786 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
787 ac_save_cc="$CC"
788 CC="$CC -fno-strict-aliasing"
789 AC_TRY_RUN([int main() { return 0; }],
790 ac_cv_no_strict_aliasing_ok=yes,
791 ac_cv_no_strict_aliasing_ok=no,
792 ac_cv_no_strict_aliasing_ok=no)
793 CC="$ac_save_cc"
794 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
795 if test $ac_cv_no_strict_aliasing_ok = yes
796 then
797 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
798 fi
Mark Dickinsonb0e2b4c2008-04-26 20:48:56 +0000799
800 # if using gcc on alpha, use -mieee to get (near) full IEEE 754
801 # support. Without this, treatment of subnormals doesn't follow
802 # the standard.
803 case $ac_sys_machine in
804 alpha*)
805 BASECFLAGS="$BASECFLAGS -mieee"
806 ;;
807 esac
808
Skip Montanarodecc6a42003-01-01 20:07:49 +0000809 case $ac_sys_system in
810 SCO_SV*)
811 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
812 ;;
813 # is there any other compiler on Darwin besides gcc?
814 Darwin*)
Christian Heimesb186d002008-03-18 15:15:01 +0000815 # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
816 # used to be here, but non-Apple gcc doesn't accept them.
Thomas Wouters477c8d52006-05-27 19:21:47 +0000817 if test "${enable_universalsdk}"; then
818 BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
819 fi
820
Skip Montanarodecc6a42003-01-01 20:07:49 +0000821 ;;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000822 OSF*)
823 BASECFLAGS="$BASECFLAGS -mieee"
824 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000825 esac
826 ;;
827
828*)
829 case $ac_sys_system in
830 OpenUNIX*|UnixWare*)
831 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
832 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000833 OSF*)
834 BASECFLAGS="$BASECFLAGS -ieee -std"
835 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000836 SCO_SV*)
837 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
838 ;;
839 esac
840 ;;
841esac
842
Fred Drakee1ceaa02001-12-04 20:55:47 +0000843if test "$Py_DEBUG" = 'true'; then
844 :
845else
846 OPT="-DNDEBUG $OPT"
847fi
848
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000849if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000850then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000851 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000852fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000853
Neal Norwitz020c46a2006-01-07 21:39:28 +0000854# disable check for icc since it seems to pass, but generates a warning
855if test "$CC" = icc
856then
857 ac_cv_opt_olimit_ok=no
858fi
859
Guido van Rossum91922671997-10-09 20:24:13 +0000860AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
861AC_CACHE_VAL(ac_cv_opt_olimit_ok,
862[ac_save_cc="$CC"
863CC="$CC -OPT:Olimit=0"
864AC_TRY_RUN([int main() { return 0; }],
865 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000866 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000867 ac_cv_opt_olimit_ok=no)
868CC="$ac_save_cc"])
869AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000870if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000871 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000872 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
873 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
874 # environment?
875 Darwin*)
876 ;;
877 *)
878 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
879 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000880 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000881else
882 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
883 AC_CACHE_VAL(ac_cv_olimit_ok,
884 [ac_save_cc="$CC"
885 CC="$CC -Olimit 1500"
886 AC_TRY_RUN([int main() { return 0; }],
887 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000888 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000889 ac_cv_olimit_ok=no)
890 CC="$ac_save_cc"])
891 AC_MSG_RESULT($ac_cv_olimit_ok)
892 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000893 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000894 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000895fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000896
Thomas Wouters89f507f2006-12-13 04:49:30 +0000897# Check whether GCC supports PyArg_ParseTuple format
898if test "$GCC" = "yes"
899then
900 AC_MSG_CHECKING(whether gcc supports ParseTuple __format__)
901 save_CFLAGS=$CFLAGS
902 CFLAGS="$CFLAGS -Werror"
903 AC_TRY_COMPILE([
904 void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2)));
905 ],,
906 AC_DEFINE(HAVE_ATTRIBUTE_FORMAT_PARSETUPLE, 1, [Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3)))])
907 AC_MSG_RESULT(yes),
908 AC_MSG_RESULT(no)
909 )
910 CFLAGS=$save_CFLAGS
911fi
912
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000913# On some compilers, pthreads are available without further options
914# (e.g. MacOS X). On some of these systems, the compiler will not
915# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
916# So we have to see first whether pthreads are available without
917# options before we can check whether -Kpthread improves anything.
918AC_MSG_CHECKING(whether pthreads are available without options)
919AC_CACHE_VAL(ac_cv_pthread_is_default,
920[AC_TRY_RUN([
921#include <pthread.h>
922
923void* routine(void* p){return NULL;}
924
925int main(){
926 pthread_t p;
927 if(pthread_create(&p,NULL,routine,NULL)!=0)
928 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000929 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000930 return 0;
931}
932],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000933[
934 ac_cv_pthread_is_default=yes
935 ac_cv_kthread=no
936 ac_cv_pthread=no
937],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000938 ac_cv_pthread_is_default=no,
939 ac_cv_pthread_is_default=no)
940])
941AC_MSG_RESULT($ac_cv_pthread_is_default)
942
943
944if test $ac_cv_pthread_is_default = yes
945then
946 ac_cv_kpthread=no
947else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000948# -Kpthread, if available, provides the right #defines
949# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000950# Some compilers won't report that they do not support -Kpthread,
951# so we need to run a program to see whether it really made the
952# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000953AC_MSG_CHECKING(whether $CC accepts -Kpthread)
954AC_CACHE_VAL(ac_cv_kpthread,
955[ac_save_cc="$CC"
956CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000957AC_TRY_RUN([
958#include <pthread.h>
959
960void* routine(void* p){return NULL;}
961
962int main(){
963 pthread_t p;
964 if(pthread_create(&p,NULL,routine,NULL)!=0)
965 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000966 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000967 return 0;
968}
969],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000970 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000971 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000972 ac_cv_kpthread=no)
973CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000974AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000975fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000976
Skip Montanarod8d39a02003-07-10 20:44:10 +0000977if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000978then
979# -Kthread, if available, provides the right #defines
980# and linker options to make pthread_create available
981# Some compilers won't report that they do not support -Kthread,
982# so we need to run a program to see whether it really made the
983# function available.
984AC_MSG_CHECKING(whether $CC accepts -Kthread)
985AC_CACHE_VAL(ac_cv_kthread,
986[ac_save_cc="$CC"
987CC="$CC -Kthread"
988AC_TRY_RUN([
989#include <pthread.h>
990
991void* routine(void* p){return NULL;}
992
993int main(){
994 pthread_t p;
995 if(pthread_create(&p,NULL,routine,NULL)!=0)
996 return 1;
997 (void)pthread_detach(p);
998 return 0;
999}
1000],
1001 ac_cv_kthread=yes,
1002 ac_cv_kthread=no,
1003 ac_cv_kthread=no)
1004CC="$ac_save_cc"])
1005AC_MSG_RESULT($ac_cv_kthread)
1006fi
1007
Skip Montanarod8d39a02003-07-10 20:44:10 +00001008if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001009then
1010# -pthread, if available, provides the right #defines
1011# and linker options to make pthread_create available
1012# Some compilers won't report that they do not support -pthread,
1013# so we need to run a program to see whether it really made the
1014# function available.
1015AC_MSG_CHECKING(whether $CC accepts -pthread)
1016AC_CACHE_VAL(ac_cv_thread,
1017[ac_save_cc="$CC"
1018CC="$CC -pthread"
1019AC_TRY_RUN([
1020#include <pthread.h>
1021
1022void* routine(void* p){return NULL;}
1023
1024int main(){
1025 pthread_t p;
1026 if(pthread_create(&p,NULL,routine,NULL)!=0)
1027 return 1;
1028 (void)pthread_detach(p);
1029 return 0;
1030}
1031],
1032 ac_cv_pthread=yes,
1033 ac_cv_pthread=no,
1034 ac_cv_pthread=no)
1035CC="$ac_save_cc"])
1036AC_MSG_RESULT($ac_cv_pthread)
1037fi
1038
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001039# If we have set a CC compiler flag for thread support then
1040# check if it works for CXX, too.
1041ac_cv_cxx_thread=no
1042if test ! -z "$CXX"
1043then
1044AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1045ac_save_cxx="$CXX"
1046
1047if test "$ac_cv_kpthread" = "yes"
1048then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001049 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001050 ac_cv_cxx_thread=yes
1051elif test "$ac_cv_kthread" = "yes"
1052then
1053 CXX="$CXX -Kthread"
1054 ac_cv_cxx_thread=yes
1055elif test "$ac_cv_pthread" = "yes"
1056then
1057 CXX="$CXX -pthread"
1058 ac_cv_cxx_thread=yes
1059fi
1060
1061if test $ac_cv_cxx_thread = yes
1062then
1063 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1064 $CXX -c conftest.$ac_ext 2>&5
1065 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1066 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1067 then
1068 ac_cv_cxx_thread=yes
1069 else
1070 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001071 fi
1072 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001073fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001074AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001075fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001076CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001077
Fred Drakece81d592000-07-09 14:39:29 +00001078dnl # check for ANSI or K&R ("traditional") preprocessor
1079dnl AC_MSG_CHECKING(for C preprocessor type)
1080dnl AC_TRY_COMPILE([
1081dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1082dnl int foo;
1083dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1084dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1085dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001086
Guido van Rossum627b2d71993-12-24 10:39:16 +00001087# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001088AC_HEADER_STDC
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001089AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
1090fcntl.h grp.h \
Christian Heimesbbe741d2008-03-28 10:53:29 +00001091ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
Thomas Wouters89f507f2006-12-13 04:49:30 +00001092shadow.h signal.h stdint.h stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001093unistd.h utime.h \
Christian Heimes4fbc72b2008-03-22 00:47:35 +00001094sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \
1095sys/lock.h sys/mkdev.h sys/modem.h \
Thomas Wouters0e3f5912006-08-11 14:57:12 +00001096sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
1097sys/time.h \
1098sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001099sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
Christian Heimes043d6f62008-01-07 17:19:16 +00001100bluetooth/bluetooth.h linux/tipc.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001101AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001102AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001103
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001104# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001105AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001106#ifdef HAVE_CURSES_H
1107#include <curses.h>
1108#endif
1109])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001110
Martin v. Löwis11017b12006-01-14 18:12:57 +00001111# On Linux, netlink.h requires asm/types.h
1112AC_CHECK_HEADERS(linux/netlink.h,,,[
1113#ifdef HAVE_ASM_TYPES_H
1114#include <asm/types.h>
1115#endif
1116#ifdef HAVE_SYS_SOCKET_H
1117#include <sys/socket.h>
1118#endif
1119])
1120
Guido van Rossum627b2d71993-12-24 10:39:16 +00001121# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001122was_it_defined=no
1123AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001124AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1125 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1126])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001127AC_MSG_RESULT($was_it_defined)
1128
Neal Norwitz11690112002-07-30 01:08:28 +00001129# Check whether using makedev requires defining _OSF_SOURCE
1130AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001131AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001132 [ makedev(0, 0) ],
1133 ac_cv_has_makedev=yes,
1134 ac_cv_has_makedev=no)
1135if test "$ac_cv_has_makedev" = "no"; then
1136 # we didn't link, try if _OSF_SOURCE will allow us to link
1137 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001138#define _OSF_SOURCE 1
1139#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001140 ],
1141 [ makedev(0, 0) ],
1142 ac_cv_has_makedev=yes,
1143 ac_cv_has_makedev=no)
1144 if test "$ac_cv_has_makedev" = "yes"; then
1145 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1146 fi
1147fi
1148AC_MSG_RESULT($ac_cv_has_makedev)
1149if test "$ac_cv_has_makedev" = "yes"; then
1150 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1151fi
1152
Martin v. Löwis399a6892002-10-04 10:22:02 +00001153# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1154# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1155# defined, but the compiler does not support pragma redefine_extname,
1156# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1157# structures (such as rlimit64) without declaring them. As a
1158# work-around, disable LFS on such configurations
1159
1160use_lfs=yes
1161AC_MSG_CHECKING(Solaris LFS bug)
1162AC_TRY_COMPILE([
1163#define _LARGEFILE_SOURCE 1
1164#define _FILE_OFFSET_BITS 64
1165#include <sys/resource.h>
1166],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1167AC_MSG_RESULT($sol_lfs_bug)
1168if test "$sol_lfs_bug" = "yes"; then
1169 use_lfs=no
1170fi
1171
1172if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001173# Two defines needed to enable largefile support on various platforms
1174# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001175AC_DEFINE(_LARGEFILE_SOURCE, 1,
1176[This must be defined on some systems to enable large file support.])
1177AC_DEFINE(_FILE_OFFSET_BITS, 64,
1178[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001179fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001180
Guido van Rossum300fda71996-08-19 21:58:16 +00001181# Add some code to confdefs.h so that the test for off_t works on SCO
1182cat >> confdefs.h <<\EOF
1183#if defined(SCO_DS)
1184#undef _OFF_T
1185#endif
1186EOF
1187
Guido van Rossumef2255b2000-03-10 22:30:29 +00001188# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001189AC_TYPE_MODE_T
1190AC_TYPE_OFF_T
1191AC_TYPE_PID_T
1192AC_TYPE_SIGNAL
1193AC_TYPE_SIZE_T
1194AC_TYPE_UID_T
Christian Heimes400adb02008-02-01 08:12:03 +00001195AC_CHECK_TYPE(ssize_t,
Martin v. Löwis18e16552006-02-15 17:27:45 +00001196 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001197
Guido van Rossumef2255b2000-03-10 22:30:29 +00001198# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001199# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001200AC_CHECK_SIZEOF(int, 4)
1201AC_CHECK_SIZEOF(long, 4)
1202AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001203AC_CHECK_SIZEOF(short, 2)
1204AC_CHECK_SIZEOF(float, 4)
1205AC_CHECK_SIZEOF(double, 8)
1206AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001207AC_CHECK_SIZEOF(size_t, 4)
Christian Heimes400adb02008-02-01 08:12:03 +00001208AC_CHECK_SIZEOF(pid_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001209
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001210AC_MSG_CHECKING(for long long support)
1211have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001212AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1213 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1214 have_long_long=yes
1215])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001216AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001217if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001218AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001219fi
1220
Travis E. Oliphant9b307842007-10-12 22:06:37 +00001221AC_MSG_CHECKING(for long double support)
1222have_long_double=no
1223AC_TRY_COMPILE([], [long double x; x = (long double)0;], [
1224 AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define this if you have the type long double.])
1225 have_long_double=yes
1226])
1227AC_MSG_RESULT($have_long_double)
1228if test "$have_long_double" = yes ; then
1229AC_CHECK_SIZEOF(long double, 16)
1230fi
1231
1232
Thomas Woutersb2137042007-02-01 18:02:27 +00001233AC_MSG_CHECKING(for _Bool support)
1234have_c99_bool=no
1235AC_TRY_COMPILE([], [_Bool x; x = (_Bool)0;], [
1236 AC_DEFINE(HAVE_C99_BOOL, 1, [Define this if you have the type _Bool.])
1237 have_c99_bool=yes
1238])
1239AC_MSG_RESULT($have_c99_bool)
1240if test "$have_c99_bool" = yes ; then
1241AC_CHECK_SIZEOF(_Bool, 1)
1242fi
1243
Thomas Wouters89f507f2006-12-13 04:49:30 +00001244AC_CHECK_TYPES(uintptr_t,
1245 [AC_CHECK_SIZEOF(uintptr_t, 4)],
1246 [], [#ifdef HAVE_STDINT_H
1247 #include <stdint.h>
1248 #endif])
1249
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001250
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001251# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1252AC_MSG_CHECKING(size of off_t)
1253AC_CACHE_VAL(ac_cv_sizeof_off_t,
1254[AC_TRY_RUN([#include <stdio.h>
1255#include <sys/types.h>
1256main()
1257{
1258 FILE *f=fopen("conftestval", "w");
1259 if (!f) exit(1);
1260 fprintf(f, "%d\n", sizeof(off_t));
1261 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001262}],
1263ac_cv_sizeof_off_t=`cat conftestval`,
1264ac_cv_sizeof_off_t=0,
1265ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001266])
1267AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001268AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1269[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001270
1271AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001272if test "$have_long_long" = yes -a \
1273 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1274 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001275 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1276 [Defined to enable large file support when an off_t is bigger than a long
1277 and long long is available and at least as big as an off_t. You may need
1278 to add some flags for configuration and compilation to enable this mode.
1279 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001280 AC_MSG_RESULT(yes)
1281else
1282 AC_MSG_RESULT(no)
1283fi
1284
Fred Drakea3f6e912000-06-29 20:44:47 +00001285# AC_CHECK_SIZEOF() doesn't include <time.h>.
1286AC_MSG_CHECKING(size of time_t)
1287AC_CACHE_VAL(ac_cv_sizeof_time_t,
1288[AC_TRY_RUN([#include <stdio.h>
1289#include <time.h>
1290main()
1291{
1292 FILE *f=fopen("conftestval", "w");
1293 if (!f) exit(1);
1294 fprintf(f, "%d\n", sizeof(time_t));
1295 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001296}],
1297ac_cv_sizeof_time_t=`cat conftestval`,
1298ac_cv_sizeof_time_t=0,
1299ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001300])
1301AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001302AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1303[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001304
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001305
Trent Mick635f6fb2000-08-23 21:33:05 +00001306# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001307ac_save_cc="$CC"
1308if test "$ac_cv_kpthread" = "yes"
1309then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001310elif test "$ac_cv_kthread" = "yes"
1311then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001312elif test "$ac_cv_pthread" = "yes"
1313then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001314fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001315AC_MSG_CHECKING(for pthread_t)
1316have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001317AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001318AC_MSG_RESULT($have_pthread_t)
1319if test "$have_pthread_t" = yes ; then
1320 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1321 AC_MSG_CHECKING(size of pthread_t)
1322 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1323 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001324#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001325 main()
1326 {
1327 FILE *f=fopen("conftestval", "w");
1328 if (!f) exit(1);
1329 fprintf(f, "%d\n", sizeof(pthread_t));
1330 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001331 }],
1332 ac_cv_sizeof_pthread_t=`cat conftestval`,
1333 ac_cv_sizeof_pthread_t=0,
1334 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001335 ])
1336 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001337 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1338 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001339fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001340CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001341
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001342AC_MSG_CHECKING(for --enable-toolbox-glue)
1343AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001344 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001345
1346if test -z "$enable_toolbox_glue"
1347then
1348 case $ac_sys_system/$ac_sys_release in
1349 Darwin/*)
1350 enable_toolbox_glue="yes";;
1351 *)
1352 enable_toolbox_glue="no";;
1353 esac
1354fi
1355case "$enable_toolbox_glue" in
1356yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001357 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001358 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001359 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1360 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001361 ;;
1362*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001363 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001364 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001365 ;;
1366esac
1367AC_MSG_RESULT($enable_toolbox_glue)
1368
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001369AC_SUBST(OTHER_LIBTOOL_OPT)
1370case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001371 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001372 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1373 ;;
1374 Darwin/*)
1375 OTHER_LIBTOOL_OPT=""
1376 ;;
1377esac
1378
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001379AC_SUBST(LIBTOOL_CRUFT)
1380case $ac_sys_system/$ac_sys_release in
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001381 Darwin/@<:@01567@:>@\..*)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001382 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1383 if test "${enable_universalsdk}"; then
1384 :
1385 else
1386 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1387 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001388 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001389 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001390 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001391 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1392 if test ${gcc_version} '<' 4.0
1393 then
1394 LIBTOOL_CRUFT="-lcc_dynamic"
1395 else
1396 LIBTOOL_CRUFT=""
1397 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001398 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001399 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001400 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001401esac
1402
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001403AC_MSG_CHECKING(for --enable-framework)
1404if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001405then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001406 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001407 # -F. is needed to allow linking to the framework while
1408 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001409 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1410 [Define if you want to produce an OpenStep/Rhapsody framework
1411 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001412 AC_MSG_RESULT(yes)
1413else
1414 AC_MSG_RESULT(no)
1415fi
1416
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001417AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001418case $ac_sys_system/$ac_sys_release in
1419 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001420 AC_DEFINE(WITH_DYLD, 1,
1421 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1422 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1423 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001424 AC_MSG_RESULT(always on for Darwin)
1425 ;;
1426 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001427 AC_MSG_RESULT(no)
1428 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001429esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001430
Guido van Rossumac405f61994-09-12 10:56:06 +00001431# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001432AC_SUBST(SO)
1433AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001434AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001435AC_SUBST(CCSHARED)
1436AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001437# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001438# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001439AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001440if test -z "$SO"
1441then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001442 case $ac_sys_system in
Thomas Wouters477c8d52006-05-27 19:21:47 +00001443 hp*|HP*)
1444 case `uname -m` in
1445 ia64) SO=.so;;
1446 *) SO=.sl;;
1447 esac
1448 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001449 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001450 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001451 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001452else
1453 # this might also be a termcap variable, see #610332
1454 echo
1455 echo '====================================================================='
1456 echo '+ +'
1457 echo '+ WARNING: You have set SO in your environment. +'
1458 echo '+ Do you really mean to change the extension for shared libraries? +'
1459 echo '+ Continuing in 10 seconds to let you to ponder. +'
1460 echo '+ +'
1461 echo '====================================================================='
1462 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001463fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001464AC_MSG_RESULT($SO)
Thomas Wouters477c8d52006-05-27 19:21:47 +00001465AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001466# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001467# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001468# (Shared libraries in this instance are shared modules to be loaded into
1469# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001470AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001471if test -z "$LDSHARED"
1472then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001473 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001474 AIX*)
1475 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001476 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001477 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001478 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001479 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001480 SunOS/5*)
1481 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001482 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001483 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001484 fi ;;
Thomas Hellerf44b9a12008-04-04 10:18:23 +00001485 hp*|HP*)
1486 if test "$GCC" = "yes"
1487 then LDSHARED='$(CC) -shared'
1488 else LDSHARED='ld -b';
1489 fi ;;
Guido van Rossum71001e41995-01-26 00:44:03 +00001490 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001491 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001492 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1493 if test "$enable_framework" ; then
1494 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001495 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1496 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001497 else
1498 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001499 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001500 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001501 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001502 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1503 if test "$enable_framework" ; then
1504 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001505 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1506 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001507 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001508 # No framework, use the Python app as bundle-loader
1509 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001510 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001511 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001512 Darwin/*)
1513 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1514 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001515 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Thomas Wouters477c8d52006-05-27 19:21:47 +00001516 if test ${cur_target} '>' 10.2; then
1517 cur_target=10.3
1518 fi
Jack Jansenc110f862005-01-07 10:49:32 +00001519 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Thomas Wouters89d996e2007-09-08 17:39:28 +00001520
1521 # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
1522 # environment with a value that is the same as what we'll use
1523 # in the Makefile to ensure that we'll get the same compiler
1524 # environment during configure and build time.
1525 MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
1526 export MACOSX_DEPLOYMENT_TARGET
1527
Thomas Wouters477c8d52006-05-27 19:21:47 +00001528 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
Jack Jansenbe954622004-12-26 23:07:48 +00001529 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001530 then
Thomas Wouters477c8d52006-05-27 19:21:47 +00001531 if test "${enable_universalsdk}"; then
1532 LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1533 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001534 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1535 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001536 else
1537 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1538 if test "$enable_framework" ; then
1539 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001540 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1541 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001542 else
1543 # No framework, use the Python app as bundle-loader
1544 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1545 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1546 fi
1547 fi
1548 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001549 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001550 BSD/OS*/4*) LDSHARED="gcc -shared";;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001551 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001552 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001553 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001554 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001555 else
1556 LDSHARED="ld -Bshareable ${LDFLAGS}"
1557 fi;;
Thomas Wouters1ba5b3b2006-06-08 14:52:47 +00001558 OpenBSD*)
1559 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1560 then
1561 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1562 else
1563 case `uname -r` in
1564 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1565 LDSHARED="ld -Bshareable ${LDFLAGS}"
1566 ;;
1567 *)
1568 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1569 ;;
1570 esac
1571 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001572 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001573 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001574 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001575 then LDSHARED='$(CC) -shared'
1576 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001577 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001578 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001579 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001580 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001581 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001582 *) LDSHARED="ld";;
1583 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001584fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001585AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001586BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001587# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001588# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001589AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001590if test -z "$CCSHARED"
1591then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001592 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001593 SunOS*) if test "$GCC" = yes;
Guido van Rossumd8faa362007-04-27 19:54:29 +00001594 then CCSHARED="-fPIC";
1595 elif test `uname -p` = sparc;
1596 then CCSHARED="-xcode=pic32";
1597 else CCSHARED="-Kpic";
1598 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001599 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001600 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001601 else CCSHARED="+z";
1602 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001603 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001604 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001605 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001606 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001607 if test "$GCC" = "yes"
1608 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001609 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001610 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001611 SCO_SV*)
1612 if test "$GCC" = "yes"
1613 then CCSHARED="-fPIC"
1614 else CCSHARED="-Kpic -belf"
1615 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001616 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001617 IRIX*/6*) case $CC in
1618 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001619 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001620 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001621 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001622 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001623fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001624AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001625# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001626# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001627AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001628if test -z "$LINKFORSHARED"
1629then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001630 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001631 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001632 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001633 LINKFORSHARED="-Wl,-E -Wl,+s";;
1634# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001635 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001636 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001637 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001638 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001639 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1640 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001641 # not used by the core itself but which needs to be in the core so
1642 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001643 # -prebind is no longer used, because it actually seems to give a
1644 # slowdown in stead of a speedup, maybe due to the large number of
1645 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001646
1647 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001648 if test "$enable_framework"
1649 then
Jack Jansenda49e192005-01-07 13:08:22 +00001650 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001651 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001652 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001653 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001654 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001655 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001656 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001657 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1658 then
1659 LINKFORSHARED="-Wl,--export-dynamic"
1660 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001661 SunOS/5*) case $CC in
1662 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001663 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001664 then
1665 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001666 fi;;
1667 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001668 CYGWIN*)
1669 if test $enable_shared = "no"
1670 then
1671 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1672 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001673 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001674fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001675AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001676
Neil Schemenauer61c51152001-01-26 16:18:16 +00001677AC_SUBST(CFLAGSFORSHARED)
1678AC_MSG_CHECKING(CFLAGSFORSHARED)
1679if test ! "$LIBRARY" = "$LDLIBRARY"
1680then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001681 case $ac_sys_system in
1682 CYGWIN*)
1683 # Cygwin needs CCSHARED when building extension DLLs
1684 # but not when building the interpreter DLL.
1685 CFLAGSFORSHARED='';;
1686 *)
1687 CFLAGSFORSHARED='$(CCSHARED)'
1688 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001689fi
1690AC_MSG_RESULT($CFLAGSFORSHARED)
1691
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001692# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1693# library (with --enable-shared).
1694# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001695# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1696# if it is not required, since it creates a dependency of the shared library
1697# to LIBS. This, in turn, means that applications linking the shared libpython
1698# don't need to link LIBS explicitly. The default should be only changed
1699# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001700AC_SUBST(SHLIBS)
1701AC_MSG_CHECKING(SHLIBS)
1702case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001703 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001704 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001705esac
1706AC_MSG_RESULT($SHLIBS)
1707
1708
Guido van Rossum627b2d71993-12-24 10:39:16 +00001709# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001710AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1711AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001712
1713# only check for sem_ini if thread support is requested
1714if test "$with_threads" = "yes" -o -z "$with_threads"; then
1715 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1716 # posix4 on Solaris 2.6
1717 # pthread (first!) on Linux
1718fi
1719
Martin v. Löwis19d17342003-06-14 21:03:05 +00001720# check if we need libintl for locale functions
1721AC_CHECK_LIB(intl, textdomain,
1722 AC_DEFINE(WITH_LIBINTL, 1,
1723 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001724
1725# checks for system dependent C++ extensions support
1726case "$ac_sys_system" in
1727 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1728 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1729 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001730 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1731 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1732 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001733 AC_MSG_RESULT(yes)],
1734 [AC_MSG_RESULT(no)]);;
1735 *) ;;
1736esac
1737
Guido van Rossum70c7f481998-03-26 18:44:10 +00001738# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001739AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001740AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001741
Guido van Rossumc5a39031996-07-31 17:35:03 +00001742AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001743AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001744 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1745[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001746AC_MSG_RESULT($withval)
1747LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001748],
1749[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001750
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001751# Check for use of the system libffi library
1752AC_MSG_CHECKING(for --with-system-ffi)
1753AC_ARG_WITH(system_ffi,
1754 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1755
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001756AC_MSG_RESULT($with_system_ffi)
1757
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001758# Determine if signalmodule should be used.
1759AC_SUBST(USE_SIGNAL_MODULE)
1760AC_SUBST(SIGNAL_OBJS)
1761AC_MSG_CHECKING(for --with-signal-module)
1762AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001763 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001764
1765if test -z "$with_signal_module"
1766then with_signal_module="yes"
1767fi
1768AC_MSG_RESULT($with_signal_module)
1769
1770if test "${with_signal_module}" = "yes"; then
1771 USE_SIGNAL_MODULE=""
1772 SIGNAL_OBJS=""
1773else
1774 USE_SIGNAL_MODULE="#"
1775 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1776fi
1777
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001778# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001779AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001780USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001781
Guido van Rossum54d93d41997-01-22 20:51:58 +00001782AC_MSG_CHECKING(for --with-dec-threads)
1783AC_SUBST(LDLAST)
1784AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001785 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1786[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001787AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001788LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001789if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001790 with_thread="$withval";
1791fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001792[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001793
Martin v. Löwis11437992002-04-12 09:54:03 +00001794# Templates for things AC_DEFINEd more than once.
1795# For a single AC_DEFINE, no template is needed.
1796AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1797AH_TEMPLATE(_REENTRANT,
1798 [Define to force use of thread-safe errno, h_errno, and other functions])
1799AH_TEMPLATE(WITH_THREAD,
1800 [Define if you want to compile in rudimentary thread support])
1801
Guido van Rossum54d93d41997-01-22 20:51:58 +00001802AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001803dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001804AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001805 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001806
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001807# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001808dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001809AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001810 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1811 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001812
1813if test -z "$with_threads"
1814then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001815fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001816AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001817
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001818AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001819if test "$with_threads" = "no"
1820then
1821 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001822elif test "$ac_cv_pthread_is_default" = yes
1823then
1824 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001825 # Defining _REENTRANT on system with POSIX threads should not hurt.
1826 AC_DEFINE(_REENTRANT)
1827 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001828 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001829elif test "$ac_cv_kpthread" = "yes"
1830then
1831 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001832 if test "$ac_cv_cxx_thread" = "yes"; then
1833 CXX="$CXX -Kpthread"
1834 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001835 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001836 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001837 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001838elif test "$ac_cv_kthread" = "yes"
1839then
1840 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001841 if test "$ac_cv_cxx_thread" = "yes"; then
1842 CXX="$CXX -Kthread"
1843 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001844 AC_DEFINE(WITH_THREAD)
1845 posix_threads=yes
1846 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001847elif test "$ac_cv_pthread" = "yes"
1848then
1849 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001850 if test "$ac_cv_cxx_thread" = "yes"; then
1851 CXX="$CXX -pthread"
1852 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001853 AC_DEFINE(WITH_THREAD)
1854 posix_threads=yes
1855 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001856else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001857 if test ! -z "$with_threads" -a -d "$with_threads"
1858 then LDFLAGS="$LDFLAGS -L$with_threads"
1859 fi
1860 if test ! -z "$withval" -a -d "$withval"
1861 then LDFLAGS="$LDFLAGS -L$withval"
1862 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001863
1864 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001865 # define _POSIX_THREADS in unistd.h. Some apparently don't
1866 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001867 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1868 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001869 [
1870#include <unistd.h>
1871#ifdef _POSIX_THREADS
1872yes
1873#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001874 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1875 AC_MSG_RESULT($unistd_defines_pthreads)
1876
Martin v. Löwis130fb172001-07-19 11:00:41 +00001877 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001878 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1879 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001880 AC_DEFINE(HURD_C_THREADS, 1,
1881 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001882 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001883 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001884 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1885 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001886 AC_DEFINE(MACH_C_THREADS, 1,
1887 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001888 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001889 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001890 AC_ARG_WITH([pth],
1891 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1892 [AC_MSG_RESULT($withval)
1893 AC_DEFINE([WITH_THREAD])
1894 AC_DEFINE([HAVE_PTH], 1,
1895 [Define if you have GNU PTH threads.])
1896 LIBS="-lpth $LIBS"
1897 THREADOBJ="Python/thread.o"],
1898 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001899
1900 # Just looking for pthread_create in libpthread is not enough:
1901 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1902 # So we really have to include pthread.h, and then link.
1903 _libs=$LIBS
1904 LIBS="$LIBS -lpthread"
1905 AC_MSG_CHECKING([for pthread_create in -lpthread])
1906 AC_TRY_LINK([#include <pthread.h>
1907
1908void * start_routine (void *arg) { exit (0); }], [
1909pthread_create (NULL, NULL, start_routine, NULL)], [
1910 AC_MSG_RESULT(yes)
1911 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001912 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001913 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001914 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001915 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001916 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001917 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001918 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1919 AC_DEFINE(ATHEOS_THREADS, 1,
1920 [Define this if you have AtheOS threads.])
1921 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001922 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001923 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001924 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001925 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001926 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001927 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001928 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001929 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001930 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001931 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001932 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001933 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001934 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001935 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001936 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001937 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001938 USE_THREAD_MODULE="#"])
Skip Montanaroeb33e5a2007-08-17 12:57:41 +00001939 ])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001940
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001941 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1942 LIBS="$LIBS -lmpc"
1943 THREADOBJ="Python/thread.o"
1944 USE_THREAD_MODULE=""])
1945
1946 if test "$posix_threads" != "yes"; then
1947 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1948 LIBS="$LIBS -lthread"
1949 THREADOBJ="Python/thread.o"
1950 USE_THREAD_MODULE=""])
1951 fi
1952
1953 if test "$USE_THREAD_MODULE" != "#"
1954 then
1955 # If the above checks didn't disable threads, (at least) OSF1
1956 # needs this '-threads' argument during linking.
1957 case $ac_sys_system in
1958 OSF1) LDLAST=-threads;;
1959 esac
1960 fi
1961fi
1962
1963if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001964 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001965 AC_DEFINE(_POSIX_THREADS, 1,
1966 [Define if you have POSIX threads,
1967 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001968 fi
1969
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001970 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1971 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001972 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1973 Defined for Solaris 2.6 bug in pthread header.)
1974 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001975 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001976 Define if the Posix semaphores do not work on your system)
1977 ;;
Christian Heimes7b3ce6a2008-01-31 14:31:45 +00001978 AIX/5) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
1979 Define if the Posix semaphores do not work on your system)
1980 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001981 esac
1982
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001983 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1984 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1985 [AC_TRY_RUN([#include <pthread.h>
1986 void *foo(void *parm) {
1987 return NULL;
1988 }
1989 main() {
1990 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001991 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001992 if (pthread_attr_init(&attr)) exit(-1);
1993 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001994 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001995 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001996 }],
1997 ac_cv_pthread_system_supported=yes,
1998 ac_cv_pthread_system_supported=no,
1999 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002000 ])
2001 AC_MSG_RESULT($ac_cv_pthread_system_supported)
2002 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002003 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00002004 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00002005 AC_CHECK_FUNCS(pthread_sigmask,
2006 [case $ac_sys_system in
2007 CYGWIN*)
2008 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
2009 [Define if pthread_sigmask() does not work on your system.])
2010 ;;
2011 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002012fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002013
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002014
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002015# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00002016AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002017AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002018AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002019[ --enable-ipv6 Enable ipv6 (with ipv4) support
2020 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002021[ case "$enableval" in
2022 no)
2023 AC_MSG_RESULT(no)
2024 ipv6=no
2025 ;;
2026 *) AC_MSG_RESULT(yes)
2027 AC_DEFINE(ENABLE_IPV6)
2028 ipv6=yes
2029 ;;
2030 esac ],
2031
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002032[
2033dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002034 AC_TRY_RUN([ /* AF_INET6 available check */
2035#include <sys/types.h>
2036#include <sys/socket.h>
2037main()
2038{
2039 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
2040 exit(1);
2041 else
2042 exit(0);
2043}
2044],
2045 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002046 ipv6=yes,
2047 AC_MSG_RESULT(no)
2048 ipv6=no,
2049 AC_MSG_RESULT(no)
2050 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002051)
2052
2053if test "$ipv6" = "yes"; then
2054 AC_MSG_CHECKING(if RFC2553 API is available)
2055 AC_TRY_COMPILE([#include <sys/types.h>
2056#include <netinet/in.h>],
2057 [struct sockaddr_in6 x;
2058x.sin6_scope_id;],
2059 AC_MSG_RESULT(yes)
2060 ipv6=yes,
2061 AC_MSG_RESULT(no, IPv6 disabled)
2062 ipv6=no)
2063fi
2064
2065if test "$ipv6" = "yes"; then
2066 AC_DEFINE(ENABLE_IPV6)
2067fi
2068])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002069
2070ipv6type=unknown
2071ipv6lib=none
2072ipv6trylibc=no
2073
2074if test "$ipv6" = "yes"; then
2075 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002076 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2077 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002078 case $i in
2079 inria)
2080 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002081 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002082#include <netinet/in.h>
2083#ifdef IPV6_INRIA_VERSION
2084yes
2085#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002086 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002087 ;;
2088 kame)
2089 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002090 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002091#include <netinet/in.h>
2092#ifdef __KAME__
2093yes
2094#endif],
2095 [ipv6type=$i;
2096 ipv6lib=inet6
2097 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002098 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002099 ;;
2100 linux-glibc)
2101 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002102 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002103#include <features.h>
2104#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2105yes
2106#endif],
2107 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002108 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002109 ;;
2110 linux-inet6)
2111 dnl http://www.v6.linux.or.jp/
2112 if test -d /usr/inet6; then
2113 ipv6type=$i
2114 ipv6lib=inet6
2115 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002116 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002117 fi
2118 ;;
2119 solaris)
2120 if test -f /etc/netconfig; then
2121 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2122 ipv6type=$i
2123 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002124 fi
2125 fi
2126 ;;
2127 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002128 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002129#include <sys/param.h>
2130#ifdef _TOSHIBA_INET6
2131yes
2132#endif],
2133 [ipv6type=$i;
2134 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002135 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002136 ;;
2137 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002138 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002139#include </usr/local/v6/include/sys/v6config.h>
2140#ifdef __V6D__
2141yes
2142#endif],
2143 [ipv6type=$i;
2144 ipv6lib=v6;
2145 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002146 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002147 ;;
2148 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002149 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002150#include <sys/param.h>
2151#ifdef _ZETA_MINAMI_INET6
2152yes
2153#endif],
2154 [ipv6type=$i;
2155 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002156 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002157 ;;
2158 esac
2159 if test "$ipv6type" != "unknown"; then
2160 break
2161 fi
2162 done
2163 AC_MSG_RESULT($ipv6type)
2164fi
2165
2166if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2167 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2168 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2169 echo "using lib$ipv6lib"
2170 else
2171 if test $ipv6trylibc = "yes"; then
2172 echo "using libc"
2173 else
2174 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2175 echo "You need to fetch lib$ipv6lib.a from appropriate"
2176 echo 'ipv6 kit and compile beforehand.'
2177 exit 1
2178 fi
2179 fi
2180fi
2181
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002182# Check for --with-doc-strings
2183AC_MSG_CHECKING(for --with-doc-strings)
2184AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002185 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002186
2187if test -z "$with_doc_strings"
2188then with_doc_strings="yes"
2189fi
2190if test "$with_doc_strings" != "no"
2191then
2192 AC_DEFINE(WITH_DOC_STRINGS, 1,
2193 [Define if you want documentation strings in extension modules])
2194fi
2195AC_MSG_RESULT($with_doc_strings)
2196
Neil Schemenauera35c6882001-02-27 04:45:05 +00002197# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002198AC_MSG_CHECKING(for --with-tsc)
2199AC_ARG_WITH(tsc,
2200[ --with(out)-tsc enable/disable timestamp counter profile], [
2201if test "$withval" != no
2202then
2203 AC_DEFINE(WITH_TSC, 1,
2204 [Define to profile with the Pentium timestamp counter])
2205 AC_MSG_RESULT(yes)
2206else AC_MSG_RESULT(no)
2207fi],
2208[AC_MSG_RESULT(no)])
2209
2210# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002211AC_MSG_CHECKING(for --with-pymalloc)
2212AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002213 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002214
2215if test -z "$with_pymalloc"
2216then with_pymalloc="yes"
2217fi
2218if test "$with_pymalloc" != "no"
2219then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002220 AC_DEFINE(WITH_PYMALLOC, 1,
2221 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002222fi
2223AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002224
Barry Warsawef82cd72000-06-30 16:21:01 +00002225# Check for --with-wctype-functions
2226AC_MSG_CHECKING(for --with-wctype-functions)
2227AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002228 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2229[
Barry Warsawef82cd72000-06-30 16:21:01 +00002230if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002231then
2232 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2233 [Define if you want wctype.h functions to be used instead of the
2234 one supplied by Python itself. (see Include/unicodectype.h).])
2235 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002236else AC_MSG_RESULT(no)
2237fi],
2238[AC_MSG_RESULT(no)])
2239
Guido van Rossum68242b51996-05-28 22:53:03 +00002240# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002241AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002242DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002243
Guido van Rossume97ee181999-12-20 21:27:22 +00002244# the dlopen() function means we might want to use dynload_shlib.o. some
2245# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002246AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002247
2248# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2249# loading of modules.
2250AC_SUBST(DYNLOADFILE)
2251AC_MSG_CHECKING(DYNLOADFILE)
2252if test -z "$DYNLOADFILE"
2253then
2254 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002255 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2256 if test "$ac_cv_func_dlopen" = yes
2257 then DYNLOADFILE="dynload_shlib.o"
2258 else DYNLOADFILE="dynload_aix.o"
2259 fi
2260 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002261 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00002262 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2263 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002264 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002265 *)
2266 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2267 # out any dynamic loading
2268 if test "$ac_cv_func_dlopen" = yes
2269 then DYNLOADFILE="dynload_shlib.o"
2270 else DYNLOADFILE="dynload_stub.o"
2271 fi
2272 ;;
2273 esac
2274fi
2275AC_MSG_RESULT($DYNLOADFILE)
2276if test "$DYNLOADFILE" != "dynload_stub.o"
2277then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002278 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2279 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002280fi
2281
Jack Jansenc49e5b72001-06-19 15:00:23 +00002282# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2283
2284AC_SUBST(MACHDEP_OBJS)
2285AC_MSG_CHECKING(MACHDEP_OBJS)
2286if test -z "$MACHDEP_OBJS"
2287then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002288 MACHDEP_OBJS=$extra_machdep_objs
2289else
2290 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002291fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002292AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002293
Guido van Rossum627b2d71993-12-24 10:39:16 +00002294# checks for library functions
Martin v. Löwis823725e2008-03-24 13:39:54 +00002295AC_CHECK_FUNCS(alarm setitimer getitimer bind_textdomain_codeset chown \
2296 clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002297 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002298 getpriority getpwent getspnam getspent getsid getwd \
Christian Heimesd0764e22007-12-04 15:00:33 +00002299 kill killpg lchmod lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002300 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002301 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002302 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002303 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Gregory P. Smith6c357262007-09-03 16:44:06 +00002304 sigaction siginterrupt sigrelse strftime strlcpy \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002305 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis92fab752008-03-08 10:40:41 +00002306 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll wcsxfrm _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002307
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002308# For some functions, having a definition is not sufficient, since
2309# we want to take their address.
2310AC_MSG_CHECKING(for chroot)
2311AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2312 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2313 AC_MSG_RESULT(yes),
2314 AC_MSG_RESULT(no)
2315)
2316AC_MSG_CHECKING(for link)
2317AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2318 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2319 AC_MSG_RESULT(yes),
2320 AC_MSG_RESULT(no)
2321)
2322AC_MSG_CHECKING(for symlink)
2323AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2324 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2325 AC_MSG_RESULT(yes),
2326 AC_MSG_RESULT(no)
2327)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002328AC_MSG_CHECKING(for fchdir)
2329AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2330 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2331 AC_MSG_RESULT(yes),
2332 AC_MSG_RESULT(no)
2333)
2334AC_MSG_CHECKING(for fsync)
2335AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002336 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002337 AC_MSG_RESULT(yes),
2338 AC_MSG_RESULT(no)
2339)
2340AC_MSG_CHECKING(for fdatasync)
2341AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2342 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2343 AC_MSG_RESULT(yes),
2344 AC_MSG_RESULT(no)
2345)
Christian Heimes4fbc72b2008-03-22 00:47:35 +00002346AC_MSG_CHECKING(for epoll)
2347AC_TRY_COMPILE([#include <sys/epoll.h>], void *x=epoll_create,
2348 AC_DEFINE(HAVE_EPOLL, 1, Define if you have the 'epoll' functions.)
2349 AC_MSG_RESULT(yes),
2350 AC_MSG_RESULT(no)
2351)
2352AC_MSG_CHECKING(for kqueue)
2353AC_TRY_COMPILE([
2354#include <sys/types.h>
2355#include <sys/event.h>
2356 ], int x=kqueue(),
2357 AC_DEFINE(HAVE_KQUEUE, 1, Define if you have the 'kqueue' functions.)
2358 AC_MSG_RESULT(yes),
2359 AC_MSG_RESULT(no)
2360)
Martin v. Löwisd5843682002-11-21 20:41:28 +00002361# On some systems (eg. FreeBSD 5), we would find a definition of the
2362# functions ctermid_r, setgroups in the library, but no prototype
2363# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2364# address to avoid compiler warnings and potential miscompilations
2365# because of the missing prototypes.
2366
2367AC_MSG_CHECKING(for ctermid_r)
2368AC_TRY_COMPILE([
2369#include "confdefs.h"
2370#include <stdio.h>
2371], void* p = ctermid_r,
2372 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2373 AC_MSG_RESULT(yes),
2374 AC_MSG_RESULT(no)
2375)
2376
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002377AC_MSG_CHECKING(for flock)
2378AC_TRY_COMPILE([
2379#include "confdefs.h"
2380#include <sys/file.h>
2381], void* p = flock,
2382 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2383 AC_MSG_RESULT(yes),
2384 AC_MSG_RESULT(no)
2385)
2386
2387AC_MSG_CHECKING(for getpagesize)
2388AC_TRY_COMPILE([
2389#include "confdefs.h"
2390#include <unistd.h>
2391], void* p = getpagesize,
2392 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2393 AC_MSG_RESULT(yes),
2394 AC_MSG_RESULT(no)
2395)
2396
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002397dnl check for true
2398AC_CHECK_PROGS(TRUE, true, /bin/true)
2399
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002400dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2401dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002402AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002403 AC_CHECK_LIB(resolv, inet_aton)
2404)
2405
Christian Heimesd0764e22007-12-04 15:00:33 +00002406# On Tru64, chflags seems to be present, but calling it will
2407# exit Python
2408AC_MSG_CHECKING(for chflags)
2409AC_TRY_RUN([
2410#include <sys/stat.h>
2411#include <unistd.h>
2412int main(int argc, char*argv[])
2413{
2414 if(chflags(argv[0], 0) != 0)
2415 return 1;
2416 return 0;
2417}
2418],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.)
2419 AC_MSG_RESULT(yes),
2420 AC_MSG_RESULT(no)
2421)
2422
2423AC_MSG_CHECKING(for lchflags)
2424AC_TRY_RUN([
2425#include <sys/stat.h>
2426#include <unistd.h>
2427int main(int argc, char*argv[])
2428{
2429 if(lchflags(argv[0], 0) != 0)
2430 return 1;
2431 return 0;
2432}
2433],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.)
2434 AC_MSG_RESULT(yes),
2435 AC_MSG_RESULT(no)
2436)
2437
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002438dnl Check if system zlib has *Copy() functions
2439dnl
2440dnl On MacOSX the linker will search for dylibs on the entire linker path
2441dnl before searching for static libraries. setup.py adds -Wl,-search_paths_first
2442dnl to revert to a more traditional unix behaviour and make it possible to
2443dnl override the system libz with a local static library of libz. Temporarily
2444dnl add that flag to our CFLAGS as well to ensure that we check the version
2445dnl of libz that will be used by setup.py.
2446dnl The -L/usr/local/lib is needed as wel to get the same compilation
2447dnl environment as setup.py (and leaving it out can cause configure to use the
2448dnl wrong version of the library)
2449case $ac_sys_system/$ac_sys_release in
2450Darwin/*)
2451 _CUR_CFLAGS="${CFLAGS}"
2452 _CUR_LDFLAGS="${LDFLAGS}"
2453 CFLAGS="${CFLAGS} -Wl,-search_paths_first"
2454 LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib"
2455 ;;
2456esac
2457
2458AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_ZLIB_COPY, 1, Define if the zlib library has inflateCopy))
2459
2460case $ac_sys_system/$ac_sys_release in
2461Darwin/*)
2462 CFLAGS="${_CUR_CFLAGS}"
2463 LDFLAGS="${_CUR_LDFLAGS}"
2464 ;;
2465esac
2466
Martin v. Löwise9416172003-05-03 10:12:45 +00002467AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002468AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002469#include "confdefs.h"
2470#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002471], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002472 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2473 AC_MSG_RESULT(yes),
2474 AC_MSG_RESULT(no)
2475)
2476
2477AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002478AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002479#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002480#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002481#include <sys/socket.h>
2482#include <netinet/in.h>
2483#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002484], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002485 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2486 AC_MSG_RESULT(yes),
2487 AC_MSG_RESULT(no)
2488)
2489
2490AC_MSG_CHECKING(for inet_pton)
2491AC_TRY_COMPILE([
2492#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002493#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002494#include <sys/socket.h>
2495#include <netinet/in.h>
2496#include <arpa/inet.h>
2497], void* p = inet_pton,
2498 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2499 AC_MSG_RESULT(yes),
2500 AC_MSG_RESULT(no)
2501)
2502
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002503# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002504AC_MSG_CHECKING(for setgroups)
2505AC_TRY_COMPILE([
2506#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002507#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002508#ifdef HAVE_GRP_H
2509#include <grp.h>
2510#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002511],
2512void* p = setgroups,
2513 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2514 AC_MSG_RESULT(yes),
2515 AC_MSG_RESULT(no)
2516)
2517
Fred Drake8cef4cf2000-06-28 16:40:38 +00002518# check for openpty and forkpty
2519
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002520AC_CHECK_FUNCS(openpty,,
2521 AC_CHECK_LIB(util,openpty,
2522 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2523 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2524 )
2525)
2526AC_CHECK_FUNCS(forkpty,,
2527 AC_CHECK_LIB(util,forkpty,
2528 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2529 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2530 )
2531)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002532
Christian Heimesb186d002008-03-18 15:15:01 +00002533# Stuff for expat.
2534AC_CHECK_FUNCS(memmove)
2535
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002536# check for long file support functions
2537AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2538
Christian Heimesb186d002008-03-18 15:15:01 +00002539AC_REPLACE_FUNCS(dup2 getcwd strdup)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002540AC_CHECK_FUNCS(getpgrp,
2541 AC_TRY_COMPILE([#include <unistd.h>],
2542 [getpgrp(0);],
2543 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2544 [Define if getpgrp() must be called as getpgrp(0).])
2545 )
2546)
Jack Jansen150753c2003-03-29 22:07:47 +00002547AC_CHECK_FUNCS(setpgrp,
2548 AC_TRY_COMPILE([#include <unistd.h>],
2549 [setpgrp(0,0);],
2550 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2551 [Define if setpgrp() must be called as setpgrp(0, 0).])
2552 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002553)
2554AC_CHECK_FUNCS(gettimeofday,
2555 AC_TRY_COMPILE([#include <sys/time.h>],
2556 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2557 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2558 [Define if gettimeofday() does not have second (timezone) argument
2559 This is the case on Motorola V4 (R40V4.2)])
2560 )
2561)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002562
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002563AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002564AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002565#if defined(MAJOR_IN_MKDEV)
2566#include <sys/mkdev.h>
2567#elif defined(MAJOR_IN_SYSMACROS)
2568#include <sys/sysmacros.h>
2569#else
2570#include <sys/types.h>
2571#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002572],[
2573 makedev(major(0),minor(0));
2574],[
2575 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2576 [Define to 1 if you have the device macros.])
2577 AC_MSG_RESULT(yes)
2578],[
2579 AC_MSG_RESULT(no)
2580])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002581
2582# On OSF/1 V5.1, getaddrinfo is available, but a define
2583# for [no]getaddrinfo in netdb.h.
2584AC_MSG_CHECKING(for getaddrinfo)
2585AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002586#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002587#include <sys/socket.h>
2588#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002589#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002590],[
2591getaddrinfo(NULL, NULL, NULL, NULL);
2592], [
2593AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002594AC_MSG_CHECKING(getaddrinfo bug)
2595AC_TRY_RUN([
2596#include <sys/types.h>
2597#include <netdb.h>
2598#include <string.h>
2599#include <sys/socket.h>
2600#include <netinet/in.h>
2601
2602main()
2603{
2604 int passive, gaierr, inet4 = 0, inet6 = 0;
2605 struct addrinfo hints, *ai, *aitop;
2606 char straddr[INET6_ADDRSTRLEN], strport[16];
2607
2608 for (passive = 0; passive <= 1; passive++) {
2609 memset(&hints, 0, sizeof(hints));
2610 hints.ai_family = AF_UNSPEC;
2611 hints.ai_flags = passive ? AI_PASSIVE : 0;
2612 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002613 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002614 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2615 (void)gai_strerror(gaierr);
2616 goto bad;
2617 }
2618 for (ai = aitop; ai; ai = ai->ai_next) {
2619 if (ai->ai_addr == NULL ||
2620 ai->ai_addrlen == 0 ||
2621 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2622 straddr, sizeof(straddr), strport, sizeof(strport),
2623 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2624 goto bad;
2625 }
2626 switch (ai->ai_family) {
2627 case AF_INET:
2628 if (strcmp(strport, "54321") != 0) {
2629 goto bad;
2630 }
2631 if (passive) {
2632 if (strcmp(straddr, "0.0.0.0") != 0) {
2633 goto bad;
2634 }
2635 } else {
2636 if (strcmp(straddr, "127.0.0.1") != 0) {
2637 goto bad;
2638 }
2639 }
2640 inet4++;
2641 break;
2642 case AF_INET6:
2643 if (strcmp(strport, "54321") != 0) {
2644 goto bad;
2645 }
2646 if (passive) {
2647 if (strcmp(straddr, "::") != 0) {
2648 goto bad;
2649 }
2650 } else {
2651 if (strcmp(straddr, "::1") != 0) {
2652 goto bad;
2653 }
2654 }
2655 inet6++;
2656 break;
2657 case AF_UNSPEC:
2658 goto bad;
2659 break;
2660 default:
2661 /* another family support? */
2662 break;
2663 }
2664 }
2665 }
2666
2667 if (!(inet4 == 0 || inet4 == 2))
2668 goto bad;
2669 if (!(inet6 == 0 || inet6 == 2))
2670 goto bad;
2671
2672 if (aitop)
2673 freeaddrinfo(aitop);
2674 exit(0);
2675
2676 bad:
2677 if (aitop)
2678 freeaddrinfo(aitop);
2679 exit(1);
2680}
2681],
2682AC_MSG_RESULT(good)
2683buggygetaddrinfo=no,
2684AC_MSG_RESULT(buggy)
2685buggygetaddrinfo=yes,
2686AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002687buggygetaddrinfo=yes)], [
2688AC_MSG_RESULT(no)
2689buggygetaddrinfo=yes
2690])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002691
2692if test "$buggygetaddrinfo" = "yes"; then
2693 if test "$ipv6" = "yes"; then
2694 echo 'Fatal: You must get working getaddrinfo() function.'
2695 echo ' or you can specify "--disable-ipv6"'.
2696 exit 1
2697 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002698else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002699 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002700fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002701AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002702
Guido van Rossum627b2d71993-12-24 10:39:16 +00002703# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002704AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002705AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002706AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002707AC_CHECK_MEMBERS([struct stat.st_rdev])
2708AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002709AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002710AC_CHECK_MEMBERS([struct stat.st_gen])
2711AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002712AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002713
2714AC_MSG_CHECKING(for time.h that defines altzone)
2715AC_CACHE_VAL(ac_cv_header_time_altzone,
2716[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2717 ac_cv_header_time_altzone=yes,
2718 ac_cv_header_time_altzone=no)])
2719AC_MSG_RESULT($ac_cv_header_time_altzone)
2720if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002721 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002722fi
2723
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002724was_it_defined=no
2725AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002726AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002727#include <sys/types.h>
2728#include <sys/select.h>
2729#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002730], [;], [
2731 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2732 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2733 (which you can't on SCO ODT 3.0).])
2734 was_it_defined=yes
2735])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002736AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002737
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002738AC_MSG_CHECKING(for addrinfo)
2739AC_CACHE_VAL(ac_cv_struct_addrinfo,
2740AC_TRY_COMPILE([
2741# include <netdb.h>],
2742 [struct addrinfo a],
2743 ac_cv_struct_addrinfo=yes,
2744 ac_cv_struct_addrinfo=no))
2745AC_MSG_RESULT($ac_cv_struct_addrinfo)
2746if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002747 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002748fi
2749
2750AC_MSG_CHECKING(for sockaddr_storage)
2751AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2752AC_TRY_COMPILE([
2753# include <sys/types.h>
2754# include <sys/socket.h>],
2755 [struct sockaddr_storage s],
2756 ac_cv_struct_sockaddr_storage=yes,
2757 ac_cv_struct_sockaddr_storage=no))
2758AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2759if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002760 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002761fi
2762
Guido van Rossum627b2d71993-12-24 10:39:16 +00002763# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002764
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002765AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002766AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002767
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002768works=no
2769AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002770AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2771 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2772)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002773AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002774
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002775works=no
2776AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002777AC_TRY_COMPILE([], [signed char c;], works=yes,
2778 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2779)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002780AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002781
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002782have_prototypes=no
2783AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002784AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2785 AC_DEFINE(HAVE_PROTOTYPES, 1,
2786 [Define if your compiler supports function prototype])
2787 have_prototypes=yes
2788])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002789AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002790
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002791works=no
2792AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002793AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002794#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002795int foo(int x, ...) {
2796 va_list va;
2797 va_start(va, x);
2798 va_arg(va, int);
2799 va_arg(va, char *);
2800 va_arg(va, double);
2801 return 0;
2802}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002803], [return foo(10, "", 3.14);], [
2804 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2805 [Define if your compiler supports variable length function prototypes
2806 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2807 works=yes
2808])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002809AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002810
Dave Cole331708b2004-08-09 04:51:41 +00002811# check for socketpair
2812AC_MSG_CHECKING(for socketpair)
2813AC_TRY_COMPILE([
2814#include <sys/types.h>
2815#include <sys/socket.h>
2816], void *x=socketpair,
2817 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2818 AC_MSG_RESULT(yes),
2819 AC_MSG_RESULT(no)
2820)
2821
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002822# check if sockaddr has sa_len member
2823AC_MSG_CHECKING(if sockaddr has sa_len member)
2824AC_TRY_COMPILE([#include <sys/types.h>
2825#include <sys/socket.h>],
2826[struct sockaddr x;
2827x.sa_len = 0;],
2828 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002829 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002830 AC_MSG_RESULT(no))
2831
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002832va_list_is_array=no
2833AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002834AC_TRY_COMPILE([
2835#ifdef HAVE_STDARG_PROTOTYPES
2836#include <stdarg.h>
2837#else
2838#include <varargs.h>
2839#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002840], [va_list list1, list2; list1 = list2;], , [
2841 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2842 va_list_is_array=yes
2843])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002844AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002845
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002846# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002847AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2848 [Define this if you have some version of gethostbyname_r()])
2849
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002850AC_CHECK_FUNC(gethostbyname_r, [
2851 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2852 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2853 OLD_CFLAGS=$CFLAGS
2854 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2855 AC_TRY_COMPILE([
2856# include <netdb.h>
2857 ], [
2858 char *name;
2859 struct hostent *he, *res;
2860 char buffer[2048];
2861 int buflen = 2048;
2862 int h_errnop;
2863
2864 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2865 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002866 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002867 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2868 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002869 AC_MSG_RESULT(yes)
2870 ], [
2871 AC_MSG_RESULT(no)
2872 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2873 AC_TRY_COMPILE([
2874# include <netdb.h>
2875 ], [
2876 char *name;
2877 struct hostent *he;
2878 char buffer[2048];
2879 int buflen = 2048;
2880 int h_errnop;
2881
2882 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2883 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002884 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002885 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2886 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002887 AC_MSG_RESULT(yes)
2888 ], [
2889 AC_MSG_RESULT(no)
2890 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2891 AC_TRY_COMPILE([
2892# include <netdb.h>
2893 ], [
2894 char *name;
2895 struct hostent *he;
2896 struct hostent_data data;
2897
2898 (void) gethostbyname_r(name, he, &data);
2899 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002900 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002901 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2902 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002903 AC_MSG_RESULT(yes)
2904 ], [
2905 AC_MSG_RESULT(no)
2906 ])
2907 ])
2908 ])
2909 CFLAGS=$OLD_CFLAGS
2910], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002911 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002912])
2913AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2914AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2915AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002916AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002917AC_SUBST(HAVE_GETHOSTBYNAME)
2918
Guido van Rossum627b2d71993-12-24 10:39:16 +00002919# checks for system services
2920# (none yet)
2921
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002922# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002923AC_CHECK_FUNC(__fpu_control,
2924 [],
2925 [AC_CHECK_LIB(ieee, __fpu_control)
2926])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002927
Guido van Rossum93274221997-05-09 02:42:00 +00002928# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002929AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002930AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002931 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2932[
Guido van Rossum93274221997-05-09 02:42:00 +00002933if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002934then
2935 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2936 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2937 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002938else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002939fi],
2940[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002941
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002942# check for --with-libm=...
2943AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002944case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002945Darwin) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002946*) LIBM=-lm
2947esac
Guido van Rossum93274221997-05-09 02:42:00 +00002948AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002949AC_ARG_WITH(libm,
2950 AC_HELP_STRING(--with-libm=STRING, math library),
2951[
Guido van Rossum93274221997-05-09 02:42:00 +00002952if test "$withval" = no
2953then LIBM=
2954 AC_MSG_RESULT(force LIBM empty)
2955elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002956then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002957 AC_MSG_RESULT(set LIBM="$withval")
2958else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002959fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002960[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002961
2962# check for --with-libc=...
2963AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002964AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002965AC_ARG_WITH(libc,
2966 AC_HELP_STRING(--with-libc=STRING, C library),
2967[
Guido van Rossum93274221997-05-09 02:42:00 +00002968if test "$withval" = no
2969then LIBC=
2970 AC_MSG_RESULT(force LIBC empty)
2971elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002972then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002973 AC_MSG_RESULT(set LIBC="$withval")
2974else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002975fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002976[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002977
Christian Heimes99170a52007-12-19 02:07:34 +00002978# ************************************
2979# * Check for mathematical functions *
2980# ************************************
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002981LIBS_SAVE=$LIBS
2982LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002983AC_REPLACE_FUNCS(hypot)
Christian Heimes99170a52007-12-19 02:07:34 +00002984
Christian Heimes9bd667a2008-01-20 15:14:11 +00002985AC_CHECK_FUNCS(acosh asinh atanh copysign expm1 finite isinf isnan log1p)
Christian Heimes99170a52007-12-19 02:07:34 +00002986
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002987LIBS=$LIBS_SAVE
2988
Guido van Rossumef2255b2000-03-10 22:30:29 +00002989# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002990AC_CHECK_HEADER(wchar.h, [
2991 AC_DEFINE(HAVE_WCHAR_H, 1,
2992 [Define if the compiler provides a wchar.h header file.])
2993 wchar_h="yes"
2994],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002995wchar_h="no"
2996)
2997
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002998# determine wchar_t size
2999if test "$wchar_h" = yes
3000then
Guido van Rossum67b26592001-10-20 14:21:45 +00003001 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003002fi
3003
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00003004AC_MSG_CHECKING(for UCS-4 tcl)
3005have_ucs4_tcl=no
3006AC_TRY_COMPILE([
3007#include <tcl.h>
3008#if TCL_UTF_MAX != 6
3009# error "NOT UCS4_TCL"
3010#endif], [], [
3011 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
3012 have_ucs4_tcl=yes
3013])
3014AC_MSG_RESULT($have_ucs4_tcl)
3015
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003016# check whether wchar_t is signed or not
3017if test "$wchar_h" = yes
3018then
3019 # check whether wchar_t is signed or not
3020 AC_MSG_CHECKING(whether wchar_t is signed)
3021 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
3022 AC_TRY_RUN([
3023 #include <wchar.h>
3024 int main()
3025 {
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003026 /* Success: exit code 0 */
3027 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00003028 }
3029 ],
3030 ac_cv_wchar_t_signed=yes,
3031 ac_cv_wchar_t_signed=no,
3032 ac_cv_wchar_t_signed=yes)])
3033 AC_MSG_RESULT($ac_cv_wchar_t_signed)
3034fi
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003035
Georg Brandl52d168a2008-01-07 18:10:24 +00003036AC_MSG_CHECKING(what type to use for str)
3037AC_ARG_WITH(wide-unicode,
3038 AC_HELP_STRING(--with-wide-unicode, Use 4-byte Unicode characters (default is 2 bytes)),
3039[
3040if test "$withval" != no
3041then unicode_size="4"
3042else unicode_size="2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003043fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003044],
3045[
3046case "$have_ucs4_tcl" in
3047 yes) unicode_size="4" ;;
3048 *) unicode_size="2" ;;
3049esac
3050])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003051
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003052AH_TEMPLATE(Py_UNICODE_SIZE,
3053 [Define as the size of the unicode type.])
Georg Brandl52d168a2008-01-07 18:10:24 +00003054case "$unicode_size" in
3055 4) AC_DEFINE(Py_UNICODE_SIZE, 4) ;;
3056 *) AC_DEFINE(Py_UNICODE_SIZE, 2) ;;
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003057esac
3058
Martin v. Löwis11437992002-04-12 09:54:03 +00003059AH_TEMPLATE(PY_UNICODE_TYPE,
3060 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00003061
Georg Brandl52d168a2008-01-07 18:10:24 +00003062# wchar_t is only usable if it maps to an unsigned type
3063if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00003064 -a "$ac_cv_wchar_t_signed" = "no"
Georg Brandl52d168a2008-01-07 18:10:24 +00003065then
3066 PY_UNICODE_TYPE="wchar_t"
3067 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
3068 [Define if you have a useable wchar_t type defined in wchar.h; useable
3069 means wchar_t must be an unsigned type with at least 16 bits. (see
3070 Include/unicodeobject.h).])
3071 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
3072elif test "$ac_cv_sizeof_short" = "$unicode_size"
3073then
3074 PY_UNICODE_TYPE="unsigned short"
3075 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
3076elif test "$ac_cv_sizeof_long" = "$unicode_size"
3077then
3078 PY_UNICODE_TYPE="unsigned long"
3079 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
3080else
3081 PY_UNICODE_TYPE="no type found"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00003082fi
Georg Brandl52d168a2008-01-07 18:10:24 +00003083AC_MSG_RESULT($PY_UNICODE_TYPE)
Guido van Rossumef2255b2000-03-10 22:30:29 +00003084
3085# check for endianness
3086AC_C_BIGENDIAN
Thomas Wouters477c8d52006-05-27 19:21:47 +00003087AH_VERBATIM([WORDS_BIGENDIAN],
3088[
3089 /* Define to 1 if your processor stores words with the most significant byte
3090 first (like Motorola and SPARC, unlike Intel and VAX).
3091
3092 The block below does compile-time checking for endianness on platforms
3093 that use GCC and therefore allows compiling fat binaries on OSX by using
3094 '-arch ppc -arch i386' as the compile flags. The phrasing was choosen
3095 such that the configure-result is used on systems that don't use GCC.
3096 */
3097#ifdef __BIG_ENDIAN__
3098#define WORDS_BIGENDIAN 1
3099#else
3100#ifndef __LITTLE_ENDIAN__
3101#undef WORDS_BIGENDIAN
3102#endif
3103#endif])
Guido van Rossumef2255b2000-03-10 22:30:29 +00003104
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003105# Check whether right shifting a negative integer extends the sign bit
3106# or fills with zeros (like the Cray J90, according to Tim Peters).
3107AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003108AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003109AC_TRY_RUN([
3110int main()
3111{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003112 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003113}
Guido van Rossum3065c942001-09-17 04:03:14 +00003114],
3115ac_cv_rshift_extends_sign=yes,
3116ac_cv_rshift_extends_sign=no,
3117ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003118AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3119if test "$ac_cv_rshift_extends_sign" = no
3120then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003121 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3122 [Define if i>>j for signed int i does not extend the sign bit
3123 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003124fi
3125
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003126# check for getc_unlocked and related locking functions
3127AC_MSG_CHECKING(for getc_unlocked() and friends)
3128AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3129AC_TRY_LINK([#include <stdio.h>],[
3130 FILE *f = fopen("/dev/null", "r");
3131 flockfile(f);
3132 getc_unlocked(f);
3133 funlockfile(f);
3134], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3135AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3136if test "$ac_cv_have_getc_unlocked" = yes
3137then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003138 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3139 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003140fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003141
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003142# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003143# save the value of LIBS so we don't actually link Python with readline
3144LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003145AC_CHECK_LIB(readline, readline)
3146if test "$ac_cv_have_readline_readline" = no
3147then
3148 AC_CHECK_LIB(termcap, readline)
3149fi
3150
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003151# check for readline 2.1
3152AC_CHECK_LIB(readline, rl_callback_handler_install,
3153 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003154 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003155
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003156# check for readline 2.2
3157AC_TRY_CPP([#include <readline/readline.h>],
3158have_readline=yes, have_readline=no)
3159if test $have_readline = yes
3160then
3161 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3162 [readline/readline.h],
3163 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3164 [Define if you have readline 2.2]), )
3165fi
3166
Martin v. Löwis0daad592001-09-30 21:09:59 +00003167# check for readline 4.0
3168AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003169 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003170 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00003171
Thomas Wouters89d996e2007-09-08 17:39:28 +00003172# also in 4.0
3173AC_CHECK_LIB(readline, rl_completion_display_matches_hook,
3174 AC_DEFINE(HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK, 1,
3175 [Define if you have readline 4.0]), , )
3176
Guido van Rossum353ae582001-07-10 16:45:32 +00003177# check for readline 4.2
3178AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003179 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003180 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00003181
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003182# also in readline 4.2
3183AC_TRY_CPP([#include <readline/readline.h>],
3184have_readline=yes, have_readline=no)
3185if test $have_readline = yes
3186then
3187 AC_EGREP_HEADER([extern int rl_catch_signals;],
3188 [readline/readline.h],
3189 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3190 [Define if you can turn off readline's signal handling.]), )
3191fi
3192
Martin v. Löwis82bca632006-02-10 20:49:30 +00003193# End of readline checks: restore LIBS
3194LIBS=$LIBS_no_readline
3195
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003196AC_MSG_CHECKING(for broken nice())
3197AC_CACHE_VAL(ac_cv_broken_nice, [
3198AC_TRY_RUN([
3199int main()
3200{
3201 int val1 = nice(1);
3202 if (val1 != -1 && val1 == nice(2))
3203 exit(0);
3204 exit(1);
3205}
Guido van Rossum3065c942001-09-17 04:03:14 +00003206],
3207ac_cv_broken_nice=yes,
3208ac_cv_broken_nice=no,
3209ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003210AC_MSG_RESULT($ac_cv_broken_nice)
3211if test "$ac_cv_broken_nice" = yes
3212then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003213 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3214 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003215fi
3216
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003217AC_MSG_CHECKING(for broken poll())
3218AC_TRY_RUN([
3219#include <poll.h>
3220
3221int main (void)
3222 {
3223 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3224
3225 close (42);
3226
3227 int poll_test = poll (&poll_struct, 1, 0);
3228
3229 if (poll_test < 0)
3230 {
3231 exit(0);
3232 }
3233 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3234 {
3235 exit(0);
3236 }
3237 else
3238 {
3239 exit(1);
3240 }
3241 }
3242],
3243ac_cv_broken_poll=yes,
3244ac_cv_broken_poll=no,
3245ac_cv_broken_poll=no)
3246AC_MSG_RESULT($ac_cv_broken_poll)
3247if test "$ac_cv_broken_poll" = yes
3248then
3249 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3250 [Define if poll() sets errno on invalid file descriptors.])
3251fi
3252
Brett Cannon43802422005-02-10 20:48:03 +00003253# Before we can test tzset, we need to check if struct tm has a tm_zone
3254# (which is not required by ISO C or UNIX spec) and/or if we support
3255# tzname[]
3256AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003257
Brett Cannon43802422005-02-10 20:48:03 +00003258# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003259AC_MSG_CHECKING(for working tzset())
3260AC_CACHE_VAL(ac_cv_working_tzset, [
3261AC_TRY_RUN([
3262#include <stdlib.h>
3263#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003264#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003265
3266#if HAVE_TZNAME
3267extern char *tzname[];
3268#endif
3269
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003270int main()
3271{
Brett Cannon18367812003-09-19 00:59:16 +00003272 /* Note that we need to ensure that not only does tzset(3)
3273 do 'something' with localtime, but it works as documented
3274 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003275 This includes making sure that tzname is set properly if
3276 tm->tm_zone does not exist since it is the alternative way
3277 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003278
3279 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003280 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003281 */
3282
Brett Cannon43802422005-02-10 20:48:03 +00003283 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003284 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3285
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003286 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003287 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003288 if (localtime(&groundhogday)->tm_hour != 0)
3289 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003290#if HAVE_TZNAME
3291 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3292 if (strcmp(tzname[0], "UTC") ||
3293 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3294 exit(1);
3295#endif
Brett Cannon18367812003-09-19 00:59:16 +00003296
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003297 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003298 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003299 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003300 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003301#if HAVE_TZNAME
3302 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3303 exit(1);
3304#endif
Brett Cannon18367812003-09-19 00:59:16 +00003305
3306 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3307 tzset();
3308 if (localtime(&groundhogday)->tm_hour != 11)
3309 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003310#if HAVE_TZNAME
3311 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3312 exit(1);
3313#endif
3314
3315#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003316 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3317 exit(1);
3318 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3319 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003320#endif
Brett Cannon18367812003-09-19 00:59:16 +00003321
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003322 exit(0);
3323}
3324],
3325ac_cv_working_tzset=yes,
3326ac_cv_working_tzset=no,
3327ac_cv_working_tzset=no)])
3328AC_MSG_RESULT($ac_cv_working_tzset)
3329if test "$ac_cv_working_tzset" = yes
3330then
3331 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3332 [Define if tzset() actually switches the local timezone in a meaningful way.])
3333fi
3334
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003335# Look for subsecond timestamps in struct stat
3336AC_MSG_CHECKING(for tv_nsec in struct stat)
3337AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3338AC_TRY_COMPILE([#include <sys/stat.h>], [
3339struct stat st;
3340st.st_mtim.tv_nsec = 1;
3341],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003342ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003343ac_cv_stat_tv_nsec=no,
3344ac_cv_stat_tv_nsec=no))
3345AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3346if test "$ac_cv_stat_tv_nsec" = yes
3347then
3348 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3349 [Define if you have struct stat.st_mtim.tv_nsec])
3350fi
3351
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003352# Look for BSD style subsecond timestamps in struct stat
3353AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3354AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3355AC_TRY_COMPILE([#include <sys/stat.h>], [
3356struct stat st;
3357st.st_mtimespec.tv_nsec = 1;
3358],
3359ac_cv_stat_tv_nsec2=yes,
3360ac_cv_stat_tv_nsec2=no,
3361ac_cv_stat_tv_nsec2=no))
3362AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3363if test "$ac_cv_stat_tv_nsec2" = yes
3364then
3365 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3366 [Define if you have struct stat.st_mtimensec])
3367fi
3368
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003369# On HP/UX 11.0, mvwdelch is a block with a return statement
3370AC_MSG_CHECKING(whether mvwdelch is an expression)
3371AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3372AC_TRY_COMPILE([#include <curses.h>], [
3373 int rtn;
3374 rtn = mvwdelch(0,0,0);
3375], ac_cv_mvwdelch_is_expression=yes,
3376 ac_cv_mvwdelch_is_expression=no,
3377 ac_cv_mvwdelch_is_expression=yes))
3378AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3379
3380if test "$ac_cv_mvwdelch_is_expression" = yes
3381then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003382 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3383 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003384fi
3385
3386AC_MSG_CHECKING(whether WINDOW has _flags)
3387AC_CACHE_VAL(ac_cv_window_has_flags,
3388AC_TRY_COMPILE([#include <curses.h>], [
3389 WINDOW *w;
3390 w->_flags = 0;
3391], ac_cv_window_has_flags=yes,
3392 ac_cv_window_has_flags=no,
3393 ac_cv_window_has_flags=no))
3394AC_MSG_RESULT($ac_cv_window_has_flags)
3395
3396
3397if test "$ac_cv_window_has_flags" = yes
3398then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003399 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3400 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003401fi
3402
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003403AC_MSG_CHECKING(for is_term_resized)
3404AC_TRY_COMPILE([#include <curses.h>], void *x=is_term_resized,
3405 AC_DEFINE(HAVE_CURSES_IS_TERM_RESIZED, 1, Define if you have the 'is_term_resized' function.)
3406 AC_MSG_RESULT(yes),
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003407 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003408)
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003409
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003410AC_MSG_CHECKING(for resize_term)
3411AC_TRY_COMPILE([#include <curses.h>], void *x=resize_term,
3412 AC_DEFINE(HAVE_CURSES_RESIZE_TERM, 1, Define if you have the 'resize_term' function.)
3413 AC_MSG_RESULT(yes),
Neal Norwitz865400f2003-03-21 01:42:58 +00003414 AC_MSG_RESULT(no)
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003415)
3416
3417AC_MSG_CHECKING(for resizeterm)
3418AC_TRY_COMPILE([#include <curses.h>], void *x=resizeterm,
3419 AC_DEFINE(HAVE_CURSES_RESIZETERM, 1, Define if you have the 'resizeterm' function.)
3420 AC_MSG_RESULT(yes),
3421 AC_MSG_RESULT(no)
3422)
3423
Thomas Wouters89f507f2006-12-13 04:49:30 +00003424AC_MSG_CHECKING(for /dev/ptmx)
3425
3426if test -r /dev/ptmx
3427then
3428 AC_MSG_RESULT(yes)
3429 AC_DEFINE(HAVE_DEV_PTMX, 1,
3430 [Define if we have /dev/ptmx.])
3431else
3432 AC_MSG_RESULT(no)
3433fi
3434
3435AC_MSG_CHECKING(for /dev/ptc)
3436
3437if test -r /dev/ptc
3438then
3439 AC_MSG_RESULT(yes)
3440 AC_DEFINE(HAVE_DEV_PTC, 1,
3441 [Define if we have /dev/ptc.])
3442else
3443 AC_MSG_RESULT(no)
3444fi
Neal Norwitz865400f2003-03-21 01:42:58 +00003445
Thomas Wouters477c8d52006-05-27 19:21:47 +00003446AC_MSG_CHECKING(for %zd printf() format support)
3447AC_TRY_RUN([#include <stdio.h>
3448#include <stddef.h>
3449#include <string.h>
3450
Christian Heimes2c181612007-12-17 20:04:13 +00003451#ifdef HAVE_SYS_TYPES_H
3452#include <sys/types.h>
3453#endif
Thomas Wouters89f507f2006-12-13 04:49:30 +00003454
3455#ifdef HAVE_SSIZE_T
3456typedef ssize_t Py_ssize_t;
3457#elif SIZEOF_VOID_P == SIZEOF_LONG
3458typedef long Py_ssize_t;
3459#else
3460typedef int Py_ssize_t;
3461#endif
Thomas Wouters477c8d52006-05-27 19:21:47 +00003462
Christian Heimes2c181612007-12-17 20:04:13 +00003463int main()
3464{
3465 char buffer[256];
3466
Thomas Wouters477c8d52006-05-27 19:21:47 +00003467 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3468 return 1;
3469
Thomas Wouters89f507f2006-12-13 04:49:30 +00003470 if (strcmp(buffer, "123"))
Thomas Wouters477c8d52006-05-27 19:21:47 +00003471 return 1;
Thomas Wouters89f507f2006-12-13 04:49:30 +00003472
3473 if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
3474 return 1;
3475
3476 if (strcmp(buffer, "-123"))
3477 return 1;
3478
Thomas Wouters477c8d52006-05-27 19:21:47 +00003479 return 0;
3480}],
3481[AC_MSG_RESULT(yes)
3482 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3483 AC_MSG_RESULT(no))
3484
Martin v. Löwis01c04012002-11-11 14:58:44 +00003485AC_CHECK_TYPE(socklen_t,,
3486 AC_DEFINE(socklen_t,int,
3487 Define to `int' if <sys/socket.h> does not define.),[
3488#ifdef HAVE_SYS_TYPES_H
3489#include <sys/types.h>
3490#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003491#ifdef HAVE_SYS_SOCKET_H
3492#include <sys/socket.h>
3493#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003494])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003495
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003496AC_SUBST(THREADHEADERS)
3497
3498for h in `(cd $srcdir;echo Python/thread_*.h)`
3499do
3500 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3501done
3502
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003503AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003504SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003505AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003506for dir in $SRCDIRS; do
3507 if test ! -d $dir; then
3508 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003509 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003510done
3511AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003512
Guido van Rossum627b2d71993-12-24 10:39:16 +00003513# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003514AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3515AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003516
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003517echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003518if test ! -f Modules/Setup
3519then
3520 cp $srcdir/Modules/Setup.dist Modules/Setup
3521fi
3522
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00003523echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003524if test ! -f Modules/Setup.local
3525then
3526 echo "# Edit this file for local setup changes" >Modules/Setup.local
3527fi
3528
3529echo "creating Makefile"
3530$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3531 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003532 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003533mv config.c Modules