blob: 6a8bc826906c1e6e69fd33e5b8b413974c30bc4b [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)
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00004m4_define(PYTHON_VERSION, 2.5)
Martin v. Löwis88afe662002-10-26 13:47:44 +00005
Guido van Rossum76be6ed1995-01-02 18:33:54 +00006AC_REVISION($Revision$)
Martin v. Löwis4ddc78a2006-01-29 09:53:44 +00007AC_PREREQ(2.59)
Martin v. Löwis1d459062005-03-14 21:23:33 +00008AC_INIT(python, PYTHON_VERSION, http://www.python.org/python-bugs)
Martin v. Löwis88afe662002-10-26 13:47:44 +00009AC_CONFIG_SRCDIR([Include/object.h])
Martin v. Löwis4f1cd8b2001-07-26 13:41:06 +000010AC_CONFIG_HEADER(pyconfig.h)
Guido van Rossum627b2d71993-12-24 10:39:16 +000011
Martin v. Löwis8316feb2003-06-14 07:48:07 +000012dnl This is for stuff that absolutely must end up in pyconfig.h.
13dnl Please use pyport.h instead, if possible.
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000014AH_TOP([
15#ifndef Py_PYCONFIG_H
16#define Py_PYCONFIG_H
17])
Martin v. Löwis11437992002-04-12 09:54:03 +000018AH_BOTTOM([
Martin v. Löwis11437992002-04-12 09:54:03 +000019/* Define the macros needed if on a UnixWare 7.x system. */
20#if defined(__USLC__) && defined(__SCO_VERSION__)
21#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
22#endif
Martin v. Löwisbddf5a52002-11-11 13:37:28 +000023
24#endif /*Py_PYCONFIG_H*/
Martin v. Löwis11437992002-04-12 09:54:03 +000025])
26
Martin v. Löwis8316feb2003-06-14 07:48:07 +000027# We don't use PACKAGE_ variables, and they cause conflicts
28# with other autoconf-based packages that include Python.h
29grep -v 'define PACKAGE_' <confdefs.h >confdefs.h.new
30rm confdefs.h
31mv confdefs.h.new confdefs.h
32
Guido van Rossum642b6781997-07-19 19:35:41 +000033AC_SUBST(VERSION)
Martin v. Löwis88afe662002-10-26 13:47:44 +000034VERSION=PYTHON_VERSION
Guido van Rossum642b6781997-07-19 19:35:41 +000035
Martin v. Löwis1142de32002-03-29 16:28:31 +000036AC_SUBST(SOVERSION)
37SOVERSION=1.0
38
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000039# The later defininition of _XOPEN_SOURCE disables certain features
40# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone).
41AC_DEFINE(_GNU_SOURCE, 1, [Define on Linux to activate all library features])
42
Martin v. Löwisbcd93962003-05-03 10:32:18 +000043# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
44# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable
45# them.
46AC_DEFINE(_NETBSD_SOURCE, 1, [Define on NetBSD to activate all library features])
47
Andrew MacIntyreabccf412003-07-02 13:53:25 +000048# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
49# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable
50# them.
51AC_DEFINE(__BSD_VISIBLE, 1, [Define on FreeBSD to activate all library features])
52
Martin v. Löwisd6320502004-08-12 13:45:08 +000053# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables
54# u_int on Irix 5.3. Defining _BSD_TYPES brings it back.
55AC_DEFINE(_BSD_TYPES, 1, [Define on Irix to enable u_int])
56
Martin v. Löwise981a4e2002-11-11 13:26:51 +000057define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000058
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000059# Arguments passed to configure.
60AC_SUBST(CONFIG_ARGS)
61CONFIG_ARGS="$ac_configure_args"
62
Ronald Oussoren988117f2006-04-29 11:31:35 +000063AC_ARG_ENABLE(universalsdk,
64 AC_HELP_STRING(--enable-universalsdk@<:@SDKDIR@:>@, Build agains Mac OS X 10.4u SDK (ppc/i386)),
65[
66 case $enableval in
67 yes)
68 enableval=/Developer/SDKs/MacOSX10.4u.sdk
69 ;;
70 esac
71 case $enableval in
72 no)
73 UNIVERSALSDK=
74 enable_universalsdk=
75 ;;
76 *)
77 UNIVERSALSDK=$enableval
78 ;;
79 esac
80],[
81 UNIVERSALSDK=
82 enable_universalsdk=
83])
84AC_SUBST(UNIVERSALSDK)
85
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000086dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000087AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000088 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
89[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000090 case $enableval in
91 yes)
92 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000093 esac
94 case $enableval in
95 no)
96 PYTHONFRAMEWORK=
97 PYTHONFRAMEWORKDIR=no-framework
98 PYTHONFRAMEWORKPREFIX=
99 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000100 FRAMEWORKINSTALLFIRST=
101 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000102 FRAMEWORKALTINSTALLFIRST=
103 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000104 if test "x${prefix}" = "xNONE"; then
105 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
106 else
107 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
108 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000109 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000110 ;;
111 *)
Jack Jansen127e56e2001-09-11 14:41:54 +0000112 PYTHONFRAMEWORK=Python
113 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000114 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +0000115 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000116 FRAMEWORKINSTALLFIRST="frameworkinstallstructure"
117 FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools"
Ronald Oussoren5b787322006-06-06 19:50:24 +0000118 FRAMEWORKALTINSTALLFIRST="${FRAMEWORKINSTALLFIRST} bininstall maninstall"
119 FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools"
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000120 if test "x${prefix}" = "xNONE" ; then
121 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
122 else
123 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
124 fi
Jack Jansen127e56e2001-09-11 14:41:54 +0000125 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Ronald Oussoren836b0392006-05-14 19:56:34 +0000126
127 # Add makefiles for Mac specific code to the list of output
128 # files:
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000129 AC_CONFIG_FILES(Mac/Makefile)
130 AC_CONFIG_FILES(Mac/PythonLauncher/Makefile)
131 AC_CONFIG_FILES(Mac/IDLE/Makefile)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000132 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000133 ],[
134 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +0000135 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000136 PYTHONFRAMEWORKPREFIX=
137 PYTHONFRAMEWORKINSTALLDIR=
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000138 FRAMEWORKINSTALLFIRST=
139 FRAMEWORKINSTALLLAST=
Ronald Oussoren5b787322006-06-06 19:50:24 +0000140 FRAMEWORKALTINSTALLFIRST=
141 FRAMEWORKALTINSTALLLAST=
Ronald Oussoren2db3a8f2006-06-07 19:06:01 +0000142 if test "x${prefix}" = "xNONE" ; then
143 FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}"
144 else
145 FRAMEWORKUNIXTOOLSPREFIX="${prefix}"
146 fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000147 enable_framework=
148])
149AC_SUBST(PYTHONFRAMEWORK)
150AC_SUBST(PYTHONFRAMEWORKDIR)
151AC_SUBST(PYTHONFRAMEWORKPREFIX)
152AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Ronald Oussoren567a8ff2006-05-26 11:43:26 +0000153AC_SUBST(FRAMEWORKINSTALLFIRST)
154AC_SUBST(FRAMEWORKINSTALLLAST)
Ronald Oussoren5b787322006-06-06 19:50:24 +0000155AC_SUBST(FRAMEWORKALTINSTALLFIRST)
156AC_SUBST(FRAMEWORKALTINSTALLLAST)
157AC_SUBST(FRAMEWORKUNIXTOOLSPREFIX)
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000158
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000159##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000160## AC_HELP_STRING(--with-dyld,
161## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000162##
Guido van Rossumb418f891996-07-30 18:06:02 +0000163# Set name for machine-dependent library files
164AC_SUBST(MACHDEP)
165AC_MSG_CHECKING(MACHDEP)
166if test -z "$MACHDEP"
167then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000168 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000169 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
170 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000171 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000172 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000173 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000174 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000175 ac_md_system=`echo $ac_sys_system |
176 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
177 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000178 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000179 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000180
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000181 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000182 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000183 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000184 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000185 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000186 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000187 esac
188fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000189
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000190# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
191# disable features if it is defined, without any means to access these
192# features as extensions. For these systems, we skip the definition of
193# _XOPEN_SOURCE. Before adding a system to the list to gain access to
194# some feature, make sure there is no alternative way to access this
195# feature. Also, when using wildcards, make sure you have verified the
196# need for not defining _XOPEN_SOURCE on all systems matching the
197# wildcard, and that the wildcard does not include future systems
198# (which may remove their limitations).
199dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
200case $ac_sys_system/$ac_sys_release in
201 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
202 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000203 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Martin v. Löwis222c5152006-06-03 07:37:13 +0000204 OpenBSD/2.* | OpenBSD/3.@<:@0123456789@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000205 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000206 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
207 # of union __?sigval. Reported by Stuart Bishop.
208 SunOS/5.6)
209 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000210 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
211 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000212 # Reconfirmed for 7.1.4 by Martin v. Loewis.
213 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000214 define_xopen_source=no;;
215 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000216 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000217 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000218 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000219 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
220 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
221 # this is fixed in 10.3, which identifies itself as Darwin/7.*
222 # This should hopefully be fixed in FreeBSD 4.9
223 FreeBSD/4.8* | Darwin/6* )
224 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000225 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
226 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
227 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000228 AIX/4)
229 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000230 AIX/5)
231 if test `uname -r` -eq 1; then
232 define_xopen_source=no
233 fi
234 ;;
Neal Norwitze8fb9922006-04-04 05:32:17 +0000235 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
236 # disables platform specific features beyond repair.
Martin v. Löwisa0588362006-04-04 06:03:50 +0000237 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
238 # has no effect, don't bother defineing them
239 Darwin/@<:@78@:>@.*)
Neal Norwitze8fb9922006-04-04 05:32:17 +0000240 define_xopen_source=no
241 ;;
Martin v. Löwisa0588362006-04-04 06:03:50 +0000242
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000243esac
244
245if test $define_xopen_source = yes
246then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000247 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
248 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000249 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
250 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000251 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000252 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000253 AC_DEFINE(_XOPEN_SOURCE, 500,
254 Define to the level of X/Open that your system supports)
255 ;;
256 *)
257 AC_DEFINE(_XOPEN_SOURCE, 600,
258 Define to the level of X/Open that your system supports)
259 ;;
260 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000261
262 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
263 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
264 # several APIs are not declared. Since this is also needed in some
265 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000266 # except for Solaris 10, where it must not be defined,
267 # as it implies XPG4.2
268 case $ac_sys_system/$ac_sys_release in
269 SunOS/5.10)
270 ;;
271 *)
272 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
273 Define to activate Unix95-and-earlier features)
274 ;;
275 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000276
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000277 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
278
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000279fi
280
Guido van Rossum91922671997-10-09 20:24:13 +0000281#
282# SGI compilers allow the specification of the both the ABI and the
283# ISA on the command line. Depending on the values of these switches,
284# different and often incompatable code will be generated.
285#
286# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
287# thus supply support for various ABI/ISA combinations. The MACHDEP
288# variable is also adjusted.
289#
290AC_SUBST(SGI_ABI)
291if test ! -z "$SGI_ABI"
292then
293 CC="cc $SGI_ABI"
294 LDFLAGS="$SGI_ABI $LDFLAGS"
295 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
296fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000297AC_MSG_RESULT($MACHDEP)
298
Jack Jansen83f898c2002-12-30 22:23:40 +0000299# And add extra plat-mac for darwin
300AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000301AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000302AC_MSG_CHECKING(EXTRAPLATDIR)
303if test -z "$EXTRAPLATDIR"
304then
305 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000306 darwin)
307 EXTRAPLATDIR="\$(PLATMACDIRS)"
308 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
309 ;;
310 *)
311 EXTRAPLATDIR=""
312 EXTRAMACHDEPPATH=""
313 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000314 esac
315fi
316AC_MSG_RESULT($EXTRAPLATDIR)
317
Jack Jansen6b08a402004-06-03 12:41:45 +0000318# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
319# it may influence the way we can build extensions, so distutils
320# needs to check it
321AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
Ronald Oussoren988117f2006-04-29 11:31:35 +0000322AC_SUBST(EXPORT_MACOSX_DEPLOYMENT_TARGET)
Jack Jansen6b08a402004-06-03 12:41:45 +0000323CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
Ronald Oussoren988117f2006-04-29 11:31:35 +0000324EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
Jack Jansen6b08a402004-06-03 12:41:45 +0000325
Guido van Rossum627b2d71993-12-24 10:39:16 +0000326# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000327
328# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
329# for debug/optimization stuff. BASECFLAGS is for flags that are required
330# just to get things to compile and link. Users are free to override OPT
331# when running configure or make. The build should not break if they do.
332# BASECFLAGS should generally not be messed with, however.
333
334# XXX shouldn't some/most/all of this code be merged with the stuff later
335# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000336AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000337AC_ARG_WITH(gcc,
338 AC_HELP_STRING(--without-gcc,never use gcc),
339[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000340 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000341 no) CC=cc
342 without_gcc=yes;;
343 yes) CC=gcc
344 without_gcc=no;;
345 *) CC=$withval
346 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000347 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000348 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000349 AIX*) CC=cc_r
350 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000351 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000352 case $BE_HOST_CPU in
353 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000354 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000355 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000356 BASECFLAGS="$BASECFLAGS -export pragma"
357 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000358 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000359 ;;
360 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000361 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000362 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000363 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000364 ;;
365 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000366 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000367 ;;
368 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000369 AR="\$(srcdir)/Modules/ar_beos"
370 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000371 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000372 Monterey*)
373 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000374 without_gcc=;;
375 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000376 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000377AC_MSG_RESULT($without_gcc)
378
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000379# If the user switches compilers, we can't believe the cache
380if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
381then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000382 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
383(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000384fi
385
Guido van Rossum627b2d71993-12-24 10:39:16 +0000386AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000387
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000388AC_SUBST(CXX)
389AC_SUBST(MAINCC)
390AC_MSG_CHECKING(for --with-cxx-main=<compiler>)
391AC_ARG_WITH(cxx_main,
392 AC_HELP_STRING([--with-cxx-main=<compiler>],
393 [compile main() and link python executable with C++ compiler]),
394[
395
396 case $withval in
397 no) with_cxx_main=no
398 MAINCC='$(CC)';;
399 yes) with_cxx_main=yes
400 MAINCC='$(CXX)';;
401 *) with_cxx_main=yes
402 MAINCC=$withval
403 if test -z "$CXX"
404 then
405 CXX=$withval
406 fi;;
407 esac], [
408 with_cxx_main=no
409 MAINCC='$(CC)'
410])
411AC_MSG_RESULT($with_cxx_main)
412
413preset_cxx="$CXX"
414if test -z "$CXX"
415then
416 case "$CC" in
417 gcc) AC_PATH_PROG(CXX, [g++], [g++], [notfound]) ;;
418 cc) AC_PATH_PROG(CXX, [c++], [c++], [notfound]) ;;
419 esac
420 if test "$CXX" = "notfound"
421 then
422 CXX=""
423 fi
424fi
425if test -z "$CXX"
426then
427 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
428 if test "$CXX" = "notfound"
429 then
430 CXX=""
431 fi
432fi
433if test "$preset_cxx" != "$CXX"
434then
435 AC_MSG_WARN([
436
437 By default, distutils will build C++ extension modules with "$CXX".
438 If this is not intended, then set CXX on the configure command line.
439 ])
440fi
441
442
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000443# checks for UNIX variants that set C preprocessor variables
444AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000445
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000446# Check for unsupported systems
447case $ac_sys_system/$ac_sys_release in
Skip Montanaroce59c042004-01-17 14:19:44 +0000448Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000449 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
450 echo See README for details.
451 exit 1;;
452esac
453
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000454AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000455AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000456AC_ARG_WITH(suffix,
457 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
458[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000459 case $withval in
460 no) EXEEXT=;;
461 yes) EXEEXT=.exe;;
462 *) EXEEXT=$withval;;
463 esac])
464AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000465
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000466# Test whether we're running on a non-case-sensitive system, in which
467# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000468AC_SUBST(BUILDEXEEXT)
469AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000470if test ! -d CaseSensitiveTestDir; then
471mkdir CaseSensitiveTestDir
472fi
473
474if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000475then
Jack Jansen1999ef42001-12-06 21:47:20 +0000476 AC_MSG_RESULT(yes)
477 BUILDEXEEXT=.exe
478else
479 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000480 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000481fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000482rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000483
Guido van Rossumdd997f71998-10-07 19:58:26 +0000484case $MACHDEP in
485bsdos*)
486 case $CC in
487 gcc) CC="$CC -D_HAVE_BSDI";;
488 esac;;
489esac
490
Guido van Rossum84561611997-08-21 00:08:11 +0000491case $ac_sys_system in
492hp*|HP*)
493 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000494 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000495 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000496Monterey*)
497 case $CC in
498 cc) CC="$CC -Wl,-Bexport";;
499 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000500SunOS*)
501 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000502 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000503 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000504esac
505
Martin v. Löwise8964d42001-03-06 12:09:07 +0000506
Neil Schemenauer61c51152001-01-26 16:18:16 +0000507AC_SUBST(LIBRARY)
508AC_MSG_CHECKING(LIBRARY)
509if test -z "$LIBRARY"
510then
511 LIBRARY='libpython$(VERSION).a'
512fi
513AC_MSG_RESULT($LIBRARY)
514
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000515# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000516# name of the library into which to insert object files). BLDLIBRARY is also
517# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
518# is blank as the main program is not linked directly against LDLIBRARY.
519# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
520# systems without shared libraries, LDLIBRARY is the same as LIBRARY
521# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
522# DLLLIBRARY is the shared (i.e., DLL) library.
523#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000524# RUNSHARED is used to run shared python without installed libraries
525#
526# INSTSONAME is the name of the shared library that will be use to install
527# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000528AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000529AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000530AC_SUBST(BLDLIBRARY)
531AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000532AC_SUBST(INSTSONAME)
533AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000534LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000535BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000536INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000537DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000538LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000539RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000540
Guido van Rossumfb842551997-08-06 23:42:07 +0000541# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000542# If CXX is set, and if it is needed to link a main function that was
543# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
544# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000545# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000546# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000547AC_SUBST(LINKCC)
548AC_MSG_CHECKING(LINKCC)
549if test -z "$LINKCC"
550then
Martin v. Löwis0f48d982006-04-14 14:34:26 +0000551 LINKCC='$(PURIFY) $(MAINCC)'
Guido van Rossumfb842551997-08-06 23:42:07 +0000552 case $ac_sys_system in
553 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000554 exp_extra="\"\""
555 if test $ac_sys_release -ge 5 -o \
556 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
557 exp_extra="."
558 fi
559 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000560 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000561 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000562 esac
563fi
564AC_MSG_RESULT($LINKCC)
565
Martin v. Löwis1142de32002-03-29 16:28:31 +0000566AC_MSG_CHECKING(for --enable-shared)
567AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000568 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000569
Martin v. Löwis1142de32002-03-29 16:28:31 +0000570if test -z "$enable_shared"
571then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000572 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000573 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000574 enable_shared="yes";;
575 *)
576 enable_shared="no";;
577 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000578fi
579AC_MSG_RESULT($enable_shared)
580
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000581AC_MSG_CHECKING(for --enable-profiling)
582AC_ARG_ENABLE(profiling,
583 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
584[ac_save_cc="$CC"
585 CC="$CC -pg"
586 AC_TRY_RUN([int main() { return 0; }],
587 ac_enable_profiling="yes",
588 ac_enable_profiling="no",
589 ac_enable_profiling="no")
590 CC="$ac_save_cc"])
591AC_MSG_RESULT($ac_enable_profiling)
592
593case "$ac_enable_profiling" in
594 "yes")
595 BASECFLAGS="-pg $BASECFLAGS"
596 LDFLAGS="-pg $LDFLAGS"
597 ;;
598esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000599
600AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000601
Guido van Rossumb8552162001-09-05 14:58:11 +0000602# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
603# library that we build, but we do not want to link against it (we
604# will find it with a -framework option). For this reason there is an
605# extra variable BLDLIBRARY against which Python and the extension
606# modules are linked, BLDLIBRARY. This is normally the same as
607# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000608if test "$enable_framework"
609then
610 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000611 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000612 BLDLIBRARY=''
613else
614 BLDLIBRARY='$(LDLIBRARY)'
615fi
616
Martin v. Löwis1142de32002-03-29 16:28:31 +0000617# Other platforms follow
618if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000619 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000620 case $ac_sys_system in
621 BeOS*)
622 LDLIBRARY='libpython$(VERSION).so'
623 ;;
624 CYGWIN*)
625 LDLIBRARY='libpython$(VERSION).dll.a'
626 DLLLIBRARY='libpython$(VERSION).dll'
627 ;;
628 SunOS*)
629 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000630 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000631 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000632 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000633 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000634 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000635 LDLIBRARY='libpython$(VERSION).so'
636 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000637 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000638 case $ac_sys_system in
639 FreeBSD*)
640 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
641 ;;
642 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000643 INSTSONAME="$LDLIBRARY".$SOVERSION
644 ;;
645 hp*|HP*)
Neal Norwitz58e28882006-05-19 07:00:58 +0000646 case `uname -m` in
647 ia64)
648 LDLIBRARY='libpython$(VERSION).so'
649 ;;
650 *)
651 LDLIBRARY='libpython$(VERSION).sl'
652 ;;
653 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000654 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000655 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000656 ;;
657 OSF*)
658 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000659 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000660 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000661 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000662 atheos*)
663 LDLIBRARY='libpython$(VERSION).so'
664 BLDLIBRARY='-L. -lpython$(VERSION)'
665 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
666 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000667 esac
Jason Tishler30765592003-09-04 11:04:06 +0000668else # shared is disabled
669 case $ac_sys_system in
670 CYGWIN*)
671 BLDLIBRARY='$(LIBRARY)'
672 LDLIBRARY='libpython$(VERSION).dll.a'
673 ;;
674 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000675fi
676
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000677AC_MSG_RESULT($LDLIBRARY)
678
Guido van Rossum627b2d71993-12-24 10:39:16 +0000679AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000680AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000681AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000682
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000683AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000684AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000685if test $SVNVERSION = found
686then
687 SVNVERSION="svnversion \$(srcdir)"
688else
689 SVNVERSION="echo exported"
690fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000691
Neil Schemenauera42c8272001-03-31 00:01:55 +0000692case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000693bsdos*|hp*|HP*)
694 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000695 if test -z "$INSTALL"
696 then
697 INSTALL="${srcdir}/install-sh -c"
698 fi
699esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000700AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000701
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000702# Not every filesystem supports hard links
703AC_SUBST(LN)
704if test -z "$LN" ; then
705 case $ac_sys_system in
706 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000707 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000708 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000709 *) LN=ln;;
710 esac
711fi
712
Fred Drake9f715822001-07-11 06:27:00 +0000713# Check for --with-pydebug
714AC_MSG_CHECKING(for --with-pydebug)
715AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000716 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
717[
Fred Drake9f715822001-07-11 06:27:00 +0000718if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000719then
720 AC_DEFINE(Py_DEBUG, 1,
721 [Define if you want to build an interpreter with many run-time checks.])
722 AC_MSG_RESULT(yes);
723 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000724else AC_MSG_RESULT(no); Py_DEBUG='false'
725fi],
726[AC_MSG_RESULT(no)])
727
Skip Montanarodecc6a42003-01-01 20:07:49 +0000728# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
729# merged with this chunk of code?
730
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000731# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000732# ------------------------
733# (The following bit of code is complicated enough - please keep things
734# indented properly. Just pretend you're editing Python code. ;-)
735
736# There are two parallel sets of case statements below, one that checks to
737# see if OPT was set and one that does BASECFLAGS setting based upon
738# compiler and platform. BASECFLAGS tweaks need to be made even if the
739# user set OPT.
740
741# tweak OPT based on compiler and platform, only if the user didn't set
742# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000743AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000744if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000745then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000746 case $GCC in
747 yes)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000748 if test "$CC" != 'g++' ; then
749 STRICT_PROTO="-Wstrict-prototypes"
750 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000751 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000752 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000753 if test "$Py_DEBUG" = 'true' ; then
754 # Optimization messes up debuggers, so turn it off for
755 # debug builds.
Skip Montanaro288a5be2006-04-13 02:00:56 +0000756 OPT="-g -Wall $STRICT_PROTO"
Fred Drake9f715822001-07-11 06:27:00 +0000757 else
Skip Montanaro288a5be2006-04-13 02:00:56 +0000758 OPT="-g -O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000759 fi
760 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000761 *)
Skip Montanaro288a5be2006-04-13 02:00:56 +0000762 OPT="-O3 -Wall $STRICT_PROTO"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000763 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000764 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000765 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000766 SCO_SV*) OPT="$OPT -m486 -DSCO5"
767 ;;
768 esac
Fred Drake9f715822001-07-11 06:27:00 +0000769 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000770
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000771 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000772 OPT="-O"
773 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000774 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000775
776 # The current (beta) Monterey compiler dies with optimizations
777 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000778 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000779 Monterey*)
780 OPT=""
781 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000782 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000783
Guido van Rossum4e8af441994-08-19 15:33:54 +0000784fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000785
Skip Montanarodecc6a42003-01-01 20:07:49 +0000786AC_SUBST(BASECFLAGS)
787# tweak BASECFLAGS based on compiler and platform
788case $GCC in
789yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000790 # Python violates C99 rules, by casting between incompatible
791 # pointer types. GCC may generate bad code as a result of that,
792 # so use -fno-strict-aliasing if supported.
793 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
794 ac_save_cc="$CC"
795 CC="$CC -fno-strict-aliasing"
796 AC_TRY_RUN([int main() { return 0; }],
797 ac_cv_no_strict_aliasing_ok=yes,
798 ac_cv_no_strict_aliasing_ok=no,
799 ac_cv_no_strict_aliasing_ok=no)
800 CC="$ac_save_cc"
801 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
802 if test $ac_cv_no_strict_aliasing_ok = yes
803 then
804 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
805 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000806 case $ac_sys_system in
807 SCO_SV*)
808 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
809 ;;
810 # is there any other compiler on Darwin besides gcc?
811 Darwin*)
Jack Jansene0040412003-07-23 22:17:28 +0000812 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
Ronald Oussoren988117f2006-04-29 11:31:35 +0000813 if test "${enable_universalsdk}"; then
814 BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
815 fi
816
Skip Montanarodecc6a42003-01-01 20:07:49 +0000817 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +0000818 OSF*)
819 BASECFLAGS="$BASECFLAGS -mieee"
820 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000821 esac
822 ;;
823
824*)
825 case $ac_sys_system in
826 OpenUNIX*|UnixWare*)
827 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
828 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000829 OSF*)
830 BASECFLAGS="$BASECFLAGS -ieee -std"
831 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000832 SCO_SV*)
833 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
834 ;;
835 esac
836 ;;
837esac
838
Fred Drakee1ceaa02001-12-04 20:55:47 +0000839if test "$Py_DEBUG" = 'true'; then
840 :
841else
842 OPT="-DNDEBUG $OPT"
843fi
844
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000845if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000846then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000847 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000848fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000849
Neal Norwitz020c46a2006-01-07 21:39:28 +0000850# disable check for icc since it seems to pass, but generates a warning
851if test "$CC" = icc
852then
853 ac_cv_opt_olimit_ok=no
854fi
855
Guido van Rossum91922671997-10-09 20:24:13 +0000856AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
857AC_CACHE_VAL(ac_cv_opt_olimit_ok,
858[ac_save_cc="$CC"
859CC="$CC -OPT:Olimit=0"
860AC_TRY_RUN([int main() { return 0; }],
861 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000862 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000863 ac_cv_opt_olimit_ok=no)
864CC="$ac_save_cc"])
865AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000866if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000867 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000868 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
869 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
870 # environment?
871 Darwin*)
872 ;;
873 *)
874 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
875 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000876 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000877else
878 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
879 AC_CACHE_VAL(ac_cv_olimit_ok,
880 [ac_save_cc="$CC"
881 CC="$CC -Olimit 1500"
882 AC_TRY_RUN([int main() { return 0; }],
883 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000884 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000885 ac_cv_olimit_ok=no)
886 CC="$ac_save_cc"])
887 AC_MSG_RESULT($ac_cv_olimit_ok)
888 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000889 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000890 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000891fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000892
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000893# On some compilers, pthreads are available without further options
894# (e.g. MacOS X). On some of these systems, the compiler will not
895# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
896# So we have to see first whether pthreads are available without
897# options before we can check whether -Kpthread improves anything.
898AC_MSG_CHECKING(whether pthreads are available without options)
899AC_CACHE_VAL(ac_cv_pthread_is_default,
900[AC_TRY_RUN([
901#include <pthread.h>
902
903void* routine(void* p){return NULL;}
904
905int main(){
906 pthread_t p;
907 if(pthread_create(&p,NULL,routine,NULL)!=0)
908 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000909 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000910 return 0;
911}
912],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000913[
914 ac_cv_pthread_is_default=yes
915 ac_cv_kthread=no
916 ac_cv_pthread=no
917],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000918 ac_cv_pthread_is_default=no,
919 ac_cv_pthread_is_default=no)
920])
921AC_MSG_RESULT($ac_cv_pthread_is_default)
922
923
924if test $ac_cv_pthread_is_default = yes
925then
926 ac_cv_kpthread=no
927else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000928# -Kpthread, if available, provides the right #defines
929# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000930# Some compilers won't report that they do not support -Kpthread,
931# so we need to run a program to see whether it really made the
932# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000933AC_MSG_CHECKING(whether $CC accepts -Kpthread)
934AC_CACHE_VAL(ac_cv_kpthread,
935[ac_save_cc="$CC"
936CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000937AC_TRY_RUN([
938#include <pthread.h>
939
940void* routine(void* p){return NULL;}
941
942int main(){
943 pthread_t p;
944 if(pthread_create(&p,NULL,routine,NULL)!=0)
945 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000946 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000947 return 0;
948}
949],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000950 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000951 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000952 ac_cv_kpthread=no)
953CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000954AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000955fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000956
Skip Montanarod8d39a02003-07-10 20:44:10 +0000957if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000958then
959# -Kthread, if available, provides the right #defines
960# and linker options to make pthread_create available
961# Some compilers won't report that they do not support -Kthread,
962# so we need to run a program to see whether it really made the
963# function available.
964AC_MSG_CHECKING(whether $CC accepts -Kthread)
965AC_CACHE_VAL(ac_cv_kthread,
966[ac_save_cc="$CC"
967CC="$CC -Kthread"
968AC_TRY_RUN([
969#include <pthread.h>
970
971void* routine(void* p){return NULL;}
972
973int main(){
974 pthread_t p;
975 if(pthread_create(&p,NULL,routine,NULL)!=0)
976 return 1;
977 (void)pthread_detach(p);
978 return 0;
979}
980],
981 ac_cv_kthread=yes,
982 ac_cv_kthread=no,
983 ac_cv_kthread=no)
984CC="$ac_save_cc"])
985AC_MSG_RESULT($ac_cv_kthread)
986fi
987
Skip Montanarod8d39a02003-07-10 20:44:10 +0000988if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000989then
990# -pthread, if available, provides the right #defines
991# and linker options to make pthread_create available
992# Some compilers won't report that they do not support -pthread,
993# so we need to run a program to see whether it really made the
994# function available.
995AC_MSG_CHECKING(whether $CC accepts -pthread)
996AC_CACHE_VAL(ac_cv_thread,
997[ac_save_cc="$CC"
998CC="$CC -pthread"
999AC_TRY_RUN([
1000#include <pthread.h>
1001
1002void* routine(void* p){return NULL;}
1003
1004int main(){
1005 pthread_t p;
1006 if(pthread_create(&p,NULL,routine,NULL)!=0)
1007 return 1;
1008 (void)pthread_detach(p);
1009 return 0;
1010}
1011],
1012 ac_cv_pthread=yes,
1013 ac_cv_pthread=no,
1014 ac_cv_pthread=no)
1015CC="$ac_save_cc"])
1016AC_MSG_RESULT($ac_cv_pthread)
1017fi
1018
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001019# If we have set a CC compiler flag for thread support then
1020# check if it works for CXX, too.
1021ac_cv_cxx_thread=no
1022if test ! -z "$CXX"
1023then
1024AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
1025ac_save_cxx="$CXX"
1026
1027if test "$ac_cv_kpthread" = "yes"
1028then
Martin v. Löwis519adae2003-09-20 10:47:47 +00001029 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001030 ac_cv_cxx_thread=yes
1031elif test "$ac_cv_kthread" = "yes"
1032then
1033 CXX="$CXX -Kthread"
1034 ac_cv_cxx_thread=yes
1035elif test "$ac_cv_pthread" = "yes"
1036then
1037 CXX="$CXX -pthread"
1038 ac_cv_cxx_thread=yes
1039fi
1040
1041if test $ac_cv_cxx_thread = yes
1042then
1043 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
1044 $CXX -c conftest.$ac_ext 2>&5
1045 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
1046 && test -s conftest$ac_exeext && ./conftest$ac_exeext
1047 then
1048 ac_cv_cxx_thread=yes
1049 else
1050 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001051 fi
1052 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001053fi
Brett Cannonc601e0f2004-11-07 01:24:12 +00001054AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001055fi
Martin v. Löwis519adae2003-09-20 10:47:47 +00001056CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +00001057
Fred Drakece81d592000-07-09 14:39:29 +00001058dnl # check for ANSI or K&R ("traditional") preprocessor
1059dnl AC_MSG_CHECKING(for C preprocessor type)
1060dnl AC_TRY_COMPILE([
1061dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
1062dnl int foo;
1063dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
1064dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
1065dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +00001066
Guido van Rossum627b2d71993-12-24 10:39:16 +00001067# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001068AC_HEADER_STDC
Martin v. Löwis11017b12006-01-14 18:12:57 +00001069AC_CHECK_HEADERS(asm/types.h curses.h dlfcn.h fcntl.h grp.h \
1070shadow.h langinfo.h libintl.h ncurses.h poll.h pthread.h \
Skip Montanaro7befb992004-02-10 16:50:21 +00001071stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001072unistd.h utime.h \
Anthony Baxter8a560de2004-10-13 15:30:56 +00001073sys/audioio.h sys/bsdtty.h sys/file.h sys/loadavg.h sys/lock.h sys/mkdev.h \
1074sys/modem.h \
Martin v. Löwis5f5d99c2006-05-16 07:05:37 +00001075sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/time.h \
1076sys/times.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001077sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
1078bluetooth/bluetooth.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001079AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001080AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001081
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001082# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001083AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001084#ifdef HAVE_CURSES_H
1085#include <curses.h>
1086#endif
1087])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001088
Martin v. Löwis11017b12006-01-14 18:12:57 +00001089# On Linux, netlink.h requires asm/types.h
1090AC_CHECK_HEADERS(linux/netlink.h,,,[
1091#ifdef HAVE_ASM_TYPES_H
1092#include <asm/types.h>
1093#endif
1094#ifdef HAVE_SYS_SOCKET_H
1095#include <sys/socket.h>
1096#endif
1097])
1098
Guido van Rossum627b2d71993-12-24 10:39:16 +00001099# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001100was_it_defined=no
1101AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001102AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1103 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1104])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001105AC_MSG_RESULT($was_it_defined)
1106
Neal Norwitz11690112002-07-30 01:08:28 +00001107# Check whether using makedev requires defining _OSF_SOURCE
1108AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001109AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001110 [ makedev(0, 0) ],
1111 ac_cv_has_makedev=yes,
1112 ac_cv_has_makedev=no)
1113if test "$ac_cv_has_makedev" = "no"; then
1114 # we didn't link, try if _OSF_SOURCE will allow us to link
1115 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001116#define _OSF_SOURCE 1
1117#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001118 ],
1119 [ makedev(0, 0) ],
1120 ac_cv_has_makedev=yes,
1121 ac_cv_has_makedev=no)
1122 if test "$ac_cv_has_makedev" = "yes"; then
1123 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1124 fi
1125fi
1126AC_MSG_RESULT($ac_cv_has_makedev)
1127if test "$ac_cv_has_makedev" = "yes"; then
1128 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1129fi
1130
Martin v. Löwis399a6892002-10-04 10:22:02 +00001131# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1132# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1133# defined, but the compiler does not support pragma redefine_extname,
1134# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1135# structures (such as rlimit64) without declaring them. As a
1136# work-around, disable LFS on such configurations
1137
1138use_lfs=yes
1139AC_MSG_CHECKING(Solaris LFS bug)
1140AC_TRY_COMPILE([
1141#define _LARGEFILE_SOURCE 1
1142#define _FILE_OFFSET_BITS 64
1143#include <sys/resource.h>
1144],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1145AC_MSG_RESULT($sol_lfs_bug)
1146if test "$sol_lfs_bug" = "yes"; then
1147 use_lfs=no
1148fi
1149
1150if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001151# Two defines needed to enable largefile support on various platforms
1152# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001153AC_DEFINE(_LARGEFILE_SOURCE, 1,
1154[This must be defined on some systems to enable large file support.])
1155AC_DEFINE(_FILE_OFFSET_BITS, 64,
1156[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001157fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001158
Guido van Rossum300fda71996-08-19 21:58:16 +00001159# Add some code to confdefs.h so that the test for off_t works on SCO
1160cat >> confdefs.h <<\EOF
1161#if defined(SCO_DS)
1162#undef _OFF_T
1163#endif
1164EOF
1165
Guido van Rossumef2255b2000-03-10 22:30:29 +00001166# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001167AC_TYPE_MODE_T
1168AC_TYPE_OFF_T
1169AC_TYPE_PID_T
1170AC_TYPE_SIGNAL
1171AC_TYPE_SIZE_T
1172AC_TYPE_UID_T
Martin v. Löwis18e16552006-02-15 17:27:45 +00001173AC_CHECK_TYPE(ssize_t,
1174 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001175
Guido van Rossumef2255b2000-03-10 22:30:29 +00001176# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001177# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001178AC_CHECK_SIZEOF(int, 4)
1179AC_CHECK_SIZEOF(long, 4)
1180AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001181AC_CHECK_SIZEOF(short, 2)
1182AC_CHECK_SIZEOF(float, 4)
1183AC_CHECK_SIZEOF(double, 8)
1184AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001185AC_CHECK_SIZEOF(size_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001186
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001187AC_MSG_CHECKING(for long long support)
1188have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001189AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1190 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1191 have_long_long=yes
1192])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001193AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001194if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001195AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001196fi
1197
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001198AC_MSG_CHECKING(for uintptr_t support)
1199have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001200AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
1201 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
1202 have_uintptr_t=yes
1203])
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001204AC_MSG_RESULT($have_uintptr_t)
1205if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001206AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001207fi
1208
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001209# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1210AC_MSG_CHECKING(size of off_t)
1211AC_CACHE_VAL(ac_cv_sizeof_off_t,
1212[AC_TRY_RUN([#include <stdio.h>
1213#include <sys/types.h>
1214main()
1215{
1216 FILE *f=fopen("conftestval", "w");
1217 if (!f) exit(1);
1218 fprintf(f, "%d\n", sizeof(off_t));
1219 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001220}],
1221ac_cv_sizeof_off_t=`cat conftestval`,
1222ac_cv_sizeof_off_t=0,
1223ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001224])
1225AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001226AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1227[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001228
1229AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001230if test "$have_long_long" = yes -a \
1231 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1232 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001233 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1234 [Defined to enable large file support when an off_t is bigger than a long
1235 and long long is available and at least as big as an off_t. You may need
1236 to add some flags for configuration and compilation to enable this mode.
1237 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001238 AC_MSG_RESULT(yes)
1239else
1240 AC_MSG_RESULT(no)
1241fi
1242
Fred Drakea3f6e912000-06-29 20:44:47 +00001243# AC_CHECK_SIZEOF() doesn't include <time.h>.
1244AC_MSG_CHECKING(size of time_t)
1245AC_CACHE_VAL(ac_cv_sizeof_time_t,
1246[AC_TRY_RUN([#include <stdio.h>
1247#include <time.h>
1248main()
1249{
1250 FILE *f=fopen("conftestval", "w");
1251 if (!f) exit(1);
1252 fprintf(f, "%d\n", sizeof(time_t));
1253 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001254}],
1255ac_cv_sizeof_time_t=`cat conftestval`,
1256ac_cv_sizeof_time_t=0,
1257ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001258])
1259AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001260AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1261[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001262
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001263
Trent Mick635f6fb2000-08-23 21:33:05 +00001264# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001265ac_save_cc="$CC"
1266if test "$ac_cv_kpthread" = "yes"
1267then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001268elif test "$ac_cv_kthread" = "yes"
1269then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001270elif test "$ac_cv_pthread" = "yes"
1271then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001272fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001273AC_MSG_CHECKING(for pthread_t)
1274have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001275AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001276AC_MSG_RESULT($have_pthread_t)
1277if test "$have_pthread_t" = yes ; then
1278 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1279 AC_MSG_CHECKING(size of pthread_t)
1280 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1281 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001282#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001283 main()
1284 {
1285 FILE *f=fopen("conftestval", "w");
1286 if (!f) exit(1);
1287 fprintf(f, "%d\n", sizeof(pthread_t));
1288 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001289 }],
1290 ac_cv_sizeof_pthread_t=`cat conftestval`,
1291 ac_cv_sizeof_pthread_t=0,
1292 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001293 ])
1294 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001295 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1296 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001297fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001298CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001299
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001300AC_MSG_CHECKING(for --enable-toolbox-glue)
1301AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001302 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001303
1304if test -z "$enable_toolbox_glue"
1305then
1306 case $ac_sys_system/$ac_sys_release in
1307 Darwin/*)
1308 enable_toolbox_glue="yes";;
1309 *)
1310 enable_toolbox_glue="no";;
1311 esac
1312fi
1313case "$enable_toolbox_glue" in
1314yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001315 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001316 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001317 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1318 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001319 ;;
1320*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001321 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001322 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001323 ;;
1324esac
1325AC_MSG_RESULT($enable_toolbox_glue)
1326
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001327AC_SUBST(OTHER_LIBTOOL_OPT)
1328case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001329 Darwin/@<:@01567@:>@\..*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001330 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1331 ;;
1332 Darwin/*)
1333 OTHER_LIBTOOL_OPT=""
1334 ;;
1335esac
1336
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001337AC_SUBST(LIBTOOL_CRUFT)
1338case $ac_sys_system/$ac_sys_release in
Anthony Baxter82201742006-04-09 15:07:40 +00001339 Darwin/@<:@01567@:>@\..*)
Ronald Oussoren988117f2006-04-29 11:31:35 +00001340 LIBTOOL_CRUFT="-framework System -lcc_dynamic"
1341 if test "${enable_universalsdk}"; then
1342 :
1343 else
1344 LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `arch`"
1345 fi
Jack Jansenb36687a2004-07-16 08:43:47 +00001346 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001347 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001348 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001349 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1350 if test ${gcc_version} '<' 4.0
1351 then
1352 LIBTOOL_CRUFT="-lcc_dynamic"
1353 else
1354 LIBTOOL_CRUFT=""
1355 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001356 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001357 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001358 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001359esac
1360
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001361AC_MSG_CHECKING(for --enable-framework)
1362if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001363then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001364 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001365 # -F. is needed to allow linking to the framework while
1366 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001367 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1368 [Define if you want to produce an OpenStep/Rhapsody framework
1369 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001370 AC_MSG_RESULT(yes)
1371else
1372 AC_MSG_RESULT(no)
1373fi
1374
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001375AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001376case $ac_sys_system/$ac_sys_release in
1377 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001378 AC_DEFINE(WITH_DYLD, 1,
1379 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1380 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1381 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001382 AC_MSG_RESULT(always on for Darwin)
1383 ;;
1384 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001385 AC_MSG_RESULT(no)
1386 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001387esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001388
Guido van Rossumac405f61994-09-12 10:56:06 +00001389# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001390AC_SUBST(SO)
1391AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001392AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001393AC_SUBST(CCSHARED)
1394AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001395# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001396# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001397AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001398if test -z "$SO"
1399then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001400 case $ac_sys_system in
Neal Norwitz58e28882006-05-19 07:00:58 +00001401 hp*|HP*)
1402 case `uname -m` in
1403 ia64) SO=.so;;
1404 *) SO=.sl;;
1405 esac
1406 ;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001407 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001408 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001409 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001410else
1411 # this might also be a termcap variable, see #610332
1412 echo
1413 echo '====================================================================='
1414 echo '+ +'
1415 echo '+ WARNING: You have set SO in your environment. +'
1416 echo '+ Do you really mean to change the extension for shared libraries? +'
1417 echo '+ Continuing in 10 seconds to let you to ponder. +'
1418 echo '+ +'
1419 echo '====================================================================='
1420 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001421fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001422AC_MSG_RESULT($SO)
Neal Norwitz58e28882006-05-19 07:00:58 +00001423AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
Guido van Rossumac405f61994-09-12 10:56:06 +00001424# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001425# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001426# (Shared libraries in this instance are shared modules to be loaded into
1427# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001428AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001429if test -z "$LDSHARED"
1430then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001431 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001432 AIX*)
1433 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001434 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001435 ;;
1436 BeOS*)
1437 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001438 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001439 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001440 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001441 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001442 SunOS/5*)
1443 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001444 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001445 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001446 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001447 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001448 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001449 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001450 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1451 if test "$enable_framework" ; then
1452 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001453 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1454 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001455 else
1456 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001457 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001458 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001459 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001460 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1461 if test "$enable_framework" ; then
1462 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001463 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1464 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001465 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001466 # No framework, use the Python app as bundle-loader
1467 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001468 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001469 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001470 Darwin/*)
1471 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1472 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001473 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Ronald Oussoren988117f2006-04-29 11:31:35 +00001474 if test ${cur_target} '>' 10.2; then
1475 cur_target=10.3
1476 fi
Jack Jansenc110f862005-01-07 10:49:32 +00001477 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Ronald Oussoren988117f2006-04-29 11:31:35 +00001478 EXPORT_MACOSX_DEPLOYMENT_TARGET=''
Jack Jansenbe954622004-12-26 23:07:48 +00001479 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001480 then
Ronald Oussoren988117f2006-04-29 11:31:35 +00001481 if test "${enable_universalsdk}"; then
1482 LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
1483 fi
Jack Jansen6b08a402004-06-03 12:41:45 +00001484 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1485 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001486 else
1487 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1488 if test "$enable_framework" ; then
1489 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001490 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1491 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001492 else
1493 # No framework, use the Python app as bundle-loader
1494 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1495 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1496 fi
1497 fi
1498 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001499 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001500 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001501 FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001502 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001503 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001504 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001505 else
1506 LDSHARED="ld -Bshareable ${LDFLAGS}"
1507 fi;;
Martin v. Löwis222c5152006-06-03 07:37:13 +00001508 OpenBSD*)
1509 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1510 then
1511 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1512 else
1513 case `uname -r` in
1514 [[01]].* | 2.[[0-7]] | 2.[[0-7]].*)
1515 LDSHARED="ld -Bshareable ${LDFLAGS}"
1516 ;;
1517 *)
1518 LDSHARED='$(CC) -shared $(CCSHARED) ${LDFLAGS}'
1519 ;;
1520 esac
1521 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001522 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001523 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001524 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001525 then LDSHARED='$(CC) -shared'
1526 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001527 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001528 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001529 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001530 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001531 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001532 *) LDSHARED="ld";;
1533 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001534fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001535AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001536BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001537# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001538# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001539AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001540if test -z "$CCSHARED"
1541then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001542 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001543 SunOS*) if test "$GCC" = yes;
1544 then CCSHARED="-fPIC";
Martin v. Löwisd5845ec2005-12-30 12:31:38 +00001545 else CCSHARED="-xcode=pic32";
Neil Schemenauer66252162001-02-19 04:47:42 +00001546 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001547 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001548 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001549 else CCSHARED="+z";
1550 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001551 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001552 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001553 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001554 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001555 if test "$GCC" = "yes"
1556 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001557 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001558 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001559 SCO_SV*)
1560 if test "$GCC" = "yes"
1561 then CCSHARED="-fPIC"
1562 else CCSHARED="-Kpic -belf"
1563 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001564 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001565 IRIX*/6*) case $CC in
1566 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001567 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001568 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001569 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001570 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001571fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001572AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001573# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001574# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001575AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001576if test -z "$LINKFORSHARED"
1577then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001578 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001579 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001580 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001581 LINKFORSHARED="-Wl,-E -Wl,+s";;
1582# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001583 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001584 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001585 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001586 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001587 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1588 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001589 # not used by the core itself but which needs to be in the core so
1590 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001591 # -prebind is no longer used, because it actually seems to give a
1592 # slowdown in stead of a speedup, maybe due to the large number of
1593 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001594
1595 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001596 if test "$enable_framework"
1597 then
Jack Jansenda49e192005-01-07 13:08:22 +00001598 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001599 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001600 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001601 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001602 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001603 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001604 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001605 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1606 then
1607 LINKFORSHARED="-Wl,--export-dynamic"
1608 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001609 SunOS/5*) case $CC in
1610 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001611 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001612 then
1613 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001614 fi;;
1615 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001616 CYGWIN*)
1617 if test $enable_shared = "no"
1618 then
1619 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1620 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001621 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001622fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001623AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001624
Neil Schemenauer61c51152001-01-26 16:18:16 +00001625AC_SUBST(CFLAGSFORSHARED)
1626AC_MSG_CHECKING(CFLAGSFORSHARED)
1627if test ! "$LIBRARY" = "$LDLIBRARY"
1628then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001629 case $ac_sys_system in
1630 CYGWIN*)
1631 # Cygwin needs CCSHARED when building extension DLLs
1632 # but not when building the interpreter DLL.
1633 CFLAGSFORSHARED='';;
1634 *)
1635 CFLAGSFORSHARED='$(CCSHARED)'
1636 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001637fi
1638AC_MSG_RESULT($CFLAGSFORSHARED)
1639
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001640# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1641# library (with --enable-shared).
1642# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001643# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1644# if it is not required, since it creates a dependency of the shared library
1645# to LIBS. This, in turn, means that applications linking the shared libpython
1646# don't need to link LIBS explicitly. The default should be only changed
1647# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001648AC_SUBST(SHLIBS)
1649AC_MSG_CHECKING(SHLIBS)
1650case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001651 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001652 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001653esac
1654AC_MSG_RESULT($SHLIBS)
1655
1656
Guido van Rossum627b2d71993-12-24 10:39:16 +00001657# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001658AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1659AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001660
1661# only check for sem_ini if thread support is requested
1662if test "$with_threads" = "yes" -o -z "$with_threads"; then
1663 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1664 # posix4 on Solaris 2.6
1665 # pthread (first!) on Linux
1666fi
1667
Martin v. Löwis19d17342003-06-14 21:03:05 +00001668# check if we need libintl for locale functions
1669AC_CHECK_LIB(intl, textdomain,
1670 AC_DEFINE(WITH_LIBINTL, 1,
1671 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001672
1673# checks for system dependent C++ extensions support
1674case "$ac_sys_system" in
1675 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1676 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1677 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001678 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1679 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1680 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001681 AC_MSG_RESULT(yes)],
1682 [AC_MSG_RESULT(no)]);;
1683 *) ;;
1684esac
1685
Guido van Rossum70c7f481998-03-26 18:44:10 +00001686# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001687# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001688AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001689AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001690
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001691case "$ac_sys_system" in
1692BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001693AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1694;;
1695esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001696
Guido van Rossumc5a39031996-07-31 17:35:03 +00001697AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001698AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001699 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1700[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001701AC_MSG_RESULT($withval)
1702LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001703],
1704[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001705
Martin v. Löwis9176fc12006-04-11 11:12:43 +00001706# Check for use of the system libffi library
1707AC_MSG_CHECKING(for --with-system-ffi)
1708AC_ARG_WITH(system_ffi,
1709 AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library))
1710
1711if test -z "$with_system_ffi"
1712then with_system_ffi="no"
1713fi
1714AC_MSG_RESULT($with_system_ffi)
1715
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001716# Determine if signalmodule should be used.
1717AC_SUBST(USE_SIGNAL_MODULE)
1718AC_SUBST(SIGNAL_OBJS)
1719AC_MSG_CHECKING(for --with-signal-module)
1720AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001721 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001722
1723if test -z "$with_signal_module"
1724then with_signal_module="yes"
1725fi
1726AC_MSG_RESULT($with_signal_module)
1727
1728if test "${with_signal_module}" = "yes"; then
1729 USE_SIGNAL_MODULE=""
1730 SIGNAL_OBJS=""
1731else
1732 USE_SIGNAL_MODULE="#"
1733 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1734fi
1735
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001736# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001737AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001738USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001739
Guido van Rossum54d93d41997-01-22 20:51:58 +00001740AC_MSG_CHECKING(for --with-dec-threads)
1741AC_SUBST(LDLAST)
1742AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001743 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1744[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001745AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001746LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001747if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001748 with_thread="$withval";
1749fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001750[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001751
Martin v. Löwis11437992002-04-12 09:54:03 +00001752# Templates for things AC_DEFINEd more than once.
1753# For a single AC_DEFINE, no template is needed.
1754AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1755AH_TEMPLATE(_REENTRANT,
1756 [Define to force use of thread-safe errno, h_errno, and other functions])
1757AH_TEMPLATE(WITH_THREAD,
1758 [Define if you want to compile in rudimentary thread support])
1759
Guido van Rossum54d93d41997-01-22 20:51:58 +00001760AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001761dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00001762AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001763 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001764
Barry Warsawc0d24d82000-06-29 16:12:00 +00001765# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001766dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001767AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001768 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1769 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001770
1771if test -z "$with_threads"
1772then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001773fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00001774AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001775
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001776AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001777if test "$with_threads" = "no"
1778then
1779 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001780elif test "$ac_cv_pthread_is_default" = yes
1781then
1782 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001783 # Defining _REENTRANT on system with POSIX threads should not hurt.
1784 AC_DEFINE(_REENTRANT)
1785 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001786 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001787elif test "$ac_cv_kpthread" = "yes"
1788then
1789 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001790 if test "$ac_cv_cxx_thread" = "yes"; then
1791 CXX="$CXX -Kpthread"
1792 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001793 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001794 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001795 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001796elif test "$ac_cv_kthread" = "yes"
1797then
1798 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001799 if test "$ac_cv_cxx_thread" = "yes"; then
1800 CXX="$CXX -Kthread"
1801 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001802 AC_DEFINE(WITH_THREAD)
1803 posix_threads=yes
1804 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001805elif test "$ac_cv_pthread" = "yes"
1806then
1807 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001808 if test "$ac_cv_cxx_thread" = "yes"; then
1809 CXX="$CXX -pthread"
1810 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001811 AC_DEFINE(WITH_THREAD)
1812 posix_threads=yes
1813 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00001814else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001815 if test ! -z "$with_threads" -a -d "$with_threads"
1816 then LDFLAGS="$LDFLAGS -L$with_threads"
1817 fi
1818 if test ! -z "$withval" -a -d "$withval"
1819 then LDFLAGS="$LDFLAGS -L$withval"
1820 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001821
1822 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001823 # define _POSIX_THREADS in unistd.h. Some apparently don't
1824 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001825 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1826 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001827 [
1828#include <unistd.h>
1829#ifdef _POSIX_THREADS
1830yes
1831#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001832 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1833 AC_MSG_RESULT($unistd_defines_pthreads)
1834
Martin v. Löwis130fb172001-07-19 11:00:41 +00001835 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001836 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1837 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001838 AC_DEFINE(HURD_C_THREADS, 1,
1839 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001840 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001841 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001842 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1843 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001844 AC_DEFINE(MACH_C_THREADS, 1,
1845 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001846 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001847 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001848 AC_ARG_WITH([pth],
1849 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1850 [AC_MSG_RESULT($withval)
1851 AC_DEFINE([WITH_THREAD])
1852 AC_DEFINE([HAVE_PTH], 1,
1853 [Define if you have GNU PTH threads.])
1854 LIBS="-lpth $LIBS"
1855 THREADOBJ="Python/thread.o"],
1856 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001857
1858 # Just looking for pthread_create in libpthread is not enough:
1859 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1860 # So we really have to include pthread.h, and then link.
1861 _libs=$LIBS
1862 LIBS="$LIBS -lpthread"
1863 AC_MSG_CHECKING([for pthread_create in -lpthread])
1864 AC_TRY_LINK([#include <pthread.h>
1865
1866void * start_routine (void *arg) { exit (0); }], [
1867pthread_create (NULL, NULL, start_routine, NULL)], [
1868 AC_MSG_RESULT(yes)
1869 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001870 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001871 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001872 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001873 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001874 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001875 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001876 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1877 AC_DEFINE(ATHEOS_THREADS, 1,
1878 [Define this if you have AtheOS threads.])
1879 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001880 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001881 AC_DEFINE(BEOS_THREADS, 1,
1882 [Define this if you have BeOS threads.])
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_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001885 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001886 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001887 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001888 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001889 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001890 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001891 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001892 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001893 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001894 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001895 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001896 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001897 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001898 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001899 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001900 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001901 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001902
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001903 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1904 LIBS="$LIBS -lmpc"
1905 THREADOBJ="Python/thread.o"
1906 USE_THREAD_MODULE=""])
1907
1908 if test "$posix_threads" != "yes"; then
1909 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1910 LIBS="$LIBS -lthread"
1911 THREADOBJ="Python/thread.o"
1912 USE_THREAD_MODULE=""])
1913 fi
1914
1915 if test "$USE_THREAD_MODULE" != "#"
1916 then
1917 # If the above checks didn't disable threads, (at least) OSF1
1918 # needs this '-threads' argument during linking.
1919 case $ac_sys_system in
1920 OSF1) LDLAST=-threads;;
1921 esac
1922 fi
1923fi
1924
1925if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001926 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001927 AC_DEFINE(_POSIX_THREADS, 1,
1928 [Define if you have POSIX threads,
1929 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001930 fi
1931
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001932 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1933 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001934 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1935 Defined for Solaris 2.6 bug in pthread header.)
1936 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001937 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001938 Define if the Posix semaphores do not work on your system)
1939 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001940 esac
1941
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001942 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1943 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1944 [AC_TRY_RUN([#include <pthread.h>
1945 void *foo(void *parm) {
1946 return NULL;
1947 }
1948 main() {
1949 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001950 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001951 if (pthread_attr_init(&attr)) exit(-1);
1952 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001953 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001954 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001955 }],
1956 ac_cv_pthread_system_supported=yes,
1957 ac_cv_pthread_system_supported=no,
1958 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001959 ])
1960 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1961 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001962 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001963 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001964 AC_CHECK_FUNCS(pthread_sigmask,
1965 [case $ac_sys_system in
1966 CYGWIN*)
1967 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1968 [Define if pthread_sigmask() does not work on your system.])
1969 ;;
1970 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001971fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001972
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001973
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001974# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001975AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001976AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001977AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001978[ --enable-ipv6 Enable ipv6 (with ipv4) support
1979 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001980[ case "$enableval" in
1981 no)
1982 AC_MSG_RESULT(no)
1983 ipv6=no
1984 ;;
1985 *) AC_MSG_RESULT(yes)
1986 AC_DEFINE(ENABLE_IPV6)
1987 ipv6=yes
1988 ;;
1989 esac ],
1990
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001991[
1992dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001993 AC_TRY_RUN([ /* AF_INET6 available check */
1994#include <sys/types.h>
1995#include <sys/socket.h>
1996main()
1997{
1998 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1999 exit(1);
2000 else
2001 exit(0);
2002}
2003],
2004 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002005 ipv6=yes,
2006 AC_MSG_RESULT(no)
2007 ipv6=no,
2008 AC_MSG_RESULT(no)
2009 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00002010)
2011
2012if test "$ipv6" = "yes"; then
2013 AC_MSG_CHECKING(if RFC2553 API is available)
2014 AC_TRY_COMPILE([#include <sys/types.h>
2015#include <netinet/in.h>],
2016 [struct sockaddr_in6 x;
2017x.sin6_scope_id;],
2018 AC_MSG_RESULT(yes)
2019 ipv6=yes,
2020 AC_MSG_RESULT(no, IPv6 disabled)
2021 ipv6=no)
2022fi
2023
2024if test "$ipv6" = "yes"; then
2025 AC_DEFINE(ENABLE_IPV6)
2026fi
2027])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002028
2029ipv6type=unknown
2030ipv6lib=none
2031ipv6trylibc=no
2032
2033if test "$ipv6" = "yes"; then
2034 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00002035 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
2036 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002037 case $i in
2038 inria)
2039 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002040 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002041#include <netinet/in.h>
2042#ifdef IPV6_INRIA_VERSION
2043yes
2044#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002045 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002046 ;;
2047 kame)
2048 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002049 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002050#include <netinet/in.h>
2051#ifdef __KAME__
2052yes
2053#endif],
2054 [ipv6type=$i;
2055 ipv6lib=inet6
2056 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002057 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002058 ;;
2059 linux-glibc)
2060 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002061 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002062#include <features.h>
2063#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
2064yes
2065#endif],
2066 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002067 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002068 ;;
2069 linux-inet6)
2070 dnl http://www.v6.linux.or.jp/
2071 if test -d /usr/inet6; then
2072 ipv6type=$i
2073 ipv6lib=inet6
2074 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00002075 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002076 fi
2077 ;;
2078 solaris)
2079 if test -f /etc/netconfig; then
2080 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
2081 ipv6type=$i
2082 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002083 fi
2084 fi
2085 ;;
2086 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002087 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002088#include <sys/param.h>
2089#ifdef _TOSHIBA_INET6
2090yes
2091#endif],
2092 [ipv6type=$i;
2093 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002094 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002095 ;;
2096 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002097 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002098#include </usr/local/v6/include/sys/v6config.h>
2099#ifdef __V6D__
2100yes
2101#endif],
2102 [ipv6type=$i;
2103 ipv6lib=v6;
2104 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00002105 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002106 ;;
2107 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00002108 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002109#include <sys/param.h>
2110#ifdef _ZETA_MINAMI_INET6
2111yes
2112#endif],
2113 [ipv6type=$i;
2114 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002115 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002116 ;;
2117 esac
2118 if test "$ipv6type" != "unknown"; then
2119 break
2120 fi
2121 done
2122 AC_MSG_RESULT($ipv6type)
2123fi
2124
2125if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2126 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2127 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2128 echo "using lib$ipv6lib"
2129 else
2130 if test $ipv6trylibc = "yes"; then
2131 echo "using libc"
2132 else
2133 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2134 echo "You need to fetch lib$ipv6lib.a from appropriate"
2135 echo 'ipv6 kit and compile beforehand.'
2136 exit 1
2137 fi
2138 fi
2139fi
2140
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002141# Check for --with-doc-strings
2142AC_MSG_CHECKING(for --with-doc-strings)
2143AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002144 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002145
2146if test -z "$with_doc_strings"
2147then with_doc_strings="yes"
2148fi
2149if test "$with_doc_strings" != "no"
2150then
2151 AC_DEFINE(WITH_DOC_STRINGS, 1,
2152 [Define if you want documentation strings in extension modules])
2153fi
2154AC_MSG_RESULT($with_doc_strings)
2155
Neil Schemenauera35c6882001-02-27 04:45:05 +00002156# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002157AC_MSG_CHECKING(for --with-tsc)
2158AC_ARG_WITH(tsc,
2159[ --with(out)-tsc enable/disable timestamp counter profile], [
2160if test "$withval" != no
2161then
2162 AC_DEFINE(WITH_TSC, 1,
2163 [Define to profile with the Pentium timestamp counter])
2164 AC_MSG_RESULT(yes)
2165else AC_MSG_RESULT(no)
2166fi],
2167[AC_MSG_RESULT(no)])
2168
2169# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002170AC_MSG_CHECKING(for --with-pymalloc)
2171AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002172 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002173
2174if test -z "$with_pymalloc"
2175then with_pymalloc="yes"
2176fi
2177if test "$with_pymalloc" != "no"
2178then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002179 AC_DEFINE(WITH_PYMALLOC, 1,
2180 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002181fi
2182AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002183
Barry Warsawef82cd72000-06-30 16:21:01 +00002184# Check for --with-wctype-functions
2185AC_MSG_CHECKING(for --with-wctype-functions)
2186AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002187 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2188[
Barry Warsawef82cd72000-06-30 16:21:01 +00002189if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002190then
2191 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2192 [Define if you want wctype.h functions to be used instead of the
2193 one supplied by Python itself. (see Include/unicodectype.h).])
2194 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002195else AC_MSG_RESULT(no)
2196fi],
2197[AC_MSG_RESULT(no)])
2198
Guido van Rossum68242b51996-05-28 22:53:03 +00002199# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002200AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002201DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002202
Guido van Rossume97ee181999-12-20 21:27:22 +00002203# the dlopen() function means we might want to use dynload_shlib.o. some
2204# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002205AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002206
2207# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2208# loading of modules.
2209AC_SUBST(DYNLOADFILE)
2210AC_MSG_CHECKING(DYNLOADFILE)
2211if test -z "$DYNLOADFILE"
2212then
2213 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002214 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2215 if test "$ac_cv_func_dlopen" = yes
2216 then DYNLOADFILE="dynload_shlib.o"
2217 else DYNLOADFILE="dynload_aix.o"
2218 fi
2219 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002220 BeOS*) DYNLOADFILE="dynload_beos.o";;
2221 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Anthony Baxter82201742006-04-09 15:07:40 +00002222 # Use dynload_next.c only on 10.2 and below, which don't have native dlopen()
2223 Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002224 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002225 *)
2226 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2227 # out any dynamic loading
2228 if test "$ac_cv_func_dlopen" = yes
2229 then DYNLOADFILE="dynload_shlib.o"
2230 else DYNLOADFILE="dynload_stub.o"
2231 fi
2232 ;;
2233 esac
2234fi
2235AC_MSG_RESULT($DYNLOADFILE)
2236if test "$DYNLOADFILE" != "dynload_stub.o"
2237then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002238 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2239 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002240fi
2241
Jack Jansenc49e5b72001-06-19 15:00:23 +00002242# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2243
2244AC_SUBST(MACHDEP_OBJS)
2245AC_MSG_CHECKING(MACHDEP_OBJS)
2246if test -z "$MACHDEP_OBJS"
2247then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002248 MACHDEP_OBJS=$extra_machdep_objs
2249else
2250 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002251fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002252AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002253
Guido van Rossum627b2d71993-12-24 10:39:16 +00002254# checks for library functions
Gustavo Niemeyer7bd33c52004-07-22 18:44:01 +00002255AC_CHECK_FUNCS(alarm bind_textdomain_codeset chown clock confstr ctermid \
2256 execv fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002257 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002258 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002259 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002260 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002261 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002262 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002263 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002264 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002265 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002266 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002267
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002268# For some functions, having a definition is not sufficient, since
2269# we want to take their address.
2270AC_MSG_CHECKING(for chroot)
2271AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2272 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2273 AC_MSG_RESULT(yes),
2274 AC_MSG_RESULT(no)
2275)
2276AC_MSG_CHECKING(for link)
2277AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2278 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2279 AC_MSG_RESULT(yes),
2280 AC_MSG_RESULT(no)
2281)
2282AC_MSG_CHECKING(for symlink)
2283AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2284 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2285 AC_MSG_RESULT(yes),
2286 AC_MSG_RESULT(no)
2287)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002288AC_MSG_CHECKING(for fchdir)
2289AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2290 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2291 AC_MSG_RESULT(yes),
2292 AC_MSG_RESULT(no)
2293)
2294AC_MSG_CHECKING(for fsync)
2295AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002296 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002297 AC_MSG_RESULT(yes),
2298 AC_MSG_RESULT(no)
2299)
2300AC_MSG_CHECKING(for fdatasync)
2301AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2302 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2303 AC_MSG_RESULT(yes),
2304 AC_MSG_RESULT(no)
2305)
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002306
Martin v. Löwisd5843682002-11-21 20:41:28 +00002307# On some systems (eg. FreeBSD 5), we would find a definition of the
2308# functions ctermid_r, setgroups in the library, but no prototype
2309# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2310# address to avoid compiler warnings and potential miscompilations
2311# because of the missing prototypes.
2312
2313AC_MSG_CHECKING(for ctermid_r)
2314AC_TRY_COMPILE([
2315#include "confdefs.h"
2316#include <stdio.h>
2317], void* p = ctermid_r,
2318 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2319 AC_MSG_RESULT(yes),
2320 AC_MSG_RESULT(no)
2321)
2322
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002323AC_MSG_CHECKING(for flock)
2324AC_TRY_COMPILE([
2325#include "confdefs.h"
2326#include <sys/file.h>
2327], void* p = flock,
2328 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2329 AC_MSG_RESULT(yes),
2330 AC_MSG_RESULT(no)
2331)
2332
2333AC_MSG_CHECKING(for getpagesize)
2334AC_TRY_COMPILE([
2335#include "confdefs.h"
2336#include <unistd.h>
2337], void* p = getpagesize,
2338 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2339 AC_MSG_RESULT(yes),
2340 AC_MSG_RESULT(no)
2341)
2342
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002343dnl check for true
2344AC_CHECK_PROGS(TRUE, true, /bin/true)
2345
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002346dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2347dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002348AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002349 AC_CHECK_LIB(resolv, inet_aton)
2350)
2351
Martin v. Löwise9416172003-05-03 10:12:45 +00002352AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002353AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002354#include "confdefs.h"
2355#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002356], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002357 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2358 AC_MSG_RESULT(yes),
2359 AC_MSG_RESULT(no)
2360)
2361
2362AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002363AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002364#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002365#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002366#include <sys/socket.h>
2367#include <netinet/in.h>
2368#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002369], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002370 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2371 AC_MSG_RESULT(yes),
2372 AC_MSG_RESULT(no)
2373)
2374
2375AC_MSG_CHECKING(for inet_pton)
2376AC_TRY_COMPILE([
2377#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002378#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002379#include <sys/socket.h>
2380#include <netinet/in.h>
2381#include <arpa/inet.h>
2382], void* p = inet_pton,
2383 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2384 AC_MSG_RESULT(yes),
2385 AC_MSG_RESULT(no)
2386)
2387
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002388# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002389AC_MSG_CHECKING(for setgroups)
2390AC_TRY_COMPILE([
2391#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002392#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002393#ifdef HAVE_GRP_H
2394#include <grp.h>
2395#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002396],
2397void* p = setgroups,
2398 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2399 AC_MSG_RESULT(yes),
2400 AC_MSG_RESULT(no)
2401)
2402
Fred Drake8cef4cf2000-06-28 16:40:38 +00002403# check for openpty and forkpty
2404
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002405AC_CHECK_FUNCS(openpty,,
2406 AC_CHECK_LIB(util,openpty,
2407 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2408 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2409 )
2410)
2411AC_CHECK_FUNCS(forkpty,,
2412 AC_CHECK_LIB(util,forkpty,
2413 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2414 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2415 )
2416)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002417
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002418# check for long file support functions
2419AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2420
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002421AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002422AC_CHECK_FUNCS(getpgrp,
2423 AC_TRY_COMPILE([#include <unistd.h>],
2424 [getpgrp(0);],
2425 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2426 [Define if getpgrp() must be called as getpgrp(0).])
2427 )
2428)
Jack Jansen150753c2003-03-29 22:07:47 +00002429AC_CHECK_FUNCS(setpgrp,
2430 AC_TRY_COMPILE([#include <unistd.h>],
2431 [setpgrp(0,0);],
2432 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2433 [Define if setpgrp() must be called as setpgrp(0, 0).])
2434 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002435)
2436AC_CHECK_FUNCS(gettimeofday,
2437 AC_TRY_COMPILE([#include <sys/time.h>],
2438 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2439 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2440 [Define if gettimeofday() does not have second (timezone) argument
2441 This is the case on Motorola V4 (R40V4.2)])
2442 )
2443)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002444
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002445AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002446AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002447#if defined(MAJOR_IN_MKDEV)
2448#include <sys/mkdev.h>
2449#elif defined(MAJOR_IN_SYSMACROS)
2450#include <sys/sysmacros.h>
2451#else
2452#include <sys/types.h>
2453#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002454],[
2455 makedev(major(0),minor(0));
2456],[
2457 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2458 [Define to 1 if you have the device macros.])
2459 AC_MSG_RESULT(yes)
2460],[
2461 AC_MSG_RESULT(no)
2462])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002463
2464# On OSF/1 V5.1, getaddrinfo is available, but a define
2465# for [no]getaddrinfo in netdb.h.
2466AC_MSG_CHECKING(for getaddrinfo)
2467AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002468#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002469#include <sys/socket.h>
2470#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002471#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002472],[
2473getaddrinfo(NULL, NULL, NULL, NULL);
2474], [
2475AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002476AC_MSG_CHECKING(getaddrinfo bug)
2477AC_TRY_RUN([
2478#include <sys/types.h>
2479#include <netdb.h>
2480#include <string.h>
2481#include <sys/socket.h>
2482#include <netinet/in.h>
2483
2484main()
2485{
2486 int passive, gaierr, inet4 = 0, inet6 = 0;
2487 struct addrinfo hints, *ai, *aitop;
2488 char straddr[INET6_ADDRSTRLEN], strport[16];
2489
2490 for (passive = 0; passive <= 1; passive++) {
2491 memset(&hints, 0, sizeof(hints));
2492 hints.ai_family = AF_UNSPEC;
2493 hints.ai_flags = passive ? AI_PASSIVE : 0;
2494 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002495 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002496 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2497 (void)gai_strerror(gaierr);
2498 goto bad;
2499 }
2500 for (ai = aitop; ai; ai = ai->ai_next) {
2501 if (ai->ai_addr == NULL ||
2502 ai->ai_addrlen == 0 ||
2503 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2504 straddr, sizeof(straddr), strport, sizeof(strport),
2505 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2506 goto bad;
2507 }
2508 switch (ai->ai_family) {
2509 case AF_INET:
2510 if (strcmp(strport, "54321") != 0) {
2511 goto bad;
2512 }
2513 if (passive) {
2514 if (strcmp(straddr, "0.0.0.0") != 0) {
2515 goto bad;
2516 }
2517 } else {
2518 if (strcmp(straddr, "127.0.0.1") != 0) {
2519 goto bad;
2520 }
2521 }
2522 inet4++;
2523 break;
2524 case AF_INET6:
2525 if (strcmp(strport, "54321") != 0) {
2526 goto bad;
2527 }
2528 if (passive) {
2529 if (strcmp(straddr, "::") != 0) {
2530 goto bad;
2531 }
2532 } else {
2533 if (strcmp(straddr, "::1") != 0) {
2534 goto bad;
2535 }
2536 }
2537 inet6++;
2538 break;
2539 case AF_UNSPEC:
2540 goto bad;
2541 break;
2542 default:
2543 /* another family support? */
2544 break;
2545 }
2546 }
2547 }
2548
2549 if (!(inet4 == 0 || inet4 == 2))
2550 goto bad;
2551 if (!(inet6 == 0 || inet6 == 2))
2552 goto bad;
2553
2554 if (aitop)
2555 freeaddrinfo(aitop);
2556 exit(0);
2557
2558 bad:
2559 if (aitop)
2560 freeaddrinfo(aitop);
2561 exit(1);
2562}
2563],
2564AC_MSG_RESULT(good)
2565buggygetaddrinfo=no,
2566AC_MSG_RESULT(buggy)
2567buggygetaddrinfo=yes,
2568AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002569buggygetaddrinfo=yes)], [
2570AC_MSG_RESULT(no)
2571buggygetaddrinfo=yes
2572])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002573
2574if test "$buggygetaddrinfo" = "yes"; then
2575 if test "$ipv6" = "yes"; then
2576 echo 'Fatal: You must get working getaddrinfo() function.'
2577 echo ' or you can specify "--disable-ipv6"'.
2578 exit 1
2579 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002580else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002581 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002582fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002583AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002584
Guido van Rossum627b2d71993-12-24 10:39:16 +00002585# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002586AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002587AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002588AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002589AC_CHECK_MEMBERS([struct stat.st_rdev])
2590AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002591AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002592AC_CHECK_MEMBERS([struct stat.st_gen])
2593AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002594AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002595
2596AC_MSG_CHECKING(for time.h that defines altzone)
2597AC_CACHE_VAL(ac_cv_header_time_altzone,
2598[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2599 ac_cv_header_time_altzone=yes,
2600 ac_cv_header_time_altzone=no)])
2601AC_MSG_RESULT($ac_cv_header_time_altzone)
2602if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002603 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002604fi
2605
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002606was_it_defined=no
2607AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002608AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002609#include <sys/types.h>
2610#include <sys/select.h>
2611#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002612], [;], [
2613 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2614 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2615 (which you can't on SCO ODT 3.0).])
2616 was_it_defined=yes
2617])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002618AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002619
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002620AC_MSG_CHECKING(for addrinfo)
2621AC_CACHE_VAL(ac_cv_struct_addrinfo,
2622AC_TRY_COMPILE([
2623# include <netdb.h>],
2624 [struct addrinfo a],
2625 ac_cv_struct_addrinfo=yes,
2626 ac_cv_struct_addrinfo=no))
2627AC_MSG_RESULT($ac_cv_struct_addrinfo)
2628if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002629 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002630fi
2631
2632AC_MSG_CHECKING(for sockaddr_storage)
2633AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2634AC_TRY_COMPILE([
2635# include <sys/types.h>
2636# include <sys/socket.h>],
2637 [struct sockaddr_storage s],
2638 ac_cv_struct_sockaddr_storage=yes,
2639 ac_cv_struct_sockaddr_storage=no))
2640AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2641if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002642 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002643fi
2644
Guido van Rossum627b2d71993-12-24 10:39:16 +00002645# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002646
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002647AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002648AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002649
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002650works=no
2651AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002652AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2653 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2654)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002655AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002656
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002657works=no
2658AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002659AC_TRY_COMPILE([], [signed char c;], works=yes,
2660 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2661)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002662AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002663
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002664have_prototypes=no
2665AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002666AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2667 AC_DEFINE(HAVE_PROTOTYPES, 1,
2668 [Define if your compiler supports function prototype])
2669 have_prototypes=yes
2670])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002671AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002672
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002673works=no
2674AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002675AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002676#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002677int foo(int x, ...) {
2678 va_list va;
2679 va_start(va, x);
2680 va_arg(va, int);
2681 va_arg(va, char *);
2682 va_arg(va, double);
2683 return 0;
2684}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002685], [return foo(10, "", 3.14);], [
2686 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2687 [Define if your compiler supports variable length function prototypes
2688 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2689 works=yes
2690])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002691AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002692
Dave Cole331708b2004-08-09 04:51:41 +00002693# check for socketpair
2694AC_MSG_CHECKING(for socketpair)
2695AC_TRY_COMPILE([
2696#include <sys/types.h>
2697#include <sys/socket.h>
2698], void *x=socketpair,
2699 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2700 AC_MSG_RESULT(yes),
2701 AC_MSG_RESULT(no)
2702)
2703
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002704# check if sockaddr has sa_len member
2705AC_MSG_CHECKING(if sockaddr has sa_len member)
2706AC_TRY_COMPILE([#include <sys/types.h>
2707#include <sys/socket.h>],
2708[struct sockaddr x;
2709x.sa_len = 0;],
2710 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002711 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002712 AC_MSG_RESULT(no))
2713
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002714va_list_is_array=no
2715AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002716AC_TRY_COMPILE([
2717#ifdef HAVE_STDARG_PROTOTYPES
2718#include <stdarg.h>
2719#else
2720#include <varargs.h>
2721#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002722], [va_list list1, list2; list1 = list2;], , [
2723 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2724 va_list_is_array=yes
2725])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002726AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002727
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002728# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002729AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2730 [Define this if you have some version of gethostbyname_r()])
2731
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002732AC_CHECK_FUNC(gethostbyname_r, [
2733 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2734 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2735 OLD_CFLAGS=$CFLAGS
2736 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2737 AC_TRY_COMPILE([
2738# include <netdb.h>
2739 ], [
2740 char *name;
2741 struct hostent *he, *res;
2742 char buffer[2048];
2743 int buflen = 2048;
2744 int h_errnop;
2745
2746 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2747 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002748 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002749 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2750 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002751 AC_MSG_RESULT(yes)
2752 ], [
2753 AC_MSG_RESULT(no)
2754 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2755 AC_TRY_COMPILE([
2756# include <netdb.h>
2757 ], [
2758 char *name;
2759 struct hostent *he;
2760 char buffer[2048];
2761 int buflen = 2048;
2762 int h_errnop;
2763
2764 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2765 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002766 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002767 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2768 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002769 AC_MSG_RESULT(yes)
2770 ], [
2771 AC_MSG_RESULT(no)
2772 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2773 AC_TRY_COMPILE([
2774# include <netdb.h>
2775 ], [
2776 char *name;
2777 struct hostent *he;
2778 struct hostent_data data;
2779
2780 (void) gethostbyname_r(name, he, &data);
2781 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002782 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002783 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2784 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002785 AC_MSG_RESULT(yes)
2786 ], [
2787 AC_MSG_RESULT(no)
2788 ])
2789 ])
2790 ])
2791 CFLAGS=$OLD_CFLAGS
2792], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002793 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002794])
2795AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2796AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2797AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002798AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002799AC_SUBST(HAVE_GETHOSTBYNAME)
2800
Guido van Rossum627b2d71993-12-24 10:39:16 +00002801# checks for system services
2802# (none yet)
2803
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002804# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002805AC_CHECK_FUNC(__fpu_control,
2806 [],
2807 [AC_CHECK_LIB(ieee, __fpu_control)
2808])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002809
Guido van Rossum93274221997-05-09 02:42:00 +00002810# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002811AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002812AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002813 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2814[
Guido van Rossum93274221997-05-09 02:42:00 +00002815if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002816then
2817 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2818 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2819 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002820else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002821fi],
2822[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002823
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002824# check for --with-libm=...
2825AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002826case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002827Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002828BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002829*) LIBM=-lm
2830esac
Guido van Rossum93274221997-05-09 02:42:00 +00002831AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002832AC_ARG_WITH(libm,
2833 AC_HELP_STRING(--with-libm=STRING, math library),
2834[
Guido van Rossum93274221997-05-09 02:42:00 +00002835if test "$withval" = no
2836then LIBM=
2837 AC_MSG_RESULT(force LIBM empty)
2838elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002839then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002840 AC_MSG_RESULT(set LIBM="$withval")
2841else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002842fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002843[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002844
2845# check for --with-libc=...
2846AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002847AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002848AC_ARG_WITH(libc,
2849 AC_HELP_STRING(--with-libc=STRING, C library),
2850[
Guido van Rossum93274221997-05-09 02:42:00 +00002851if test "$withval" = no
2852then LIBC=
2853 AC_MSG_RESULT(force LIBC empty)
2854elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002855then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002856 AC_MSG_RESULT(set LIBC="$withval")
2857else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002858fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002859[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002860
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002861# check for hypot() in math library
2862LIBS_SAVE=$LIBS
2863LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002864AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002865LIBS=$LIBS_SAVE
2866
Guido van Rossumef2255b2000-03-10 22:30:29 +00002867# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002868AC_CHECK_HEADER(wchar.h, [
2869 AC_DEFINE(HAVE_WCHAR_H, 1,
2870 [Define if the compiler provides a wchar.h header file.])
2871 wchar_h="yes"
2872],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002873wchar_h="no"
2874)
2875
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002876# determine wchar_t size
2877if test "$wchar_h" = yes
2878then
Guido van Rossum67b26592001-10-20 14:21:45 +00002879 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002880fi
2881
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002882AC_MSG_CHECKING(for UCS-4 tcl)
2883have_ucs4_tcl=no
2884AC_TRY_COMPILE([
2885#include <tcl.h>
2886#if TCL_UTF_MAX != 6
2887# error "NOT UCS4_TCL"
2888#endif], [], [
2889 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
2890 have_ucs4_tcl=yes
2891])
2892AC_MSG_RESULT($have_ucs4_tcl)
2893
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002894# check whether wchar_t is signed or not
2895if test "$wchar_h" = yes
2896then
2897 # check whether wchar_t is signed or not
2898 AC_MSG_CHECKING(whether wchar_t is signed)
2899 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
2900 AC_TRY_RUN([
2901 #include <wchar.h>
2902 int main()
2903 {
Martin v. Löwis44fe0e42006-04-11 07:15:30 +00002904 /* Success: exit code 0 */
2905 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1);
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002906 }
2907 ],
2908 ac_cv_wchar_t_signed=yes,
2909 ac_cv_wchar_t_signed=no,
2910 ac_cv_wchar_t_signed=yes)])
2911 AC_MSG_RESULT($ac_cv_wchar_t_signed)
2912fi
2913
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002914AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002915dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002916AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002917 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2918 [],
2919 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002920
2921if test $enable_unicode = yes
2922then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002923 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002924 case "$have_ucs4_tcl" in
2925 yes) enable_unicode="ucs4"
2926 ;;
2927 *) enable_unicode="ucs2"
2928 ;;
2929 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002930fi
2931
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002932AH_TEMPLATE(Py_UNICODE_SIZE,
2933 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002934case "$enable_unicode" in
2935ucs2) unicode_size="2"
2936 AC_DEFINE(Py_UNICODE_SIZE,2)
2937 ;;
2938ucs4) unicode_size="4"
2939 AC_DEFINE(Py_UNICODE_SIZE,4)
2940 ;;
2941esac
2942
Martin v. Löwis11437992002-04-12 09:54:03 +00002943AH_TEMPLATE(PY_UNICODE_TYPE,
2944 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002945
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002946AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002947if test "$enable_unicode" = "no"
2948then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002949 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002950 AC_MSG_RESULT(not used)
2951else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002952 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002953 AC_DEFINE(Py_USING_UNICODE, 1,
2954 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002955
2956 # wchar_t is only usable if it maps to an unsigned type
2957 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00002958 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002959 then
2960 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002961 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2962 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002963 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002964 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002965 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2966 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2967 then
2968 PY_UNICODE_TYPE="unsigned short"
2969 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2970 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2971 then
2972 PY_UNICODE_TYPE="unsigned long"
2973 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2974 else
2975 PY_UNICODE_TYPE="no type found"
2976 fi
2977 AC_MSG_RESULT($PY_UNICODE_TYPE)
2978fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002979
2980# check for endianness
2981AC_C_BIGENDIAN
Ronald Oussoren988117f2006-04-29 11:31:35 +00002982AH_VERBATIM([WORDS_BIGENDIAN],
2983[
2984 /* Define to 1 if your processor stores words with the most significant byte
2985 first (like Motorola and SPARC, unlike Intel and VAX).
2986
2987 The block below does compile-time checking for endianness on platforms
2988 that use GCC and therefore allows compiling fat binaries on OSX by using
2989 '-arch ppc -arch i386' as the compile flags. The phrasing was choosen
2990 such that the configure-result is used on systems that don't use GCC.
2991 */
2992#ifdef __BIG_ENDIAN__
2993#define WORDS_BIGENDIAN 1
2994#else
2995#ifndef __LITTLE_ENDIAN__
2996#undef WORDS_BIGENDIAN
2997#endif
2998#endif])
Guido van Rossumef2255b2000-03-10 22:30:29 +00002999
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003000# Check whether right shifting a negative integer extends the sign bit
3001# or fills with zeros (like the Cray J90, according to Tim Peters).
3002AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00003003AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003004AC_TRY_RUN([
3005int main()
3006{
Vladimir Marangozova6180282000-07-12 05:05:06 +00003007 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003008}
Guido van Rossum3065c942001-09-17 04:03:14 +00003009],
3010ac_cv_rshift_extends_sign=yes,
3011ac_cv_rshift_extends_sign=no,
3012ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003013AC_MSG_RESULT($ac_cv_rshift_extends_sign)
3014if test "$ac_cv_rshift_extends_sign" = no
3015then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003016 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
3017 [Define if i>>j for signed int i does not extend the sign bit
3018 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00003019fi
3020
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003021# check for getc_unlocked and related locking functions
3022AC_MSG_CHECKING(for getc_unlocked() and friends)
3023AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
3024AC_TRY_LINK([#include <stdio.h>],[
3025 FILE *f = fopen("/dev/null", "r");
3026 flockfile(f);
3027 getc_unlocked(f);
3028 funlockfile(f);
3029], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
3030AC_MSG_RESULT($ac_cv_have_getc_unlocked)
3031if test "$ac_cv_have_getc_unlocked" = yes
3032then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003033 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
3034 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00003035fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00003036
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003037# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00003038# save the value of LIBS so we don't actually link Python with readline
3039LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003040AC_CHECK_LIB(readline, readline)
3041if test "$ac_cv_have_readline_readline" = no
3042then
3043 AC_CHECK_LIB(termcap, readline)
3044fi
3045
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003046# check for readline 2.1
3047AC_CHECK_LIB(readline, rl_callback_handler_install,
3048 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003049 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003050
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00003051# check for readline 2.2
3052AC_TRY_CPP([#include <readline/readline.h>],
3053have_readline=yes, have_readline=no)
3054if test $have_readline = yes
3055then
3056 AC_EGREP_HEADER([extern int rl_completion_append_character;],
3057 [readline/readline.h],
3058 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
3059 [Define if you have readline 2.2]), )
3060fi
3061
Martin v. Löwis0daad592001-09-30 21:09:59 +00003062# check for readline 4.0
3063AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003064 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003065 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00003066
Guido van Rossum353ae582001-07-10 16:45:32 +00003067# check for readline 4.2
3068AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003069 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00003070 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00003071
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00003072# also in readline 4.2
3073AC_TRY_CPP([#include <readline/readline.h>],
3074have_readline=yes, have_readline=no)
3075if test $have_readline = yes
3076then
3077 AC_EGREP_HEADER([extern int rl_catch_signals;],
3078 [readline/readline.h],
3079 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
3080 [Define if you can turn off readline's signal handling.]), )
3081fi
3082
Martin v. Löwis82bca632006-02-10 20:49:30 +00003083# End of readline checks: restore LIBS
3084LIBS=$LIBS_no_readline
3085
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003086AC_MSG_CHECKING(for broken nice())
3087AC_CACHE_VAL(ac_cv_broken_nice, [
3088AC_TRY_RUN([
3089int main()
3090{
3091 int val1 = nice(1);
3092 if (val1 != -1 && val1 == nice(2))
3093 exit(0);
3094 exit(1);
3095}
Guido van Rossum3065c942001-09-17 04:03:14 +00003096],
3097ac_cv_broken_nice=yes,
3098ac_cv_broken_nice=no,
3099ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003100AC_MSG_RESULT($ac_cv_broken_nice)
3101if test "$ac_cv_broken_nice" = yes
3102then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003103 AC_DEFINE(HAVE_BROKEN_NICE, 1,
3104 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00003105fi
3106
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003107AC_MSG_CHECKING(for broken poll())
3108AC_TRY_RUN([
3109#include <poll.h>
3110
3111int main (void)
3112 {
3113 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
3114
3115 close (42);
3116
3117 int poll_test = poll (&poll_struct, 1, 0);
3118
3119 if (poll_test < 0)
3120 {
3121 exit(0);
3122 }
3123 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
3124 {
3125 exit(0);
3126 }
3127 else
3128 {
3129 exit(1);
3130 }
3131 }
3132],
3133ac_cv_broken_poll=yes,
3134ac_cv_broken_poll=no,
3135ac_cv_broken_poll=no)
3136AC_MSG_RESULT($ac_cv_broken_poll)
3137if test "$ac_cv_broken_poll" = yes
3138then
3139 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3140 [Define if poll() sets errno on invalid file descriptors.])
3141fi
3142
Brett Cannon43802422005-02-10 20:48:03 +00003143# Before we can test tzset, we need to check if struct tm has a tm_zone
3144# (which is not required by ISO C or UNIX spec) and/or if we support
3145# tzname[]
3146AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003147
Brett Cannon43802422005-02-10 20:48:03 +00003148# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003149AC_MSG_CHECKING(for working tzset())
3150AC_CACHE_VAL(ac_cv_working_tzset, [
3151AC_TRY_RUN([
3152#include <stdlib.h>
3153#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003154#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003155
3156#if HAVE_TZNAME
3157extern char *tzname[];
3158#endif
3159
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003160int main()
3161{
Brett Cannon18367812003-09-19 00:59:16 +00003162 /* Note that we need to ensure that not only does tzset(3)
3163 do 'something' with localtime, but it works as documented
3164 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003165 This includes making sure that tzname is set properly if
3166 tm->tm_zone does not exist since it is the alternative way
3167 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003168
3169 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003170 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003171 */
3172
Brett Cannon43802422005-02-10 20:48:03 +00003173 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003174 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3175
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003176 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003177 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003178 if (localtime(&groundhogday)->tm_hour != 0)
3179 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003180#if HAVE_TZNAME
3181 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3182 if (strcmp(tzname[0], "UTC") ||
3183 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3184 exit(1);
3185#endif
Brett Cannon18367812003-09-19 00:59:16 +00003186
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003187 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003188 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003189 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003190 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003191#if HAVE_TZNAME
3192 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3193 exit(1);
3194#endif
Brett Cannon18367812003-09-19 00:59:16 +00003195
3196 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3197 tzset();
3198 if (localtime(&groundhogday)->tm_hour != 11)
3199 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003200#if HAVE_TZNAME
3201 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3202 exit(1);
3203#endif
3204
3205#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003206 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3207 exit(1);
3208 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3209 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003210#endif
Brett Cannon18367812003-09-19 00:59:16 +00003211
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003212 exit(0);
3213}
3214],
3215ac_cv_working_tzset=yes,
3216ac_cv_working_tzset=no,
3217ac_cv_working_tzset=no)])
3218AC_MSG_RESULT($ac_cv_working_tzset)
3219if test "$ac_cv_working_tzset" = yes
3220then
3221 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3222 [Define if tzset() actually switches the local timezone in a meaningful way.])
3223fi
3224
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003225# Look for subsecond timestamps in struct stat
3226AC_MSG_CHECKING(for tv_nsec in struct stat)
3227AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3228AC_TRY_COMPILE([#include <sys/stat.h>], [
3229struct stat st;
3230st.st_mtim.tv_nsec = 1;
3231],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003232ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003233ac_cv_stat_tv_nsec=no,
3234ac_cv_stat_tv_nsec=no))
3235AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3236if test "$ac_cv_stat_tv_nsec" = yes
3237then
3238 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3239 [Define if you have struct stat.st_mtim.tv_nsec])
3240fi
3241
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003242# Look for BSD style subsecond timestamps in struct stat
3243AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3244AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3245AC_TRY_COMPILE([#include <sys/stat.h>], [
3246struct stat st;
3247st.st_mtimespec.tv_nsec = 1;
3248],
3249ac_cv_stat_tv_nsec2=yes,
3250ac_cv_stat_tv_nsec2=no,
3251ac_cv_stat_tv_nsec2=no))
3252AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3253if test "$ac_cv_stat_tv_nsec2" = yes
3254then
3255 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3256 [Define if you have struct stat.st_mtimensec])
3257fi
3258
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003259# On HP/UX 11.0, mvwdelch is a block with a return statement
3260AC_MSG_CHECKING(whether mvwdelch is an expression)
3261AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3262AC_TRY_COMPILE([#include <curses.h>], [
3263 int rtn;
3264 rtn = mvwdelch(0,0,0);
3265], ac_cv_mvwdelch_is_expression=yes,
3266 ac_cv_mvwdelch_is_expression=no,
3267 ac_cv_mvwdelch_is_expression=yes))
3268AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3269
3270if test "$ac_cv_mvwdelch_is_expression" = yes
3271then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003272 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3273 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003274fi
3275
3276AC_MSG_CHECKING(whether WINDOW has _flags)
3277AC_CACHE_VAL(ac_cv_window_has_flags,
3278AC_TRY_COMPILE([#include <curses.h>], [
3279 WINDOW *w;
3280 w->_flags = 0;
3281], ac_cv_window_has_flags=yes,
3282 ac_cv_window_has_flags=no,
3283 ac_cv_window_has_flags=no))
3284AC_MSG_RESULT($ac_cv_window_has_flags)
3285
3286
3287if test "$ac_cv_window_has_flags" = yes
3288then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003289 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3290 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003291fi
3292
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003293AC_MSG_CHECKING(for /dev/ptmx)
3294
3295if test -e /dev/ptmx
3296then
3297 AC_MSG_RESULT(yes)
3298 AC_DEFINE(HAVE_DEV_PTMX, 1,
3299 [Define if we have /dev/ptmx.])
3300else
3301 AC_MSG_RESULT(no)
3302fi
3303
Neal Norwitz865400f2003-03-21 01:42:58 +00003304AC_MSG_CHECKING(for /dev/ptc)
3305
3306if test -e /dev/ptc
3307then
3308 AC_MSG_RESULT(yes)
3309 AC_DEFINE(HAVE_DEV_PTC, 1,
3310 [Define if we have /dev/ptc.])
3311else
3312 AC_MSG_RESULT(no)
3313fi
3314
Brett Cannon09d12362006-05-11 05:11:33 +00003315AC_MSG_CHECKING(for %zd printf() format support)
3316AC_TRY_RUN([#include <stdio.h>
3317#include <stddef.h>
3318#include <string.h>
3319
3320int main()
3321{
3322 char buffer[4];
3323
3324 if(sprintf(buffer, "%zd", (size_t)123) < 0)
3325 return 1;
3326
3327 if (strncmp(buffer, "123", 3))
3328 return 1;
3329
3330 return 0;
3331}],
3332[AC_MSG_RESULT(yes)
3333 AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
3334 AC_MSG_RESULT(no))
3335
Martin v. Löwis01c04012002-11-11 14:58:44 +00003336AC_CHECK_TYPE(socklen_t,,
3337 AC_DEFINE(socklen_t,int,
3338 Define to `int' if <sys/socket.h> does not define.),[
3339#ifdef HAVE_SYS_TYPES_H
3340#include <sys/types.h>
3341#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003342#ifdef HAVE_SYS_SOCKET_H
3343#include <sys/socket.h>
3344#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003345])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003346
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003347AC_SUBST(THREADHEADERS)
3348
3349for h in `(cd $srcdir;echo Python/thread_*.h)`
3350do
3351 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3352done
3353
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003354AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003355SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003356AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003357for dir in $SRCDIRS; do
3358 if test ! -d $dir; then
3359 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003360 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003361done
3362AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003363
Guido van Rossum627b2d71993-12-24 10:39:16 +00003364# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003365AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3366AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003367
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003368echo "creating Modules/Setup"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003369if test ! -f Modules/Setup
3370then
3371 cp $srcdir/Modules/Setup.dist Modules/Setup
3372fi
3373
Martin v. Löwisf7afe952006-04-14 15:16:15 +00003374echo "creating Modules/Setup.local"
Neil Schemenauer61c51152001-01-26 16:18:16 +00003375if test ! -f Modules/Setup.local
3376then
3377 echo "# Edit this file for local setup changes" >Modules/Setup.local
3378fi
3379
3380echo "creating Makefile"
3381$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3382 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003383 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003384mv config.c Modules