blob: d617108f2fa6e746ebe7ac89a3eb8f6ac158b370 [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
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000063dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000064AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000065 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
66[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000067 case $enableval in
68 yes)
69 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000070 esac
71 case $enableval in
72 no)
73 PYTHONFRAMEWORK=
74 PYTHONFRAMEWORKDIR=no-framework
75 PYTHONFRAMEWORKPREFIX=
76 PYTHONFRAMEWORKINSTALLDIR=
77 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +000078 ;;
79 *)
Jack Jansen127e56e2001-09-11 14:41:54 +000080 PYTHONFRAMEWORK=Python
81 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000082 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +000083 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
84 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Jack Jansenb6e9cad2001-08-15 01:26:28 +000085 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +000086 ],[
87 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +000088 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000089 PYTHONFRAMEWORKPREFIX=
90 PYTHONFRAMEWORKINSTALLDIR=
91 enable_framework=
92])
93AC_SUBST(PYTHONFRAMEWORK)
94AC_SUBST(PYTHONFRAMEWORKDIR)
95AC_SUBST(PYTHONFRAMEWORKPREFIX)
96AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Guido van Rossum4b6b5791996-09-09 20:09:34 +000097
Jack Jansenb6e9cad2001-08-15 01:26:28 +000098##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000099## AC_HELP_STRING(--with-dyld,
100## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000101##
Guido van Rossumb418f891996-07-30 18:06:02 +0000102# Set name for machine-dependent library files
103AC_SUBST(MACHDEP)
104AC_MSG_CHECKING(MACHDEP)
105if test -z "$MACHDEP"
106then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000107 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000108 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
109 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000110 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000111 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000112 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000113 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000114 ac_md_system=`echo $ac_sys_system |
115 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
116 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000117 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000118 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000119
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000120 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000121 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000122 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000123 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000124 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000125 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000126 esac
127fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000128
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000129# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
130# disable features if it is defined, without any means to access these
131# features as extensions. For these systems, we skip the definition of
132# _XOPEN_SOURCE. Before adding a system to the list to gain access to
133# some feature, make sure there is no alternative way to access this
134# feature. Also, when using wildcards, make sure you have verified the
135# need for not defining _XOPEN_SOURCE on all systems matching the
136# wildcard, and that the wildcard does not include future systems
137# (which may remove their limitations).
138dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
139case $ac_sys_system/$ac_sys_release in
140 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
141 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000142 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
Neal Norwitz671b9e32006-01-09 07:07:12 +0000143 OpenBSD/2.* | OpenBSD/3.@<:@012345678@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000144 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000145 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
146 # of union __?sigval. Reported by Stuart Bishop.
147 SunOS/5.6)
148 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000149 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
150 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000151 # Reconfirmed for 7.1.4 by Martin v. Loewis.
152 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000153 define_xopen_source=no;;
154 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000155 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000156 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000157 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000158 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
159 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
160 # this is fixed in 10.3, which identifies itself as Darwin/7.*
161 # This should hopefully be fixed in FreeBSD 4.9
162 FreeBSD/4.8* | Darwin/6* )
163 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000164 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
165 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
166 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000167 AIX/4)
168 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000169 AIX/5)
170 if test `uname -r` -eq 1; then
171 define_xopen_source=no
172 fi
173 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000174 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
175 # disables platform specific features beyond repair.
176 Darwin/8.*)
177 define_xopen_source=no
178 ;;
179
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000180esac
181
182if test $define_xopen_source = yes
183then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000184 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
185 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000186 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
187 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000188 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000189 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000190 AC_DEFINE(_XOPEN_SOURCE, 500,
191 Define to the level of X/Open that your system supports)
192 ;;
193 *)
194 AC_DEFINE(_XOPEN_SOURCE, 600,
195 Define to the level of X/Open that your system supports)
196 ;;
197 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000198
199 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
200 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
201 # several APIs are not declared. Since this is also needed in some
202 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000203 # except for Solaris 10, where it must not be defined,
204 # as it implies XPG4.2
205 case $ac_sys_system/$ac_sys_release in
206 SunOS/5.10)
207 ;;
208 *)
209 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
210 Define to activate Unix95-and-earlier features)
211 ;;
212 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000213
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000214 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
215
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000216fi
217
Guido van Rossum91922671997-10-09 20:24:13 +0000218#
219# SGI compilers allow the specification of the both the ABI and the
220# ISA on the command line. Depending on the values of these switches,
221# different and often incompatable code will be generated.
222#
223# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
224# thus supply support for various ABI/ISA combinations. The MACHDEP
225# variable is also adjusted.
226#
227AC_SUBST(SGI_ABI)
228if test ! -z "$SGI_ABI"
229then
230 CC="cc $SGI_ABI"
231 LDFLAGS="$SGI_ABI $LDFLAGS"
232 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
233fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000234AC_MSG_RESULT($MACHDEP)
235
Jack Jansen83f898c2002-12-30 22:23:40 +0000236# And add extra plat-mac for darwin
237AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000238AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000239AC_MSG_CHECKING(EXTRAPLATDIR)
240if test -z "$EXTRAPLATDIR"
241then
242 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000243 darwin)
244 EXTRAPLATDIR="\$(PLATMACDIRS)"
245 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
246 ;;
247 *)
248 EXTRAPLATDIR=""
249 EXTRAMACHDEPPATH=""
250 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000251 esac
252fi
253AC_MSG_RESULT($EXTRAPLATDIR)
254
Jack Jansen6b08a402004-06-03 12:41:45 +0000255# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
256# it may influence the way we can build extensions, so distutils
257# needs to check it
258AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
259CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
260
Guido van Rossum627b2d71993-12-24 10:39:16 +0000261# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000262
263# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
264# for debug/optimization stuff. BASECFLAGS is for flags that are required
265# just to get things to compile and link. Users are free to override OPT
266# when running configure or make. The build should not break if they do.
267# BASECFLAGS should generally not be messed with, however.
268
269# XXX shouldn't some/most/all of this code be merged with the stuff later
270# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000271AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000272AC_ARG_WITH(gcc,
273 AC_HELP_STRING(--without-gcc,never use gcc),
274[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000275 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000276 no) CC=cc
277 without_gcc=yes;;
278 yes) CC=gcc
279 without_gcc=no;;
280 *) CC=$withval
281 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000282 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000283 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000284 AIX*) CC=cc_r
285 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000286 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000287 case $BE_HOST_CPU in
288 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000289 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000290 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000291 BASECFLAGS="$BASECFLAGS -export pragma"
292 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000293 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000294 ;;
295 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000296 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000297 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000298 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000299 ;;
300 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000301 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000302 ;;
303 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000304 AR="\$(srcdir)/Modules/ar_beos"
305 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000306 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000307 Monterey*)
308 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000309 without_gcc=;;
310 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000311 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000312AC_MSG_RESULT($without_gcc)
313
Guido van Rossum27552902001-01-23 01:52:26 +0000314AC_SUBST(CXX)
Guido van Rossum95012191999-12-16 17:50:52 +0000315AC_SUBST(MAINOBJ)
Fred Drakea1a84e72001-03-06 05:52:16 +0000316MAINOBJ=python.o
Guido van Rossum95012191999-12-16 17:50:52 +0000317AC_MSG_CHECKING(for --with-cxx=<compiler>)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000318AC_ARG_WITH(cxx,
319 AC_HELP_STRING(--with-cxx=<compiler>, enable C++ support),
320[
Martin v. Löwis537970f2000-12-13 17:37:02 +0000321 check_cxx=no
Guido van Rossum95012191999-12-16 17:50:52 +0000322 case $withval in
323 no) CXX=
324 with_cxx=no;;
325 *) CXX=$withval
Fred Drakea1a84e72001-03-06 05:52:16 +0000326 MAINOBJ=ccpython.o
Guido van Rossum95012191999-12-16 17:50:52 +0000327 with_cxx=$withval;;
328 esac], [
329 with_cxx=no
Martin v. Löwis537970f2000-12-13 17:37:02 +0000330 check_cxx=yes
Guido van Rossum95012191999-12-16 17:50:52 +0000331])
332AC_MSG_RESULT($with_cxx)
Martin v. Löwis537970f2000-12-13 17:37:02 +0000333
Michael W. Hudson54241132001-12-07 15:38:26 +0000334if test "$with_cxx" = "yes"
335then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000336 AC_MSG_ERROR([must supply a compiler when using --with-cxx])
Michael W. Hudson54241132001-12-07 15:38:26 +0000337fi
338
Martin v. Löwis537970f2000-12-13 17:37:02 +0000339dnl The following fragment works similar to AC_PROG_CXX.
340dnl It does not fail if CXX is not found, and it is not executed if
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000341dnl --without-cxx was given.
Martin v. Löwis537970f2000-12-13 17:37:02 +0000342dnl Finally, it does not test whether CXX is g++.
343
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000344dnl Autoconf 2.5x does not have AC_PROG_CXX_WORKS anymore
345ifdef([AC_PROG_CXX_WORKS],[],
346 [AC_DEFUN([AC_PROG_CXX_WORKS],
347 [AC_LANG_PUSH(C++)dnl
348 _AC_COMPILER_EXEEXT
349 AC_LANG_POP()
350 ]
351)])
352
Martin v. Löwis537970f2000-12-13 17:37:02 +0000353if test "$check_cxx" = "yes"
354then
355 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
356 if test "$CXX" = "notfound"
357 then
358 CXX=
359 else
360 AC_PROG_CXX_WORKS
361 fi
362fi
363
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000364# If the user switches compilers, we can't believe the cache
365if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
366then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000367 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
368(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000369fi
370
Guido van Rossum627b2d71993-12-24 10:39:16 +0000371AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000372
373# checks for UNIX variants that set C preprocessor variables
374AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000375
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000376# Check for unsupported systems
377case $ac_sys_system/$ac_sys_release in
Skip Montanaroce59c042004-01-17 14:19:44 +0000378Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000379 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
380 echo See README for details.
381 exit 1;;
382esac
383
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000384AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000385AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000386AC_ARG_WITH(suffix,
387 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
388[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000389 case $withval in
390 no) EXEEXT=;;
391 yes) EXEEXT=.exe;;
392 *) EXEEXT=$withval;;
393 esac])
394AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000395
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000396# Test whether we're running on a non-case-sensitive system, in which
397# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000398AC_SUBST(BUILDEXEEXT)
399AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000400if test ! -d CaseSensitiveTestDir; then
401mkdir CaseSensitiveTestDir
402fi
403
404if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000405then
Jack Jansen1999ef42001-12-06 21:47:20 +0000406 AC_MSG_RESULT(yes)
407 BUILDEXEEXT=.exe
408else
409 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000410 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000411fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000412rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000413
Guido van Rossumdd997f71998-10-07 19:58:26 +0000414case $MACHDEP in
415bsdos*)
416 case $CC in
417 gcc) CC="$CC -D_HAVE_BSDI";;
418 esac;;
419esac
420
Guido van Rossum84561611997-08-21 00:08:11 +0000421case $ac_sys_system in
422hp*|HP*)
423 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000424 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000425 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000426Monterey*)
427 case $CC in
428 cc) CC="$CC -Wl,-Bexport";;
429 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000430SunOS*)
431 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000432 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000433 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000434esac
435
Martin v. Löwise8964d42001-03-06 12:09:07 +0000436
Neil Schemenauer61c51152001-01-26 16:18:16 +0000437AC_SUBST(LIBRARY)
438AC_MSG_CHECKING(LIBRARY)
439if test -z "$LIBRARY"
440then
441 LIBRARY='libpython$(VERSION).a'
442fi
443AC_MSG_RESULT($LIBRARY)
444
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000445# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000446# name of the library into which to insert object files). BLDLIBRARY is also
447# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
448# is blank as the main program is not linked directly against LDLIBRARY.
449# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
450# systems without shared libraries, LDLIBRARY is the same as LIBRARY
451# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
452# DLLLIBRARY is the shared (i.e., DLL) library.
453#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000454# RUNSHARED is used to run shared python without installed libraries
455#
456# INSTSONAME is the name of the shared library that will be use to install
457# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000458AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000459AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000460AC_SUBST(BLDLIBRARY)
461AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000462AC_SUBST(INSTSONAME)
463AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000464LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000465BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000466INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000467DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000468LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000469RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000470
Guido van Rossumfb842551997-08-06 23:42:07 +0000471# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000472# If CXX is set, and if it is needed to link a main function that was
473# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
474# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000475# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000476# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000477AC_SUBST(LINKCC)
478AC_MSG_CHECKING(LINKCC)
479if test -z "$LINKCC"
480then
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000481 if test -z "$CXX"; then
482 LINKCC="\$(PURIFY) \$(CC)"
483 else
Martin v. Löwis147fbe52005-08-07 21:09:30 +0000484 echo 'extern "C" void foo();int main(){foo();}' > conftest_a.cc
485 $CXX -c conftest_a.cc # 2>&5
486 echo 'void foo(){}' > conftest_b.$ac_ext
487 $CC -c conftest_b.$ac_ext # 2>&5
488 if $CC -o conftest$ac_exeext conftest_a.$ac_objext conftest_b.$ac_objext 2>&5 \
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000489 && test -s conftest$ac_exeext && ./conftest$ac_exeext
490 then
491 LINKCC="\$(PURIFY) \$(CC)"
492 else
493 LINKCC="\$(PURIFY) \$(CXX)"
494 fi
495 rm -fr conftest*
496 fi
Guido van Rossumfb842551997-08-06 23:42:07 +0000497 case $ac_sys_system in
498 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000499 exp_extra="\"\""
500 if test $ac_sys_release -ge 5 -o \
501 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
502 exp_extra="."
503 fi
504 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000505 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000506 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000507 esac
508fi
509AC_MSG_RESULT($LINKCC)
510
Martin v. Löwis1142de32002-03-29 16:28:31 +0000511AC_MSG_CHECKING(for --enable-shared)
512AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000513 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000514
Martin v. Löwis1142de32002-03-29 16:28:31 +0000515if test -z "$enable_shared"
516then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000517 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000518 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000519 enable_shared="yes";;
520 *)
521 enable_shared="no";;
522 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000523fi
524AC_MSG_RESULT($enable_shared)
525
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000526AC_MSG_CHECKING(for --enable-profiling)
527AC_ARG_ENABLE(profiling,
528 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
529[ac_save_cc="$CC"
530 CC="$CC -pg"
531 AC_TRY_RUN([int main() { return 0; }],
532 ac_enable_profiling="yes",
533 ac_enable_profiling="no",
534 ac_enable_profiling="no")
535 CC="$ac_save_cc"])
536AC_MSG_RESULT($ac_enable_profiling)
537
538case "$ac_enable_profiling" in
539 "yes")
540 BASECFLAGS="-pg $BASECFLAGS"
541 LDFLAGS="-pg $LDFLAGS"
542 ;;
543esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000544
545AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000546
Guido van Rossumb8552162001-09-05 14:58:11 +0000547# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
548# library that we build, but we do not want to link against it (we
549# will find it with a -framework option). For this reason there is an
550# extra variable BLDLIBRARY against which Python and the extension
551# modules are linked, BLDLIBRARY. This is normally the same as
552# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000553if test "$enable_framework"
554then
555 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000556 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000557 BLDLIBRARY=''
558else
559 BLDLIBRARY='$(LDLIBRARY)'
560fi
561
Martin v. Löwis1142de32002-03-29 16:28:31 +0000562# Other platforms follow
563if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000564 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000565 case $ac_sys_system in
566 BeOS*)
567 LDLIBRARY='libpython$(VERSION).so'
568 ;;
569 CYGWIN*)
570 LDLIBRARY='libpython$(VERSION).dll.a'
571 DLLLIBRARY='libpython$(VERSION).dll'
572 ;;
573 SunOS*)
574 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000575 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000576 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000577 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000578 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000579 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000580 LDLIBRARY='libpython$(VERSION).so'
581 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000582 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000583 case $ac_sys_system in
584 FreeBSD*)
585 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
586 ;;
587 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000588 INSTSONAME="$LDLIBRARY".$SOVERSION
589 ;;
590 hp*|HP*)
591 LDLIBRARY='libpython$(VERSION).sl'
592 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000593 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000594 ;;
595 OSF*)
596 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000597 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000598 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000599 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000600 atheos*)
601 LDLIBRARY='libpython$(VERSION).so'
602 BLDLIBRARY='-L. -lpython$(VERSION)'
603 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
604 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000605 esac
Jason Tishler30765592003-09-04 11:04:06 +0000606else # shared is disabled
607 case $ac_sys_system in
608 CYGWIN*)
609 BLDLIBRARY='$(LIBRARY)'
610 LDLIBRARY='libpython$(VERSION).dll.a'
611 ;;
612 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000613fi
614
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000615AC_MSG_RESULT($LDLIBRARY)
616
Guido van Rossum627b2d71993-12-24 10:39:16 +0000617AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000618AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000619AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000620
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000621AC_SUBST(SVNVERSION)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000622AC_CHECK_PROG(SVNVERSION, svnversion, found)
623if test $SVNVERSION = found
624then
625 SVNVERSION="svnversion \$(srcdir)"
626else
627 SVNVERSION="echo exported"
628fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000629
Neil Schemenauera42c8272001-03-31 00:01:55 +0000630case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000631bsdos*|hp*|HP*)
632 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000633 if test -z "$INSTALL"
634 then
635 INSTALL="${srcdir}/install-sh -c"
636 fi
637esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000638AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000639
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000640# Not every filesystem supports hard links
641AC_SUBST(LN)
642if test -z "$LN" ; then
643 case $ac_sys_system in
644 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000645 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000646 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000647 *) LN=ln;;
648 esac
649fi
650
Fred Drake9f715822001-07-11 06:27:00 +0000651# Check for --with-pydebug
652AC_MSG_CHECKING(for --with-pydebug)
653AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000654 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
655[
Fred Drake9f715822001-07-11 06:27:00 +0000656if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000657then
658 AC_DEFINE(Py_DEBUG, 1,
659 [Define if you want to build an interpreter with many run-time checks.])
660 AC_MSG_RESULT(yes);
661 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000662else AC_MSG_RESULT(no); Py_DEBUG='false'
663fi],
664[AC_MSG_RESULT(no)])
665
Skip Montanarodecc6a42003-01-01 20:07:49 +0000666# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
667# merged with this chunk of code?
668
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000669# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000670# ------------------------
671# (The following bit of code is complicated enough - please keep things
672# indented properly. Just pretend you're editing Python code. ;-)
673
674# There are two parallel sets of case statements below, one that checks to
675# see if OPT was set and one that does BASECFLAGS setting based upon
676# compiler and platform. BASECFLAGS tweaks need to be made even if the
677# user set OPT.
678
679# tweak OPT based on compiler and platform, only if the user didn't set
680# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000681AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000682if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000683then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000684 case $GCC in
685 yes)
686 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000687 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000688 if test "$Py_DEBUG" = 'true' ; then
689 # Optimization messes up debuggers, so turn it off for
690 # debug builds.
691 OPT="-g -Wall -Wstrict-prototypes"
692 else
693 OPT="-g -O3 -Wall -Wstrict-prototypes"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000694 fi
695 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000696 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000697 OPT="-O3 -Wall -Wstrict-prototypes"
698 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000699 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000700 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000701 SCO_SV*) OPT="$OPT -m486 -DSCO5"
702 ;;
703 esac
Fred Drake9f715822001-07-11 06:27:00 +0000704 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000705
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000706 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000707 OPT="-O"
708 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000709 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000710
711 # The current (beta) Monterey compiler dies with optimizations
712 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000713 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000714 Monterey*)
715 OPT=""
716 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000717 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000718
Guido van Rossum4e8af441994-08-19 15:33:54 +0000719fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000720
Skip Montanarodecc6a42003-01-01 20:07:49 +0000721AC_SUBST(BASECFLAGS)
722# tweak BASECFLAGS based on compiler and platform
723case $GCC in
724yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000725 # Python violates C99 rules, by casting between incompatible
726 # pointer types. GCC may generate bad code as a result of that,
727 # so use -fno-strict-aliasing if supported.
728 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
729 ac_save_cc="$CC"
730 CC="$CC -fno-strict-aliasing"
731 AC_TRY_RUN([int main() { return 0; }],
732 ac_cv_no_strict_aliasing_ok=yes,
733 ac_cv_no_strict_aliasing_ok=no,
734 ac_cv_no_strict_aliasing_ok=no)
735 CC="$ac_save_cc"
736 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
737 if test $ac_cv_no_strict_aliasing_ok = yes
738 then
739 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
740 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000741 case $ac_sys_system in
742 SCO_SV*)
743 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
744 ;;
745 # is there any other compiler on Darwin besides gcc?
746 Darwin*)
Jack Jansene0040412003-07-23 22:17:28 +0000747 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000748 ;;
749 esac
750 ;;
751
752*)
753 case $ac_sys_system in
754 OpenUNIX*|UnixWare*)
755 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
756 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000757 OSF*)
758 BASECFLAGS="$BASECFLAGS -ieee -std"
759 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000760 SCO_SV*)
761 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
762 ;;
763 esac
764 ;;
765esac
766
Fred Drakee1ceaa02001-12-04 20:55:47 +0000767if test "$Py_DEBUG" = 'true'; then
768 :
769else
770 OPT="-DNDEBUG $OPT"
771fi
772
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000773if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000774then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000775 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000776fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000777
Neal Norwitz020c46a2006-01-07 21:39:28 +0000778# disable check for icc since it seems to pass, but generates a warning
779if test "$CC" = icc
780then
781 ac_cv_opt_olimit_ok=no
782fi
783
Guido van Rossum91922671997-10-09 20:24:13 +0000784AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
785AC_CACHE_VAL(ac_cv_opt_olimit_ok,
786[ac_save_cc="$CC"
787CC="$CC -OPT:Olimit=0"
788AC_TRY_RUN([int main() { return 0; }],
789 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000790 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000791 ac_cv_opt_olimit_ok=no)
792CC="$ac_save_cc"])
793AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000794if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000795 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000796 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
797 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
798 # environment?
799 Darwin*)
800 ;;
801 *)
802 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
803 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000804 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000805else
806 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
807 AC_CACHE_VAL(ac_cv_olimit_ok,
808 [ac_save_cc="$CC"
809 CC="$CC -Olimit 1500"
810 AC_TRY_RUN([int main() { return 0; }],
811 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000812 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000813 ac_cv_olimit_ok=no)
814 CC="$ac_save_cc"])
815 AC_MSG_RESULT($ac_cv_olimit_ok)
816 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000817 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000818 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000819fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000820
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000821# On some compilers, pthreads are available without further options
822# (e.g. MacOS X). On some of these systems, the compiler will not
823# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
824# So we have to see first whether pthreads are available without
825# options before we can check whether -Kpthread improves anything.
826AC_MSG_CHECKING(whether pthreads are available without options)
827AC_CACHE_VAL(ac_cv_pthread_is_default,
828[AC_TRY_RUN([
829#include <pthread.h>
830
831void* routine(void* p){return NULL;}
832
833int main(){
834 pthread_t p;
835 if(pthread_create(&p,NULL,routine,NULL)!=0)
836 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000837 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000838 return 0;
839}
840],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000841[
842 ac_cv_pthread_is_default=yes
843 ac_cv_kthread=no
844 ac_cv_pthread=no
845],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000846 ac_cv_pthread_is_default=no,
847 ac_cv_pthread_is_default=no)
848])
849AC_MSG_RESULT($ac_cv_pthread_is_default)
850
851
852if test $ac_cv_pthread_is_default = yes
853then
854 ac_cv_kpthread=no
855else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000856# -Kpthread, if available, provides the right #defines
857# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000858# Some compilers won't report that they do not support -Kpthread,
859# so we need to run a program to see whether it really made the
860# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000861AC_MSG_CHECKING(whether $CC accepts -Kpthread)
862AC_CACHE_VAL(ac_cv_kpthread,
863[ac_save_cc="$CC"
864CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000865AC_TRY_RUN([
866#include <pthread.h>
867
868void* routine(void* p){return NULL;}
869
870int main(){
871 pthread_t p;
872 if(pthread_create(&p,NULL,routine,NULL)!=0)
873 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000874 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000875 return 0;
876}
877],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000878 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000879 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000880 ac_cv_kpthread=no)
881CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000882AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000883fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000884
Skip Montanarod8d39a02003-07-10 20:44:10 +0000885if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000886then
887# -Kthread, if available, provides the right #defines
888# and linker options to make pthread_create available
889# Some compilers won't report that they do not support -Kthread,
890# so we need to run a program to see whether it really made the
891# function available.
892AC_MSG_CHECKING(whether $CC accepts -Kthread)
893AC_CACHE_VAL(ac_cv_kthread,
894[ac_save_cc="$CC"
895CC="$CC -Kthread"
896AC_TRY_RUN([
897#include <pthread.h>
898
899void* routine(void* p){return NULL;}
900
901int main(){
902 pthread_t p;
903 if(pthread_create(&p,NULL,routine,NULL)!=0)
904 return 1;
905 (void)pthread_detach(p);
906 return 0;
907}
908],
909 ac_cv_kthread=yes,
910 ac_cv_kthread=no,
911 ac_cv_kthread=no)
912CC="$ac_save_cc"])
913AC_MSG_RESULT($ac_cv_kthread)
914fi
915
Skip Montanarod8d39a02003-07-10 20:44:10 +0000916if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000917then
918# -pthread, if available, provides the right #defines
919# and linker options to make pthread_create available
920# Some compilers won't report that they do not support -pthread,
921# so we need to run a program to see whether it really made the
922# function available.
923AC_MSG_CHECKING(whether $CC accepts -pthread)
924AC_CACHE_VAL(ac_cv_thread,
925[ac_save_cc="$CC"
926CC="$CC -pthread"
927AC_TRY_RUN([
928#include <pthread.h>
929
930void* routine(void* p){return NULL;}
931
932int main(){
933 pthread_t p;
934 if(pthread_create(&p,NULL,routine,NULL)!=0)
935 return 1;
936 (void)pthread_detach(p);
937 return 0;
938}
939],
940 ac_cv_pthread=yes,
941 ac_cv_pthread=no,
942 ac_cv_pthread=no)
943CC="$ac_save_cc"])
944AC_MSG_RESULT($ac_cv_pthread)
945fi
946
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000947# If we have set a CC compiler flag for thread support then
948# check if it works for CXX, too.
949ac_cv_cxx_thread=no
950if test ! -z "$CXX"
951then
952AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
953ac_save_cxx="$CXX"
954
955if test "$ac_cv_kpthread" = "yes"
956then
Martin v. Löwis519adae2003-09-20 10:47:47 +0000957 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000958 ac_cv_cxx_thread=yes
959elif test "$ac_cv_kthread" = "yes"
960then
961 CXX="$CXX -Kthread"
962 ac_cv_cxx_thread=yes
963elif test "$ac_cv_pthread" = "yes"
964then
965 CXX="$CXX -pthread"
966 ac_cv_cxx_thread=yes
967fi
968
969if test $ac_cv_cxx_thread = yes
970then
971 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
972 $CXX -c conftest.$ac_ext 2>&5
973 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
974 && test -s conftest$ac_exeext && ./conftest$ac_exeext
975 then
976 ac_cv_cxx_thread=yes
977 else
978 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000979 fi
980 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000981fi
Brett Cannonc601e0f2004-11-07 01:24:12 +0000982AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000983fi
Martin v. Löwis519adae2003-09-20 10:47:47 +0000984CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000985
Fred Drakece81d592000-07-09 14:39:29 +0000986dnl # check for ANSI or K&R ("traditional") preprocessor
987dnl AC_MSG_CHECKING(for C preprocessor type)
988dnl AC_TRY_COMPILE([
989dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
990dnl int foo;
991dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
992dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
993dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +0000994
Guido van Rossum627b2d71993-12-24 10:39:16 +0000995# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000996AC_HEADER_STDC
Martin v. Löwis11017b12006-01-14 18:12:57 +0000997AC_CHECK_HEADERS(asm/types.h curses.h dlfcn.h fcntl.h grp.h \
998shadow.h langinfo.h libintl.h ncurses.h poll.h pthread.h \
Skip Montanaro7befb992004-02-10 16:50:21 +0000999stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001000unistd.h utime.h \
Anthony Baxter8a560de2004-10-13 15:30:56 +00001001sys/audioio.h sys/bsdtty.h sys/file.h sys/loadavg.h sys/lock.h sys/mkdev.h \
1002sys/modem.h \
Andrew M. Kuchling881fd902001-07-14 20:55:52 +00001003sys/param.h sys/poll.h sys/select.h sys/socket.h sys/time.h sys/times.h \
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001004sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001005sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
1006bluetooth/bluetooth.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001007AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001008AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001009
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001010# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e2004-11-30 22:09:37 +00001011AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001012#ifdef HAVE_CURSES_H
1013#include <curses.h>
1014#endif
1015])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001016
Martin v. Löwis11017b12006-01-14 18:12:57 +00001017# On Linux, netlink.h requires asm/types.h
1018AC_CHECK_HEADERS(linux/netlink.h,,,[
1019#ifdef HAVE_ASM_TYPES_H
1020#include <asm/types.h>
1021#endif
1022#ifdef HAVE_SYS_SOCKET_H
1023#include <sys/socket.h>
1024#endif
1025])
1026
Guido van Rossum627b2d71993-12-24 10:39:16 +00001027# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001028was_it_defined=no
1029AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001030AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1031 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1032])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001033AC_MSG_RESULT($was_it_defined)
1034
Neal Norwitz11690112002-07-30 01:08:28 +00001035# Check whether using makedev requires defining _OSF_SOURCE
1036AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001037AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001038 [ makedev(0, 0) ],
1039 ac_cv_has_makedev=yes,
1040 ac_cv_has_makedev=no)
1041if test "$ac_cv_has_makedev" = "no"; then
1042 # we didn't link, try if _OSF_SOURCE will allow us to link
1043 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001044#define _OSF_SOURCE 1
1045#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001046 ],
1047 [ makedev(0, 0) ],
1048 ac_cv_has_makedev=yes,
1049 ac_cv_has_makedev=no)
1050 if test "$ac_cv_has_makedev" = "yes"; then
1051 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1052 fi
1053fi
1054AC_MSG_RESULT($ac_cv_has_makedev)
1055if test "$ac_cv_has_makedev" = "yes"; then
1056 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1057fi
1058
Martin v. Löwis399a6892002-10-04 10:22:02 +00001059# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1060# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1061# defined, but the compiler does not support pragma redefine_extname,
1062# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1063# structures (such as rlimit64) without declaring them. As a
1064# work-around, disable LFS on such configurations
1065
1066use_lfs=yes
1067AC_MSG_CHECKING(Solaris LFS bug)
1068AC_TRY_COMPILE([
1069#define _LARGEFILE_SOURCE 1
1070#define _FILE_OFFSET_BITS 64
1071#include <sys/resource.h>
1072],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1073AC_MSG_RESULT($sol_lfs_bug)
1074if test "$sol_lfs_bug" = "yes"; then
1075 use_lfs=no
1076fi
1077
1078if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001079# Two defines needed to enable largefile support on various platforms
1080# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001081AC_DEFINE(_LARGEFILE_SOURCE, 1,
1082[This must be defined on some systems to enable large file support.])
1083AC_DEFINE(_FILE_OFFSET_BITS, 64,
1084[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001085fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001086
Guido van Rossum300fda71996-08-19 21:58:16 +00001087# Add some code to confdefs.h so that the test for off_t works on SCO
1088cat >> confdefs.h <<\EOF
1089#if defined(SCO_DS)
1090#undef _OFF_T
1091#endif
1092EOF
1093
Guido van Rossumef2255b2000-03-10 22:30:29 +00001094# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001095AC_TYPE_MODE_T
1096AC_TYPE_OFF_T
1097AC_TYPE_PID_T
1098AC_TYPE_SIGNAL
1099AC_TYPE_SIZE_T
1100AC_TYPE_UID_T
Martin v. Löwis18e16552006-02-15 17:27:45 +00001101AC_CHECK_TYPE(ssize_t,
1102 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001103
Guido van Rossumef2255b2000-03-10 22:30:29 +00001104# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001105# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001106AC_CHECK_SIZEOF(int, 4)
1107AC_CHECK_SIZEOF(long, 4)
1108AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001109AC_CHECK_SIZEOF(short, 2)
1110AC_CHECK_SIZEOF(float, 4)
1111AC_CHECK_SIZEOF(double, 8)
1112AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001113AC_CHECK_SIZEOF(size_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001114
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001115AC_MSG_CHECKING(for long long support)
1116have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001117AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1118 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1119 have_long_long=yes
1120])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001121AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001122if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001123AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001124fi
1125
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001126AC_MSG_CHECKING(for uintptr_t support)
1127have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001128AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
1129 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
1130 have_uintptr_t=yes
1131])
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001132AC_MSG_RESULT($have_uintptr_t)
1133if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001134AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001135fi
1136
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001137# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1138AC_MSG_CHECKING(size of off_t)
1139AC_CACHE_VAL(ac_cv_sizeof_off_t,
1140[AC_TRY_RUN([#include <stdio.h>
1141#include <sys/types.h>
1142main()
1143{
1144 FILE *f=fopen("conftestval", "w");
1145 if (!f) exit(1);
1146 fprintf(f, "%d\n", sizeof(off_t));
1147 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001148}],
1149ac_cv_sizeof_off_t=`cat conftestval`,
1150ac_cv_sizeof_off_t=0,
1151ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001152])
1153AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001154AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1155[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001156
1157AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001158if test "$have_long_long" = yes -a \
1159 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1160 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001161 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1162 [Defined to enable large file support when an off_t is bigger than a long
1163 and long long is available and at least as big as an off_t. You may need
1164 to add some flags for configuration and compilation to enable this mode.
1165 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001166 AC_MSG_RESULT(yes)
1167else
1168 AC_MSG_RESULT(no)
1169fi
1170
Fred Drakea3f6e912000-06-29 20:44:47 +00001171# AC_CHECK_SIZEOF() doesn't include <time.h>.
1172AC_MSG_CHECKING(size of time_t)
1173AC_CACHE_VAL(ac_cv_sizeof_time_t,
1174[AC_TRY_RUN([#include <stdio.h>
1175#include <time.h>
1176main()
1177{
1178 FILE *f=fopen("conftestval", "w");
1179 if (!f) exit(1);
1180 fprintf(f, "%d\n", sizeof(time_t));
1181 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001182}],
1183ac_cv_sizeof_time_t=`cat conftestval`,
1184ac_cv_sizeof_time_t=0,
1185ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001186])
1187AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001188AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1189[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001190
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001191
Trent Mick635f6fb2000-08-23 21:33:05 +00001192# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001193ac_save_cc="$CC"
1194if test "$ac_cv_kpthread" = "yes"
1195then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001196elif test "$ac_cv_kthread" = "yes"
1197then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001198elif test "$ac_cv_pthread" = "yes"
1199then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001200fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001201AC_MSG_CHECKING(for pthread_t)
1202have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001203AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001204AC_MSG_RESULT($have_pthread_t)
1205if test "$have_pthread_t" = yes ; then
1206 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1207 AC_MSG_CHECKING(size of pthread_t)
1208 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1209 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001210#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001211 main()
1212 {
1213 FILE *f=fopen("conftestval", "w");
1214 if (!f) exit(1);
1215 fprintf(f, "%d\n", sizeof(pthread_t));
1216 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001217 }],
1218 ac_cv_sizeof_pthread_t=`cat conftestval`,
1219 ac_cv_sizeof_pthread_t=0,
1220 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001221 ])
1222 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001223 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1224 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001225fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001226CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001227
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001228AC_MSG_CHECKING(for --enable-toolbox-glue)
1229AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001230 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001231
1232if test -z "$enable_toolbox_glue"
1233then
1234 case $ac_sys_system/$ac_sys_release in
1235 Darwin/*)
1236 enable_toolbox_glue="yes";;
1237 *)
1238 enable_toolbox_glue="no";;
1239 esac
1240fi
1241case "$enable_toolbox_glue" in
1242yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001243 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001244 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001245 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1246 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001247 ;;
1248*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001249 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001250 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001251 ;;
1252esac
1253AC_MSG_RESULT($enable_toolbox_glue)
1254
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001255AC_SUBST(OTHER_LIBTOOL_OPT)
1256case $ac_sys_system/$ac_sys_release in
1257 Darwin/@<:@01234567@:>@.*)
1258 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1259 ;;
1260 Darwin/*)
1261 OTHER_LIBTOOL_OPT=""
1262 ;;
1263esac
1264
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001265AC_SUBST(LIBTOOL_CRUFT)
1266case $ac_sys_system/$ac_sys_release in
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001267 Darwin/@<:@01234567@:>@.*)
Jack Jansen39fd2312006-02-23 15:12:19 +00001268 LIBTOOL_CRUFT="-framework System -lcc_dynamic -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001269 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001270 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001271 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001272 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1273 if test ${gcc_version} '<' 4.0
1274 then
1275 LIBTOOL_CRUFT="-lcc_dynamic"
1276 else
1277 LIBTOOL_CRUFT=""
1278 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001279 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001280 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001281 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001282esac
1283
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001284AC_MSG_CHECKING(for --enable-framework)
1285if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001286then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001287 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001288 # -F. is needed to allow linking to the framework while
1289 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001290 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1291 [Define if you want to produce an OpenStep/Rhapsody framework
1292 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001293 AC_MSG_RESULT(yes)
1294else
1295 AC_MSG_RESULT(no)
1296fi
1297
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001298AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001299case $ac_sys_system/$ac_sys_release in
1300 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001301 AC_DEFINE(WITH_DYLD, 1,
1302 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1303 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1304 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001305 AC_MSG_RESULT(always on for Darwin)
1306 ;;
1307 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001308 AC_MSG_RESULT(no)
1309 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001310esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001311
Guido van Rossumac405f61994-09-12 10:56:06 +00001312# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001313AC_SUBST(SO)
1314AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001315AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001316AC_SUBST(CCSHARED)
1317AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001318# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001319# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001320AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001321if test -z "$SO"
1322then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001323 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001324 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001325 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001326 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001327 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001328else
1329 # this might also be a termcap variable, see #610332
1330 echo
1331 echo '====================================================================='
1332 echo '+ +'
1333 echo '+ WARNING: You have set SO in your environment. +'
1334 echo '+ Do you really mean to change the extension for shared libraries? +'
1335 echo '+ Continuing in 10 seconds to let you to ponder. +'
1336 echo '+ +'
1337 echo '====================================================================='
1338 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001339fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001340AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001341# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001342# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001343# (Shared libraries in this instance are shared modules to be loaded into
1344# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001345AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001346if test -z "$LDSHARED"
1347then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001348 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001349 AIX*)
1350 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001351 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001352 ;;
1353 BeOS*)
1354 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001355 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001356 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001357 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001358 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a662000-05-26 12:22:54 +00001359 SunOS/5*)
1360 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001361 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001362 else LDSHARED='$(CC) -G';
Greg Ward57c9a662000-05-26 12:22:54 +00001363 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001364 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001365 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001366 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001367 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1368 if test "$enable_framework" ; then
1369 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001370 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1371 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001372 else
1373 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001374 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001375 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001376 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001377 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1378 if test "$enable_framework" ; then
1379 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001380 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1381 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001382 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001383 # No framework, use the Python app as bundle-loader
1384 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001385 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001386 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001387 Darwin/*)
1388 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1389 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001390 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Jack Jansenc110f862005-01-07 10:49:32 +00001391 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Jack Jansenbe954622004-12-26 23:07:48 +00001392 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001393 then
1394 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1395 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001396 else
1397 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1398 if test "$enable_framework" ; then
1399 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001400 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1401 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001402 else
1403 # No framework, use the Python app as bundle-loader
1404 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1405 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1406 fi
1407 fi
1408 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001409 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001410 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001411 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001412 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001413 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001414 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001415 else
1416 LDSHARED="ld -Bshareable ${LDFLAGS}"
1417 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001418 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001419 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001420 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001421 then LDSHARED='$(CC) -shared'
1422 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001423 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001424 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001425 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001426 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001427 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001428 *) LDSHARED="ld";;
1429 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001430fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001431AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001432BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001433# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001434# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001435AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001436if test -z "$CCSHARED"
1437then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001438 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001439 SunOS*) if test "$GCC" = yes;
1440 then CCSHARED="-fPIC";
Martin v. Löwisd5845ec2005-12-30 12:31:38 +00001441 else CCSHARED="-xcode=pic32";
Neil Schemenauer66252162001-02-19 04:47:42 +00001442 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001443 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001444 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001445 else CCSHARED="+z";
1446 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001447 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001448 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001449 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001450 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001451 if test "$GCC" = "yes"
1452 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001453 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001454 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001455 SCO_SV*)
1456 if test "$GCC" = "yes"
1457 then CCSHARED="-fPIC"
1458 else CCSHARED="-Kpic -belf"
1459 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001460 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001461 IRIX*/6*) case $CC in
1462 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001463 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001464 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001465 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001466 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001467fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001468AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001469# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001470# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001471AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001472if test -z "$LINKFORSHARED"
1473then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001474 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001475 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001476 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001477 LINKFORSHARED="-Wl,-E -Wl,+s";;
1478# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001479 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001480 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001481 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001482 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001483 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1484 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001485 # not used by the core itself but which needs to be in the core so
1486 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001487 # -prebind is no longer used, because it actually seems to give a
1488 # slowdown in stead of a speedup, maybe due to the large number of
1489 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001490
1491 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001492 if test "$enable_framework"
1493 then
Jack Jansenda49e192005-01-07 13:08:22 +00001494 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001495 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001496 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001497 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001498 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001499 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001500 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001501 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1502 then
1503 LINKFORSHARED="-Wl,--export-dynamic"
1504 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001505 SunOS/5*) case $CC in
1506 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001507 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001508 then
1509 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001510 fi;;
1511 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001512 CYGWIN*)
1513 if test $enable_shared = "no"
1514 then
1515 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1516 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001517 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001518fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001519AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001520
Neil Schemenauer61c51152001-01-26 16:18:16 +00001521AC_SUBST(CFLAGSFORSHARED)
1522AC_MSG_CHECKING(CFLAGSFORSHARED)
1523if test ! "$LIBRARY" = "$LDLIBRARY"
1524then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001525 case $ac_sys_system in
1526 CYGWIN*)
1527 # Cygwin needs CCSHARED when building extension DLLs
1528 # but not when building the interpreter DLL.
1529 CFLAGSFORSHARED='';;
1530 *)
1531 CFLAGSFORSHARED='$(CCSHARED)'
1532 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001533fi
1534AC_MSG_RESULT($CFLAGSFORSHARED)
1535
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001536# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1537# library (with --enable-shared).
1538# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001539# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1540# if it is not required, since it creates a dependency of the shared library
1541# to LIBS. This, in turn, means that applications linking the shared libpython
1542# don't need to link LIBS explicitly. The default should be only changed
1543# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001544AC_SUBST(SHLIBS)
1545AC_MSG_CHECKING(SHLIBS)
1546case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001547 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001548 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001549esac
1550AC_MSG_RESULT($SHLIBS)
1551
1552
Guido van Rossum627b2d71993-12-24 10:39:16 +00001553# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001554AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1555AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001556
1557# only check for sem_ini if thread support is requested
1558if test "$with_threads" = "yes" -o -z "$with_threads"; then
1559 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1560 # posix4 on Solaris 2.6
1561 # pthread (first!) on Linux
1562fi
1563
Martin v. Löwis19d17342003-06-14 21:03:05 +00001564# check if we need libintl for locale functions
1565AC_CHECK_LIB(intl, textdomain,
1566 AC_DEFINE(WITH_LIBINTL, 1,
1567 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001568
1569# checks for system dependent C++ extensions support
1570case "$ac_sys_system" in
1571 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1572 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1573 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001574 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1575 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1576 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001577 AC_MSG_RESULT(yes)],
1578 [AC_MSG_RESULT(no)]);;
1579 *) ;;
1580esac
1581
Guido van Rossum70c7f481998-03-26 18:44:10 +00001582# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001583# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001584AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001585AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001586
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001587case "$ac_sys_system" in
1588BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001589AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1590;;
1591esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001592
Guido van Rossumc5a39031996-07-31 17:35:03 +00001593AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001594AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001595 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1596[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001597AC_MSG_RESULT($withval)
1598LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001599],
1600[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001601
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001602# Determine if signalmodule should be used.
1603AC_SUBST(USE_SIGNAL_MODULE)
1604AC_SUBST(SIGNAL_OBJS)
1605AC_MSG_CHECKING(for --with-signal-module)
1606AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001607 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001608
1609if test -z "$with_signal_module"
1610then with_signal_module="yes"
1611fi
1612AC_MSG_RESULT($with_signal_module)
1613
1614if test "${with_signal_module}" = "yes"; then
1615 USE_SIGNAL_MODULE=""
1616 SIGNAL_OBJS=""
1617else
1618 USE_SIGNAL_MODULE="#"
1619 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1620fi
1621
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001622# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001623AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001624USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001625
Guido van Rossum54d93d41997-01-22 20:51:58 +00001626AC_MSG_CHECKING(for --with-dec-threads)
1627AC_SUBST(LDLAST)
1628AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001629 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1630[
Barry Warsawc0d24d82000-06-29 16:12:00 +00001631AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001632LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001633if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001634 with_thread="$withval";
1635fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001636[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001637
Martin v. Löwis11437992002-04-12 09:54:03 +00001638# Templates for things AC_DEFINEd more than once.
1639# For a single AC_DEFINE, no template is needed.
1640AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1641AH_TEMPLATE(_REENTRANT,
1642 [Define to force use of thread-safe errno, h_errno, and other functions])
1643AH_TEMPLATE(WITH_THREAD,
1644 [Define if you want to compile in rudimentary thread support])
1645
Guido van Rossum54d93d41997-01-22 20:51:58 +00001646AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001647dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d82000-06-29 16:12:00 +00001648AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001649 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001650
Barry Warsawc0d24d82000-06-29 16:12:00 +00001651# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001652dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001653AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001654 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1655 [with_threads=$with_thread])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001656
1657if test -z "$with_threads"
1658then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001659fi
Barry Warsawc0d24d82000-06-29 16:12:00 +00001660AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001661
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001662AC_SUBST(THREADOBJ)
Barry Warsawc0d24d82000-06-29 16:12:00 +00001663if test "$with_threads" = "no"
1664then
1665 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001666elif test "$ac_cv_pthread_is_default" = yes
1667then
1668 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001669 # Defining _REENTRANT on system with POSIX threads should not hurt.
1670 AC_DEFINE(_REENTRANT)
1671 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001672 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001673elif test "$ac_cv_kpthread" = "yes"
1674then
1675 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001676 if test "$ac_cv_cxx_thread" = "yes"; then
1677 CXX="$CXX -Kpthread"
1678 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001679 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001680 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001681 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001682elif test "$ac_cv_kthread" = "yes"
1683then
1684 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001685 if test "$ac_cv_cxx_thread" = "yes"; then
1686 CXX="$CXX -Kthread"
1687 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001688 AC_DEFINE(WITH_THREAD)
1689 posix_threads=yes
1690 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001691elif test "$ac_cv_pthread" = "yes"
1692then
1693 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001694 if test "$ac_cv_cxx_thread" = "yes"; then
1695 CXX="$CXX -pthread"
1696 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001697 AC_DEFINE(WITH_THREAD)
1698 posix_threads=yes
1699 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d82000-06-29 16:12:00 +00001700else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001701 if test ! -z "$with_threads" -a -d "$with_threads"
1702 then LDFLAGS="$LDFLAGS -L$with_threads"
1703 fi
1704 if test ! -z "$withval" -a -d "$withval"
1705 then LDFLAGS="$LDFLAGS -L$withval"
1706 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001707
1708 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001709 # define _POSIX_THREADS in unistd.h. Some apparently don't
1710 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001711 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1712 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001713 [
1714#include <unistd.h>
1715#ifdef _POSIX_THREADS
1716yes
1717#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001718 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1719 AC_MSG_RESULT($unistd_defines_pthreads)
1720
Martin v. Löwis130fb172001-07-19 11:00:41 +00001721 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001722 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1723 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001724 AC_DEFINE(HURD_C_THREADS, 1,
1725 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001726 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001727 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001728 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1729 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001730 AC_DEFINE(MACH_C_THREADS, 1,
1731 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001732 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001733 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001734 AC_ARG_WITH([pth],
1735 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1736 [AC_MSG_RESULT($withval)
1737 AC_DEFINE([WITH_THREAD])
1738 AC_DEFINE([HAVE_PTH], 1,
1739 [Define if you have GNU PTH threads.])
1740 LIBS="-lpth $LIBS"
1741 THREADOBJ="Python/thread.o"],
1742 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001743
1744 # Just looking for pthread_create in libpthread is not enough:
1745 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1746 # So we really have to include pthread.h, and then link.
1747 _libs=$LIBS
1748 LIBS="$LIBS -lpthread"
1749 AC_MSG_CHECKING([for pthread_create in -lpthread])
1750 AC_TRY_LINK([#include <pthread.h>
1751
1752void * start_routine (void *arg) { exit (0); }], [
1753pthread_create (NULL, NULL, start_routine, NULL)], [
1754 AC_MSG_RESULT(yes)
1755 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001756 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001757 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001758 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001759 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001760 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001761 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001762 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1763 AC_DEFINE(ATHEOS_THREADS, 1,
1764 [Define this if you have AtheOS threads.])
1765 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001766 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001767 AC_DEFINE(BEOS_THREADS, 1,
1768 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001769 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001770 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001771 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001772 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001773 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001774 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001775 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001776 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001777 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001778 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001779 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001780 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001781 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001782 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001783 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001784 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001785 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001786 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001787 ])])])])])])])])])])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001788
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001789 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1790 LIBS="$LIBS -lmpc"
1791 THREADOBJ="Python/thread.o"
1792 USE_THREAD_MODULE=""])
1793
1794 if test "$posix_threads" != "yes"; then
1795 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1796 LIBS="$LIBS -lthread"
1797 THREADOBJ="Python/thread.o"
1798 USE_THREAD_MODULE=""])
1799 fi
1800
1801 if test "$USE_THREAD_MODULE" != "#"
1802 then
1803 # If the above checks didn't disable threads, (at least) OSF1
1804 # needs this '-threads' argument during linking.
1805 case $ac_sys_system in
1806 OSF1) LDLAST=-threads;;
1807 esac
1808 fi
1809fi
1810
1811if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001812 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001813 AC_DEFINE(_POSIX_THREADS, 1,
1814 [Define if you have POSIX threads,
1815 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001816 fi
1817
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001818 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1819 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001820 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1821 Defined for Solaris 2.6 bug in pthread header.)
1822 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001823 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001824 Define if the Posix semaphores do not work on your system)
1825 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001826 esac
1827
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001828 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1829 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1830 [AC_TRY_RUN([#include <pthread.h>
1831 void *foo(void *parm) {
1832 return NULL;
1833 }
1834 main() {
1835 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001836 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001837 if (pthread_attr_init(&attr)) exit(-1);
1838 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001839 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001840 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001841 }],
1842 ac_cv_pthread_system_supported=yes,
1843 ac_cv_pthread_system_supported=no,
1844 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001845 ])
1846 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1847 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001848 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001849 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001850 AC_CHECK_FUNCS(pthread_sigmask,
1851 [case $ac_sys_system in
1852 CYGWIN*)
1853 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1854 [Define if pthread_sigmask() does not work on your system.])
1855 ;;
1856 esac])
Barry Warsawc0d24d82000-06-29 16:12:00 +00001857fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001858
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001859
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001860# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001861AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001862AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001863AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001864[ --enable-ipv6 Enable ipv6 (with ipv4) support
1865 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001866[ case "$enableval" in
1867 no)
1868 AC_MSG_RESULT(no)
1869 ipv6=no
1870 ;;
1871 *) AC_MSG_RESULT(yes)
1872 AC_DEFINE(ENABLE_IPV6)
1873 ipv6=yes
1874 ;;
1875 esac ],
1876
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001877[
1878dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001879 AC_TRY_RUN([ /* AF_INET6 available check */
1880#include <sys/types.h>
1881#include <sys/socket.h>
1882main()
1883{
1884 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1885 exit(1);
1886 else
1887 exit(0);
1888}
1889],
1890 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001891 ipv6=yes,
1892 AC_MSG_RESULT(no)
1893 ipv6=no,
1894 AC_MSG_RESULT(no)
1895 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001896)
1897
1898if test "$ipv6" = "yes"; then
1899 AC_MSG_CHECKING(if RFC2553 API is available)
1900 AC_TRY_COMPILE([#include <sys/types.h>
1901#include <netinet/in.h>],
1902 [struct sockaddr_in6 x;
1903x.sin6_scope_id;],
1904 AC_MSG_RESULT(yes)
1905 ipv6=yes,
1906 AC_MSG_RESULT(no, IPv6 disabled)
1907 ipv6=no)
1908fi
1909
1910if test "$ipv6" = "yes"; then
1911 AC_DEFINE(ENABLE_IPV6)
1912fi
1913])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001914
1915ipv6type=unknown
1916ipv6lib=none
1917ipv6trylibc=no
1918
1919if test "$ipv6" = "yes"; then
1920 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001921 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1922 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001923 case $i in
1924 inria)
1925 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001926 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001927#include <netinet/in.h>
1928#ifdef IPV6_INRIA_VERSION
1929yes
1930#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001931 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001932 ;;
1933 kame)
1934 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001935 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001936#include <netinet/in.h>
1937#ifdef __KAME__
1938yes
1939#endif],
1940 [ipv6type=$i;
1941 ipv6lib=inet6
1942 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001943 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001944 ;;
1945 linux-glibc)
1946 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001947 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001948#include <features.h>
1949#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1950yes
1951#endif],
1952 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001953 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001954 ;;
1955 linux-inet6)
1956 dnl http://www.v6.linux.or.jp/
1957 if test -d /usr/inet6; then
1958 ipv6type=$i
1959 ipv6lib=inet6
1960 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00001961 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001962 fi
1963 ;;
1964 solaris)
1965 if test -f /etc/netconfig; then
1966 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
1967 ipv6type=$i
1968 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001969 fi
1970 fi
1971 ;;
1972 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001973 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001974#include <sys/param.h>
1975#ifdef _TOSHIBA_INET6
1976yes
1977#endif],
1978 [ipv6type=$i;
1979 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001980 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001981 ;;
1982 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001983 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001984#include </usr/local/v6/include/sys/v6config.h>
1985#ifdef __V6D__
1986yes
1987#endif],
1988 [ipv6type=$i;
1989 ipv6lib=v6;
1990 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001991 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001992 ;;
1993 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001994 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001995#include <sys/param.h>
1996#ifdef _ZETA_MINAMI_INET6
1997yes
1998#endif],
1999 [ipv6type=$i;
2000 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002001 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002002 ;;
2003 esac
2004 if test "$ipv6type" != "unknown"; then
2005 break
2006 fi
2007 done
2008 AC_MSG_RESULT($ipv6type)
2009fi
2010
2011if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2012 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2013 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2014 echo "using lib$ipv6lib"
2015 else
2016 if test $ipv6trylibc = "yes"; then
2017 echo "using libc"
2018 else
2019 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2020 echo "You need to fetch lib$ipv6lib.a from appropriate"
2021 echo 'ipv6 kit and compile beforehand.'
2022 exit 1
2023 fi
2024 fi
2025fi
2026
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002027# Check for --with-doc-strings
2028AC_MSG_CHECKING(for --with-doc-strings)
2029AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002030 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002031
2032if test -z "$with_doc_strings"
2033then with_doc_strings="yes"
2034fi
2035if test "$with_doc_strings" != "no"
2036then
2037 AC_DEFINE(WITH_DOC_STRINGS, 1,
2038 [Define if you want documentation strings in extension modules])
2039fi
2040AC_MSG_RESULT($with_doc_strings)
2041
Neil Schemenauera35c6882001-02-27 04:45:05 +00002042# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002043AC_MSG_CHECKING(for --with-tsc)
2044AC_ARG_WITH(tsc,
2045[ --with(out)-tsc enable/disable timestamp counter profile], [
2046if test "$withval" != no
2047then
2048 AC_DEFINE(WITH_TSC, 1,
2049 [Define to profile with the Pentium timestamp counter])
2050 AC_MSG_RESULT(yes)
2051else AC_MSG_RESULT(no)
2052fi],
2053[AC_MSG_RESULT(no)])
2054
2055# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002056AC_MSG_CHECKING(for --with-pymalloc)
2057AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002058 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002059
2060if test -z "$with_pymalloc"
2061then with_pymalloc="yes"
2062fi
2063if test "$with_pymalloc" != "no"
2064then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002065 AC_DEFINE(WITH_PYMALLOC, 1,
2066 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002067fi
2068AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002069
Barry Warsawef82cd72000-06-30 16:21:01 +00002070# Check for --with-wctype-functions
2071AC_MSG_CHECKING(for --with-wctype-functions)
2072AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002073 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2074[
Barry Warsawef82cd72000-06-30 16:21:01 +00002075if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002076then
2077 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2078 [Define if you want wctype.h functions to be used instead of the
2079 one supplied by Python itself. (see Include/unicodectype.h).])
2080 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002081else AC_MSG_RESULT(no)
2082fi],
2083[AC_MSG_RESULT(no)])
2084
Guido van Rossum68242b51996-05-28 22:53:03 +00002085# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002086AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002087DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002088
Guido van Rossume97ee181999-12-20 21:27:22 +00002089# the dlopen() function means we might want to use dynload_shlib.o. some
2090# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002091AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002092
2093# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2094# loading of modules.
2095AC_SUBST(DYNLOADFILE)
2096AC_MSG_CHECKING(DYNLOADFILE)
2097if test -z "$DYNLOADFILE"
2098then
2099 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002100 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2101 if test "$ac_cv_func_dlopen" = yes
2102 then DYNLOADFILE="dynload_shlib.o"
2103 else DYNLOADFILE="dynload_aix.o"
2104 fi
2105 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002106 BeOS*) DYNLOADFILE="dynload_beos.o";;
2107 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002108 Darwin/*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002109 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002110 *)
2111 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2112 # out any dynamic loading
2113 if test "$ac_cv_func_dlopen" = yes
2114 then DYNLOADFILE="dynload_shlib.o"
2115 else DYNLOADFILE="dynload_stub.o"
2116 fi
2117 ;;
2118 esac
2119fi
2120AC_MSG_RESULT($DYNLOADFILE)
2121if test "$DYNLOADFILE" != "dynload_stub.o"
2122then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002123 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2124 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002125fi
2126
Jack Jansenc49e5b72001-06-19 15:00:23 +00002127# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2128
2129AC_SUBST(MACHDEP_OBJS)
2130AC_MSG_CHECKING(MACHDEP_OBJS)
2131if test -z "$MACHDEP_OBJS"
2132then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002133 MACHDEP_OBJS=$extra_machdep_objs
2134else
2135 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002136fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002137AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002138
Guido van Rossum627b2d71993-12-24 10:39:16 +00002139# checks for library functions
Gustavo Niemeyer7bd33c52004-07-22 18:44:01 +00002140AC_CHECK_FUNCS(alarm bind_textdomain_codeset chown clock confstr ctermid \
2141 execv fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002142 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002143 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002144 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002145 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002146 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002147 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002148 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002149 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002150 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002151 truncate uname unsetenv utimes waitpid wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002152
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002153# For some functions, having a definition is not sufficient, since
2154# we want to take their address.
2155AC_MSG_CHECKING(for chroot)
2156AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2157 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2158 AC_MSG_RESULT(yes),
2159 AC_MSG_RESULT(no)
2160)
2161AC_MSG_CHECKING(for link)
2162AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2163 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2164 AC_MSG_RESULT(yes),
2165 AC_MSG_RESULT(no)
2166)
2167AC_MSG_CHECKING(for symlink)
2168AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2169 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2170 AC_MSG_RESULT(yes),
2171 AC_MSG_RESULT(no)
2172)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002173AC_MSG_CHECKING(for fchdir)
2174AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2175 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2176 AC_MSG_RESULT(yes),
2177 AC_MSG_RESULT(no)
2178)
2179AC_MSG_CHECKING(for fsync)
2180AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002181 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002182 AC_MSG_RESULT(yes),
2183 AC_MSG_RESULT(no)
2184)
2185AC_MSG_CHECKING(for fdatasync)
2186AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2187 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2188 AC_MSG_RESULT(yes),
2189 AC_MSG_RESULT(no)
2190)
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002191
Martin v. Löwisd5843682002-11-21 20:41:28 +00002192# On some systems (eg. FreeBSD 5), we would find a definition of the
2193# functions ctermid_r, setgroups in the library, but no prototype
2194# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2195# address to avoid compiler warnings and potential miscompilations
2196# because of the missing prototypes.
2197
2198AC_MSG_CHECKING(for ctermid_r)
2199AC_TRY_COMPILE([
2200#include "confdefs.h"
2201#include <stdio.h>
2202], void* p = ctermid_r,
2203 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2204 AC_MSG_RESULT(yes),
2205 AC_MSG_RESULT(no)
2206)
2207
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002208AC_MSG_CHECKING(for flock)
2209AC_TRY_COMPILE([
2210#include "confdefs.h"
2211#include <sys/file.h>
2212], void* p = flock,
2213 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2214 AC_MSG_RESULT(yes),
2215 AC_MSG_RESULT(no)
2216)
2217
2218AC_MSG_CHECKING(for getpagesize)
2219AC_TRY_COMPILE([
2220#include "confdefs.h"
2221#include <unistd.h>
2222], void* p = getpagesize,
2223 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2224 AC_MSG_RESULT(yes),
2225 AC_MSG_RESULT(no)
2226)
2227
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002228dnl check for true
2229AC_CHECK_PROGS(TRUE, true, /bin/true)
2230
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002231dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2232dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002233AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002234 AC_CHECK_LIB(resolv, inet_aton)
2235)
2236
Martin v. Löwise9416172003-05-03 10:12:45 +00002237AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002238AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002239#include "confdefs.h"
2240#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002241], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002242 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2243 AC_MSG_RESULT(yes),
2244 AC_MSG_RESULT(no)
2245)
2246
2247AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002248AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002249#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002250#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002251#include <sys/socket.h>
2252#include <netinet/in.h>
2253#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002254], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002255 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2256 AC_MSG_RESULT(yes),
2257 AC_MSG_RESULT(no)
2258)
2259
2260AC_MSG_CHECKING(for inet_pton)
2261AC_TRY_COMPILE([
2262#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002263#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002264#include <sys/socket.h>
2265#include <netinet/in.h>
2266#include <arpa/inet.h>
2267], void* p = inet_pton,
2268 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2269 AC_MSG_RESULT(yes),
2270 AC_MSG_RESULT(no)
2271)
2272
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002273# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002274AC_MSG_CHECKING(for setgroups)
2275AC_TRY_COMPILE([
2276#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002277#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002278#ifdef HAVE_GRP_H
2279#include <grp.h>
2280#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002281],
2282void* p = setgroups,
2283 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2284 AC_MSG_RESULT(yes),
2285 AC_MSG_RESULT(no)
2286)
2287
Fred Drake8cef4cf2000-06-28 16:40:38 +00002288# check for openpty and forkpty
2289
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002290AC_CHECK_FUNCS(openpty,,
2291 AC_CHECK_LIB(util,openpty,
2292 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2293 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2294 )
2295)
2296AC_CHECK_FUNCS(forkpty,,
2297 AC_CHECK_LIB(util,forkpty,
2298 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2299 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2300 )
2301)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002302
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002303# check for long file support functions
2304AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2305
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002306AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002307AC_CHECK_FUNCS(getpgrp,
2308 AC_TRY_COMPILE([#include <unistd.h>],
2309 [getpgrp(0);],
2310 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2311 [Define if getpgrp() must be called as getpgrp(0).])
2312 )
2313)
Jack Jansen150753c2003-03-29 22:07:47 +00002314AC_CHECK_FUNCS(setpgrp,
2315 AC_TRY_COMPILE([#include <unistd.h>],
2316 [setpgrp(0,0);],
2317 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2318 [Define if setpgrp() must be called as setpgrp(0, 0).])
2319 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002320)
2321AC_CHECK_FUNCS(gettimeofday,
2322 AC_TRY_COMPILE([#include <sys/time.h>],
2323 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2324 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2325 [Define if gettimeofday() does not have second (timezone) argument
2326 This is the case on Motorola V4 (R40V4.2)])
2327 )
2328)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002329
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002330AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002331AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002332#if defined(MAJOR_IN_MKDEV)
2333#include <sys/mkdev.h>
2334#elif defined(MAJOR_IN_SYSMACROS)
2335#include <sys/sysmacros.h>
2336#else
2337#include <sys/types.h>
2338#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002339],[
2340 makedev(major(0),minor(0));
2341],[
2342 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2343 [Define to 1 if you have the device macros.])
2344 AC_MSG_RESULT(yes)
2345],[
2346 AC_MSG_RESULT(no)
2347])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002348
2349# On OSF/1 V5.1, getaddrinfo is available, but a define
2350# for [no]getaddrinfo in netdb.h.
2351AC_MSG_CHECKING(for getaddrinfo)
2352AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002353#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002354#include <sys/socket.h>
2355#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002356#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002357],[
2358getaddrinfo(NULL, NULL, NULL, NULL);
2359], [
2360AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002361AC_MSG_CHECKING(getaddrinfo bug)
2362AC_TRY_RUN([
2363#include <sys/types.h>
2364#include <netdb.h>
2365#include <string.h>
2366#include <sys/socket.h>
2367#include <netinet/in.h>
2368
2369main()
2370{
2371 int passive, gaierr, inet4 = 0, inet6 = 0;
2372 struct addrinfo hints, *ai, *aitop;
2373 char straddr[INET6_ADDRSTRLEN], strport[16];
2374
2375 for (passive = 0; passive <= 1; passive++) {
2376 memset(&hints, 0, sizeof(hints));
2377 hints.ai_family = AF_UNSPEC;
2378 hints.ai_flags = passive ? AI_PASSIVE : 0;
2379 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002380 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002381 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2382 (void)gai_strerror(gaierr);
2383 goto bad;
2384 }
2385 for (ai = aitop; ai; ai = ai->ai_next) {
2386 if (ai->ai_addr == NULL ||
2387 ai->ai_addrlen == 0 ||
2388 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2389 straddr, sizeof(straddr), strport, sizeof(strport),
2390 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2391 goto bad;
2392 }
2393 switch (ai->ai_family) {
2394 case AF_INET:
2395 if (strcmp(strport, "54321") != 0) {
2396 goto bad;
2397 }
2398 if (passive) {
2399 if (strcmp(straddr, "0.0.0.0") != 0) {
2400 goto bad;
2401 }
2402 } else {
2403 if (strcmp(straddr, "127.0.0.1") != 0) {
2404 goto bad;
2405 }
2406 }
2407 inet4++;
2408 break;
2409 case AF_INET6:
2410 if (strcmp(strport, "54321") != 0) {
2411 goto bad;
2412 }
2413 if (passive) {
2414 if (strcmp(straddr, "::") != 0) {
2415 goto bad;
2416 }
2417 } else {
2418 if (strcmp(straddr, "::1") != 0) {
2419 goto bad;
2420 }
2421 }
2422 inet6++;
2423 break;
2424 case AF_UNSPEC:
2425 goto bad;
2426 break;
2427 default:
2428 /* another family support? */
2429 break;
2430 }
2431 }
2432 }
2433
2434 if (!(inet4 == 0 || inet4 == 2))
2435 goto bad;
2436 if (!(inet6 == 0 || inet6 == 2))
2437 goto bad;
2438
2439 if (aitop)
2440 freeaddrinfo(aitop);
2441 exit(0);
2442
2443 bad:
2444 if (aitop)
2445 freeaddrinfo(aitop);
2446 exit(1);
2447}
2448],
2449AC_MSG_RESULT(good)
2450buggygetaddrinfo=no,
2451AC_MSG_RESULT(buggy)
2452buggygetaddrinfo=yes,
2453AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002454buggygetaddrinfo=yes)], [
2455AC_MSG_RESULT(no)
2456buggygetaddrinfo=yes
2457])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002458
2459if test "$buggygetaddrinfo" = "yes"; then
2460 if test "$ipv6" = "yes"; then
2461 echo 'Fatal: You must get working getaddrinfo() function.'
2462 echo ' or you can specify "--disable-ipv6"'.
2463 exit 1
2464 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002465else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002466 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002467fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002468AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002469
Guido van Rossum627b2d71993-12-24 10:39:16 +00002470# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002471AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002472AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002473AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002474AC_CHECK_MEMBERS([struct stat.st_rdev])
2475AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002476AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002477AC_CHECK_MEMBERS([struct stat.st_gen])
2478AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002479AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002480
2481AC_MSG_CHECKING(for time.h that defines altzone)
2482AC_CACHE_VAL(ac_cv_header_time_altzone,
2483[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2484 ac_cv_header_time_altzone=yes,
2485 ac_cv_header_time_altzone=no)])
2486AC_MSG_RESULT($ac_cv_header_time_altzone)
2487if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002488 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002489fi
2490
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002491was_it_defined=no
2492AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002493AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002494#include <sys/types.h>
2495#include <sys/select.h>
2496#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002497], [;], [
2498 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2499 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2500 (which you can't on SCO ODT 3.0).])
2501 was_it_defined=yes
2502])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002503AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002504
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002505AC_MSG_CHECKING(for addrinfo)
2506AC_CACHE_VAL(ac_cv_struct_addrinfo,
2507AC_TRY_COMPILE([
2508# include <netdb.h>],
2509 [struct addrinfo a],
2510 ac_cv_struct_addrinfo=yes,
2511 ac_cv_struct_addrinfo=no))
2512AC_MSG_RESULT($ac_cv_struct_addrinfo)
2513if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002514 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002515fi
2516
2517AC_MSG_CHECKING(for sockaddr_storage)
2518AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2519AC_TRY_COMPILE([
2520# include <sys/types.h>
2521# include <sys/socket.h>],
2522 [struct sockaddr_storage s],
2523 ac_cv_struct_sockaddr_storage=yes,
2524 ac_cv_struct_sockaddr_storage=no))
2525AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2526if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002527 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002528fi
2529
Guido van Rossum627b2d71993-12-24 10:39:16 +00002530# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002531
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002532AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002533AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002534
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002535works=no
2536AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002537AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2538 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2539)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002540AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002541
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002542works=no
2543AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002544AC_TRY_COMPILE([], [signed char c;], works=yes,
2545 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2546)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002547AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002548
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002549have_prototypes=no
2550AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002551AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2552 AC_DEFINE(HAVE_PROTOTYPES, 1,
2553 [Define if your compiler supports function prototype])
2554 have_prototypes=yes
2555])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002556AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002557
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002558works=no
2559AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002560AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002561#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002562int foo(int x, ...) {
2563 va_list va;
2564 va_start(va, x);
2565 va_arg(va, int);
2566 va_arg(va, char *);
2567 va_arg(va, double);
2568 return 0;
2569}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002570], [return foo(10, "", 3.14);], [
2571 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2572 [Define if your compiler supports variable length function prototypes
2573 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2574 works=yes
2575])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002576AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002577
Dave Cole331708b2004-08-09 04:51:41 +00002578# check for socketpair
2579AC_MSG_CHECKING(for socketpair)
2580AC_TRY_COMPILE([
2581#include <sys/types.h>
2582#include <sys/socket.h>
2583], void *x=socketpair,
2584 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2585 AC_MSG_RESULT(yes),
2586 AC_MSG_RESULT(no)
2587)
2588
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002589# check if sockaddr has sa_len member
2590AC_MSG_CHECKING(if sockaddr has sa_len member)
2591AC_TRY_COMPILE([#include <sys/types.h>
2592#include <sys/socket.h>],
2593[struct sockaddr x;
2594x.sa_len = 0;],
2595 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002596 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002597 AC_MSG_RESULT(no))
2598
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002599va_list_is_array=no
2600AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002601AC_TRY_COMPILE([
2602#ifdef HAVE_STDARG_PROTOTYPES
2603#include <stdarg.h>
2604#else
2605#include <varargs.h>
2606#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002607], [va_list list1, list2; list1 = list2;], , [
2608 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2609 va_list_is_array=yes
2610])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002611AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002612
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002613# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002614AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2615 [Define this if you have some version of gethostbyname_r()])
2616
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002617AC_CHECK_FUNC(gethostbyname_r, [
2618 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2619 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2620 OLD_CFLAGS=$CFLAGS
2621 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2622 AC_TRY_COMPILE([
2623# include <netdb.h>
2624 ], [
2625 char *name;
2626 struct hostent *he, *res;
2627 char buffer[2048];
2628 int buflen = 2048;
2629 int h_errnop;
2630
2631 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2632 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002633 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002634 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2635 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002636 AC_MSG_RESULT(yes)
2637 ], [
2638 AC_MSG_RESULT(no)
2639 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2640 AC_TRY_COMPILE([
2641# include <netdb.h>
2642 ], [
2643 char *name;
2644 struct hostent *he;
2645 char buffer[2048];
2646 int buflen = 2048;
2647 int h_errnop;
2648
2649 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2650 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002651 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002652 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2653 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002654 AC_MSG_RESULT(yes)
2655 ], [
2656 AC_MSG_RESULT(no)
2657 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2658 AC_TRY_COMPILE([
2659# include <netdb.h>
2660 ], [
2661 char *name;
2662 struct hostent *he;
2663 struct hostent_data data;
2664
2665 (void) gethostbyname_r(name, he, &data);
2666 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002667 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002668 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2669 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002670 AC_MSG_RESULT(yes)
2671 ], [
2672 AC_MSG_RESULT(no)
2673 ])
2674 ])
2675 ])
2676 CFLAGS=$OLD_CFLAGS
2677], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002678 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002679])
2680AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2681AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2682AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002683AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002684AC_SUBST(HAVE_GETHOSTBYNAME)
2685
Guido van Rossum627b2d71993-12-24 10:39:16 +00002686# checks for system services
2687# (none yet)
2688
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002689# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002690AC_CHECK_FUNC(__fpu_control,
2691 [],
2692 [AC_CHECK_LIB(ieee, __fpu_control)
2693])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002694
Guido van Rossum93274221997-05-09 02:42:00 +00002695# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002696AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d82000-06-29 16:12:00 +00002697AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002698 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2699[
Guido van Rossum93274221997-05-09 02:42:00 +00002700if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002701then
2702 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2703 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2704 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002705else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002706fi],
2707[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002708
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002709# check for --with-libm=...
2710AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002711case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002712Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002713BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002714*) LIBM=-lm
2715esac
Guido van Rossum93274221997-05-09 02:42:00 +00002716AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002717AC_ARG_WITH(libm,
2718 AC_HELP_STRING(--with-libm=STRING, math library),
2719[
Guido van Rossum93274221997-05-09 02:42:00 +00002720if test "$withval" = no
2721then LIBM=
2722 AC_MSG_RESULT(force LIBM empty)
2723elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002724then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002725 AC_MSG_RESULT(set LIBM="$withval")
2726else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002727fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002728[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002729
2730# check for --with-libc=...
2731AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002732AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002733AC_ARG_WITH(libc,
2734 AC_HELP_STRING(--with-libc=STRING, C library),
2735[
Guido van Rossum93274221997-05-09 02:42:00 +00002736if test "$withval" = no
2737then LIBC=
2738 AC_MSG_RESULT(force LIBC empty)
2739elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002740then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002741 AC_MSG_RESULT(set LIBC="$withval")
2742else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002743fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002744[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002745
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002746# check for hypot() in math library
2747LIBS_SAVE=$LIBS
2748LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002749AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002750LIBS=$LIBS_SAVE
2751
Guido van Rossumef2255b2000-03-10 22:30:29 +00002752# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002753AC_CHECK_HEADER(wchar.h, [
2754 AC_DEFINE(HAVE_WCHAR_H, 1,
2755 [Define if the compiler provides a wchar.h header file.])
2756 wchar_h="yes"
2757],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002758wchar_h="no"
2759)
2760
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002761# determine wchar_t size
2762if test "$wchar_h" = yes
2763then
Guido van Rossum67b26592001-10-20 14:21:45 +00002764 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002765fi
2766
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002767AC_MSG_CHECKING(for UCS-4 tcl)
2768have_ucs4_tcl=no
2769AC_TRY_COMPILE([
2770#include <tcl.h>
2771#if TCL_UTF_MAX != 6
2772# error "NOT UCS4_TCL"
2773#endif], [], [
2774 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
2775 have_ucs4_tcl=yes
2776])
2777AC_MSG_RESULT($have_ucs4_tcl)
2778
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002779# check whether wchar_t is signed or not
2780if test "$wchar_h" = yes
2781then
2782 # check whether wchar_t is signed or not
2783 AC_MSG_CHECKING(whether wchar_t is signed)
2784 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
2785 AC_TRY_RUN([
2786 #include <wchar.h>
2787 int main()
2788 {
2789 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 1 : 0);
2790 }
2791 ],
2792 ac_cv_wchar_t_signed=yes,
2793 ac_cv_wchar_t_signed=no,
2794 ac_cv_wchar_t_signed=yes)])
2795 AC_MSG_RESULT($ac_cv_wchar_t_signed)
2796fi
2797
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002798AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002799dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002800AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002801 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2802 [],
2803 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002804
2805if test $enable_unicode = yes
2806then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002807 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002808 case "$have_ucs4_tcl" in
2809 yes) enable_unicode="ucs4"
2810 ;;
2811 *) enable_unicode="ucs2"
2812 ;;
2813 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002814fi
2815
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002816AH_TEMPLATE(Py_UNICODE_SIZE,
2817 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002818case "$enable_unicode" in
2819ucs2) unicode_size="2"
2820 AC_DEFINE(Py_UNICODE_SIZE,2)
2821 ;;
2822ucs4) unicode_size="4"
2823 AC_DEFINE(Py_UNICODE_SIZE,4)
2824 ;;
2825esac
2826
Martin v. Löwis11437992002-04-12 09:54:03 +00002827AH_TEMPLATE(PY_UNICODE_TYPE,
2828 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002829
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002830AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002831if test "$enable_unicode" = "no"
2832then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002833 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002834 AC_MSG_RESULT(not used)
2835else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002836 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002837 AC_DEFINE(Py_USING_UNICODE, 1,
2838 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002839
2840 # wchar_t is only usable if it maps to an unsigned type
2841 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00002842 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002843 then
2844 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002845 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2846 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002847 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002848 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002849 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2850 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2851 then
2852 PY_UNICODE_TYPE="unsigned short"
2853 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2854 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2855 then
2856 PY_UNICODE_TYPE="unsigned long"
2857 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2858 else
2859 PY_UNICODE_TYPE="no type found"
2860 fi
2861 AC_MSG_RESULT($PY_UNICODE_TYPE)
2862fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002863
2864# check for endianness
2865AC_C_BIGENDIAN
2866
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002867# Check whether right shifting a negative integer extends the sign bit
2868# or fills with zeros (like the Cray J90, according to Tim Peters).
2869AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002870AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002871AC_TRY_RUN([
2872int main()
2873{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002874 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002875}
Guido van Rossum3065c942001-09-17 04:03:14 +00002876],
2877ac_cv_rshift_extends_sign=yes,
2878ac_cv_rshift_extends_sign=no,
2879ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002880AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2881if test "$ac_cv_rshift_extends_sign" = no
2882then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002883 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2884 [Define if i>>j for signed int i does not extend the sign bit
2885 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002886fi
2887
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002888# check for getc_unlocked and related locking functions
2889AC_MSG_CHECKING(for getc_unlocked() and friends)
2890AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2891AC_TRY_LINK([#include <stdio.h>],[
2892 FILE *f = fopen("/dev/null", "r");
2893 flockfile(f);
2894 getc_unlocked(f);
2895 funlockfile(f);
2896], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2897AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2898if test "$ac_cv_have_getc_unlocked" = yes
2899then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002900 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2901 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002902fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002903
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002904# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00002905# save the value of LIBS so we don't actually link Python with readline
2906LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002907AC_CHECK_LIB(readline, readline)
2908if test "$ac_cv_have_readline_readline" = no
2909then
2910 AC_CHECK_LIB(termcap, readline)
2911fi
2912
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002913# check for readline 2.1
2914AC_CHECK_LIB(readline, rl_callback_handler_install,
2915 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002916 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002917
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00002918# check for readline 2.2
2919AC_TRY_CPP([#include <readline/readline.h>],
2920have_readline=yes, have_readline=no)
2921if test $have_readline = yes
2922then
2923 AC_EGREP_HEADER([extern int rl_completion_append_character;],
2924 [readline/readline.h],
2925 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
2926 [Define if you have readline 2.2]), )
2927fi
2928
Martin v. Löwis0daad592001-09-30 21:09:59 +00002929# check for readline 4.0
2930AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002931 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002932 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00002933
Guido van Rossum353ae582001-07-10 16:45:32 +00002934# check for readline 4.2
2935AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002936 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002937 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00002938
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002939# also in readline 4.2
2940AC_TRY_CPP([#include <readline/readline.h>],
2941have_readline=yes, have_readline=no)
2942if test $have_readline = yes
2943then
2944 AC_EGREP_HEADER([extern int rl_catch_signals;],
2945 [readline/readline.h],
2946 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
2947 [Define if you can turn off readline's signal handling.]), )
2948fi
2949
Martin v. Löwis82bca632006-02-10 20:49:30 +00002950# End of readline checks: restore LIBS
2951LIBS=$LIBS_no_readline
2952
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002953AC_MSG_CHECKING(for broken nice())
2954AC_CACHE_VAL(ac_cv_broken_nice, [
2955AC_TRY_RUN([
2956int main()
2957{
2958 int val1 = nice(1);
2959 if (val1 != -1 && val1 == nice(2))
2960 exit(0);
2961 exit(1);
2962}
Guido van Rossum3065c942001-09-17 04:03:14 +00002963],
2964ac_cv_broken_nice=yes,
2965ac_cv_broken_nice=no,
2966ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002967AC_MSG_RESULT($ac_cv_broken_nice)
2968if test "$ac_cv_broken_nice" = yes
2969then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002970 AC_DEFINE(HAVE_BROKEN_NICE, 1,
2971 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002972fi
2973
Nicholas Bastine62c5c82004-03-21 23:45:42 +00002974AC_MSG_CHECKING(for broken poll())
2975AC_TRY_RUN([
2976#include <poll.h>
2977
2978int main (void)
2979 {
2980 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
2981
2982 close (42);
2983
2984 int poll_test = poll (&poll_struct, 1, 0);
2985
2986 if (poll_test < 0)
2987 {
2988 exit(0);
2989 }
2990 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
2991 {
2992 exit(0);
2993 }
2994 else
2995 {
2996 exit(1);
2997 }
2998 }
2999],
3000ac_cv_broken_poll=yes,
3001ac_cv_broken_poll=no,
3002ac_cv_broken_poll=no)
3003AC_MSG_RESULT($ac_cv_broken_poll)
3004if test "$ac_cv_broken_poll" = yes
3005then
3006 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3007 [Define if poll() sets errno on invalid file descriptors.])
3008fi
3009
Brett Cannon43802422005-02-10 20:48:03 +00003010# Before we can test tzset, we need to check if struct tm has a tm_zone
3011# (which is not required by ISO C or UNIX spec) and/or if we support
3012# tzname[]
3013AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003014
Brett Cannon43802422005-02-10 20:48:03 +00003015# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003016AC_MSG_CHECKING(for working tzset())
3017AC_CACHE_VAL(ac_cv_working_tzset, [
3018AC_TRY_RUN([
3019#include <stdlib.h>
3020#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003021#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003022
3023#if HAVE_TZNAME
3024extern char *tzname[];
3025#endif
3026
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003027int main()
3028{
Brett Cannon18367812003-09-19 00:59:16 +00003029 /* Note that we need to ensure that not only does tzset(3)
3030 do 'something' with localtime, but it works as documented
3031 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003032 This includes making sure that tzname is set properly if
3033 tm->tm_zone does not exist since it is the alternative way
3034 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003035
3036 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003037 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003038 */
3039
Brett Cannon43802422005-02-10 20:48:03 +00003040 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003041 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3042
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003043 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003044 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003045 if (localtime(&groundhogday)->tm_hour != 0)
3046 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003047#if HAVE_TZNAME
3048 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3049 if (strcmp(tzname[0], "UTC") ||
3050 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3051 exit(1);
3052#endif
Brett Cannon18367812003-09-19 00:59:16 +00003053
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003054 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003055 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003056 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003057 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003058#if HAVE_TZNAME
3059 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3060 exit(1);
3061#endif
Brett Cannon18367812003-09-19 00:59:16 +00003062
3063 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3064 tzset();
3065 if (localtime(&groundhogday)->tm_hour != 11)
3066 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003067#if HAVE_TZNAME
3068 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3069 exit(1);
3070#endif
3071
3072#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003073 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3074 exit(1);
3075 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3076 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003077#endif
Brett Cannon18367812003-09-19 00:59:16 +00003078
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003079 exit(0);
3080}
3081],
3082ac_cv_working_tzset=yes,
3083ac_cv_working_tzset=no,
3084ac_cv_working_tzset=no)])
3085AC_MSG_RESULT($ac_cv_working_tzset)
3086if test "$ac_cv_working_tzset" = yes
3087then
3088 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3089 [Define if tzset() actually switches the local timezone in a meaningful way.])
3090fi
3091
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003092# Look for subsecond timestamps in struct stat
3093AC_MSG_CHECKING(for tv_nsec in struct stat)
3094AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3095AC_TRY_COMPILE([#include <sys/stat.h>], [
3096struct stat st;
3097st.st_mtim.tv_nsec = 1;
3098],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003099ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003100ac_cv_stat_tv_nsec=no,
3101ac_cv_stat_tv_nsec=no))
3102AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3103if test "$ac_cv_stat_tv_nsec" = yes
3104then
3105 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3106 [Define if you have struct stat.st_mtim.tv_nsec])
3107fi
3108
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003109# Look for BSD style subsecond timestamps in struct stat
3110AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3111AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3112AC_TRY_COMPILE([#include <sys/stat.h>], [
3113struct stat st;
3114st.st_mtimespec.tv_nsec = 1;
3115],
3116ac_cv_stat_tv_nsec2=yes,
3117ac_cv_stat_tv_nsec2=no,
3118ac_cv_stat_tv_nsec2=no))
3119AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3120if test "$ac_cv_stat_tv_nsec2" = yes
3121then
3122 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3123 [Define if you have struct stat.st_mtimensec])
3124fi
3125
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003126# On HP/UX 11.0, mvwdelch is a block with a return statement
3127AC_MSG_CHECKING(whether mvwdelch is an expression)
3128AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3129AC_TRY_COMPILE([#include <curses.h>], [
3130 int rtn;
3131 rtn = mvwdelch(0,0,0);
3132], ac_cv_mvwdelch_is_expression=yes,
3133 ac_cv_mvwdelch_is_expression=no,
3134 ac_cv_mvwdelch_is_expression=yes))
3135AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3136
3137if test "$ac_cv_mvwdelch_is_expression" = yes
3138then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003139 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3140 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003141fi
3142
3143AC_MSG_CHECKING(whether WINDOW has _flags)
3144AC_CACHE_VAL(ac_cv_window_has_flags,
3145AC_TRY_COMPILE([#include <curses.h>], [
3146 WINDOW *w;
3147 w->_flags = 0;
3148], ac_cv_window_has_flags=yes,
3149 ac_cv_window_has_flags=no,
3150 ac_cv_window_has_flags=no))
3151AC_MSG_RESULT($ac_cv_window_has_flags)
3152
3153
3154if test "$ac_cv_window_has_flags" = yes
3155then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003156 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3157 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003158fi
3159
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003160AC_MSG_CHECKING(for /dev/ptmx)
3161
3162if test -e /dev/ptmx
3163then
3164 AC_MSG_RESULT(yes)
3165 AC_DEFINE(HAVE_DEV_PTMX, 1,
3166 [Define if we have /dev/ptmx.])
3167else
3168 AC_MSG_RESULT(no)
3169fi
3170
Neal Norwitz865400f2003-03-21 01:42:58 +00003171AC_MSG_CHECKING(for /dev/ptc)
3172
3173if test -e /dev/ptc
3174then
3175 AC_MSG_RESULT(yes)
3176 AC_DEFINE(HAVE_DEV_PTC, 1,
3177 [Define if we have /dev/ptc.])
3178else
3179 AC_MSG_RESULT(no)
3180fi
3181
Martin v. Löwis01c04012002-11-11 14:58:44 +00003182AC_CHECK_TYPE(socklen_t,,
3183 AC_DEFINE(socklen_t,int,
3184 Define to `int' if <sys/socket.h> does not define.),[
3185#ifdef HAVE_SYS_TYPES_H
3186#include <sys/types.h>
3187#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003188#ifdef HAVE_SYS_SOCKET_H
3189#include <sys/socket.h>
3190#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003191])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003192
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003193AC_SUBST(THREADHEADERS)
3194
3195for h in `(cd $srcdir;echo Python/thread_*.h)`
3196do
3197 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3198done
3199
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003200AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003201SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003202AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003203for dir in $SRCDIRS; do
3204 if test ! -d $dir; then
3205 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003206 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003207done
3208AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003209
Guido van Rossum627b2d71993-12-24 10:39:16 +00003210# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003211AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3212AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003213
3214echo "creating Setup"
3215if test ! -f Modules/Setup
3216then
3217 cp $srcdir/Modules/Setup.dist Modules/Setup
3218fi
3219
3220echo "creating Setup.local"
3221if test ! -f Modules/Setup.local
3222then
3223 echo "# Edit this file for local setup changes" >Modules/Setup.local
3224fi
3225
3226echo "creating Makefile"
3227$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3228 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003229 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003230mv config.c Modules