blob: 12ac14919a88ceaa45a553fbcf5cb6cf36973ab6 [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öwisfd1c69e72004-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.
Georg Brandl28161e22006-04-01 08:51:25 +0000176 # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
177 # has no effect, don't bother defineing them
178 Darwin/[78].*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000179 define_xopen_source=no
180 ;;
181
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000182esac
183
184if test $define_xopen_source = yes
185then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000186 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
187 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000188 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
189 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000190 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000191 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000192 AC_DEFINE(_XOPEN_SOURCE, 500,
193 Define to the level of X/Open that your system supports)
194 ;;
195 *)
196 AC_DEFINE(_XOPEN_SOURCE, 600,
197 Define to the level of X/Open that your system supports)
198 ;;
199 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000200
201 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
202 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
203 # several APIs are not declared. Since this is also needed in some
204 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000205 # except for Solaris 10, where it must not be defined,
206 # as it implies XPG4.2
207 case $ac_sys_system/$ac_sys_release in
208 SunOS/5.10)
209 ;;
210 *)
211 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
212 Define to activate Unix95-and-earlier features)
213 ;;
214 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000215
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000216 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
217
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000218fi
219
Guido van Rossum91922671997-10-09 20:24:13 +0000220#
221# SGI compilers allow the specification of the both the ABI and the
222# ISA on the command line. Depending on the values of these switches,
223# different and often incompatable code will be generated.
224#
225# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
226# thus supply support for various ABI/ISA combinations. The MACHDEP
227# variable is also adjusted.
228#
229AC_SUBST(SGI_ABI)
230if test ! -z "$SGI_ABI"
231then
232 CC="cc $SGI_ABI"
233 LDFLAGS="$SGI_ABI $LDFLAGS"
234 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
235fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000236AC_MSG_RESULT($MACHDEP)
237
Jack Jansen83f898c2002-12-30 22:23:40 +0000238# And add extra plat-mac for darwin
239AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000240AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000241AC_MSG_CHECKING(EXTRAPLATDIR)
242if test -z "$EXTRAPLATDIR"
243then
244 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000245 darwin)
246 EXTRAPLATDIR="\$(PLATMACDIRS)"
247 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
248 ;;
249 *)
250 EXTRAPLATDIR=""
251 EXTRAMACHDEPPATH=""
252 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000253 esac
254fi
255AC_MSG_RESULT($EXTRAPLATDIR)
256
Jack Jansen6b08a402004-06-03 12:41:45 +0000257# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
258# it may influence the way we can build extensions, so distutils
259# needs to check it
260AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
261CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
262
Guido van Rossum627b2d71993-12-24 10:39:16 +0000263# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000264
265# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
266# for debug/optimization stuff. BASECFLAGS is for flags that are required
267# just to get things to compile and link. Users are free to override OPT
268# when running configure or make. The build should not break if they do.
269# BASECFLAGS should generally not be messed with, however.
270
271# XXX shouldn't some/most/all of this code be merged with the stuff later
272# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000273AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000274AC_ARG_WITH(gcc,
275 AC_HELP_STRING(--without-gcc,never use gcc),
276[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000277 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000278 no) CC=cc
279 without_gcc=yes;;
280 yes) CC=gcc
281 without_gcc=no;;
282 *) CC=$withval
283 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000284 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000285 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000286 AIX*) CC=cc_r
287 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000288 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000289 case $BE_HOST_CPU in
290 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000291 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000292 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000293 BASECFLAGS="$BASECFLAGS -export pragma"
294 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000295 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000296 ;;
297 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000298 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000299 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000300 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000301 ;;
302 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000303 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000304 ;;
305 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000306 AR="\$(srcdir)/Modules/ar_beos"
307 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000308 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000309 Monterey*)
310 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000311 without_gcc=;;
312 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000313 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000314AC_MSG_RESULT($without_gcc)
315
Guido van Rossum27552902001-01-23 01:52:26 +0000316AC_SUBST(CXX)
Guido van Rossum95012191999-12-16 17:50:52 +0000317AC_SUBST(MAINOBJ)
Fred Drakea1a84e72001-03-06 05:52:16 +0000318MAINOBJ=python.o
Guido van Rossum95012191999-12-16 17:50:52 +0000319AC_MSG_CHECKING(for --with-cxx=<compiler>)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000320AC_ARG_WITH(cxx,
321 AC_HELP_STRING(--with-cxx=<compiler>, enable C++ support),
322[
Martin v. Löwis537970f2000-12-13 17:37:02 +0000323 check_cxx=no
Guido van Rossum95012191999-12-16 17:50:52 +0000324 case $withval in
325 no) CXX=
326 with_cxx=no;;
327 *) CXX=$withval
Fred Drakea1a84e72001-03-06 05:52:16 +0000328 MAINOBJ=ccpython.o
Guido van Rossum95012191999-12-16 17:50:52 +0000329 with_cxx=$withval;;
330 esac], [
331 with_cxx=no
Martin v. Löwis537970f2000-12-13 17:37:02 +0000332 check_cxx=yes
Guido van Rossum95012191999-12-16 17:50:52 +0000333])
334AC_MSG_RESULT($with_cxx)
Martin v. Löwis537970f2000-12-13 17:37:02 +0000335
Michael W. Hudson54241132001-12-07 15:38:26 +0000336if test "$with_cxx" = "yes"
337then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000338 AC_MSG_ERROR([must supply a compiler when using --with-cxx])
Michael W. Hudson54241132001-12-07 15:38:26 +0000339fi
340
Martin v. Löwis537970f2000-12-13 17:37:02 +0000341dnl The following fragment works similar to AC_PROG_CXX.
342dnl It does not fail if CXX is not found, and it is not executed if
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000343dnl --without-cxx was given.
Martin v. Löwis537970f2000-12-13 17:37:02 +0000344dnl Finally, it does not test whether CXX is g++.
345
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000346dnl Autoconf 2.5x does not have AC_PROG_CXX_WORKS anymore
347ifdef([AC_PROG_CXX_WORKS],[],
348 [AC_DEFUN([AC_PROG_CXX_WORKS],
349 [AC_LANG_PUSH(C++)dnl
350 _AC_COMPILER_EXEEXT
351 AC_LANG_POP()
352 ]
353)])
354
Martin v. Löwis537970f2000-12-13 17:37:02 +0000355if test "$check_cxx" = "yes"
356then
357 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
358 if test "$CXX" = "notfound"
359 then
360 CXX=
361 else
362 AC_PROG_CXX_WORKS
363 fi
364fi
365
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000366# If the user switches compilers, we can't believe the cache
367if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
368then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000369 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
370(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000371fi
372
Guido van Rossum627b2d71993-12-24 10:39:16 +0000373AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000374
375# checks for UNIX variants that set C preprocessor variables
376AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000377
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000378# Check for unsupported systems
379case $ac_sys_system/$ac_sys_release in
Skip Montanaroce59c042004-01-17 14:19:44 +0000380Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000381 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
382 echo See README for details.
383 exit 1;;
384esac
385
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000386AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000387AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000388AC_ARG_WITH(suffix,
389 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
390[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000391 case $withval in
392 no) EXEEXT=;;
393 yes) EXEEXT=.exe;;
394 *) EXEEXT=$withval;;
395 esac])
396AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000397
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000398# Test whether we're running on a non-case-sensitive system, in which
399# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000400AC_SUBST(BUILDEXEEXT)
401AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000402if test ! -d CaseSensitiveTestDir; then
403mkdir CaseSensitiveTestDir
404fi
405
406if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000407then
Jack Jansen1999ef42001-12-06 21:47:20 +0000408 AC_MSG_RESULT(yes)
409 BUILDEXEEXT=.exe
410else
411 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000412 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000413fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000414rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000415
Guido van Rossumdd997f71998-10-07 19:58:26 +0000416case $MACHDEP in
417bsdos*)
418 case $CC in
419 gcc) CC="$CC -D_HAVE_BSDI";;
420 esac;;
421esac
422
Guido van Rossum84561611997-08-21 00:08:11 +0000423case $ac_sys_system in
424hp*|HP*)
425 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000426 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000427 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000428Monterey*)
429 case $CC in
430 cc) CC="$CC -Wl,-Bexport";;
431 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000432SunOS*)
433 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000434 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000435 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000436esac
437
Martin v. Löwise8964d42001-03-06 12:09:07 +0000438
Neil Schemenauer61c51152001-01-26 16:18:16 +0000439AC_SUBST(LIBRARY)
440AC_MSG_CHECKING(LIBRARY)
441if test -z "$LIBRARY"
442then
443 LIBRARY='libpython$(VERSION).a'
444fi
445AC_MSG_RESULT($LIBRARY)
446
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000447# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000448# name of the library into which to insert object files). BLDLIBRARY is also
449# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
450# is blank as the main program is not linked directly against LDLIBRARY.
451# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
452# systems without shared libraries, LDLIBRARY is the same as LIBRARY
453# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
454# DLLLIBRARY is the shared (i.e., DLL) library.
455#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000456# RUNSHARED is used to run shared python without installed libraries
457#
458# INSTSONAME is the name of the shared library that will be use to install
459# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000460AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000461AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000462AC_SUBST(BLDLIBRARY)
463AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000464AC_SUBST(INSTSONAME)
465AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000466LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000467BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000468INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000469DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000470LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000471RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000472
Guido van Rossumfb842551997-08-06 23:42:07 +0000473# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000474# If CXX is set, and if it is needed to link a main function that was
475# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
476# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000477# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000478# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000479AC_SUBST(LINKCC)
480AC_MSG_CHECKING(LINKCC)
481if test -z "$LINKCC"
482then
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000483 if test -z "$CXX"; then
484 LINKCC="\$(PURIFY) \$(CC)"
485 else
Martin v. Löwis147fbe52005-08-07 21:09:30 +0000486 echo 'extern "C" void foo();int main(){foo();}' > conftest_a.cc
487 $CXX -c conftest_a.cc # 2>&5
488 echo 'void foo(){}' > conftest_b.$ac_ext
489 $CC -c conftest_b.$ac_ext # 2>&5
490 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 +0000491 && test -s conftest$ac_exeext && ./conftest$ac_exeext
492 then
493 LINKCC="\$(PURIFY) \$(CC)"
494 else
495 LINKCC="\$(PURIFY) \$(CXX)"
496 fi
497 rm -fr conftest*
498 fi
Guido van Rossumfb842551997-08-06 23:42:07 +0000499 case $ac_sys_system in
500 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000501 exp_extra="\"\""
502 if test $ac_sys_release -ge 5 -o \
503 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
504 exp_extra="."
505 fi
506 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000507 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000508 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000509 esac
510fi
511AC_MSG_RESULT($LINKCC)
512
Martin v. Löwis1142de32002-03-29 16:28:31 +0000513AC_MSG_CHECKING(for --enable-shared)
514AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000515 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000516
Martin v. Löwis1142de32002-03-29 16:28:31 +0000517if test -z "$enable_shared"
518then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000519 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000520 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000521 enable_shared="yes";;
522 *)
523 enable_shared="no";;
524 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000525fi
526AC_MSG_RESULT($enable_shared)
527
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000528AC_MSG_CHECKING(for --enable-profiling)
529AC_ARG_ENABLE(profiling,
530 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
531[ac_save_cc="$CC"
532 CC="$CC -pg"
533 AC_TRY_RUN([int main() { return 0; }],
534 ac_enable_profiling="yes",
535 ac_enable_profiling="no",
536 ac_enable_profiling="no")
537 CC="$ac_save_cc"])
538AC_MSG_RESULT($ac_enable_profiling)
539
540case "$ac_enable_profiling" in
541 "yes")
542 BASECFLAGS="-pg $BASECFLAGS"
543 LDFLAGS="-pg $LDFLAGS"
544 ;;
545esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000546
547AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000548
Guido van Rossumb8552162001-09-05 14:58:11 +0000549# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
550# library that we build, but we do not want to link against it (we
551# will find it with a -framework option). For this reason there is an
552# extra variable BLDLIBRARY against which Python and the extension
553# modules are linked, BLDLIBRARY. This is normally the same as
554# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000555if test "$enable_framework"
556then
557 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000558 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000559 BLDLIBRARY=''
560else
561 BLDLIBRARY='$(LDLIBRARY)'
562fi
563
Martin v. Löwis1142de32002-03-29 16:28:31 +0000564# Other platforms follow
565if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000566 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000567 case $ac_sys_system in
568 BeOS*)
569 LDLIBRARY='libpython$(VERSION).so'
570 ;;
571 CYGWIN*)
572 LDLIBRARY='libpython$(VERSION).dll.a'
573 DLLLIBRARY='libpython$(VERSION).dll'
574 ;;
575 SunOS*)
576 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000577 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000578 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000579 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000580 ;;
Martin v. Löwis86d66262006-02-17 08:40:11 +0000581 Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000582 LDLIBRARY='libpython$(VERSION).so'
583 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000584 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000585 case $ac_sys_system in
586 FreeBSD*)
587 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
588 ;;
589 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000590 INSTSONAME="$LDLIBRARY".$SOVERSION
591 ;;
592 hp*|HP*)
593 LDLIBRARY='libpython$(VERSION).sl'
594 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000595 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000596 ;;
597 OSF*)
598 LDLIBRARY='libpython$(VERSION).so'
Neal Norwitz671b9e32006-01-09 07:07:12 +0000599 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000600 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000601 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000602 atheos*)
603 LDLIBRARY='libpython$(VERSION).so'
604 BLDLIBRARY='-L. -lpython$(VERSION)'
605 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
606 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000607 esac
Jason Tishler30765592003-09-04 11:04:06 +0000608else # shared is disabled
609 case $ac_sys_system in
610 CYGWIN*)
611 BLDLIBRARY='$(LIBRARY)'
612 LDLIBRARY='libpython$(VERSION).dll.a'
613 ;;
614 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000615fi
616
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000617AC_MSG_RESULT($LDLIBRARY)
618
Guido van Rossum627b2d71993-12-24 10:39:16 +0000619AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000620AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000621AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000622
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000623AC_SUBST(SVNVERSION)
Martin v. Löwisff600232006-04-03 19:12:32 +0000624AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found)
Martin v. Löwisc5bf5a02006-01-05 10:33:59 +0000625if test $SVNVERSION = found
626then
627 SVNVERSION="svnversion \$(srcdir)"
628else
629 SVNVERSION="echo exported"
630fi
Martin v. Löwisdea59e52006-01-05 10:00:36 +0000631
Neil Schemenauera42c8272001-03-31 00:01:55 +0000632case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000633bsdos*|hp*|HP*)
634 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000635 if test -z "$INSTALL"
636 then
637 INSTALL="${srcdir}/install-sh -c"
638 fi
639esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000640AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000641
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000642# Not every filesystem supports hard links
643AC_SUBST(LN)
644if test -z "$LN" ; then
645 case $ac_sys_system in
646 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000647 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000648 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000649 *) LN=ln;;
650 esac
651fi
652
Fred Drake9f715822001-07-11 06:27:00 +0000653# Check for --with-pydebug
654AC_MSG_CHECKING(for --with-pydebug)
655AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000656 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
657[
Fred Drake9f715822001-07-11 06:27:00 +0000658if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000659then
660 AC_DEFINE(Py_DEBUG, 1,
661 [Define if you want to build an interpreter with many run-time checks.])
662 AC_MSG_RESULT(yes);
663 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000664else AC_MSG_RESULT(no); Py_DEBUG='false'
665fi],
666[AC_MSG_RESULT(no)])
667
Skip Montanarodecc6a42003-01-01 20:07:49 +0000668# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
669# merged with this chunk of code?
670
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000671# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000672# ------------------------
673# (The following bit of code is complicated enough - please keep things
674# indented properly. Just pretend you're editing Python code. ;-)
675
676# There are two parallel sets of case statements below, one that checks to
677# see if OPT was set and one that does BASECFLAGS setting based upon
678# compiler and platform. BASECFLAGS tweaks need to be made even if the
679# user set OPT.
680
681# tweak OPT based on compiler and platform, only if the user didn't set
682# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000683AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000684if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000685then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000686 case $GCC in
687 yes)
688 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000689 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000690 if test "$Py_DEBUG" = 'true' ; then
691 # Optimization messes up debuggers, so turn it off for
692 # debug builds.
693 OPT="-g -Wall -Wstrict-prototypes"
694 else
695 OPT="-g -O3 -Wall -Wstrict-prototypes"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000696 fi
697 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000698 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000699 OPT="-O3 -Wall -Wstrict-prototypes"
700 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000701 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000702 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000703 SCO_SV*) OPT="$OPT -m486 -DSCO5"
704 ;;
705 esac
Fred Drake9f715822001-07-11 06:27:00 +0000706 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000707
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000708 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000709 OPT="-O"
710 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000711 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000712
713 # The current (beta) Monterey compiler dies with optimizations
714 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000715 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000716 Monterey*)
717 OPT=""
718 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000719 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000720
Guido van Rossum4e8af441994-08-19 15:33:54 +0000721fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000722
Skip Montanarodecc6a42003-01-01 20:07:49 +0000723AC_SUBST(BASECFLAGS)
724# tweak BASECFLAGS based on compiler and platform
725case $GCC in
726yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000727 # Python violates C99 rules, by casting between incompatible
728 # pointer types. GCC may generate bad code as a result of that,
729 # so use -fno-strict-aliasing if supported.
730 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
731 ac_save_cc="$CC"
732 CC="$CC -fno-strict-aliasing"
733 AC_TRY_RUN([int main() { return 0; }],
734 ac_cv_no_strict_aliasing_ok=yes,
735 ac_cv_no_strict_aliasing_ok=no,
736 ac_cv_no_strict_aliasing_ok=no)
737 CC="$ac_save_cc"
738 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
739 if test $ac_cv_no_strict_aliasing_ok = yes
740 then
741 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
742 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000743 case $ac_sys_system in
744 SCO_SV*)
745 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
746 ;;
747 # is there any other compiler on Darwin besides gcc?
748 Darwin*)
Jack Jansene0040412003-07-23 22:17:28 +0000749 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000750 ;;
Neal Norwitzdedeeaa2006-03-31 06:54:45 +0000751 OSF*)
752 BASECFLAGS="$BASECFLAGS -mieee"
753 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000754 esac
755 ;;
756
757*)
758 case $ac_sys_system in
759 OpenUNIX*|UnixWare*)
760 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
761 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000762 OSF*)
763 BASECFLAGS="$BASECFLAGS -ieee -std"
764 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000765 SCO_SV*)
766 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
767 ;;
768 esac
769 ;;
770esac
771
Fred Drakee1ceaa02001-12-04 20:55:47 +0000772if test "$Py_DEBUG" = 'true'; then
773 :
774else
775 OPT="-DNDEBUG $OPT"
776fi
777
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000778if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000779then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000780 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000781fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000782
Neal Norwitz020c46a2006-01-07 21:39:28 +0000783# disable check for icc since it seems to pass, but generates a warning
784if test "$CC" = icc
785then
786 ac_cv_opt_olimit_ok=no
787fi
788
Guido van Rossum91922671997-10-09 20:24:13 +0000789AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
790AC_CACHE_VAL(ac_cv_opt_olimit_ok,
791[ac_save_cc="$CC"
792CC="$CC -OPT:Olimit=0"
793AC_TRY_RUN([int main() { return 0; }],
794 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000795 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000796 ac_cv_opt_olimit_ok=no)
797CC="$ac_save_cc"])
798AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000799if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000800 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000801 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
802 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
803 # environment?
804 Darwin*)
805 ;;
806 *)
807 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
808 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000809 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000810else
811 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
812 AC_CACHE_VAL(ac_cv_olimit_ok,
813 [ac_save_cc="$CC"
814 CC="$CC -Olimit 1500"
815 AC_TRY_RUN([int main() { return 0; }],
816 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000817 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000818 ac_cv_olimit_ok=no)
819 CC="$ac_save_cc"])
820 AC_MSG_RESULT($ac_cv_olimit_ok)
821 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000822 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000823 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000824fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000825
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000826# On some compilers, pthreads are available without further options
827# (e.g. MacOS X). On some of these systems, the compiler will not
828# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
829# So we have to see first whether pthreads are available without
830# options before we can check whether -Kpthread improves anything.
831AC_MSG_CHECKING(whether pthreads are available without options)
832AC_CACHE_VAL(ac_cv_pthread_is_default,
833[AC_TRY_RUN([
834#include <pthread.h>
835
836void* routine(void* p){return NULL;}
837
838int main(){
839 pthread_t p;
840 if(pthread_create(&p,NULL,routine,NULL)!=0)
841 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000842 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000843 return 0;
844}
845],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000846[
847 ac_cv_pthread_is_default=yes
848 ac_cv_kthread=no
849 ac_cv_pthread=no
850],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000851 ac_cv_pthread_is_default=no,
852 ac_cv_pthread_is_default=no)
853])
854AC_MSG_RESULT($ac_cv_pthread_is_default)
855
856
857if test $ac_cv_pthread_is_default = yes
858then
859 ac_cv_kpthread=no
860else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000861# -Kpthread, if available, provides the right #defines
862# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000863# Some compilers won't report that they do not support -Kpthread,
864# so we need to run a program to see whether it really made the
865# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000866AC_MSG_CHECKING(whether $CC accepts -Kpthread)
867AC_CACHE_VAL(ac_cv_kpthread,
868[ac_save_cc="$CC"
869CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000870AC_TRY_RUN([
871#include <pthread.h>
872
873void* routine(void* p){return NULL;}
874
875int main(){
876 pthread_t p;
877 if(pthread_create(&p,NULL,routine,NULL)!=0)
878 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000879 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000880 return 0;
881}
882],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000883 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000884 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000885 ac_cv_kpthread=no)
886CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000887AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000888fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000889
Skip Montanarod8d39a02003-07-10 20:44:10 +0000890if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000891then
892# -Kthread, if available, provides the right #defines
893# and linker options to make pthread_create available
894# Some compilers won't report that they do not support -Kthread,
895# so we need to run a program to see whether it really made the
896# function available.
897AC_MSG_CHECKING(whether $CC accepts -Kthread)
898AC_CACHE_VAL(ac_cv_kthread,
899[ac_save_cc="$CC"
900CC="$CC -Kthread"
901AC_TRY_RUN([
902#include <pthread.h>
903
904void* routine(void* p){return NULL;}
905
906int main(){
907 pthread_t p;
908 if(pthread_create(&p,NULL,routine,NULL)!=0)
909 return 1;
910 (void)pthread_detach(p);
911 return 0;
912}
913],
914 ac_cv_kthread=yes,
915 ac_cv_kthread=no,
916 ac_cv_kthread=no)
917CC="$ac_save_cc"])
918AC_MSG_RESULT($ac_cv_kthread)
919fi
920
Skip Montanarod8d39a02003-07-10 20:44:10 +0000921if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000922then
923# -pthread, if available, provides the right #defines
924# and linker options to make pthread_create available
925# Some compilers won't report that they do not support -pthread,
926# so we need to run a program to see whether it really made the
927# function available.
928AC_MSG_CHECKING(whether $CC accepts -pthread)
929AC_CACHE_VAL(ac_cv_thread,
930[ac_save_cc="$CC"
931CC="$CC -pthread"
932AC_TRY_RUN([
933#include <pthread.h>
934
935void* routine(void* p){return NULL;}
936
937int main(){
938 pthread_t p;
939 if(pthread_create(&p,NULL,routine,NULL)!=0)
940 return 1;
941 (void)pthread_detach(p);
942 return 0;
943}
944],
945 ac_cv_pthread=yes,
946 ac_cv_pthread=no,
947 ac_cv_pthread=no)
948CC="$ac_save_cc"])
949AC_MSG_RESULT($ac_cv_pthread)
950fi
951
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000952# If we have set a CC compiler flag for thread support then
953# check if it works for CXX, too.
954ac_cv_cxx_thread=no
955if test ! -z "$CXX"
956then
957AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
958ac_save_cxx="$CXX"
959
960if test "$ac_cv_kpthread" = "yes"
961then
Martin v. Löwis519adae2003-09-20 10:47:47 +0000962 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000963 ac_cv_cxx_thread=yes
964elif test "$ac_cv_kthread" = "yes"
965then
966 CXX="$CXX -Kthread"
967 ac_cv_cxx_thread=yes
968elif test "$ac_cv_pthread" = "yes"
969then
970 CXX="$CXX -pthread"
971 ac_cv_cxx_thread=yes
972fi
973
974if test $ac_cv_cxx_thread = yes
975then
976 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
977 $CXX -c conftest.$ac_ext 2>&5
978 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
979 && test -s conftest$ac_exeext && ./conftest$ac_exeext
980 then
981 ac_cv_cxx_thread=yes
982 else
983 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000984 fi
985 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000986fi
Brett Cannonc601e0f2004-11-07 01:24:12 +0000987AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000988fi
Martin v. Löwis519adae2003-09-20 10:47:47 +0000989CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000990
Fred Drakece81d592000-07-09 14:39:29 +0000991dnl # check for ANSI or K&R ("traditional") preprocessor
992dnl AC_MSG_CHECKING(for C preprocessor type)
993dnl AC_TRY_COMPILE([
994dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
995dnl int foo;
996dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
997dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
998dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +0000999
Guido van Rossum627b2d71993-12-24 10:39:16 +00001000# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001001AC_HEADER_STDC
Martin v. Löwis11017b12006-01-14 18:12:57 +00001002AC_CHECK_HEADERS(asm/types.h curses.h dlfcn.h fcntl.h grp.h \
1003shadow.h langinfo.h libintl.h ncurses.h poll.h pthread.h \
Skip Montanaro7befb992004-02-10 16:50:21 +00001004stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +00001005unistd.h utime.h \
Anthony Baxter8a560de2004-10-13 15:30:56 +00001006sys/audioio.h sys/bsdtty.h sys/file.h sys/loadavg.h sys/lock.h sys/mkdev.h \
1007sys/modem.h \
Andrew M. Kuchling881fd902001-07-14 20:55:52 +00001008sys/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 +00001009sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +00001010sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
1011bluetooth/bluetooth.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001012AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00001013AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +00001014
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001015# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +00001016AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +00001017#ifdef HAVE_CURSES_H
1018#include <curses.h>
1019#endif
1020])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001021
Martin v. Löwis11017b12006-01-14 18:12:57 +00001022# On Linux, netlink.h requires asm/types.h
1023AC_CHECK_HEADERS(linux/netlink.h,,,[
1024#ifdef HAVE_ASM_TYPES_H
1025#include <asm/types.h>
1026#endif
1027#ifdef HAVE_SYS_SOCKET_H
1028#include <sys/socket.h>
1029#endif
1030])
1031
Guido van Rossum627b2d71993-12-24 10:39:16 +00001032# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001033was_it_defined=no
1034AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001035AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1036 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1037])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001038AC_MSG_RESULT($was_it_defined)
1039
Neal Norwitz11690112002-07-30 01:08:28 +00001040# Check whether using makedev requires defining _OSF_SOURCE
1041AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001042AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001043 [ makedev(0, 0) ],
1044 ac_cv_has_makedev=yes,
1045 ac_cv_has_makedev=no)
1046if test "$ac_cv_has_makedev" = "no"; then
1047 # we didn't link, try if _OSF_SOURCE will allow us to link
1048 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001049#define _OSF_SOURCE 1
1050#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001051 ],
1052 [ makedev(0, 0) ],
1053 ac_cv_has_makedev=yes,
1054 ac_cv_has_makedev=no)
1055 if test "$ac_cv_has_makedev" = "yes"; then
1056 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1057 fi
1058fi
1059AC_MSG_RESULT($ac_cv_has_makedev)
1060if test "$ac_cv_has_makedev" = "yes"; then
1061 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1062fi
1063
Martin v. Löwis399a6892002-10-04 10:22:02 +00001064# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1065# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1066# defined, but the compiler does not support pragma redefine_extname,
1067# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1068# structures (such as rlimit64) without declaring them. As a
1069# work-around, disable LFS on such configurations
1070
1071use_lfs=yes
1072AC_MSG_CHECKING(Solaris LFS bug)
1073AC_TRY_COMPILE([
1074#define _LARGEFILE_SOURCE 1
1075#define _FILE_OFFSET_BITS 64
1076#include <sys/resource.h>
1077],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1078AC_MSG_RESULT($sol_lfs_bug)
1079if test "$sol_lfs_bug" = "yes"; then
1080 use_lfs=no
1081fi
1082
1083if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001084# Two defines needed to enable largefile support on various platforms
1085# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001086AC_DEFINE(_LARGEFILE_SOURCE, 1,
1087[This must be defined on some systems to enable large file support.])
1088AC_DEFINE(_FILE_OFFSET_BITS, 64,
1089[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001090fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001091
Guido van Rossum300fda71996-08-19 21:58:16 +00001092# Add some code to confdefs.h so that the test for off_t works on SCO
1093cat >> confdefs.h <<\EOF
1094#if defined(SCO_DS)
1095#undef _OFF_T
1096#endif
1097EOF
1098
Guido van Rossumef2255b2000-03-10 22:30:29 +00001099# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001100AC_TYPE_MODE_T
1101AC_TYPE_OFF_T
1102AC_TYPE_PID_T
1103AC_TYPE_SIGNAL
1104AC_TYPE_SIZE_T
1105AC_TYPE_UID_T
Martin v. Löwis18e16552006-02-15 17:27:45 +00001106AC_CHECK_TYPE(ssize_t,
1107 AC_DEFINE(HAVE_SSIZE_T, 1, Define if your compiler provides ssize_t),,)
Guido van Rossum627b2d71993-12-24 10:39:16 +00001108
Guido van Rossumef2255b2000-03-10 22:30:29 +00001109# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001110# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001111AC_CHECK_SIZEOF(int, 4)
1112AC_CHECK_SIZEOF(long, 4)
1113AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001114AC_CHECK_SIZEOF(short, 2)
1115AC_CHECK_SIZEOF(float, 4)
1116AC_CHECK_SIZEOF(double, 8)
1117AC_CHECK_SIZEOF(fpos_t, 4)
Martin v. Löwis18e16552006-02-15 17:27:45 +00001118AC_CHECK_SIZEOF(size_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001119
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001120AC_MSG_CHECKING(for long long support)
1121have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001122AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1123 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1124 have_long_long=yes
1125])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001126AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001127if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001128AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001129fi
1130
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001131AC_MSG_CHECKING(for uintptr_t support)
1132have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001133AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
1134 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
1135 have_uintptr_t=yes
1136])
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001137AC_MSG_RESULT($have_uintptr_t)
1138if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001139AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001140fi
1141
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001142# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1143AC_MSG_CHECKING(size of off_t)
1144AC_CACHE_VAL(ac_cv_sizeof_off_t,
1145[AC_TRY_RUN([#include <stdio.h>
1146#include <sys/types.h>
1147main()
1148{
1149 FILE *f=fopen("conftestval", "w");
1150 if (!f) exit(1);
1151 fprintf(f, "%d\n", sizeof(off_t));
1152 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001153}],
1154ac_cv_sizeof_off_t=`cat conftestval`,
1155ac_cv_sizeof_off_t=0,
1156ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001157])
1158AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001159AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1160[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001161
1162AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001163if test "$have_long_long" = yes -a \
1164 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1165 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001166 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1167 [Defined to enable large file support when an off_t is bigger than a long
1168 and long long is available and at least as big as an off_t. You may need
1169 to add some flags for configuration and compilation to enable this mode.
1170 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001171 AC_MSG_RESULT(yes)
1172else
1173 AC_MSG_RESULT(no)
1174fi
1175
Fred Drakea3f6e912000-06-29 20:44:47 +00001176# AC_CHECK_SIZEOF() doesn't include <time.h>.
1177AC_MSG_CHECKING(size of time_t)
1178AC_CACHE_VAL(ac_cv_sizeof_time_t,
1179[AC_TRY_RUN([#include <stdio.h>
1180#include <time.h>
1181main()
1182{
1183 FILE *f=fopen("conftestval", "w");
1184 if (!f) exit(1);
1185 fprintf(f, "%d\n", sizeof(time_t));
1186 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001187}],
1188ac_cv_sizeof_time_t=`cat conftestval`,
1189ac_cv_sizeof_time_t=0,
1190ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001191])
1192AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001193AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1194[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001195
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001196
Trent Mick635f6fb2000-08-23 21:33:05 +00001197# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001198ac_save_cc="$CC"
1199if test "$ac_cv_kpthread" = "yes"
1200then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001201elif test "$ac_cv_kthread" = "yes"
1202then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001203elif test "$ac_cv_pthread" = "yes"
1204then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001205fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001206AC_MSG_CHECKING(for pthread_t)
1207have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001208AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001209AC_MSG_RESULT($have_pthread_t)
1210if test "$have_pthread_t" = yes ; then
1211 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1212 AC_MSG_CHECKING(size of pthread_t)
1213 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1214 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001215#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001216 main()
1217 {
1218 FILE *f=fopen("conftestval", "w");
1219 if (!f) exit(1);
1220 fprintf(f, "%d\n", sizeof(pthread_t));
1221 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001222 }],
1223 ac_cv_sizeof_pthread_t=`cat conftestval`,
1224 ac_cv_sizeof_pthread_t=0,
1225 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001226 ])
1227 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001228 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1229 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001230fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001231CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001232
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001233AC_MSG_CHECKING(for --enable-toolbox-glue)
1234AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001235 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001236
1237if test -z "$enable_toolbox_glue"
1238then
1239 case $ac_sys_system/$ac_sys_release in
1240 Darwin/*)
1241 enable_toolbox_glue="yes";;
1242 *)
1243 enable_toolbox_glue="no";;
1244 esac
1245fi
1246case "$enable_toolbox_glue" in
1247yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001248 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001249 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001250 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1251 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001252 ;;
1253*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001254 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001255 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001256 ;;
1257esac
1258AC_MSG_RESULT($enable_toolbox_glue)
1259
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001260AC_SUBST(OTHER_LIBTOOL_OPT)
1261case $ac_sys_system/$ac_sys_release in
1262 Darwin/@<:@01234567@:>@.*)
1263 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1264 ;;
1265 Darwin/*)
1266 OTHER_LIBTOOL_OPT=""
1267 ;;
1268esac
1269
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001270AC_SUBST(LIBTOOL_CRUFT)
1271case $ac_sys_system/$ac_sys_release in
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001272 Darwin/@<:@01234567@:>@.*)
Jack Jansen39fd2312006-02-23 15:12:19 +00001273 LIBTOOL_CRUFT="-framework System -lcc_dynamic -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001274 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001275 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001276 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001277 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1278 if test ${gcc_version} '<' 4.0
1279 then
1280 LIBTOOL_CRUFT="-lcc_dynamic"
1281 else
1282 LIBTOOL_CRUFT=""
1283 fi
Jack Jansen39fd2312006-02-23 15:12:19 +00001284 LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only `arch`"
Jack Jansenb36687a2004-07-16 08:43:47 +00001285 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001286 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001287esac
1288
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001289AC_MSG_CHECKING(for --enable-framework)
1290if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001291then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001292 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001293 # -F. is needed to allow linking to the framework while
1294 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001295 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1296 [Define if you want to produce an OpenStep/Rhapsody framework
1297 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001298 AC_MSG_RESULT(yes)
1299else
1300 AC_MSG_RESULT(no)
1301fi
1302
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001303AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001304case $ac_sys_system/$ac_sys_release in
1305 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001306 AC_DEFINE(WITH_DYLD, 1,
1307 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1308 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1309 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001310 AC_MSG_RESULT(always on for Darwin)
1311 ;;
1312 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001313 AC_MSG_RESULT(no)
1314 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001315esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001316
Guido van Rossumac405f61994-09-12 10:56:06 +00001317# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001318AC_SUBST(SO)
1319AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001320AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001321AC_SUBST(CCSHARED)
1322AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001323# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001324# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001325AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001326if test -z "$SO"
1327then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001328 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001329 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001330 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001331 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001332 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001333else
1334 # this might also be a termcap variable, see #610332
1335 echo
1336 echo '====================================================================='
1337 echo '+ +'
1338 echo '+ WARNING: You have set SO in your environment. +'
1339 echo '+ Do you really mean to change the extension for shared libraries? +'
1340 echo '+ Continuing in 10 seconds to let you to ponder. +'
1341 echo '+ +'
1342 echo '====================================================================='
1343 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001344fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001345AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001346# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001347# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001348# (Shared libraries in this instance are shared modules to be loaded into
1349# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001350AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001351if test -z "$LDSHARED"
1352then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001353 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001354 AIX*)
1355 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001356 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001357 ;;
1358 BeOS*)
1359 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001360 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001361 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001362 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001363 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001364 SunOS/5*)
1365 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001366 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001367 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001368 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001369 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001370 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001371 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001372 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1373 if test "$enable_framework" ; then
1374 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001375 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1376 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001377 else
1378 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001379 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001380 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001381 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001382 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1383 if test "$enable_framework" ; then
1384 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001385 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1386 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001387 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001388 # No framework, use the Python app as bundle-loader
1389 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001390 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001391 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001392 Darwin/*)
1393 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1394 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001395 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Jack Jansenc110f862005-01-07 10:49:32 +00001396 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Jack Jansenbe954622004-12-26 23:07:48 +00001397 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001398 then
1399 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1400 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001401 else
1402 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1403 if test "$enable_framework" ; then
1404 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001405 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1406 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001407 else
1408 # No framework, use the Python app as bundle-loader
1409 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1410 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1411 fi
1412 fi
1413 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001414 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001415 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001416 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001417 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001418 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001419 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001420 else
1421 LDSHARED="ld -Bshareable ${LDFLAGS}"
1422 fi;;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001423 NetBSD*|DragonFly*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001424 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001425 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001426 then LDSHARED='$(CC) -shared'
1427 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001428 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001429 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001430 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001431 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001432 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001433 *) LDSHARED="ld";;
1434 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001435fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001436AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001437BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001438# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001439# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001440AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001441if test -z "$CCSHARED"
1442then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001443 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001444 SunOS*) if test "$GCC" = yes;
1445 then CCSHARED="-fPIC";
Martin v. Löwisd5845ec2005-12-30 12:31:38 +00001446 else CCSHARED="-xcode=pic32";
Neil Schemenauer66252162001-02-19 04:47:42 +00001447 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001448 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001449 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001450 else CCSHARED="+z";
1451 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001452 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001453 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001454 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001455 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001456 if test "$GCC" = "yes"
1457 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001458 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001459 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001460 SCO_SV*)
1461 if test "$GCC" = "yes"
1462 then CCSHARED="-fPIC"
1463 else CCSHARED="-Kpic -belf"
1464 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001465 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001466 IRIX*/6*) case $CC in
1467 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001468 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001469 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001470 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001471 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001472fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001473AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001474# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001475# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001476AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001477if test -z "$LINKFORSHARED"
1478then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001479 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001480 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001481 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001482 LINKFORSHARED="-Wl,-E -Wl,+s";;
1483# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001484 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001485 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001486 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001487 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001488 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1489 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001490 # not used by the core itself but which needs to be in the core so
1491 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001492 # -prebind is no longer used, because it actually seems to give a
1493 # slowdown in stead of a speedup, maybe due to the large number of
1494 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001495
1496 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001497 if test "$enable_framework"
1498 then
Jack Jansenda49e192005-01-07 13:08:22 +00001499 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001500 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001501 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001502 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001503 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001504 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis86d66262006-02-17 08:40:11 +00001505 FreeBSD*|NetBSD*|OpenBSD*|DragonFly*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001506 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1507 then
1508 LINKFORSHARED="-Wl,--export-dynamic"
1509 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001510 SunOS/5*) case $CC in
1511 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001512 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001513 then
1514 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001515 fi;;
1516 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001517 CYGWIN*)
1518 if test $enable_shared = "no"
1519 then
1520 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1521 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001522 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001523fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001524AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001525
Neil Schemenauer61c51152001-01-26 16:18:16 +00001526AC_SUBST(CFLAGSFORSHARED)
1527AC_MSG_CHECKING(CFLAGSFORSHARED)
1528if test ! "$LIBRARY" = "$LDLIBRARY"
1529then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001530 case $ac_sys_system in
1531 CYGWIN*)
1532 # Cygwin needs CCSHARED when building extension DLLs
1533 # but not when building the interpreter DLL.
1534 CFLAGSFORSHARED='';;
1535 *)
1536 CFLAGSFORSHARED='$(CCSHARED)'
1537 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001538fi
1539AC_MSG_RESULT($CFLAGSFORSHARED)
1540
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001541# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1542# library (with --enable-shared).
1543# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001544# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1545# if it is not required, since it creates a dependency of the shared library
1546# to LIBS. This, in turn, means that applications linking the shared libpython
1547# don't need to link LIBS explicitly. The default should be only changed
1548# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001549AC_SUBST(SHLIBS)
1550AC_MSG_CHECKING(SHLIBS)
1551case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001552 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001553 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001554esac
1555AC_MSG_RESULT($SHLIBS)
1556
1557
Guido van Rossum627b2d71993-12-24 10:39:16 +00001558# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001559AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1560AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001561
1562# only check for sem_ini if thread support is requested
1563if test "$with_threads" = "yes" -o -z "$with_threads"; then
1564 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1565 # posix4 on Solaris 2.6
1566 # pthread (first!) on Linux
1567fi
1568
Martin v. Löwis19d17342003-06-14 21:03:05 +00001569# check if we need libintl for locale functions
1570AC_CHECK_LIB(intl, textdomain,
1571 AC_DEFINE(WITH_LIBINTL, 1,
1572 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001573
1574# checks for system dependent C++ extensions support
1575case "$ac_sys_system" in
1576 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1577 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1578 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001579 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1580 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1581 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001582 AC_MSG_RESULT(yes)],
1583 [AC_MSG_RESULT(no)]);;
1584 *) ;;
1585esac
1586
Guido van Rossum70c7f481998-03-26 18:44:10 +00001587# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001588# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001589AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001590AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001591
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001592case "$ac_sys_system" in
1593BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001594AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1595;;
1596esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001597
Guido van Rossumc5a39031996-07-31 17:35:03 +00001598AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001599AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001600 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1601[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001602AC_MSG_RESULT($withval)
1603LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001604],
1605[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001606
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001607# Determine if signalmodule should be used.
1608AC_SUBST(USE_SIGNAL_MODULE)
1609AC_SUBST(SIGNAL_OBJS)
1610AC_MSG_CHECKING(for --with-signal-module)
1611AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001612 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001613
1614if test -z "$with_signal_module"
1615then with_signal_module="yes"
1616fi
1617AC_MSG_RESULT($with_signal_module)
1618
1619if test "${with_signal_module}" = "yes"; then
1620 USE_SIGNAL_MODULE=""
1621 SIGNAL_OBJS=""
1622else
1623 USE_SIGNAL_MODULE="#"
1624 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1625fi
1626
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001627# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001628AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001629USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001630
Guido van Rossum54d93d41997-01-22 20:51:58 +00001631AC_MSG_CHECKING(for --with-dec-threads)
1632AC_SUBST(LDLAST)
1633AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001634 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1635[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001636AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001637LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001638if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001639 with_thread="$withval";
1640fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001641[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001642
Martin v. Löwis11437992002-04-12 09:54:03 +00001643# Templates for things AC_DEFINEd more than once.
1644# For a single AC_DEFINE, no template is needed.
1645AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1646AH_TEMPLATE(_REENTRANT,
1647 [Define to force use of thread-safe errno, h_errno, and other functions])
1648AH_TEMPLATE(WITH_THREAD,
1649 [Define if you want to compile in rudimentary thread support])
1650
Guido van Rossum54d93d41997-01-22 20:51:58 +00001651AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001652dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001653AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001654 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001655
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001656# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001657dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001658AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001659 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1660 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001661
1662if test -z "$with_threads"
1663then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001664fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001665AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001666
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001667AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001668if test "$with_threads" = "no"
1669then
1670 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001671elif test "$ac_cv_pthread_is_default" = yes
1672then
1673 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001674 # Defining _REENTRANT on system with POSIX threads should not hurt.
1675 AC_DEFINE(_REENTRANT)
1676 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001677 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001678elif test "$ac_cv_kpthread" = "yes"
1679then
1680 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001681 if test "$ac_cv_cxx_thread" = "yes"; then
1682 CXX="$CXX -Kpthread"
1683 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001684 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001685 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001686 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001687elif test "$ac_cv_kthread" = "yes"
1688then
1689 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001690 if test "$ac_cv_cxx_thread" = "yes"; then
1691 CXX="$CXX -Kthread"
1692 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001693 AC_DEFINE(WITH_THREAD)
1694 posix_threads=yes
1695 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001696elif test "$ac_cv_pthread" = "yes"
1697then
1698 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001699 if test "$ac_cv_cxx_thread" = "yes"; then
1700 CXX="$CXX -pthread"
1701 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001702 AC_DEFINE(WITH_THREAD)
1703 posix_threads=yes
1704 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001705else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001706 if test ! -z "$with_threads" -a -d "$with_threads"
1707 then LDFLAGS="$LDFLAGS -L$with_threads"
1708 fi
1709 if test ! -z "$withval" -a -d "$withval"
1710 then LDFLAGS="$LDFLAGS -L$withval"
1711 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001712
1713 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001714 # define _POSIX_THREADS in unistd.h. Some apparently don't
1715 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001716 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1717 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001718 [
1719#include <unistd.h>
1720#ifdef _POSIX_THREADS
1721yes
1722#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001723 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1724 AC_MSG_RESULT($unistd_defines_pthreads)
1725
Martin v. Löwis130fb172001-07-19 11:00:41 +00001726 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001727 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1728 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001729 AC_DEFINE(HURD_C_THREADS, 1,
1730 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001731 LIBS="$LIBS -lthreads"
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_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1734 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001735 AC_DEFINE(MACH_C_THREADS, 1,
1736 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001737 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001738 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001739 AC_ARG_WITH([pth],
1740 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1741 [AC_MSG_RESULT($withval)
1742 AC_DEFINE([WITH_THREAD])
1743 AC_DEFINE([HAVE_PTH], 1,
1744 [Define if you have GNU PTH threads.])
1745 LIBS="-lpth $LIBS"
1746 THREADOBJ="Python/thread.o"],
1747 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001748
1749 # Just looking for pthread_create in libpthread is not enough:
1750 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1751 # So we really have to include pthread.h, and then link.
1752 _libs=$LIBS
1753 LIBS="$LIBS -lpthread"
1754 AC_MSG_CHECKING([for pthread_create in -lpthread])
1755 AC_TRY_LINK([#include <pthread.h>
1756
1757void * start_routine (void *arg) { exit (0); }], [
1758pthread_create (NULL, NULL, start_routine, NULL)], [
1759 AC_MSG_RESULT(yes)
1760 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001761 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001762 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001763 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001764 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001765 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001766 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001767 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1768 AC_DEFINE(ATHEOS_THREADS, 1,
1769 [Define this if you have AtheOS threads.])
1770 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001771 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001772 AC_DEFINE(BEOS_THREADS, 1,
1773 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001774 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001775 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001776 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001777 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001778 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001779 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001780 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001781 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001782 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001783 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001784 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001785 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001786 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001787 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001788 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001789 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001790 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001791 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001792 ])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001793
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001794 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1795 LIBS="$LIBS -lmpc"
1796 THREADOBJ="Python/thread.o"
1797 USE_THREAD_MODULE=""])
1798
1799 if test "$posix_threads" != "yes"; then
1800 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1801 LIBS="$LIBS -lthread"
1802 THREADOBJ="Python/thread.o"
1803 USE_THREAD_MODULE=""])
1804 fi
1805
1806 if test "$USE_THREAD_MODULE" != "#"
1807 then
1808 # If the above checks didn't disable threads, (at least) OSF1
1809 # needs this '-threads' argument during linking.
1810 case $ac_sys_system in
1811 OSF1) LDLAST=-threads;;
1812 esac
1813 fi
1814fi
1815
1816if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001817 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001818 AC_DEFINE(_POSIX_THREADS, 1,
1819 [Define if you have POSIX threads,
1820 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001821 fi
1822
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001823 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1824 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001825 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1826 Defined for Solaris 2.6 bug in pthread header.)
1827 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001828 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001829 Define if the Posix semaphores do not work on your system)
1830 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001831 esac
1832
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001833 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1834 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1835 [AC_TRY_RUN([#include <pthread.h>
1836 void *foo(void *parm) {
1837 return NULL;
1838 }
1839 main() {
1840 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001841 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001842 if (pthread_attr_init(&attr)) exit(-1);
1843 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001844 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001845 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001846 }],
1847 ac_cv_pthread_system_supported=yes,
1848 ac_cv_pthread_system_supported=no,
1849 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001850 ])
1851 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1852 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001853 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001854 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001855 AC_CHECK_FUNCS(pthread_sigmask,
1856 [case $ac_sys_system in
1857 CYGWIN*)
1858 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1859 [Define if pthread_sigmask() does not work on your system.])
1860 ;;
1861 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001862fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001863
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001864
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001865# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001866AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001867AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001868AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001869[ --enable-ipv6 Enable ipv6 (with ipv4) support
1870 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001871[ case "$enableval" in
1872 no)
1873 AC_MSG_RESULT(no)
1874 ipv6=no
1875 ;;
1876 *) AC_MSG_RESULT(yes)
1877 AC_DEFINE(ENABLE_IPV6)
1878 ipv6=yes
1879 ;;
1880 esac ],
1881
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001882[
1883dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001884 AC_TRY_RUN([ /* AF_INET6 available check */
1885#include <sys/types.h>
1886#include <sys/socket.h>
1887main()
1888{
1889 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1890 exit(1);
1891 else
1892 exit(0);
1893}
1894],
1895 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001896 ipv6=yes,
1897 AC_MSG_RESULT(no)
1898 ipv6=no,
1899 AC_MSG_RESULT(no)
1900 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001901)
1902
1903if test "$ipv6" = "yes"; then
1904 AC_MSG_CHECKING(if RFC2553 API is available)
1905 AC_TRY_COMPILE([#include <sys/types.h>
1906#include <netinet/in.h>],
1907 [struct sockaddr_in6 x;
1908x.sin6_scope_id;],
1909 AC_MSG_RESULT(yes)
1910 ipv6=yes,
1911 AC_MSG_RESULT(no, IPv6 disabled)
1912 ipv6=no)
1913fi
1914
1915if test "$ipv6" = "yes"; then
1916 AC_DEFINE(ENABLE_IPV6)
1917fi
1918])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001919
1920ipv6type=unknown
1921ipv6lib=none
1922ipv6trylibc=no
1923
1924if test "$ipv6" = "yes"; then
1925 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001926 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1927 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001928 case $i in
1929 inria)
1930 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001931 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001932#include <netinet/in.h>
1933#ifdef IPV6_INRIA_VERSION
1934yes
1935#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001936 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001937 ;;
1938 kame)
1939 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001940 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001941#include <netinet/in.h>
1942#ifdef __KAME__
1943yes
1944#endif],
1945 [ipv6type=$i;
1946 ipv6lib=inet6
1947 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001948 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001949 ;;
1950 linux-glibc)
1951 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001952 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001953#include <features.h>
1954#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1955yes
1956#endif],
1957 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001958 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001959 ;;
1960 linux-inet6)
1961 dnl http://www.v6.linux.or.jp/
1962 if test -d /usr/inet6; then
1963 ipv6type=$i
1964 ipv6lib=inet6
1965 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00001966 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001967 fi
1968 ;;
1969 solaris)
1970 if test -f /etc/netconfig; then
1971 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
1972 ipv6type=$i
1973 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001974 fi
1975 fi
1976 ;;
1977 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001978 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001979#include <sys/param.h>
1980#ifdef _TOSHIBA_INET6
1981yes
1982#endif],
1983 [ipv6type=$i;
1984 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001985 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001986 ;;
1987 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001988 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001989#include </usr/local/v6/include/sys/v6config.h>
1990#ifdef __V6D__
1991yes
1992#endif],
1993 [ipv6type=$i;
1994 ipv6lib=v6;
1995 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001996 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001997 ;;
1998 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001999 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002000#include <sys/param.h>
2001#ifdef _ZETA_MINAMI_INET6
2002yes
2003#endif],
2004 [ipv6type=$i;
2005 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00002006 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00002007 ;;
2008 esac
2009 if test "$ipv6type" != "unknown"; then
2010 break
2011 fi
2012 done
2013 AC_MSG_RESULT($ipv6type)
2014fi
2015
2016if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
2017 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
2018 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
2019 echo "using lib$ipv6lib"
2020 else
2021 if test $ipv6trylibc = "yes"; then
2022 echo "using libc"
2023 else
2024 echo 'Fatal: no $ipv6lib library found. cannot continue.'
2025 echo "You need to fetch lib$ipv6lib.a from appropriate"
2026 echo 'ipv6 kit and compile beforehand.'
2027 exit 1
2028 fi
2029 fi
2030fi
2031
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002032# Check for --with-doc-strings
2033AC_MSG_CHECKING(for --with-doc-strings)
2034AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002035 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002036
2037if test -z "$with_doc_strings"
2038then with_doc_strings="yes"
2039fi
2040if test "$with_doc_strings" != "no"
2041then
2042 AC_DEFINE(WITH_DOC_STRINGS, 1,
2043 [Define if you want documentation strings in extension modules])
2044fi
2045AC_MSG_RESULT($with_doc_strings)
2046
Neil Schemenauera35c6882001-02-27 04:45:05 +00002047# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002048AC_MSG_CHECKING(for --with-tsc)
2049AC_ARG_WITH(tsc,
2050[ --with(out)-tsc enable/disable timestamp counter profile], [
2051if test "$withval" != no
2052then
2053 AC_DEFINE(WITH_TSC, 1,
2054 [Define to profile with the Pentium timestamp counter])
2055 AC_MSG_RESULT(yes)
2056else AC_MSG_RESULT(no)
2057fi],
2058[AC_MSG_RESULT(no)])
2059
2060# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002061AC_MSG_CHECKING(for --with-pymalloc)
2062AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002063 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002064
2065if test -z "$with_pymalloc"
2066then with_pymalloc="yes"
2067fi
2068if test "$with_pymalloc" != "no"
2069then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002070 AC_DEFINE(WITH_PYMALLOC, 1,
2071 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002072fi
2073AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002074
Barry Warsawef82cd72000-06-30 16:21:01 +00002075# Check for --with-wctype-functions
2076AC_MSG_CHECKING(for --with-wctype-functions)
2077AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002078 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2079[
Barry Warsawef82cd72000-06-30 16:21:01 +00002080if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002081then
2082 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2083 [Define if you want wctype.h functions to be used instead of the
2084 one supplied by Python itself. (see Include/unicodectype.h).])
2085 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002086else AC_MSG_RESULT(no)
2087fi],
2088[AC_MSG_RESULT(no)])
2089
Guido van Rossum68242b51996-05-28 22:53:03 +00002090# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002091AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002092DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002093
Guido van Rossume97ee181999-12-20 21:27:22 +00002094# the dlopen() function means we might want to use dynload_shlib.o. some
2095# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002096AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002097
2098# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2099# loading of modules.
2100AC_SUBST(DYNLOADFILE)
2101AC_MSG_CHECKING(DYNLOADFILE)
2102if test -z "$DYNLOADFILE"
2103then
2104 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002105 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2106 if test "$ac_cv_func_dlopen" = yes
2107 then DYNLOADFILE="dynload_shlib.o"
2108 else DYNLOADFILE="dynload_aix.o"
2109 fi
2110 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002111 BeOS*) DYNLOADFILE="dynload_beos.o";;
2112 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002113 Darwin/*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002114 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002115 *)
2116 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2117 # out any dynamic loading
2118 if test "$ac_cv_func_dlopen" = yes
2119 then DYNLOADFILE="dynload_shlib.o"
2120 else DYNLOADFILE="dynload_stub.o"
2121 fi
2122 ;;
2123 esac
2124fi
2125AC_MSG_RESULT($DYNLOADFILE)
2126if test "$DYNLOADFILE" != "dynload_stub.o"
2127then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002128 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2129 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002130fi
2131
Jack Jansenc49e5b72001-06-19 15:00:23 +00002132# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2133
2134AC_SUBST(MACHDEP_OBJS)
2135AC_MSG_CHECKING(MACHDEP_OBJS)
2136if test -z "$MACHDEP_OBJS"
2137then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002138 MACHDEP_OBJS=$extra_machdep_objs
2139else
2140 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002141fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002142AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002143
Guido van Rossum627b2d71993-12-24 10:39:16 +00002144# checks for library functions
Gustavo Niemeyer7bd33c52004-07-22 18:44:01 +00002145AC_CHECK_FUNCS(alarm bind_textdomain_codeset chown clock confstr ctermid \
2146 execv fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002147 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002148 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002149 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002150 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002151 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002152 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002153 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002154 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002155 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Neal Norwitz05a45592006-03-20 06:30:08 +00002156 truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002157
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002158# For some functions, having a definition is not sufficient, since
2159# we want to take their address.
2160AC_MSG_CHECKING(for chroot)
2161AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2162 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2163 AC_MSG_RESULT(yes),
2164 AC_MSG_RESULT(no)
2165)
2166AC_MSG_CHECKING(for link)
2167AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2168 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2169 AC_MSG_RESULT(yes),
2170 AC_MSG_RESULT(no)
2171)
2172AC_MSG_CHECKING(for symlink)
2173AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2174 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2175 AC_MSG_RESULT(yes),
2176 AC_MSG_RESULT(no)
2177)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002178AC_MSG_CHECKING(for fchdir)
2179AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2180 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2181 AC_MSG_RESULT(yes),
2182 AC_MSG_RESULT(no)
2183)
2184AC_MSG_CHECKING(for fsync)
2185AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002186 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002187 AC_MSG_RESULT(yes),
2188 AC_MSG_RESULT(no)
2189)
2190AC_MSG_CHECKING(for fdatasync)
2191AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2192 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2193 AC_MSG_RESULT(yes),
2194 AC_MSG_RESULT(no)
2195)
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002196
Martin v. Löwisd5843682002-11-21 20:41:28 +00002197# On some systems (eg. FreeBSD 5), we would find a definition of the
2198# functions ctermid_r, setgroups in the library, but no prototype
2199# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2200# address to avoid compiler warnings and potential miscompilations
2201# because of the missing prototypes.
2202
2203AC_MSG_CHECKING(for ctermid_r)
2204AC_TRY_COMPILE([
2205#include "confdefs.h"
2206#include <stdio.h>
2207], void* p = ctermid_r,
2208 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2209 AC_MSG_RESULT(yes),
2210 AC_MSG_RESULT(no)
2211)
2212
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002213AC_MSG_CHECKING(for flock)
2214AC_TRY_COMPILE([
2215#include "confdefs.h"
2216#include <sys/file.h>
2217], void* p = flock,
2218 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2219 AC_MSG_RESULT(yes),
2220 AC_MSG_RESULT(no)
2221)
2222
2223AC_MSG_CHECKING(for getpagesize)
2224AC_TRY_COMPILE([
2225#include "confdefs.h"
2226#include <unistd.h>
2227], void* p = getpagesize,
2228 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2229 AC_MSG_RESULT(yes),
2230 AC_MSG_RESULT(no)
2231)
2232
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002233dnl check for true
2234AC_CHECK_PROGS(TRUE, true, /bin/true)
2235
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002236dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2237dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002238AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002239 AC_CHECK_LIB(resolv, inet_aton)
2240)
2241
Martin v. Löwise9416172003-05-03 10:12:45 +00002242AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002243AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002244#include "confdefs.h"
2245#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002246], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002247 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2248 AC_MSG_RESULT(yes),
2249 AC_MSG_RESULT(no)
2250)
2251
2252AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002253AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002254#include "confdefs.h"
Martin v. Löwis86d66262006-02-17 08:40:11 +00002255#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002256#include <sys/socket.h>
2257#include <netinet/in.h>
2258#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002259], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002260 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2261 AC_MSG_RESULT(yes),
2262 AC_MSG_RESULT(no)
2263)
2264
2265AC_MSG_CHECKING(for inet_pton)
2266AC_TRY_COMPILE([
2267#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002268#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002269#include <sys/socket.h>
2270#include <netinet/in.h>
2271#include <arpa/inet.h>
2272], void* p = inet_pton,
2273 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2274 AC_MSG_RESULT(yes),
2275 AC_MSG_RESULT(no)
2276)
2277
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002278# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002279AC_MSG_CHECKING(for setgroups)
2280AC_TRY_COMPILE([
2281#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002282#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002283#ifdef HAVE_GRP_H
2284#include <grp.h>
2285#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002286],
2287void* p = setgroups,
2288 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2289 AC_MSG_RESULT(yes),
2290 AC_MSG_RESULT(no)
2291)
2292
Fred Drake8cef4cf2000-06-28 16:40:38 +00002293# check for openpty and forkpty
2294
Martin v. Löwisfd9a72a2006-01-08 10:07:33 +00002295AC_CHECK_FUNCS(openpty,,
2296 AC_CHECK_LIB(util,openpty,
2297 [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"],
2298 AC_CHECK_LIB(bsd,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lbsd"])
2299 )
2300)
2301AC_CHECK_FUNCS(forkpty,,
2302 AC_CHECK_LIB(util,forkpty,
2303 [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
2304 AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
2305 )
2306)
Fred Drake8cef4cf2000-06-28 16:40:38 +00002307
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002308# check for long file support functions
2309AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2310
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002311AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002312AC_CHECK_FUNCS(getpgrp,
2313 AC_TRY_COMPILE([#include <unistd.h>],
2314 [getpgrp(0);],
2315 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2316 [Define if getpgrp() must be called as getpgrp(0).])
2317 )
2318)
Jack Jansen150753c2003-03-29 22:07:47 +00002319AC_CHECK_FUNCS(setpgrp,
2320 AC_TRY_COMPILE([#include <unistd.h>],
2321 [setpgrp(0,0);],
2322 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2323 [Define if setpgrp() must be called as setpgrp(0, 0).])
2324 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002325)
2326AC_CHECK_FUNCS(gettimeofday,
2327 AC_TRY_COMPILE([#include <sys/time.h>],
2328 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2329 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2330 [Define if gettimeofday() does not have second (timezone) argument
2331 This is the case on Motorola V4 (R40V4.2)])
2332 )
2333)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002334
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002335AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002336AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002337#if defined(MAJOR_IN_MKDEV)
2338#include <sys/mkdev.h>
2339#elif defined(MAJOR_IN_SYSMACROS)
2340#include <sys/sysmacros.h>
2341#else
2342#include <sys/types.h>
2343#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002344],[
2345 makedev(major(0),minor(0));
2346],[
2347 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2348 [Define to 1 if you have the device macros.])
2349 AC_MSG_RESULT(yes)
2350],[
2351 AC_MSG_RESULT(no)
2352])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002353
2354# On OSF/1 V5.1, getaddrinfo is available, but a define
2355# for [no]getaddrinfo in netdb.h.
2356AC_MSG_CHECKING(for getaddrinfo)
2357AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002358#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002359#include <sys/socket.h>
2360#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002361#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002362],[
2363getaddrinfo(NULL, NULL, NULL, NULL);
2364], [
2365AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002366AC_MSG_CHECKING(getaddrinfo bug)
2367AC_TRY_RUN([
2368#include <sys/types.h>
2369#include <netdb.h>
2370#include <string.h>
2371#include <sys/socket.h>
2372#include <netinet/in.h>
2373
2374main()
2375{
2376 int passive, gaierr, inet4 = 0, inet6 = 0;
2377 struct addrinfo hints, *ai, *aitop;
2378 char straddr[INET6_ADDRSTRLEN], strport[16];
2379
2380 for (passive = 0; passive <= 1; passive++) {
2381 memset(&hints, 0, sizeof(hints));
2382 hints.ai_family = AF_UNSPEC;
2383 hints.ai_flags = passive ? AI_PASSIVE : 0;
2384 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002385 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002386 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2387 (void)gai_strerror(gaierr);
2388 goto bad;
2389 }
2390 for (ai = aitop; ai; ai = ai->ai_next) {
2391 if (ai->ai_addr == NULL ||
2392 ai->ai_addrlen == 0 ||
2393 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2394 straddr, sizeof(straddr), strport, sizeof(strport),
2395 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2396 goto bad;
2397 }
2398 switch (ai->ai_family) {
2399 case AF_INET:
2400 if (strcmp(strport, "54321") != 0) {
2401 goto bad;
2402 }
2403 if (passive) {
2404 if (strcmp(straddr, "0.0.0.0") != 0) {
2405 goto bad;
2406 }
2407 } else {
2408 if (strcmp(straddr, "127.0.0.1") != 0) {
2409 goto bad;
2410 }
2411 }
2412 inet4++;
2413 break;
2414 case AF_INET6:
2415 if (strcmp(strport, "54321") != 0) {
2416 goto bad;
2417 }
2418 if (passive) {
2419 if (strcmp(straddr, "::") != 0) {
2420 goto bad;
2421 }
2422 } else {
2423 if (strcmp(straddr, "::1") != 0) {
2424 goto bad;
2425 }
2426 }
2427 inet6++;
2428 break;
2429 case AF_UNSPEC:
2430 goto bad;
2431 break;
2432 default:
2433 /* another family support? */
2434 break;
2435 }
2436 }
2437 }
2438
2439 if (!(inet4 == 0 || inet4 == 2))
2440 goto bad;
2441 if (!(inet6 == 0 || inet6 == 2))
2442 goto bad;
2443
2444 if (aitop)
2445 freeaddrinfo(aitop);
2446 exit(0);
2447
2448 bad:
2449 if (aitop)
2450 freeaddrinfo(aitop);
2451 exit(1);
2452}
2453],
2454AC_MSG_RESULT(good)
2455buggygetaddrinfo=no,
2456AC_MSG_RESULT(buggy)
2457buggygetaddrinfo=yes,
2458AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002459buggygetaddrinfo=yes)], [
2460AC_MSG_RESULT(no)
2461buggygetaddrinfo=yes
2462])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002463
2464if test "$buggygetaddrinfo" = "yes"; then
2465 if test "$ipv6" = "yes"; then
2466 echo 'Fatal: You must get working getaddrinfo() function.'
2467 echo ' or you can specify "--disable-ipv6"'.
2468 exit 1
2469 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002470else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002471 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002472fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002473AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002474
Guido van Rossum627b2d71993-12-24 10:39:16 +00002475# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002476AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002477AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002478AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002479AC_CHECK_MEMBERS([struct stat.st_rdev])
2480AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002481AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002482AC_CHECK_MEMBERS([struct stat.st_gen])
2483AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002484AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002485
2486AC_MSG_CHECKING(for time.h that defines altzone)
2487AC_CACHE_VAL(ac_cv_header_time_altzone,
2488[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2489 ac_cv_header_time_altzone=yes,
2490 ac_cv_header_time_altzone=no)])
2491AC_MSG_RESULT($ac_cv_header_time_altzone)
2492if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002493 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002494fi
2495
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002496was_it_defined=no
2497AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002498AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002499#include <sys/types.h>
2500#include <sys/select.h>
2501#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002502], [;], [
2503 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2504 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2505 (which you can't on SCO ODT 3.0).])
2506 was_it_defined=yes
2507])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002508AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002509
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002510AC_MSG_CHECKING(for addrinfo)
2511AC_CACHE_VAL(ac_cv_struct_addrinfo,
2512AC_TRY_COMPILE([
2513# include <netdb.h>],
2514 [struct addrinfo a],
2515 ac_cv_struct_addrinfo=yes,
2516 ac_cv_struct_addrinfo=no))
2517AC_MSG_RESULT($ac_cv_struct_addrinfo)
2518if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002519 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002520fi
2521
2522AC_MSG_CHECKING(for sockaddr_storage)
2523AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2524AC_TRY_COMPILE([
2525# include <sys/types.h>
2526# include <sys/socket.h>],
2527 [struct sockaddr_storage s],
2528 ac_cv_struct_sockaddr_storage=yes,
2529 ac_cv_struct_sockaddr_storage=no))
2530AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2531if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002532 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002533fi
2534
Guido van Rossum627b2d71993-12-24 10:39:16 +00002535# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002536
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002537AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002538AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002539
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002540works=no
2541AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002542AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2543 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2544)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002545AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002546
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002547works=no
2548AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002549AC_TRY_COMPILE([], [signed char c;], works=yes,
2550 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2551)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002552AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002553
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002554have_prototypes=no
2555AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002556AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2557 AC_DEFINE(HAVE_PROTOTYPES, 1,
2558 [Define if your compiler supports function prototype])
2559 have_prototypes=yes
2560])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002561AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002562
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002563works=no
2564AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002565AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002566#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002567int foo(int x, ...) {
2568 va_list va;
2569 va_start(va, x);
2570 va_arg(va, int);
2571 va_arg(va, char *);
2572 va_arg(va, double);
2573 return 0;
2574}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002575], [return foo(10, "", 3.14);], [
2576 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2577 [Define if your compiler supports variable length function prototypes
2578 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2579 works=yes
2580])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002581AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002582
Dave Cole331708b2004-08-09 04:51:41 +00002583# check for socketpair
2584AC_MSG_CHECKING(for socketpair)
2585AC_TRY_COMPILE([
2586#include <sys/types.h>
2587#include <sys/socket.h>
2588], void *x=socketpair,
2589 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2590 AC_MSG_RESULT(yes),
2591 AC_MSG_RESULT(no)
2592)
2593
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002594# check if sockaddr has sa_len member
2595AC_MSG_CHECKING(if sockaddr has sa_len member)
2596AC_TRY_COMPILE([#include <sys/types.h>
2597#include <sys/socket.h>],
2598[struct sockaddr x;
2599x.sa_len = 0;],
2600 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002601 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002602 AC_MSG_RESULT(no))
2603
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002604va_list_is_array=no
2605AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002606AC_TRY_COMPILE([
2607#ifdef HAVE_STDARG_PROTOTYPES
2608#include <stdarg.h>
2609#else
2610#include <varargs.h>
2611#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002612], [va_list list1, list2; list1 = list2;], , [
2613 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2614 va_list_is_array=yes
2615])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002616AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002617
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002618# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002619AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2620 [Define this if you have some version of gethostbyname_r()])
2621
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002622AC_CHECK_FUNC(gethostbyname_r, [
2623 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2624 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2625 OLD_CFLAGS=$CFLAGS
2626 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2627 AC_TRY_COMPILE([
2628# include <netdb.h>
2629 ], [
2630 char *name;
2631 struct hostent *he, *res;
2632 char buffer[2048];
2633 int buflen = 2048;
2634 int h_errnop;
2635
2636 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2637 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002638 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002639 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2640 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002641 AC_MSG_RESULT(yes)
2642 ], [
2643 AC_MSG_RESULT(no)
2644 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2645 AC_TRY_COMPILE([
2646# include <netdb.h>
2647 ], [
2648 char *name;
2649 struct hostent *he;
2650 char buffer[2048];
2651 int buflen = 2048;
2652 int h_errnop;
2653
2654 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2655 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002656 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002657 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2658 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002659 AC_MSG_RESULT(yes)
2660 ], [
2661 AC_MSG_RESULT(no)
2662 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2663 AC_TRY_COMPILE([
2664# include <netdb.h>
2665 ], [
2666 char *name;
2667 struct hostent *he;
2668 struct hostent_data data;
2669
2670 (void) gethostbyname_r(name, he, &data);
2671 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002672 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002673 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2674 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002675 AC_MSG_RESULT(yes)
2676 ], [
2677 AC_MSG_RESULT(no)
2678 ])
2679 ])
2680 ])
2681 CFLAGS=$OLD_CFLAGS
2682], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002683 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002684])
2685AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2686AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2687AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002688AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002689AC_SUBST(HAVE_GETHOSTBYNAME)
2690
Guido van Rossum627b2d71993-12-24 10:39:16 +00002691# checks for system services
2692# (none yet)
2693
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002694# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002695AC_CHECK_FUNC(__fpu_control,
2696 [],
2697 [AC_CHECK_LIB(ieee, __fpu_control)
2698])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002699
Guido van Rossum93274221997-05-09 02:42:00 +00002700# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002701AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002702AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002703 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2704[
Guido van Rossum93274221997-05-09 02:42:00 +00002705if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002706then
2707 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2708 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2709 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002710else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002711fi],
2712[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002713
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002714# check for --with-libm=...
2715AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002716case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002717Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002718BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002719*) LIBM=-lm
2720esac
Guido van Rossum93274221997-05-09 02:42:00 +00002721AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002722AC_ARG_WITH(libm,
2723 AC_HELP_STRING(--with-libm=STRING, math library),
2724[
Guido van Rossum93274221997-05-09 02:42:00 +00002725if test "$withval" = no
2726then LIBM=
2727 AC_MSG_RESULT(force LIBM empty)
2728elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002729then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002730 AC_MSG_RESULT(set LIBM="$withval")
2731else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002732fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002733[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002734
2735# check for --with-libc=...
2736AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002737AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002738AC_ARG_WITH(libc,
2739 AC_HELP_STRING(--with-libc=STRING, C library),
2740[
Guido van Rossum93274221997-05-09 02:42:00 +00002741if test "$withval" = no
2742then LIBC=
2743 AC_MSG_RESULT(force LIBC empty)
2744elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002745then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002746 AC_MSG_RESULT(set LIBC="$withval")
2747else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002748fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002749[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002750
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002751# check for hypot() in math library
2752LIBS_SAVE=$LIBS
2753LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002754AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002755LIBS=$LIBS_SAVE
2756
Guido van Rossumef2255b2000-03-10 22:30:29 +00002757# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002758AC_CHECK_HEADER(wchar.h, [
2759 AC_DEFINE(HAVE_WCHAR_H, 1,
2760 [Define if the compiler provides a wchar.h header file.])
2761 wchar_h="yes"
2762],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002763wchar_h="no"
2764)
2765
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002766# determine wchar_t size
2767if test "$wchar_h" = yes
2768then
Guido van Rossum67b26592001-10-20 14:21:45 +00002769 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002770fi
2771
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002772AC_MSG_CHECKING(for UCS-4 tcl)
2773have_ucs4_tcl=no
2774AC_TRY_COMPILE([
2775#include <tcl.h>
2776#if TCL_UTF_MAX != 6
2777# error "NOT UCS4_TCL"
2778#endif], [], [
2779 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
2780 have_ucs4_tcl=yes
2781])
2782AC_MSG_RESULT($have_ucs4_tcl)
2783
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002784# check whether wchar_t is signed or not
2785if test "$wchar_h" = yes
2786then
2787 # check whether wchar_t is signed or not
2788 AC_MSG_CHECKING(whether wchar_t is signed)
2789 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
2790 AC_TRY_RUN([
2791 #include <wchar.h>
2792 int main()
2793 {
2794 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 1 : 0);
2795 }
2796 ],
2797 ac_cv_wchar_t_signed=yes,
2798 ac_cv_wchar_t_signed=no,
2799 ac_cv_wchar_t_signed=yes)])
2800 AC_MSG_RESULT($ac_cv_wchar_t_signed)
2801fi
2802
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002803AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002804dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002805AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002806 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2807 [],
2808 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002809
2810if test $enable_unicode = yes
2811then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002812 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002813 case "$have_ucs4_tcl" in
2814 yes) enable_unicode="ucs4"
2815 ;;
2816 *) enable_unicode="ucs2"
2817 ;;
2818 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002819fi
2820
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002821AH_TEMPLATE(Py_UNICODE_SIZE,
2822 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002823case "$enable_unicode" in
2824ucs2) unicode_size="2"
2825 AC_DEFINE(Py_UNICODE_SIZE,2)
2826 ;;
2827ucs4) unicode_size="4"
2828 AC_DEFINE(Py_UNICODE_SIZE,4)
2829 ;;
2830esac
2831
Martin v. Löwis11437992002-04-12 09:54:03 +00002832AH_TEMPLATE(PY_UNICODE_TYPE,
2833 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002834
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002835AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002836if test "$enable_unicode" = "no"
2837then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002838 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002839 AC_MSG_RESULT(not used)
2840else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002841 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002842 AC_DEFINE(Py_USING_UNICODE, 1,
2843 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002844
2845 # wchar_t is only usable if it maps to an unsigned type
2846 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00002847 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002848 then
2849 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002850 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2851 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002852 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002853 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002854 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2855 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2856 then
2857 PY_UNICODE_TYPE="unsigned short"
2858 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2859 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2860 then
2861 PY_UNICODE_TYPE="unsigned long"
2862 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2863 else
2864 PY_UNICODE_TYPE="no type found"
2865 fi
2866 AC_MSG_RESULT($PY_UNICODE_TYPE)
2867fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002868
2869# check for endianness
2870AC_C_BIGENDIAN
2871
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002872# Check whether right shifting a negative integer extends the sign bit
2873# or fills with zeros (like the Cray J90, according to Tim Peters).
2874AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002875AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002876AC_TRY_RUN([
2877int main()
2878{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002879 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002880}
Guido van Rossum3065c942001-09-17 04:03:14 +00002881],
2882ac_cv_rshift_extends_sign=yes,
2883ac_cv_rshift_extends_sign=no,
2884ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002885AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2886if test "$ac_cv_rshift_extends_sign" = no
2887then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002888 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2889 [Define if i>>j for signed int i does not extend the sign bit
2890 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002891fi
2892
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002893# check for getc_unlocked and related locking functions
2894AC_MSG_CHECKING(for getc_unlocked() and friends)
2895AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2896AC_TRY_LINK([#include <stdio.h>],[
2897 FILE *f = fopen("/dev/null", "r");
2898 flockfile(f);
2899 getc_unlocked(f);
2900 funlockfile(f);
2901], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2902AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2903if test "$ac_cv_have_getc_unlocked" = yes
2904then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002905 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2906 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002907fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002908
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002909# check where readline lives
Martin v. Löwis82bca632006-02-10 20:49:30 +00002910# save the value of LIBS so we don't actually link Python with readline
2911LIBS_no_readline=$LIBS
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002912AC_CHECK_LIB(readline, readline)
2913if test "$ac_cv_have_readline_readline" = no
2914then
2915 AC_CHECK_LIB(termcap, readline)
2916fi
2917
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002918# check for readline 2.1
2919AC_CHECK_LIB(readline, rl_callback_handler_install,
2920 AC_DEFINE(HAVE_RL_CALLBACK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002921 [Define if you have readline 2.1]), , )
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002922
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00002923# check for readline 2.2
2924AC_TRY_CPP([#include <readline/readline.h>],
2925have_readline=yes, have_readline=no)
2926if test $have_readline = yes
2927then
2928 AC_EGREP_HEADER([extern int rl_completion_append_character;],
2929 [readline/readline.h],
2930 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
2931 [Define if you have readline 2.2]), )
2932fi
2933
Martin v. Löwis0daad592001-09-30 21:09:59 +00002934# check for readline 4.0
2935AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002936 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002937 [Define if you have readline 4.0]), , )
Martin v. Löwis0daad592001-09-30 21:09:59 +00002938
Guido van Rossum353ae582001-07-10 16:45:32 +00002939# check for readline 4.2
2940AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002941 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
Neal Norwitzfe8e3d92006-01-07 21:07:20 +00002942 [Define if you have readline 4.2]), , )
Guido van Rossum353ae582001-07-10 16:45:32 +00002943
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002944# also in readline 4.2
2945AC_TRY_CPP([#include <readline/readline.h>],
2946have_readline=yes, have_readline=no)
2947if test $have_readline = yes
2948then
2949 AC_EGREP_HEADER([extern int rl_catch_signals;],
2950 [readline/readline.h],
2951 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
2952 [Define if you can turn off readline's signal handling.]), )
2953fi
2954
Martin v. Löwis82bca632006-02-10 20:49:30 +00002955# End of readline checks: restore LIBS
2956LIBS=$LIBS_no_readline
2957
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002958AC_MSG_CHECKING(for broken nice())
2959AC_CACHE_VAL(ac_cv_broken_nice, [
2960AC_TRY_RUN([
2961int main()
2962{
2963 int val1 = nice(1);
2964 if (val1 != -1 && val1 == nice(2))
2965 exit(0);
2966 exit(1);
2967}
Guido van Rossum3065c942001-09-17 04:03:14 +00002968],
2969ac_cv_broken_nice=yes,
2970ac_cv_broken_nice=no,
2971ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002972AC_MSG_RESULT($ac_cv_broken_nice)
2973if test "$ac_cv_broken_nice" = yes
2974then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002975 AC_DEFINE(HAVE_BROKEN_NICE, 1,
2976 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002977fi
2978
Nicholas Bastine62c5c82004-03-21 23:45:42 +00002979AC_MSG_CHECKING(for broken poll())
2980AC_TRY_RUN([
2981#include <poll.h>
2982
2983int main (void)
2984 {
2985 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
2986
2987 close (42);
2988
2989 int poll_test = poll (&poll_struct, 1, 0);
2990
2991 if (poll_test < 0)
2992 {
2993 exit(0);
2994 }
2995 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
2996 {
2997 exit(0);
2998 }
2999 else
3000 {
3001 exit(1);
3002 }
3003 }
3004],
3005ac_cv_broken_poll=yes,
3006ac_cv_broken_poll=no,
3007ac_cv_broken_poll=no)
3008AC_MSG_RESULT($ac_cv_broken_poll)
3009if test "$ac_cv_broken_poll" = yes
3010then
3011 AC_DEFINE(HAVE_BROKEN_POLL, 1,
3012 [Define if poll() sets errno on invalid file descriptors.])
3013fi
3014
Brett Cannon43802422005-02-10 20:48:03 +00003015# Before we can test tzset, we need to check if struct tm has a tm_zone
3016# (which is not required by ISO C or UNIX spec) and/or if we support
3017# tzname[]
3018AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00003019
Brett Cannon43802422005-02-10 20:48:03 +00003020# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003021AC_MSG_CHECKING(for working tzset())
3022AC_CACHE_VAL(ac_cv_working_tzset, [
3023AC_TRY_RUN([
3024#include <stdlib.h>
3025#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00003026#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00003027
3028#if HAVE_TZNAME
3029extern char *tzname[];
3030#endif
3031
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003032int main()
3033{
Brett Cannon18367812003-09-19 00:59:16 +00003034 /* Note that we need to ensure that not only does tzset(3)
3035 do 'something' with localtime, but it works as documented
3036 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00003037 This includes making sure that tzname is set properly if
3038 tm->tm_zone does not exist since it is the alternative way
3039 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00003040
3041 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00003042 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00003043 */
3044
Brett Cannon43802422005-02-10 20:48:03 +00003045 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00003046 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
3047
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003048 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003049 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003050 if (localtime(&groundhogday)->tm_hour != 0)
3051 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003052#if HAVE_TZNAME
3053 /* For UTC, tzname[1] is sometimes "", sometimes " " */
3054 if (strcmp(tzname[0], "UTC") ||
3055 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3056 exit(1);
3057#endif
Brett Cannon18367812003-09-19 00:59:16 +00003058
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003059 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003060 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003061 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003062 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003063#if HAVE_TZNAME
3064 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3065 exit(1);
3066#endif
Brett Cannon18367812003-09-19 00:59:16 +00003067
3068 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3069 tzset();
3070 if (localtime(&groundhogday)->tm_hour != 11)
3071 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003072#if HAVE_TZNAME
3073 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3074 exit(1);
3075#endif
3076
3077#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003078 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3079 exit(1);
3080 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3081 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003082#endif
Brett Cannon18367812003-09-19 00:59:16 +00003083
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003084 exit(0);
3085}
3086],
3087ac_cv_working_tzset=yes,
3088ac_cv_working_tzset=no,
3089ac_cv_working_tzset=no)])
3090AC_MSG_RESULT($ac_cv_working_tzset)
3091if test "$ac_cv_working_tzset" = yes
3092then
3093 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3094 [Define if tzset() actually switches the local timezone in a meaningful way.])
3095fi
3096
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003097# Look for subsecond timestamps in struct stat
3098AC_MSG_CHECKING(for tv_nsec in struct stat)
3099AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3100AC_TRY_COMPILE([#include <sys/stat.h>], [
3101struct stat st;
3102st.st_mtim.tv_nsec = 1;
3103],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003104ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003105ac_cv_stat_tv_nsec=no,
3106ac_cv_stat_tv_nsec=no))
3107AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3108if test "$ac_cv_stat_tv_nsec" = yes
3109then
3110 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3111 [Define if you have struct stat.st_mtim.tv_nsec])
3112fi
3113
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003114# Look for BSD style subsecond timestamps in struct stat
3115AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3116AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3117AC_TRY_COMPILE([#include <sys/stat.h>], [
3118struct stat st;
3119st.st_mtimespec.tv_nsec = 1;
3120],
3121ac_cv_stat_tv_nsec2=yes,
3122ac_cv_stat_tv_nsec2=no,
3123ac_cv_stat_tv_nsec2=no))
3124AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3125if test "$ac_cv_stat_tv_nsec2" = yes
3126then
3127 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3128 [Define if you have struct stat.st_mtimensec])
3129fi
3130
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003131# On HP/UX 11.0, mvwdelch is a block with a return statement
3132AC_MSG_CHECKING(whether mvwdelch is an expression)
3133AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3134AC_TRY_COMPILE([#include <curses.h>], [
3135 int rtn;
3136 rtn = mvwdelch(0,0,0);
3137], ac_cv_mvwdelch_is_expression=yes,
3138 ac_cv_mvwdelch_is_expression=no,
3139 ac_cv_mvwdelch_is_expression=yes))
3140AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3141
3142if test "$ac_cv_mvwdelch_is_expression" = yes
3143then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003144 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3145 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003146fi
3147
3148AC_MSG_CHECKING(whether WINDOW has _flags)
3149AC_CACHE_VAL(ac_cv_window_has_flags,
3150AC_TRY_COMPILE([#include <curses.h>], [
3151 WINDOW *w;
3152 w->_flags = 0;
3153], ac_cv_window_has_flags=yes,
3154 ac_cv_window_has_flags=no,
3155 ac_cv_window_has_flags=no))
3156AC_MSG_RESULT($ac_cv_window_has_flags)
3157
3158
3159if test "$ac_cv_window_has_flags" = yes
3160then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003161 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3162 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003163fi
3164
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003165AC_MSG_CHECKING(for /dev/ptmx)
3166
3167if test -e /dev/ptmx
3168then
3169 AC_MSG_RESULT(yes)
3170 AC_DEFINE(HAVE_DEV_PTMX, 1,
3171 [Define if we have /dev/ptmx.])
3172else
3173 AC_MSG_RESULT(no)
3174fi
3175
Neal Norwitz865400f2003-03-21 01:42:58 +00003176AC_MSG_CHECKING(for /dev/ptc)
3177
3178if test -e /dev/ptc
3179then
3180 AC_MSG_RESULT(yes)
3181 AC_DEFINE(HAVE_DEV_PTC, 1,
3182 [Define if we have /dev/ptc.])
3183else
3184 AC_MSG_RESULT(no)
3185fi
3186
Martin v. Löwis01c04012002-11-11 14:58:44 +00003187AC_CHECK_TYPE(socklen_t,,
3188 AC_DEFINE(socklen_t,int,
3189 Define to `int' if <sys/socket.h> does not define.),[
3190#ifdef HAVE_SYS_TYPES_H
3191#include <sys/types.h>
3192#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003193#ifdef HAVE_SYS_SOCKET_H
3194#include <sys/socket.h>
3195#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003196])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003197
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003198AC_SUBST(THREADHEADERS)
3199
3200for h in `(cd $srcdir;echo Python/thread_*.h)`
3201do
3202 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3203done
3204
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003205AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003206SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003207AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003208for dir in $SRCDIRS; do
3209 if test ! -d $dir; then
3210 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003211 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003212done
3213AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003214
Guido van Rossum627b2d71993-12-24 10:39:16 +00003215# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003216AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3217AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003218
3219echo "creating Setup"
3220if test ! -f Modules/Setup
3221then
3222 cp $srcdir/Modules/Setup.dist Modules/Setup
3223fi
3224
3225echo "creating Setup.local"
3226if test ! -f Modules/Setup.local
3227then
3228 echo "# Edit this file for local setup changes" >Modules/Setup.local
3229fi
3230
3231echo "creating Makefile"
3232$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3233 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003234 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003235mv config.c Modules