blob: 8f7dd8c8e1a4c21ac56323028d7625b34074ef2c [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öwis97017322002-04-12 17:25:21 +00007AC_PREREQ(2.53)
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.
Martin v. Löwis99968282004-09-15 06:02:54 +0000143 OpenBSD/2.* | OpenBSD/3.@<:@0123456@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000144 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000145 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
146 # of union __?sigval. Reported by Stuart Bishop.
147 SunOS/5.6)
148 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000149 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
150 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000151 # Reconfirmed for 7.1.4 by Martin v. Loewis.
152 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000153 define_xopen_source=no;;
154 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000155 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000156 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000157 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000158 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
159 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
160 # this is fixed in 10.3, which identifies itself as Darwin/7.*
161 # This should hopefully be fixed in FreeBSD 4.9
162 FreeBSD/4.8* | Darwin/6* )
163 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000164 # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
165 # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
166 # or has another value. By not (re)defining it, the defaults come in place.
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000167 AIX/4)
168 define_xopen_source=no;;
Trent Mickaf16e8c2004-08-25 23:55:59 +0000169 AIX/5)
170 if test `uname -r` -eq 1; then
171 define_xopen_source=no
172 fi
173 ;;
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000174 # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE
175 # disables platform specific features beyond repair.
176 Darwin/8.*)
177 define_xopen_source=no
178 ;;
179
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000180esac
181
182if test $define_xopen_source = yes
183then
Skip Montanarof0d5f792004-08-15 14:08:23 +0000184 # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
185 # defined precisely as g++ defines it
Martin v. Löwis7dece662005-11-26 11:38:24 +0000186 # Furthermore, on Solaris 10, XPG6 requires the use of a C99
187 # compiler
Skip Montanarof0d5f792004-08-15 14:08:23 +0000188 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis7dece662005-11-26 11:38:24 +0000189 SunOS/5.8|SunOS/5.9|SunOS/5.10)
Skip Montanarof0d5f792004-08-15 14:08:23 +0000190 AC_DEFINE(_XOPEN_SOURCE, 500,
191 Define to the level of X/Open that your system supports)
192 ;;
193 *)
194 AC_DEFINE(_XOPEN_SOURCE, 600,
195 Define to the level of X/Open that your system supports)
196 ;;
197 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000198
199 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
200 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
201 # several APIs are not declared. Since this is also needed in some
202 # cases for HP-UX, we define it globally.
Martin v. Löwis7dece662005-11-26 11:38:24 +0000203 # except for Solaris 10, where it must not be defined,
204 # as it implies XPG4.2
205 case $ac_sys_system/$ac_sys_release in
206 SunOS/5.10)
207 ;;
208 *)
209 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1,
210 Define to activate Unix95-and-earlier features)
211 ;;
212 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000213
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000214 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
215
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000216fi
217
Guido van Rossum91922671997-10-09 20:24:13 +0000218#
219# SGI compilers allow the specification of the both the ABI and the
220# ISA on the command line. Depending on the values of these switches,
221# different and often incompatable code will be generated.
222#
223# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
224# thus supply support for various ABI/ISA combinations. The MACHDEP
225# variable is also adjusted.
226#
227AC_SUBST(SGI_ABI)
228if test ! -z "$SGI_ABI"
229then
230 CC="cc $SGI_ABI"
231 LDFLAGS="$SGI_ABI $LDFLAGS"
232 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
233fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000234AC_MSG_RESULT($MACHDEP)
235
Jack Jansen83f898c2002-12-30 22:23:40 +0000236# And add extra plat-mac for darwin
237AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000238AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000239AC_MSG_CHECKING(EXTRAPLATDIR)
240if test -z "$EXTRAPLATDIR"
241then
242 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000243 darwin)
244 EXTRAPLATDIR="\$(PLATMACDIRS)"
245 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
246 ;;
247 *)
248 EXTRAPLATDIR=""
249 EXTRAMACHDEPPATH=""
250 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000251 esac
252fi
253AC_MSG_RESULT($EXTRAPLATDIR)
254
Jack Jansen6b08a402004-06-03 12:41:45 +0000255# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
256# it may influence the way we can build extensions, so distutils
257# needs to check it
258AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
259CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
260
Guido van Rossum627b2d71993-12-24 10:39:16 +0000261# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000262
263# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
264# for debug/optimization stuff. BASECFLAGS is for flags that are required
265# just to get things to compile and link. Users are free to override OPT
266# when running configure or make. The build should not break if they do.
267# BASECFLAGS should generally not be messed with, however.
268
269# XXX shouldn't some/most/all of this code be merged with the stuff later
270# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000271AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000272AC_ARG_WITH(gcc,
273 AC_HELP_STRING(--without-gcc,never use gcc),
274[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000275 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000276 no) CC=cc
277 without_gcc=yes;;
278 yes) CC=gcc
279 without_gcc=no;;
280 *) CC=$withval
281 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000282 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000283 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000284 AIX*) CC=cc_r
285 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000286 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000287 case $BE_HOST_CPU in
288 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000289 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000290 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000291 BASECFLAGS="$BASECFLAGS -export pragma"
292 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000293 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000294 ;;
295 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000296 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000297 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000298 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000299 ;;
300 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000301 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000302 ;;
303 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000304 AR="\$(srcdir)/Modules/ar_beos"
305 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000306 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000307 Monterey*)
308 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000309 without_gcc=;;
310 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000311 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000312AC_MSG_RESULT($without_gcc)
313
Guido van Rossum27552902001-01-23 01:52:26 +0000314AC_SUBST(CXX)
Guido van Rossum95012191999-12-16 17:50:52 +0000315AC_SUBST(MAINOBJ)
Fred Drakea1a84e72001-03-06 05:52:16 +0000316MAINOBJ=python.o
Guido van Rossum95012191999-12-16 17:50:52 +0000317AC_MSG_CHECKING(for --with-cxx=<compiler>)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000318AC_ARG_WITH(cxx,
319 AC_HELP_STRING(--with-cxx=<compiler>, enable C++ support),
320[
Martin v. Löwis537970f2000-12-13 17:37:02 +0000321 check_cxx=no
Guido van Rossum95012191999-12-16 17:50:52 +0000322 case $withval in
323 no) CXX=
324 with_cxx=no;;
325 *) CXX=$withval
Fred Drakea1a84e72001-03-06 05:52:16 +0000326 MAINOBJ=ccpython.o
Guido van Rossum95012191999-12-16 17:50:52 +0000327 with_cxx=$withval;;
328 esac], [
329 with_cxx=no
Martin v. Löwis537970f2000-12-13 17:37:02 +0000330 check_cxx=yes
Guido van Rossum95012191999-12-16 17:50:52 +0000331])
332AC_MSG_RESULT($with_cxx)
Martin v. Löwis537970f2000-12-13 17:37:02 +0000333
Michael W. Hudson54241132001-12-07 15:38:26 +0000334if test "$with_cxx" = "yes"
335then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000336 AC_MSG_ERROR([must supply a compiler when using --with-cxx])
Michael W. Hudson54241132001-12-07 15:38:26 +0000337fi
338
Martin v. Löwis537970f2000-12-13 17:37:02 +0000339dnl The following fragment works similar to AC_PROG_CXX.
340dnl It does not fail if CXX is not found, and it is not executed if
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000341dnl --without-cxx was given.
Martin v. Löwis537970f2000-12-13 17:37:02 +0000342dnl Finally, it does not test whether CXX is g++.
343
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000344dnl Autoconf 2.5x does not have AC_PROG_CXX_WORKS anymore
345ifdef([AC_PROG_CXX_WORKS],[],
346 [AC_DEFUN([AC_PROG_CXX_WORKS],
347 [AC_LANG_PUSH(C++)dnl
348 _AC_COMPILER_EXEEXT
349 AC_LANG_POP()
350 ]
351)])
352
Martin v. Löwis537970f2000-12-13 17:37:02 +0000353if test "$check_cxx" = "yes"
354then
355 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
356 if test "$CXX" = "notfound"
357 then
358 CXX=
359 else
360 AC_PROG_CXX_WORKS
361 fi
362fi
363
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000364# If the user switches compilers, we can't believe the cache
365if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
366then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000367 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
368(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000369fi
370
Guido van Rossum627b2d71993-12-24 10:39:16 +0000371AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000372
373# checks for UNIX variants that set C preprocessor variables
374AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000375
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000376# Check for unsupported systems
377case $ac_sys_system/$ac_sys_release in
Skip Montanaroce59c042004-01-17 14:19:44 +0000378Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000379 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
380 echo See README for details.
381 exit 1;;
382esac
383
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000384AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000385AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000386AC_ARG_WITH(suffix,
387 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
388[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000389 case $withval in
390 no) EXEEXT=;;
391 yes) EXEEXT=.exe;;
392 *) EXEEXT=$withval;;
393 esac])
394AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000395
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000396# Test whether we're running on a non-case-sensitive system, in which
397# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000398AC_SUBST(BUILDEXEEXT)
399AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000400if test ! -d CaseSensitiveTestDir; then
401mkdir CaseSensitiveTestDir
402fi
403
404if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000405then
Jack Jansen1999ef42001-12-06 21:47:20 +0000406 AC_MSG_RESULT(yes)
407 BUILDEXEEXT=.exe
408else
409 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000410 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000411fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000412rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000413
Guido van Rossumdd997f71998-10-07 19:58:26 +0000414case $MACHDEP in
415bsdos*)
416 case $CC in
417 gcc) CC="$CC -D_HAVE_BSDI";;
418 esac;;
419esac
420
Guido van Rossum84561611997-08-21 00:08:11 +0000421case $ac_sys_system in
422hp*|HP*)
423 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000424 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000425 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000426Monterey*)
427 case $CC in
428 cc) CC="$CC -Wl,-Bexport";;
429 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000430SunOS*)
431 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000432 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000433 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000434esac
435
Martin v. Löwise8964d42001-03-06 12:09:07 +0000436
Neil Schemenauer61c51152001-01-26 16:18:16 +0000437AC_SUBST(LIBRARY)
438AC_MSG_CHECKING(LIBRARY)
439if test -z "$LIBRARY"
440then
441 LIBRARY='libpython$(VERSION).a'
442fi
443AC_MSG_RESULT($LIBRARY)
444
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000445# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000446# name of the library into which to insert object files). BLDLIBRARY is also
447# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
448# is blank as the main program is not linked directly against LDLIBRARY.
449# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
450# systems without shared libraries, LDLIBRARY is the same as LIBRARY
451# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
452# DLLLIBRARY is the shared (i.e., DLL) library.
453#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000454# RUNSHARED is used to run shared python without installed libraries
455#
456# INSTSONAME is the name of the shared library that will be use to install
457# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000458AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000459AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000460AC_SUBST(BLDLIBRARY)
461AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000462AC_SUBST(INSTSONAME)
463AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000464LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000465BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000466INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000467DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000468LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000469RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000470
Guido van Rossumfb842551997-08-06 23:42:07 +0000471# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000472# If CXX is set, and if it is needed to link a main function that was
473# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
474# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000475# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000476# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000477AC_SUBST(LINKCC)
478AC_MSG_CHECKING(LINKCC)
479if test -z "$LINKCC"
480then
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000481 if test -z "$CXX"; then
482 LINKCC="\$(PURIFY) \$(CC)"
483 else
Martin v. Löwis147fbe52005-08-07 21:09:30 +0000484 echo 'extern "C" void foo();int main(){foo();}' > conftest_a.cc
485 $CXX -c conftest_a.cc # 2>&5
486 echo 'void foo(){}' > conftest_b.$ac_ext
487 $CC -c conftest_b.$ac_ext # 2>&5
488 if $CC -o conftest$ac_exeext conftest_a.$ac_objext conftest_b.$ac_objext 2>&5 \
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000489 && test -s conftest$ac_exeext && ./conftest$ac_exeext
490 then
491 LINKCC="\$(PURIFY) \$(CC)"
492 else
493 LINKCC="\$(PURIFY) \$(CXX)"
494 fi
495 rm -fr conftest*
496 fi
Guido van Rossumfb842551997-08-06 23:42:07 +0000497 case $ac_sys_system in
498 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000499 exp_extra="\"\""
500 if test $ac_sys_release -ge 5 -o \
501 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
502 exp_extra="."
503 fi
504 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000505 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000506 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000507 esac
508fi
509AC_MSG_RESULT($LINKCC)
510
Martin v. Löwis1142de32002-03-29 16:28:31 +0000511AC_MSG_CHECKING(for --enable-shared)
512AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000513 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000514
Martin v. Löwis1142de32002-03-29 16:28:31 +0000515if test -z "$enable_shared"
516then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000517 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000518 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000519 enable_shared="yes";;
520 *)
521 enable_shared="no";;
522 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000523fi
524AC_MSG_RESULT($enable_shared)
525
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000526AC_MSG_CHECKING(for --enable-profiling)
527AC_ARG_ENABLE(profiling,
528 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
529[ac_save_cc="$CC"
530 CC="$CC -pg"
531 AC_TRY_RUN([int main() { return 0; }],
532 ac_enable_profiling="yes",
533 ac_enable_profiling="no",
534 ac_enable_profiling="no")
535 CC="$ac_save_cc"])
536AC_MSG_RESULT($ac_enable_profiling)
537
538case "$ac_enable_profiling" in
539 "yes")
540 BASECFLAGS="-pg $BASECFLAGS"
541 LDFLAGS="-pg $LDFLAGS"
542 ;;
543esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000544
545AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000546
Guido van Rossumb8552162001-09-05 14:58:11 +0000547# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
548# library that we build, but we do not want to link against it (we
549# will find it with a -framework option). For this reason there is an
550# extra variable BLDLIBRARY against which Python and the extension
551# modules are linked, BLDLIBRARY. This is normally the same as
552# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000553if test "$enable_framework"
554then
555 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000556 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000557 BLDLIBRARY=''
558else
559 BLDLIBRARY='$(LDLIBRARY)'
560fi
561
Martin v. Löwis1142de32002-03-29 16:28:31 +0000562# Other platforms follow
563if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000564 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000565 case $ac_sys_system in
566 BeOS*)
567 LDLIBRARY='libpython$(VERSION).so'
568 ;;
569 CYGWIN*)
570 LDLIBRARY='libpython$(VERSION).dll.a'
571 DLLLIBRARY='libpython$(VERSION).dll'
572 ;;
573 SunOS*)
574 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000575 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000576 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000577 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000578 ;;
Hye-Shik Chang33761492004-10-26 09:53:46 +0000579 Linux*|GNU*|NetBSD*|FreeBSD*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000580 LDLIBRARY='libpython$(VERSION).so'
581 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000582 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000583 case $ac_sys_system in
584 FreeBSD*)
585 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
586 ;;
587 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000588 INSTSONAME="$LDLIBRARY".$SOVERSION
589 ;;
590 hp*|HP*)
591 LDLIBRARY='libpython$(VERSION).sl'
592 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000593 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000594 ;;
595 OSF*)
596 LDLIBRARY='libpython$(VERSION).so'
597 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000598 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000599 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000600 atheos*)
601 LDLIBRARY='libpython$(VERSION).so'
602 BLDLIBRARY='-L. -lpython$(VERSION)'
603 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
604 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000605 esac
Jason Tishler30765592003-09-04 11:04:06 +0000606else # shared is disabled
607 case $ac_sys_system in
608 CYGWIN*)
609 BLDLIBRARY='$(LIBRARY)'
610 LDLIBRARY='libpython$(VERSION).dll.a'
611 ;;
612 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000613fi
614
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000615AC_MSG_RESULT($LDLIBRARY)
616
Guido van Rossum627b2d71993-12-24 10:39:16 +0000617AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000618AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000619AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000620
621case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000622bsdos*|hp*|HP*)
623 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000624 if test -z "$INSTALL"
625 then
626 INSTALL="${srcdir}/install-sh -c"
627 fi
628esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000629AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000630
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000631# Not every filesystem supports hard links
632AC_SUBST(LN)
633if test -z "$LN" ; then
634 case $ac_sys_system in
635 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000636 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000637 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000638 *) LN=ln;;
639 esac
640fi
641
Fred Drake9f715822001-07-11 06:27:00 +0000642# Check for --with-pydebug
643AC_MSG_CHECKING(for --with-pydebug)
644AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000645 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
646[
Fred Drake9f715822001-07-11 06:27:00 +0000647if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000648then
649 AC_DEFINE(Py_DEBUG, 1,
650 [Define if you want to build an interpreter with many run-time checks.])
651 AC_MSG_RESULT(yes);
652 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000653else AC_MSG_RESULT(no); Py_DEBUG='false'
654fi],
655[AC_MSG_RESULT(no)])
656
Skip Montanarodecc6a42003-01-01 20:07:49 +0000657# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
658# merged with this chunk of code?
659
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000660# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000661# ------------------------
662# (The following bit of code is complicated enough - please keep things
663# indented properly. Just pretend you're editing Python code. ;-)
664
665# There are two parallel sets of case statements below, one that checks to
666# see if OPT was set and one that does BASECFLAGS setting based upon
667# compiler and platform. BASECFLAGS tweaks need to be made even if the
668# user set OPT.
669
670# tweak OPT based on compiler and platform, only if the user didn't set
671# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000672AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000673if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000674then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000675 case $GCC in
676 yes)
677 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000678 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000679 if test "$Py_DEBUG" = 'true' ; then
680 # Optimization messes up debuggers, so turn it off for
681 # debug builds.
682 OPT="-g -Wall -Wstrict-prototypes"
683 else
684 OPT="-g -O3 -Wall -Wstrict-prototypes"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000685 fi
686 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000687 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000688 OPT="-O3 -Wall -Wstrict-prototypes"
689 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000690 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000691 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000692 SCO_SV*) OPT="$OPT -m486 -DSCO5"
693 ;;
694 esac
Fred Drake9f715822001-07-11 06:27:00 +0000695 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000696
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000697 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000698 OPT="-O"
699 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000700 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000701
702 # The current (beta) Monterey compiler dies with optimizations
703 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000704 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000705 Monterey*)
706 OPT=""
707 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000708 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000709
Guido van Rossum4e8af441994-08-19 15:33:54 +0000710fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000711
Skip Montanarodecc6a42003-01-01 20:07:49 +0000712AC_SUBST(BASECFLAGS)
713# tweak BASECFLAGS based on compiler and platform
714case $GCC in
715yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000716 # Python violates C99 rules, by casting between incompatible
717 # pointer types. GCC may generate bad code as a result of that,
718 # so use -fno-strict-aliasing if supported.
719 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
720 ac_save_cc="$CC"
721 CC="$CC -fno-strict-aliasing"
722 AC_TRY_RUN([int main() { return 0; }],
723 ac_cv_no_strict_aliasing_ok=yes,
724 ac_cv_no_strict_aliasing_ok=no,
725 ac_cv_no_strict_aliasing_ok=no)
726 CC="$ac_save_cc"
727 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
728 if test $ac_cv_no_strict_aliasing_ok = yes
729 then
730 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
731 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000732 case $ac_sys_system in
733 SCO_SV*)
734 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
735 ;;
736 # is there any other compiler on Darwin besides gcc?
737 Darwin*)
Jack Jansene0040412003-07-23 22:17:28 +0000738 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000739 ;;
740 esac
741 ;;
742
743*)
744 case $ac_sys_system in
745 OpenUNIX*|UnixWare*)
746 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
747 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000748 OSF*)
749 BASECFLAGS="$BASECFLAGS -ieee -std"
750 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000751 SCO_SV*)
752 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
753 ;;
754 esac
755 ;;
756esac
757
Fred Drakee1ceaa02001-12-04 20:55:47 +0000758if test "$Py_DEBUG" = 'true'; then
759 :
760else
761 OPT="-DNDEBUG $OPT"
762fi
763
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000764if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000765then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000766 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000767fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000768
Guido van Rossum91922671997-10-09 20:24:13 +0000769AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
770AC_CACHE_VAL(ac_cv_opt_olimit_ok,
771[ac_save_cc="$CC"
772CC="$CC -OPT:Olimit=0"
773AC_TRY_RUN([int main() { return 0; }],
774 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000775 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000776 ac_cv_opt_olimit_ok=no)
777CC="$ac_save_cc"])
778AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000779if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000780 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000781 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
782 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
783 # environment?
784 Darwin*)
785 ;;
786 *)
787 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
788 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000789 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000790else
791 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
792 AC_CACHE_VAL(ac_cv_olimit_ok,
793 [ac_save_cc="$CC"
794 CC="$CC -Olimit 1500"
795 AC_TRY_RUN([int main() { return 0; }],
796 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000797 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000798 ac_cv_olimit_ok=no)
799 CC="$ac_save_cc"])
800 AC_MSG_RESULT($ac_cv_olimit_ok)
801 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000802 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000803 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000804fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000805
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000806# On some compilers, pthreads are available without further options
807# (e.g. MacOS X). On some of these systems, the compiler will not
808# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
809# So we have to see first whether pthreads are available without
810# options before we can check whether -Kpthread improves anything.
811AC_MSG_CHECKING(whether pthreads are available without options)
812AC_CACHE_VAL(ac_cv_pthread_is_default,
813[AC_TRY_RUN([
814#include <pthread.h>
815
816void* routine(void* p){return NULL;}
817
818int main(){
819 pthread_t p;
820 if(pthread_create(&p,NULL,routine,NULL)!=0)
821 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000822 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000823 return 0;
824}
825],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000826[
827 ac_cv_pthread_is_default=yes
828 ac_cv_kthread=no
829 ac_cv_pthread=no
830],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000831 ac_cv_pthread_is_default=no,
832 ac_cv_pthread_is_default=no)
833])
834AC_MSG_RESULT($ac_cv_pthread_is_default)
835
836
837if test $ac_cv_pthread_is_default = yes
838then
839 ac_cv_kpthread=no
840else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000841# -Kpthread, if available, provides the right #defines
842# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000843# Some compilers won't report that they do not support -Kpthread,
844# so we need to run a program to see whether it really made the
845# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000846AC_MSG_CHECKING(whether $CC accepts -Kpthread)
847AC_CACHE_VAL(ac_cv_kpthread,
848[ac_save_cc="$CC"
849CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000850AC_TRY_RUN([
851#include <pthread.h>
852
853void* routine(void* p){return NULL;}
854
855int main(){
856 pthread_t p;
857 if(pthread_create(&p,NULL,routine,NULL)!=0)
858 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000859 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000860 return 0;
861}
862],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000863 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000864 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000865 ac_cv_kpthread=no)
866CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000867AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000868fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000869
Skip Montanarod8d39a02003-07-10 20:44:10 +0000870if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000871then
872# -Kthread, if available, provides the right #defines
873# and linker options to make pthread_create available
874# Some compilers won't report that they do not support -Kthread,
875# so we need to run a program to see whether it really made the
876# function available.
877AC_MSG_CHECKING(whether $CC accepts -Kthread)
878AC_CACHE_VAL(ac_cv_kthread,
879[ac_save_cc="$CC"
880CC="$CC -Kthread"
881AC_TRY_RUN([
882#include <pthread.h>
883
884void* routine(void* p){return NULL;}
885
886int main(){
887 pthread_t p;
888 if(pthread_create(&p,NULL,routine,NULL)!=0)
889 return 1;
890 (void)pthread_detach(p);
891 return 0;
892}
893],
894 ac_cv_kthread=yes,
895 ac_cv_kthread=no,
896 ac_cv_kthread=no)
897CC="$ac_save_cc"])
898AC_MSG_RESULT($ac_cv_kthread)
899fi
900
Skip Montanarod8d39a02003-07-10 20:44:10 +0000901if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000902then
903# -pthread, if available, provides the right #defines
904# and linker options to make pthread_create available
905# Some compilers won't report that they do not support -pthread,
906# so we need to run a program to see whether it really made the
907# function available.
908AC_MSG_CHECKING(whether $CC accepts -pthread)
909AC_CACHE_VAL(ac_cv_thread,
910[ac_save_cc="$CC"
911CC="$CC -pthread"
912AC_TRY_RUN([
913#include <pthread.h>
914
915void* routine(void* p){return NULL;}
916
917int main(){
918 pthread_t p;
919 if(pthread_create(&p,NULL,routine,NULL)!=0)
920 return 1;
921 (void)pthread_detach(p);
922 return 0;
923}
924],
925 ac_cv_pthread=yes,
926 ac_cv_pthread=no,
927 ac_cv_pthread=no)
928CC="$ac_save_cc"])
929AC_MSG_RESULT($ac_cv_pthread)
930fi
931
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000932# If we have set a CC compiler flag for thread support then
933# check if it works for CXX, too.
934ac_cv_cxx_thread=no
935if test ! -z "$CXX"
936then
937AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
938ac_save_cxx="$CXX"
939
940if test "$ac_cv_kpthread" = "yes"
941then
Martin v. Löwis519adae2003-09-20 10:47:47 +0000942 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000943 ac_cv_cxx_thread=yes
944elif test "$ac_cv_kthread" = "yes"
945then
946 CXX="$CXX -Kthread"
947 ac_cv_cxx_thread=yes
948elif test "$ac_cv_pthread" = "yes"
949then
950 CXX="$CXX -pthread"
951 ac_cv_cxx_thread=yes
952fi
953
954if test $ac_cv_cxx_thread = yes
955then
956 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
957 $CXX -c conftest.$ac_ext 2>&5
958 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
959 && test -s conftest$ac_exeext && ./conftest$ac_exeext
960 then
961 ac_cv_cxx_thread=yes
962 else
963 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000964 fi
965 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000966fi
Brett Cannonc601e0f2004-11-07 01:24:12 +0000967AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000968fi
Martin v. Löwis519adae2003-09-20 10:47:47 +0000969CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000970
Fred Drakece81d592000-07-09 14:39:29 +0000971dnl # check for ANSI or K&R ("traditional") preprocessor
972dnl AC_MSG_CHECKING(for C preprocessor type)
973dnl AC_TRY_COMPILE([
974dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
975dnl int foo;
976dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
977dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
978dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +0000979
Guido van Rossum627b2d71993-12-24 10:39:16 +0000980# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000981AC_HEADER_STDC
Martin v. Löwisc3001752005-01-23 09:27:24 +0000982AC_CHECK_HEADERS(curses.h dlfcn.h fcntl.h grp.h shadow.h langinfo.h \
Skip Montanaro7befb992004-02-10 16:50:21 +0000983libintl.h ncurses.h poll.h pthread.h \
984stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +0000985unistd.h utime.h \
Anthony Baxter8a560de2004-10-13 15:30:56 +0000986sys/audioio.h sys/bsdtty.h sys/file.h sys/loadavg.h sys/lock.h sys/mkdev.h \
987sys/modem.h \
Andrew M. Kuchling881fd902001-07-14 20:55:52 +0000988sys/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 +0000989sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +0000990sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
991bluetooth/bluetooth.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000992AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +0000993AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +0000994
Martin v. Löwisae2830c2004-09-18 09:54:52 +0000995# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +0000996AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +0000997#ifdef HAVE_CURSES_H
998#include <curses.h>
999#endif
1000])
Martin v. Löwisae2830c2004-09-18 09:54:52 +00001001
Guido van Rossum627b2d71993-12-24 10:39:16 +00001002# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001003was_it_defined=no
1004AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001005AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
1006 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
1007])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001008AC_MSG_RESULT($was_it_defined)
1009
Neal Norwitz11690112002-07-30 01:08:28 +00001010# Check whether using makedev requires defining _OSF_SOURCE
1011AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001012AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001013 [ makedev(0, 0) ],
1014 ac_cv_has_makedev=yes,
1015 ac_cv_has_makedev=no)
1016if test "$ac_cv_has_makedev" = "no"; then
1017 # we didn't link, try if _OSF_SOURCE will allow us to link
1018 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001019#define _OSF_SOURCE 1
1020#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001021 ],
1022 [ makedev(0, 0) ],
1023 ac_cv_has_makedev=yes,
1024 ac_cv_has_makedev=no)
1025 if test "$ac_cv_has_makedev" = "yes"; then
1026 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1027 fi
1028fi
1029AC_MSG_RESULT($ac_cv_has_makedev)
1030if test "$ac_cv_has_makedev" = "yes"; then
1031 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1032fi
1033
Martin v. Löwis399a6892002-10-04 10:22:02 +00001034# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1035# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1036# defined, but the compiler does not support pragma redefine_extname,
1037# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1038# structures (such as rlimit64) without declaring them. As a
1039# work-around, disable LFS on such configurations
1040
1041use_lfs=yes
1042AC_MSG_CHECKING(Solaris LFS bug)
1043AC_TRY_COMPILE([
1044#define _LARGEFILE_SOURCE 1
1045#define _FILE_OFFSET_BITS 64
1046#include <sys/resource.h>
1047],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1048AC_MSG_RESULT($sol_lfs_bug)
1049if test "$sol_lfs_bug" = "yes"; then
1050 use_lfs=no
1051fi
1052
1053if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001054# Two defines needed to enable largefile support on various platforms
1055# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001056AC_DEFINE(_LARGEFILE_SOURCE, 1,
1057[This must be defined on some systems to enable large file support.])
1058AC_DEFINE(_FILE_OFFSET_BITS, 64,
1059[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001060fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001061
Guido van Rossum300fda71996-08-19 21:58:16 +00001062# Add some code to confdefs.h so that the test for off_t works on SCO
1063cat >> confdefs.h <<\EOF
1064#if defined(SCO_DS)
1065#undef _OFF_T
1066#endif
1067EOF
1068
Guido van Rossumef2255b2000-03-10 22:30:29 +00001069# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001070AC_TYPE_MODE_T
1071AC_TYPE_OFF_T
1072AC_TYPE_PID_T
1073AC_TYPE_SIGNAL
1074AC_TYPE_SIZE_T
1075AC_TYPE_UID_T
Guido van Rossum627b2d71993-12-24 10:39:16 +00001076
Guido van Rossumef2255b2000-03-10 22:30:29 +00001077# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001078# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001079AC_CHECK_SIZEOF(int, 4)
1080AC_CHECK_SIZEOF(long, 4)
1081AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001082AC_CHECK_SIZEOF(short, 2)
1083AC_CHECK_SIZEOF(float, 4)
1084AC_CHECK_SIZEOF(double, 8)
1085AC_CHECK_SIZEOF(fpos_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001086
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001087AC_MSG_CHECKING(for long long support)
1088have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001089AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1090 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1091 have_long_long=yes
1092])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001093AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001094if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001095AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001096fi
1097
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001098AC_MSG_CHECKING(for uintptr_t support)
1099have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001100AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
1101 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
1102 have_uintptr_t=yes
1103])
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001104AC_MSG_RESULT($have_uintptr_t)
1105if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001106AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001107fi
1108
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001109# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1110AC_MSG_CHECKING(size of off_t)
1111AC_CACHE_VAL(ac_cv_sizeof_off_t,
1112[AC_TRY_RUN([#include <stdio.h>
1113#include <sys/types.h>
1114main()
1115{
1116 FILE *f=fopen("conftestval", "w");
1117 if (!f) exit(1);
1118 fprintf(f, "%d\n", sizeof(off_t));
1119 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001120}],
1121ac_cv_sizeof_off_t=`cat conftestval`,
1122ac_cv_sizeof_off_t=0,
1123ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001124])
1125AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001126AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1127[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001128
1129AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001130if test "$have_long_long" = yes -a \
1131 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1132 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001133 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1134 [Defined to enable large file support when an off_t is bigger than a long
1135 and long long is available and at least as big as an off_t. You may need
1136 to add some flags for configuration and compilation to enable this mode.
1137 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001138 AC_MSG_RESULT(yes)
1139else
1140 AC_MSG_RESULT(no)
1141fi
1142
Fred Drakea3f6e912000-06-29 20:44:47 +00001143# AC_CHECK_SIZEOF() doesn't include <time.h>.
1144AC_MSG_CHECKING(size of time_t)
1145AC_CACHE_VAL(ac_cv_sizeof_time_t,
1146[AC_TRY_RUN([#include <stdio.h>
1147#include <time.h>
1148main()
1149{
1150 FILE *f=fopen("conftestval", "w");
1151 if (!f) exit(1);
1152 fprintf(f, "%d\n", sizeof(time_t));
1153 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001154}],
1155ac_cv_sizeof_time_t=`cat conftestval`,
1156ac_cv_sizeof_time_t=0,
1157ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001158])
1159AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001160AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1161[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001162
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001163
Trent Mick635f6fb2000-08-23 21:33:05 +00001164# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001165ac_save_cc="$CC"
1166if test "$ac_cv_kpthread" = "yes"
1167then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001168elif test "$ac_cv_kthread" = "yes"
1169then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001170elif test "$ac_cv_pthread" = "yes"
1171then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001172fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001173AC_MSG_CHECKING(for pthread_t)
1174have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001175AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001176AC_MSG_RESULT($have_pthread_t)
1177if test "$have_pthread_t" = yes ; then
1178 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1179 AC_MSG_CHECKING(size of pthread_t)
1180 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1181 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001182#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001183 main()
1184 {
1185 FILE *f=fopen("conftestval", "w");
1186 if (!f) exit(1);
1187 fprintf(f, "%d\n", sizeof(pthread_t));
1188 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001189 }],
1190 ac_cv_sizeof_pthread_t=`cat conftestval`,
1191 ac_cv_sizeof_pthread_t=0,
1192 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001193 ])
1194 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001195 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1196 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001197fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001198CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001199
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001200AC_MSG_CHECKING(for --enable-toolbox-glue)
1201AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001202 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001203
1204if test -z "$enable_toolbox_glue"
1205then
1206 case $ac_sys_system/$ac_sys_release in
1207 Darwin/*)
1208 enable_toolbox_glue="yes";;
1209 *)
1210 enable_toolbox_glue="no";;
1211 esac
1212fi
1213case "$enable_toolbox_glue" in
1214yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001215 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001216 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001217 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1218 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001219 ;;
1220*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001221 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001222 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001223 ;;
1224esac
1225AC_MSG_RESULT($enable_toolbox_glue)
1226
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001227AC_SUBST(OTHER_LIBTOOL_OPT)
1228case $ac_sys_system/$ac_sys_release in
1229 Darwin/@<:@01234567@:>@.*)
1230 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1231 ;;
1232 Darwin/*)
1233 OTHER_LIBTOOL_OPT=""
1234 ;;
1235esac
1236
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001237AC_SUBST(LIBTOOL_CRUFT)
1238case $ac_sys_system/$ac_sys_release in
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001239 Darwin/@<:@01234567@:>@.*)
1240 LIBTOOL_CRUFT="-framework System -lcc_dynamic -arch_only ppc"
Jack Jansenb36687a2004-07-16 08:43:47 +00001241 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001242 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001243 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001244 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1245 if test ${gcc_version} '<' 4.0
1246 then
1247 LIBTOOL_CRUFT="-lcc_dynamic"
1248 else
1249 LIBTOOL_CRUFT=""
1250 fi
1251 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -lSystem -lSystemStubs -arch_only ppc'
Jack Jansenb36687a2004-07-16 08:43:47 +00001252 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001253 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001254esac
1255
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001256AC_MSG_CHECKING(for --enable-framework)
1257if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001258then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001259 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001260 # -F. is needed to allow linking to the framework while
1261 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001262 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1263 [Define if you want to produce an OpenStep/Rhapsody framework
1264 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001265 AC_MSG_RESULT(yes)
1266else
1267 AC_MSG_RESULT(no)
1268fi
1269
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001270AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001271case $ac_sys_system/$ac_sys_release in
1272 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001273 AC_DEFINE(WITH_DYLD, 1,
1274 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1275 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1276 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001277 AC_MSG_RESULT(always on for Darwin)
1278 ;;
1279 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001280 AC_MSG_RESULT(no)
1281 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001282esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001283
Guido van Rossumac405f61994-09-12 10:56:06 +00001284# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001285AC_SUBST(SO)
1286AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001287AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001288AC_SUBST(CCSHARED)
1289AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001290# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001291# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001292AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001293if test -z "$SO"
1294then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001295 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001296 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001297 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001298 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001299 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001300else
1301 # this might also be a termcap variable, see #610332
1302 echo
1303 echo '====================================================================='
1304 echo '+ +'
1305 echo '+ WARNING: You have set SO in your environment. +'
1306 echo '+ Do you really mean to change the extension for shared libraries? +'
1307 echo '+ Continuing in 10 seconds to let you to ponder. +'
1308 echo '+ +'
1309 echo '====================================================================='
1310 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001311fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001312AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001313# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001314# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001315# (Shared libraries in this instance are shared modules to be loaded into
1316# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001317AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001318if test -z "$LDSHARED"
1319then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001320 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001321 AIX*)
1322 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001323 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001324 ;;
1325 BeOS*)
1326 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001327 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001328 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001329 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001330 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001331 SunOS/5*)
1332 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001333 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001334 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001335 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001336 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001337 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001338 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001339 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1340 if test "$enable_framework" ; then
1341 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001342 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1343 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001344 else
1345 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001346 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001347 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001348 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001349 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1350 if test "$enable_framework" ; then
1351 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001352 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1353 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001354 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001355 # No framework, use the Python app as bundle-loader
1356 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001357 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001358 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001359 Darwin/*)
1360 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1361 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001362 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Jack Jansenc110f862005-01-07 10:49:32 +00001363 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Jack Jansenbe954622004-12-26 23:07:48 +00001364 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001365 then
1366 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1367 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001368 else
1369 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1370 if test "$enable_framework" ; then
1371 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001372 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1373 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001374 else
1375 # No framework, use the Python app as bundle-loader
1376 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1377 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1378 fi
1379 fi
1380 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001381 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001382 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001383 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001384 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001385 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001386 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001387 else
1388 LDSHARED="ld -Bshareable ${LDFLAGS}"
1389 fi;;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001390 NetBSD*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001391 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001392 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001393 then LDSHARED='$(CC) -shared'
1394 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001395 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001396 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001397 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001398 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001399 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001400 *) LDSHARED="ld";;
1401 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001402fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001403AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001404BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001405# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001406# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001407AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001408if test -z "$CCSHARED"
1409then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001410 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001411 SunOS*) if test "$GCC" = yes;
1412 then CCSHARED="-fPIC";
Martin v. Löwisd5845ec2005-12-30 12:31:38 +00001413 else CCSHARED="-xcode=pic32";
Neil Schemenauer66252162001-02-19 04:47:42 +00001414 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001415 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001416 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001417 else CCSHARED="+z";
1418 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001419 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001420 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001421 FreeBSD*|NetBSD*|OpenBSD*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001422 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001423 if test "$GCC" = "yes"
1424 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001425 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001426 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001427 SCO_SV*)
1428 if test "$GCC" = "yes"
1429 then CCSHARED="-fPIC"
1430 else CCSHARED="-Kpic -belf"
1431 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001432 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001433 IRIX*/6*) case $CC in
1434 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001435 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001436 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001437 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001438 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001439fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001440AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001441# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001442# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001443AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001444if test -z "$LINKFORSHARED"
1445then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001446 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001447 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001448 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001449 LINKFORSHARED="-Wl,-E -Wl,+s";;
1450# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001451 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001452 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001453 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001454 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001455 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1456 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001457 # not used by the core itself but which needs to be in the core so
1458 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001459 # -prebind is no longer used, because it actually seems to give a
1460 # slowdown in stead of a speedup, maybe due to the large number of
1461 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001462
1463 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001464 if test "$enable_framework"
1465 then
Jack Jansenda49e192005-01-07 13:08:22 +00001466 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001467 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001468 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001469 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001470 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001471 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001472 FreeBSD*|NetBSD*|OpenBSD*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001473 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1474 then
1475 LINKFORSHARED="-Wl,--export-dynamic"
1476 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001477 SunOS/5*) case $CC in
1478 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001479 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001480 then
1481 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001482 fi;;
1483 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001484 CYGWIN*)
1485 if test $enable_shared = "no"
1486 then
1487 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1488 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001489 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001490fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001491AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001492
Neil Schemenauer61c51152001-01-26 16:18:16 +00001493AC_SUBST(CFLAGSFORSHARED)
1494AC_MSG_CHECKING(CFLAGSFORSHARED)
1495if test ! "$LIBRARY" = "$LDLIBRARY"
1496then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001497 case $ac_sys_system in
1498 CYGWIN*)
1499 # Cygwin needs CCSHARED when building extension DLLs
1500 # but not when building the interpreter DLL.
1501 CFLAGSFORSHARED='';;
1502 *)
1503 CFLAGSFORSHARED='$(CCSHARED)'
1504 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001505fi
1506AC_MSG_RESULT($CFLAGSFORSHARED)
1507
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001508# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1509# library (with --enable-shared).
1510# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001511# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1512# if it is not required, since it creates a dependency of the shared library
1513# to LIBS. This, in turn, means that applications linking the shared libpython
1514# don't need to link LIBS explicitly. The default should be only changed
1515# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001516AC_SUBST(SHLIBS)
1517AC_MSG_CHECKING(SHLIBS)
1518case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001519 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001520 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001521esac
1522AC_MSG_RESULT($SHLIBS)
1523
1524
Guido van Rossum627b2d71993-12-24 10:39:16 +00001525# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001526AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1527AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001528
1529# only check for sem_ini if thread support is requested
1530if test "$with_threads" = "yes" -o -z "$with_threads"; then
1531 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1532 # posix4 on Solaris 2.6
1533 # pthread (first!) on Linux
1534fi
1535
Martin v. Löwis19d17342003-06-14 21:03:05 +00001536# check if we need libintl for locale functions
1537AC_CHECK_LIB(intl, textdomain,
1538 AC_DEFINE(WITH_LIBINTL, 1,
1539 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001540
1541# checks for system dependent C++ extensions support
1542case "$ac_sys_system" in
1543 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1544 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1545 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001546 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1547 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1548 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001549 AC_MSG_RESULT(yes)],
1550 [AC_MSG_RESULT(no)]);;
1551 *) ;;
1552esac
1553
Guido van Rossum70c7f481998-03-26 18:44:10 +00001554# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001555# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001556AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001557AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001558
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001559case "$ac_sys_system" in
1560BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001561AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1562;;
1563esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001564
Guido van Rossumc5a39031996-07-31 17:35:03 +00001565AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001566AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001567 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1568[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001569AC_MSG_RESULT($withval)
1570LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001571],
1572[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001573
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001574# Determine if signalmodule should be used.
1575AC_SUBST(USE_SIGNAL_MODULE)
1576AC_SUBST(SIGNAL_OBJS)
1577AC_MSG_CHECKING(for --with-signal-module)
1578AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001579 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001580
1581if test -z "$with_signal_module"
1582then with_signal_module="yes"
1583fi
1584AC_MSG_RESULT($with_signal_module)
1585
1586if test "${with_signal_module}" = "yes"; then
1587 USE_SIGNAL_MODULE=""
1588 SIGNAL_OBJS=""
1589else
1590 USE_SIGNAL_MODULE="#"
1591 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1592fi
1593
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001594# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001595AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001596USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001597
Guido van Rossum54d93d41997-01-22 20:51:58 +00001598AC_MSG_CHECKING(for --with-dec-threads)
1599AC_SUBST(LDLAST)
1600AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001601 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1602[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001603AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001604LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001605if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001606 with_thread="$withval";
1607fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001608[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001609
Martin v. Löwis11437992002-04-12 09:54:03 +00001610# Templates for things AC_DEFINEd more than once.
1611# For a single AC_DEFINE, no template is needed.
1612AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1613AH_TEMPLATE(_REENTRANT,
1614 [Define to force use of thread-safe errno, h_errno, and other functions])
1615AH_TEMPLATE(WITH_THREAD,
1616 [Define if you want to compile in rudimentary thread support])
1617
Guido van Rossum54d93d41997-01-22 20:51:58 +00001618AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001619dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001620AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001621 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001622
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001623# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001624dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001625AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001626 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1627 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001628
1629if test -z "$with_threads"
1630then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001631fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001632AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001633
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001634AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001635if test "$with_threads" = "no"
1636then
1637 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001638elif test "$ac_cv_pthread_is_default" = yes
1639then
1640 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001641 # Defining _REENTRANT on system with POSIX threads should not hurt.
1642 AC_DEFINE(_REENTRANT)
1643 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001644 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001645elif test "$ac_cv_kpthread" = "yes"
1646then
1647 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001648 if test "$ac_cv_cxx_thread" = "yes"; then
1649 CXX="$CXX -Kpthread"
1650 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001651 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001652 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001653 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001654elif test "$ac_cv_kthread" = "yes"
1655then
1656 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001657 if test "$ac_cv_cxx_thread" = "yes"; then
1658 CXX="$CXX -Kthread"
1659 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001660 AC_DEFINE(WITH_THREAD)
1661 posix_threads=yes
1662 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001663elif test "$ac_cv_pthread" = "yes"
1664then
1665 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001666 if test "$ac_cv_cxx_thread" = "yes"; then
1667 CXX="$CXX -pthread"
1668 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001669 AC_DEFINE(WITH_THREAD)
1670 posix_threads=yes
1671 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001672else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001673 if test ! -z "$with_threads" -a -d "$with_threads"
1674 then LDFLAGS="$LDFLAGS -L$with_threads"
1675 fi
1676 if test ! -z "$withval" -a -d "$withval"
1677 then LDFLAGS="$LDFLAGS -L$withval"
1678 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001679
1680 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001681 # define _POSIX_THREADS in unistd.h. Some apparently don't
1682 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001683 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1684 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001685 [
1686#include <unistd.h>
1687#ifdef _POSIX_THREADS
1688yes
1689#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001690 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1691 AC_MSG_RESULT($unistd_defines_pthreads)
1692
Martin v. Löwis130fb172001-07-19 11:00:41 +00001693 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001694 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1695 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001696 AC_DEFINE(HURD_C_THREADS, 1,
1697 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001698 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001699 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001700 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1701 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001702 AC_DEFINE(MACH_C_THREADS, 1,
1703 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001704 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001705 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001706 AC_ARG_WITH([pth],
1707 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1708 [AC_MSG_RESULT($withval)
1709 AC_DEFINE([WITH_THREAD])
1710 AC_DEFINE([HAVE_PTH], 1,
1711 [Define if you have GNU PTH threads.])
1712 LIBS="-lpth $LIBS"
1713 THREADOBJ="Python/thread.o"],
1714 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001715
1716 # Just looking for pthread_create in libpthread is not enough:
1717 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1718 # So we really have to include pthread.h, and then link.
1719 _libs=$LIBS
1720 LIBS="$LIBS -lpthread"
1721 AC_MSG_CHECKING([for pthread_create in -lpthread])
1722 AC_TRY_LINK([#include <pthread.h>
1723
1724void * start_routine (void *arg) { exit (0); }], [
1725pthread_create (NULL, NULL, start_routine, NULL)], [
1726 AC_MSG_RESULT(yes)
1727 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001728 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001729 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001730 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001731 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001732 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001733 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001734 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1735 AC_DEFINE(ATHEOS_THREADS, 1,
1736 [Define this if you have AtheOS threads.])
1737 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001738 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001739 AC_DEFINE(BEOS_THREADS, 1,
1740 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001741 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001742 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001743 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001744 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001745 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001746 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001747 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001748 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001749 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001750 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001751 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001752 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001753 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001754 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001755 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001756 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001757 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001758 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001759 ])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001760
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001761 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1762 LIBS="$LIBS -lmpc"
1763 THREADOBJ="Python/thread.o"
1764 USE_THREAD_MODULE=""])
1765
1766 if test "$posix_threads" != "yes"; then
1767 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1768 LIBS="$LIBS -lthread"
1769 THREADOBJ="Python/thread.o"
1770 USE_THREAD_MODULE=""])
1771 fi
1772
1773 if test "$USE_THREAD_MODULE" != "#"
1774 then
1775 # If the above checks didn't disable threads, (at least) OSF1
1776 # needs this '-threads' argument during linking.
1777 case $ac_sys_system in
1778 OSF1) LDLAST=-threads;;
1779 esac
1780 fi
1781fi
1782
1783if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001784 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001785 AC_DEFINE(_POSIX_THREADS, 1,
1786 [Define if you have POSIX threads,
1787 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001788 fi
1789
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001790 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1791 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001792 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1793 Defined for Solaris 2.6 bug in pthread header.)
1794 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001795 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001796 Define if the Posix semaphores do not work on your system)
1797 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001798 esac
1799
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001800 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1801 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1802 [AC_TRY_RUN([#include <pthread.h>
1803 void *foo(void *parm) {
1804 return NULL;
1805 }
1806 main() {
1807 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001808 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001809 if (pthread_attr_init(&attr)) exit(-1);
1810 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001811 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001812 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001813 }],
1814 ac_cv_pthread_system_supported=yes,
1815 ac_cv_pthread_system_supported=no,
1816 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001817 ])
1818 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1819 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001820 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001821 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001822 AC_CHECK_FUNCS(pthread_sigmask,
1823 [case $ac_sys_system in
1824 CYGWIN*)
1825 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1826 [Define if pthread_sigmask() does not work on your system.])
1827 ;;
1828 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001829fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001830
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001831
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001832# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001833AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001834AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001835AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001836[ --enable-ipv6 Enable ipv6 (with ipv4) support
1837 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001838[ case "$enableval" in
1839 no)
1840 AC_MSG_RESULT(no)
1841 ipv6=no
1842 ;;
1843 *) AC_MSG_RESULT(yes)
1844 AC_DEFINE(ENABLE_IPV6)
1845 ipv6=yes
1846 ;;
1847 esac ],
1848
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001849[
1850dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001851 AC_TRY_RUN([ /* AF_INET6 available check */
1852#include <sys/types.h>
1853#include <sys/socket.h>
1854main()
1855{
1856 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1857 exit(1);
1858 else
1859 exit(0);
1860}
1861],
1862 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001863 ipv6=yes,
1864 AC_MSG_RESULT(no)
1865 ipv6=no,
1866 AC_MSG_RESULT(no)
1867 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001868)
1869
1870if test "$ipv6" = "yes"; then
1871 AC_MSG_CHECKING(if RFC2553 API is available)
1872 AC_TRY_COMPILE([#include <sys/types.h>
1873#include <netinet/in.h>],
1874 [struct sockaddr_in6 x;
1875x.sin6_scope_id;],
1876 AC_MSG_RESULT(yes)
1877 ipv6=yes,
1878 AC_MSG_RESULT(no, IPv6 disabled)
1879 ipv6=no)
1880fi
1881
1882if test "$ipv6" = "yes"; then
1883 AC_DEFINE(ENABLE_IPV6)
1884fi
1885])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001886
1887ipv6type=unknown
1888ipv6lib=none
1889ipv6trylibc=no
1890
1891if test "$ipv6" = "yes"; then
1892 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001893 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1894 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001895 case $i in
1896 inria)
1897 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001898 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001899#include <netinet/in.h>
1900#ifdef IPV6_INRIA_VERSION
1901yes
1902#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001903 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001904 ;;
1905 kame)
1906 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001907 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001908#include <netinet/in.h>
1909#ifdef __KAME__
1910yes
1911#endif],
1912 [ipv6type=$i;
1913 ipv6lib=inet6
1914 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001915 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001916 ;;
1917 linux-glibc)
1918 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001919 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001920#include <features.h>
1921#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1922yes
1923#endif],
1924 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001925 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001926 ;;
1927 linux-inet6)
1928 dnl http://www.v6.linux.or.jp/
1929 if test -d /usr/inet6; then
1930 ipv6type=$i
1931 ipv6lib=inet6
1932 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00001933 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001934 fi
1935 ;;
1936 solaris)
1937 if test -f /etc/netconfig; then
1938 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
1939 ipv6type=$i
1940 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001941 fi
1942 fi
1943 ;;
1944 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001945 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001946#include <sys/param.h>
1947#ifdef _TOSHIBA_INET6
1948yes
1949#endif],
1950 [ipv6type=$i;
1951 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001952 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001953 ;;
1954 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001955 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001956#include </usr/local/v6/include/sys/v6config.h>
1957#ifdef __V6D__
1958yes
1959#endif],
1960 [ipv6type=$i;
1961 ipv6lib=v6;
1962 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001963 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001964 ;;
1965 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001966 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001967#include <sys/param.h>
1968#ifdef _ZETA_MINAMI_INET6
1969yes
1970#endif],
1971 [ipv6type=$i;
1972 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001973 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001974 ;;
1975 esac
1976 if test "$ipv6type" != "unknown"; then
1977 break
1978 fi
1979 done
1980 AC_MSG_RESULT($ipv6type)
1981fi
1982
1983if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
1984 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
1985 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
1986 echo "using lib$ipv6lib"
1987 else
1988 if test $ipv6trylibc = "yes"; then
1989 echo "using libc"
1990 else
1991 echo 'Fatal: no $ipv6lib library found. cannot continue.'
1992 echo "You need to fetch lib$ipv6lib.a from appropriate"
1993 echo 'ipv6 kit and compile beforehand.'
1994 exit 1
1995 fi
1996 fi
1997fi
1998
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001999# Check for --with-doc-strings
2000AC_MSG_CHECKING(for --with-doc-strings)
2001AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002002 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00002003
2004if test -z "$with_doc_strings"
2005then with_doc_strings="yes"
2006fi
2007if test "$with_doc_strings" != "no"
2008then
2009 AC_DEFINE(WITH_DOC_STRINGS, 1,
2010 [Define if you want documentation strings in extension modules])
2011fi
2012AC_MSG_RESULT($with_doc_strings)
2013
Neil Schemenauera35c6882001-02-27 04:45:05 +00002014# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002015AC_MSG_CHECKING(for --with-tsc)
2016AC_ARG_WITH(tsc,
2017[ --with(out)-tsc enable/disable timestamp counter profile], [
2018if test "$withval" != no
2019then
2020 AC_DEFINE(WITH_TSC, 1,
2021 [Define to profile with the Pentium timestamp counter])
2022 AC_MSG_RESULT(yes)
2023else AC_MSG_RESULT(no)
2024fi],
2025[AC_MSG_RESULT(no)])
2026
2027# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002028AC_MSG_CHECKING(for --with-pymalloc)
2029AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002030 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002031
2032if test -z "$with_pymalloc"
2033then with_pymalloc="yes"
2034fi
2035if test "$with_pymalloc" != "no"
2036then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002037 AC_DEFINE(WITH_PYMALLOC, 1,
2038 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002039fi
2040AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002041
Barry Warsawef82cd72000-06-30 16:21:01 +00002042# Check for --with-wctype-functions
2043AC_MSG_CHECKING(for --with-wctype-functions)
2044AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002045 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2046[
Barry Warsawef82cd72000-06-30 16:21:01 +00002047if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002048then
2049 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2050 [Define if you want wctype.h functions to be used instead of the
2051 one supplied by Python itself. (see Include/unicodectype.h).])
2052 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002053else AC_MSG_RESULT(no)
2054fi],
2055[AC_MSG_RESULT(no)])
2056
Guido van Rossum68242b51996-05-28 22:53:03 +00002057# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002058AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002059DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002060
Guido van Rossume97ee181999-12-20 21:27:22 +00002061# the dlopen() function means we might want to use dynload_shlib.o. some
2062# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002063AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002064
2065# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2066# loading of modules.
2067AC_SUBST(DYNLOADFILE)
2068AC_MSG_CHECKING(DYNLOADFILE)
2069if test -z "$DYNLOADFILE"
2070then
2071 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002072 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2073 if test "$ac_cv_func_dlopen" = yes
2074 then DYNLOADFILE="dynload_shlib.o"
2075 else DYNLOADFILE="dynload_aix.o"
2076 fi
2077 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002078 BeOS*) DYNLOADFILE="dynload_beos.o";;
2079 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002080 Darwin/*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002081 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002082 *)
2083 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2084 # out any dynamic loading
2085 if test "$ac_cv_func_dlopen" = yes
2086 then DYNLOADFILE="dynload_shlib.o"
2087 else DYNLOADFILE="dynload_stub.o"
2088 fi
2089 ;;
2090 esac
2091fi
2092AC_MSG_RESULT($DYNLOADFILE)
2093if test "$DYNLOADFILE" != "dynload_stub.o"
2094then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002095 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2096 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002097fi
2098
Jack Jansenc49e5b72001-06-19 15:00:23 +00002099# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2100
2101AC_SUBST(MACHDEP_OBJS)
2102AC_MSG_CHECKING(MACHDEP_OBJS)
2103if test -z "$MACHDEP_OBJS"
2104then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002105 MACHDEP_OBJS=$extra_machdep_objs
2106else
2107 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002108fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002109AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002110
Guido van Rossum627b2d71993-12-24 10:39:16 +00002111# checks for library functions
Gustavo Niemeyer7bd33c52004-07-22 18:44:01 +00002112AC_CHECK_FUNCS(alarm bind_textdomain_codeset chown clock confstr ctermid \
2113 execv fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002114 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002115 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002116 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002117 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002118 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002119 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002120 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002121 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002122 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002123 truncate uname unsetenv utimes waitpid wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002124
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002125# For some functions, having a definition is not sufficient, since
2126# we want to take their address.
2127AC_MSG_CHECKING(for chroot)
2128AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2129 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2130 AC_MSG_RESULT(yes),
2131 AC_MSG_RESULT(no)
2132)
2133AC_MSG_CHECKING(for link)
2134AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2135 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2136 AC_MSG_RESULT(yes),
2137 AC_MSG_RESULT(no)
2138)
2139AC_MSG_CHECKING(for symlink)
2140AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2141 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2142 AC_MSG_RESULT(yes),
2143 AC_MSG_RESULT(no)
2144)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002145AC_MSG_CHECKING(for fchdir)
2146AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2147 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2148 AC_MSG_RESULT(yes),
2149 AC_MSG_RESULT(no)
2150)
2151AC_MSG_CHECKING(for fsync)
2152AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002153 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002154 AC_MSG_RESULT(yes),
2155 AC_MSG_RESULT(no)
2156)
2157AC_MSG_CHECKING(for fdatasync)
2158AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2159 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2160 AC_MSG_RESULT(yes),
2161 AC_MSG_RESULT(no)
2162)
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002163
Martin v. Löwisd5843682002-11-21 20:41:28 +00002164# On some systems (eg. FreeBSD 5), we would find a definition of the
2165# functions ctermid_r, setgroups in the library, but no prototype
2166# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2167# address to avoid compiler warnings and potential miscompilations
2168# because of the missing prototypes.
2169
2170AC_MSG_CHECKING(for ctermid_r)
2171AC_TRY_COMPILE([
2172#include "confdefs.h"
2173#include <stdio.h>
2174], void* p = ctermid_r,
2175 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2176 AC_MSG_RESULT(yes),
2177 AC_MSG_RESULT(no)
2178)
2179
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002180AC_MSG_CHECKING(for flock)
2181AC_TRY_COMPILE([
2182#include "confdefs.h"
2183#include <sys/file.h>
2184], void* p = flock,
2185 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2186 AC_MSG_RESULT(yes),
2187 AC_MSG_RESULT(no)
2188)
2189
2190AC_MSG_CHECKING(for getpagesize)
2191AC_TRY_COMPILE([
2192#include "confdefs.h"
2193#include <unistd.h>
2194], void* p = getpagesize,
2195 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2196 AC_MSG_RESULT(yes),
2197 AC_MSG_RESULT(no)
2198)
2199
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002200dnl check for true
2201AC_CHECK_PROGS(TRUE, true, /bin/true)
2202
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002203dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2204dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002205AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002206 AC_CHECK_LIB(resolv, inet_aton)
2207)
2208
Martin v. Löwise9416172003-05-03 10:12:45 +00002209AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002210AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002211#include "confdefs.h"
2212#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002213], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002214 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2215 AC_MSG_RESULT(yes),
2216 AC_MSG_RESULT(no)
2217)
2218
2219AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002220AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002221#include "confdefs.h"
2222#include <sys/socket.h>
2223#include <netinet/in.h>
2224#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002225], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002226 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2227 AC_MSG_RESULT(yes),
2228 AC_MSG_RESULT(no)
2229)
2230
2231AC_MSG_CHECKING(for inet_pton)
2232AC_TRY_COMPILE([
2233#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002234#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002235#include <sys/socket.h>
2236#include <netinet/in.h>
2237#include <arpa/inet.h>
2238], void* p = inet_pton,
2239 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2240 AC_MSG_RESULT(yes),
2241 AC_MSG_RESULT(no)
2242)
2243
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002244# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002245AC_MSG_CHECKING(for setgroups)
2246AC_TRY_COMPILE([
2247#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002248#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002249#ifdef HAVE_GRP_H
2250#include <grp.h>
2251#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002252],
2253void* p = setgroups,
2254 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2255 AC_MSG_RESULT(yes),
2256 AC_MSG_RESULT(no)
2257)
2258
Fred Drake8cef4cf2000-06-28 16:40:38 +00002259# check for openpty and forkpty
2260
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002261AC_CHECK_FUNCS(openpty,, AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"]))
2262AC_CHECK_FUNCS(forkpty,, AC_CHECK_LIB(util,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"]))
Fred Drake8cef4cf2000-06-28 16:40:38 +00002263
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002264# check for long file support functions
2265AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2266
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002267AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002268AC_CHECK_FUNCS(getpgrp,
2269 AC_TRY_COMPILE([#include <unistd.h>],
2270 [getpgrp(0);],
2271 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2272 [Define if getpgrp() must be called as getpgrp(0).])
2273 )
2274)
Jack Jansen150753c2003-03-29 22:07:47 +00002275AC_CHECK_FUNCS(setpgrp,
2276 AC_TRY_COMPILE([#include <unistd.h>],
2277 [setpgrp(0,0);],
2278 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2279 [Define if setpgrp() must be called as setpgrp(0, 0).])
2280 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002281)
2282AC_CHECK_FUNCS(gettimeofday,
2283 AC_TRY_COMPILE([#include <sys/time.h>],
2284 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2285 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2286 [Define if gettimeofday() does not have second (timezone) argument
2287 This is the case on Motorola V4 (R40V4.2)])
2288 )
2289)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002290
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002291AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002292AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002293#if defined(MAJOR_IN_MKDEV)
2294#include <sys/mkdev.h>
2295#elif defined(MAJOR_IN_SYSMACROS)
2296#include <sys/sysmacros.h>
2297#else
2298#include <sys/types.h>
2299#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002300],[
2301 makedev(major(0),minor(0));
2302],[
2303 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2304 [Define to 1 if you have the device macros.])
2305 AC_MSG_RESULT(yes)
2306],[
2307 AC_MSG_RESULT(no)
2308])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002309
2310# On OSF/1 V5.1, getaddrinfo is available, but a define
2311# for [no]getaddrinfo in netdb.h.
2312AC_MSG_CHECKING(for getaddrinfo)
2313AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002314#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002315#include <sys/socket.h>
2316#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002317#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002318],[
2319getaddrinfo(NULL, NULL, NULL, NULL);
2320], [
2321AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002322AC_MSG_CHECKING(getaddrinfo bug)
2323AC_TRY_RUN([
2324#include <sys/types.h>
2325#include <netdb.h>
2326#include <string.h>
2327#include <sys/socket.h>
2328#include <netinet/in.h>
2329
2330main()
2331{
2332 int passive, gaierr, inet4 = 0, inet6 = 0;
2333 struct addrinfo hints, *ai, *aitop;
2334 char straddr[INET6_ADDRSTRLEN], strport[16];
2335
2336 for (passive = 0; passive <= 1; passive++) {
2337 memset(&hints, 0, sizeof(hints));
2338 hints.ai_family = AF_UNSPEC;
2339 hints.ai_flags = passive ? AI_PASSIVE : 0;
2340 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002341 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002342 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2343 (void)gai_strerror(gaierr);
2344 goto bad;
2345 }
2346 for (ai = aitop; ai; ai = ai->ai_next) {
2347 if (ai->ai_addr == NULL ||
2348 ai->ai_addrlen == 0 ||
2349 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2350 straddr, sizeof(straddr), strport, sizeof(strport),
2351 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2352 goto bad;
2353 }
2354 switch (ai->ai_family) {
2355 case AF_INET:
2356 if (strcmp(strport, "54321") != 0) {
2357 goto bad;
2358 }
2359 if (passive) {
2360 if (strcmp(straddr, "0.0.0.0") != 0) {
2361 goto bad;
2362 }
2363 } else {
2364 if (strcmp(straddr, "127.0.0.1") != 0) {
2365 goto bad;
2366 }
2367 }
2368 inet4++;
2369 break;
2370 case AF_INET6:
2371 if (strcmp(strport, "54321") != 0) {
2372 goto bad;
2373 }
2374 if (passive) {
2375 if (strcmp(straddr, "::") != 0) {
2376 goto bad;
2377 }
2378 } else {
2379 if (strcmp(straddr, "::1") != 0) {
2380 goto bad;
2381 }
2382 }
2383 inet6++;
2384 break;
2385 case AF_UNSPEC:
2386 goto bad;
2387 break;
2388 default:
2389 /* another family support? */
2390 break;
2391 }
2392 }
2393 }
2394
2395 if (!(inet4 == 0 || inet4 == 2))
2396 goto bad;
2397 if (!(inet6 == 0 || inet6 == 2))
2398 goto bad;
2399
2400 if (aitop)
2401 freeaddrinfo(aitop);
2402 exit(0);
2403
2404 bad:
2405 if (aitop)
2406 freeaddrinfo(aitop);
2407 exit(1);
2408}
2409],
2410AC_MSG_RESULT(good)
2411buggygetaddrinfo=no,
2412AC_MSG_RESULT(buggy)
2413buggygetaddrinfo=yes,
2414AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002415buggygetaddrinfo=yes)], [
2416AC_MSG_RESULT(no)
2417buggygetaddrinfo=yes
2418])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002419
2420if test "$buggygetaddrinfo" = "yes"; then
2421 if test "$ipv6" = "yes"; then
2422 echo 'Fatal: You must get working getaddrinfo() function.'
2423 echo ' or you can specify "--disable-ipv6"'.
2424 exit 1
2425 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002426else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002427 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002428fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002429AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002430
Guido van Rossum627b2d71993-12-24 10:39:16 +00002431# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002432AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002433AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002434AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002435AC_CHECK_MEMBERS([struct stat.st_rdev])
2436AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002437AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002438AC_CHECK_MEMBERS([struct stat.st_gen])
2439AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002440AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002441
2442AC_MSG_CHECKING(for time.h that defines altzone)
2443AC_CACHE_VAL(ac_cv_header_time_altzone,
2444[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2445 ac_cv_header_time_altzone=yes,
2446 ac_cv_header_time_altzone=no)])
2447AC_MSG_RESULT($ac_cv_header_time_altzone)
2448if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002449 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002450fi
2451
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002452was_it_defined=no
2453AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002454AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002455#include <sys/types.h>
2456#include <sys/select.h>
2457#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002458], [;], [
2459 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2460 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2461 (which you can't on SCO ODT 3.0).])
2462 was_it_defined=yes
2463])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002464AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002465
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002466AC_MSG_CHECKING(for addrinfo)
2467AC_CACHE_VAL(ac_cv_struct_addrinfo,
2468AC_TRY_COMPILE([
2469# include <netdb.h>],
2470 [struct addrinfo a],
2471 ac_cv_struct_addrinfo=yes,
2472 ac_cv_struct_addrinfo=no))
2473AC_MSG_RESULT($ac_cv_struct_addrinfo)
2474if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002475 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002476fi
2477
2478AC_MSG_CHECKING(for sockaddr_storage)
2479AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2480AC_TRY_COMPILE([
2481# include <sys/types.h>
2482# include <sys/socket.h>],
2483 [struct sockaddr_storage s],
2484 ac_cv_struct_sockaddr_storage=yes,
2485 ac_cv_struct_sockaddr_storage=no))
2486AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2487if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002488 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002489fi
2490
Guido van Rossum627b2d71993-12-24 10:39:16 +00002491# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002492
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002493AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002494AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002495
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002496works=no
2497AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002498AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2499 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2500)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002501AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002502
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002503works=no
2504AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002505AC_TRY_COMPILE([], [signed char c;], works=yes,
2506 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2507)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002508AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002509
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002510have_prototypes=no
2511AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002512AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2513 AC_DEFINE(HAVE_PROTOTYPES, 1,
2514 [Define if your compiler supports function prototype])
2515 have_prototypes=yes
2516])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002517AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002518
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002519works=no
2520AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002521AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002522#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002523int foo(int x, ...) {
2524 va_list va;
2525 va_start(va, x);
2526 va_arg(va, int);
2527 va_arg(va, char *);
2528 va_arg(va, double);
2529 return 0;
2530}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002531], [return foo(10, "", 3.14);], [
2532 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2533 [Define if your compiler supports variable length function prototypes
2534 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2535 works=yes
2536])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002537AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002538
Dave Cole331708b2004-08-09 04:51:41 +00002539# check for socketpair
2540AC_MSG_CHECKING(for socketpair)
2541AC_TRY_COMPILE([
2542#include <sys/types.h>
2543#include <sys/socket.h>
2544], void *x=socketpair,
2545 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2546 AC_MSG_RESULT(yes),
2547 AC_MSG_RESULT(no)
2548)
2549
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002550# check if sockaddr has sa_len member
2551AC_MSG_CHECKING(if sockaddr has sa_len member)
2552AC_TRY_COMPILE([#include <sys/types.h>
2553#include <sys/socket.h>],
2554[struct sockaddr x;
2555x.sa_len = 0;],
2556 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002557 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002558 AC_MSG_RESULT(no))
2559
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002560va_list_is_array=no
2561AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002562AC_TRY_COMPILE([
2563#ifdef HAVE_STDARG_PROTOTYPES
2564#include <stdarg.h>
2565#else
2566#include <varargs.h>
2567#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002568], [va_list list1, list2; list1 = list2;], , [
2569 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2570 va_list_is_array=yes
2571])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002572AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002573
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002574# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002575AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2576 [Define this if you have some version of gethostbyname_r()])
2577
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002578AC_CHECK_FUNC(gethostbyname_r, [
2579 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2580 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2581 OLD_CFLAGS=$CFLAGS
2582 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2583 AC_TRY_COMPILE([
2584# include <netdb.h>
2585 ], [
2586 char *name;
2587 struct hostent *he, *res;
2588 char buffer[2048];
2589 int buflen = 2048;
2590 int h_errnop;
2591
2592 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2593 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002594 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002595 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2596 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002597 AC_MSG_RESULT(yes)
2598 ], [
2599 AC_MSG_RESULT(no)
2600 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2601 AC_TRY_COMPILE([
2602# include <netdb.h>
2603 ], [
2604 char *name;
2605 struct hostent *he;
2606 char buffer[2048];
2607 int buflen = 2048;
2608 int h_errnop;
2609
2610 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2611 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002612 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002613 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2614 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002615 AC_MSG_RESULT(yes)
2616 ], [
2617 AC_MSG_RESULT(no)
2618 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2619 AC_TRY_COMPILE([
2620# include <netdb.h>
2621 ], [
2622 char *name;
2623 struct hostent *he;
2624 struct hostent_data data;
2625
2626 (void) gethostbyname_r(name, he, &data);
2627 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002628 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002629 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2630 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002631 AC_MSG_RESULT(yes)
2632 ], [
2633 AC_MSG_RESULT(no)
2634 ])
2635 ])
2636 ])
2637 CFLAGS=$OLD_CFLAGS
2638], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002639 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002640])
2641AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2642AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2643AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002644AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002645AC_SUBST(HAVE_GETHOSTBYNAME)
2646
Guido van Rossum627b2d71993-12-24 10:39:16 +00002647# checks for system services
2648# (none yet)
2649
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002650# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002651AC_CHECK_FUNC(__fpu_control,
2652 [],
2653 [AC_CHECK_LIB(ieee, __fpu_control)
2654])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002655
Guido van Rossum93274221997-05-09 02:42:00 +00002656# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002657AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002658AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002659 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2660[
Guido van Rossum93274221997-05-09 02:42:00 +00002661if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002662then
2663 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2664 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2665 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002666else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002667fi],
2668[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002669
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002670# check for --with-libm=...
2671AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002672case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002673Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002674BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002675*) LIBM=-lm
2676esac
Guido van Rossum93274221997-05-09 02:42:00 +00002677AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002678AC_ARG_WITH(libm,
2679 AC_HELP_STRING(--with-libm=STRING, math library),
2680[
Guido van Rossum93274221997-05-09 02:42:00 +00002681if test "$withval" = no
2682then LIBM=
2683 AC_MSG_RESULT(force LIBM empty)
2684elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002685then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002686 AC_MSG_RESULT(set LIBM="$withval")
2687else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002688fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002689[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002690
2691# check for --with-libc=...
2692AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002693AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002694AC_ARG_WITH(libc,
2695 AC_HELP_STRING(--with-libc=STRING, C library),
2696[
Guido van Rossum93274221997-05-09 02:42:00 +00002697if test "$withval" = no
2698then LIBC=
2699 AC_MSG_RESULT(force LIBC empty)
2700elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002701then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002702 AC_MSG_RESULT(set LIBC="$withval")
2703else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002704fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002705[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002706
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002707# check for hypot() in math library
2708LIBS_SAVE=$LIBS
2709LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002710AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002711LIBS=$LIBS_SAVE
2712
Guido van Rossumef2255b2000-03-10 22:30:29 +00002713# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002714AC_CHECK_HEADER(wchar.h, [
2715 AC_DEFINE(HAVE_WCHAR_H, 1,
2716 [Define if the compiler provides a wchar.h header file.])
2717 wchar_h="yes"
2718],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002719wchar_h="no"
2720)
2721
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002722# determine wchar_t size
2723if test "$wchar_h" = yes
2724then
Guido van Rossum67b26592001-10-20 14:21:45 +00002725 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002726fi
2727
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002728AC_MSG_CHECKING(for UCS-4 tcl)
2729have_ucs4_tcl=no
2730AC_TRY_COMPILE([
2731#include <tcl.h>
2732#if TCL_UTF_MAX != 6
2733# error "NOT UCS4_TCL"
2734#endif], [], [
2735 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
2736 have_ucs4_tcl=yes
2737])
2738AC_MSG_RESULT($have_ucs4_tcl)
2739
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002740# check whether wchar_t is signed or not
2741if test "$wchar_h" = yes
2742then
2743 # check whether wchar_t is signed or not
2744 AC_MSG_CHECKING(whether wchar_t is signed)
2745 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
2746 AC_TRY_RUN([
2747 #include <wchar.h>
2748 int main()
2749 {
2750 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 1 : 0);
2751 }
2752 ],
2753 ac_cv_wchar_t_signed=yes,
2754 ac_cv_wchar_t_signed=no,
2755 ac_cv_wchar_t_signed=yes)])
2756 AC_MSG_RESULT($ac_cv_wchar_t_signed)
2757fi
2758
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002759AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002760dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002761AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002762 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2763 [],
2764 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002765
2766if test $enable_unicode = yes
2767then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002768 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002769 case "$have_ucs4_tcl" in
2770 yes) enable_unicode="ucs4"
2771 ;;
2772 *) enable_unicode="ucs2"
2773 ;;
2774 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002775fi
2776
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002777AH_TEMPLATE(Py_UNICODE_SIZE,
2778 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002779case "$enable_unicode" in
2780ucs2) unicode_size="2"
2781 AC_DEFINE(Py_UNICODE_SIZE,2)
2782 ;;
2783ucs4) unicode_size="4"
2784 AC_DEFINE(Py_UNICODE_SIZE,4)
2785 ;;
2786esac
2787
Martin v. Löwis11437992002-04-12 09:54:03 +00002788AH_TEMPLATE(PY_UNICODE_TYPE,
2789 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002790
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002791AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002792if test "$enable_unicode" = "no"
2793then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002794 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002795 AC_MSG_RESULT(not used)
2796else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002797 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002798 AC_DEFINE(Py_USING_UNICODE, 1,
2799 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002800
2801 # wchar_t is only usable if it maps to an unsigned type
2802 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00002803 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002804 then
2805 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002806 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2807 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002808 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002809 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002810 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2811 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2812 then
2813 PY_UNICODE_TYPE="unsigned short"
2814 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2815 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2816 then
2817 PY_UNICODE_TYPE="unsigned long"
2818 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2819 else
2820 PY_UNICODE_TYPE="no type found"
2821 fi
2822 AC_MSG_RESULT($PY_UNICODE_TYPE)
2823fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002824
2825# check for endianness
2826AC_C_BIGENDIAN
2827
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002828# Check whether right shifting a negative integer extends the sign bit
2829# or fills with zeros (like the Cray J90, according to Tim Peters).
2830AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002831AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002832AC_TRY_RUN([
2833int main()
2834{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002835 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002836}
Guido van Rossum3065c942001-09-17 04:03:14 +00002837],
2838ac_cv_rshift_extends_sign=yes,
2839ac_cv_rshift_extends_sign=no,
2840ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002841AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2842if test "$ac_cv_rshift_extends_sign" = no
2843then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002844 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2845 [Define if i>>j for signed int i does not extend the sign bit
2846 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002847fi
2848
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002849# check for getc_unlocked and related locking functions
2850AC_MSG_CHECKING(for getc_unlocked() and friends)
2851AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2852AC_TRY_LINK([#include <stdio.h>],[
2853 FILE *f = fopen("/dev/null", "r");
2854 flockfile(f);
2855 getc_unlocked(f);
2856 funlockfile(f);
2857], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2858AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2859if test "$ac_cv_have_getc_unlocked" = yes
2860then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002861 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2862 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002863fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002864
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002865# check for readline 2.1
2866AC_CHECK_LIB(readline, rl_callback_handler_install,
2867 AC_DEFINE(HAVE_RL_CALLBACK, 1,
2868 [Define if you have readline 2.1]), , -ltermcap)
2869
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00002870# check for readline 2.2
2871AC_TRY_CPP([#include <readline/readline.h>],
2872have_readline=yes, have_readline=no)
2873if test $have_readline = yes
2874then
2875 AC_EGREP_HEADER([extern int rl_completion_append_character;],
2876 [readline/readline.h],
2877 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
2878 [Define if you have readline 2.2]), )
2879fi
2880
Martin v. Löwis0daad592001-09-30 21:09:59 +00002881# check for readline 4.0
2882AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002883 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
2884 [Define if you have readline 4.0]), , -ltermcap)
Martin v. Löwis0daad592001-09-30 21:09:59 +00002885
Guido van Rossum353ae582001-07-10 16:45:32 +00002886# check for readline 4.2
2887AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002888 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
2889 [Define if you have readline 4.2]), , -ltermcap)
Guido van Rossum353ae582001-07-10 16:45:32 +00002890
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002891# also in readline 4.2
2892AC_TRY_CPP([#include <readline/readline.h>],
2893have_readline=yes, have_readline=no)
2894if test $have_readline = yes
2895then
2896 AC_EGREP_HEADER([extern int rl_catch_signals;],
2897 [readline/readline.h],
2898 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
2899 [Define if you can turn off readline's signal handling.]), )
2900fi
2901
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002902AC_MSG_CHECKING(for broken nice())
2903AC_CACHE_VAL(ac_cv_broken_nice, [
2904AC_TRY_RUN([
2905int main()
2906{
2907 int val1 = nice(1);
2908 if (val1 != -1 && val1 == nice(2))
2909 exit(0);
2910 exit(1);
2911}
Guido van Rossum3065c942001-09-17 04:03:14 +00002912],
2913ac_cv_broken_nice=yes,
2914ac_cv_broken_nice=no,
2915ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002916AC_MSG_RESULT($ac_cv_broken_nice)
2917if test "$ac_cv_broken_nice" = yes
2918then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002919 AC_DEFINE(HAVE_BROKEN_NICE, 1,
2920 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002921fi
2922
Nicholas Bastine62c5c82004-03-21 23:45:42 +00002923AC_MSG_CHECKING(for broken poll())
2924AC_TRY_RUN([
2925#include <poll.h>
2926
2927int main (void)
2928 {
2929 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
2930
2931 close (42);
2932
2933 int poll_test = poll (&poll_struct, 1, 0);
2934
2935 if (poll_test < 0)
2936 {
2937 exit(0);
2938 }
2939 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
2940 {
2941 exit(0);
2942 }
2943 else
2944 {
2945 exit(1);
2946 }
2947 }
2948],
2949ac_cv_broken_poll=yes,
2950ac_cv_broken_poll=no,
2951ac_cv_broken_poll=no)
2952AC_MSG_RESULT($ac_cv_broken_poll)
2953if test "$ac_cv_broken_poll" = yes
2954then
2955 AC_DEFINE(HAVE_BROKEN_POLL, 1,
2956 [Define if poll() sets errno on invalid file descriptors.])
2957fi
2958
Brett Cannon43802422005-02-10 20:48:03 +00002959# Before we can test tzset, we need to check if struct tm has a tm_zone
2960# (which is not required by ISO C or UNIX spec) and/or if we support
2961# tzname[]
2962AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00002963
Brett Cannon43802422005-02-10 20:48:03 +00002964# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002965AC_MSG_CHECKING(for working tzset())
2966AC_CACHE_VAL(ac_cv_working_tzset, [
2967AC_TRY_RUN([
2968#include <stdlib.h>
2969#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00002970#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00002971
2972#if HAVE_TZNAME
2973extern char *tzname[];
2974#endif
2975
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002976int main()
2977{
Brett Cannon18367812003-09-19 00:59:16 +00002978 /* Note that we need to ensure that not only does tzset(3)
2979 do 'something' with localtime, but it works as documented
2980 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00002981 This includes making sure that tzname is set properly if
2982 tm->tm_zone does not exist since it is the alternative way
2983 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00002984
2985 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00002986 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00002987 */
2988
Brett Cannon43802422005-02-10 20:48:03 +00002989 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00002990 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
2991
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002992 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002993 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00002994 if (localtime(&groundhogday)->tm_hour != 0)
2995 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00002996#if HAVE_TZNAME
2997 /* For UTC, tzname[1] is sometimes "", sometimes " " */
2998 if (strcmp(tzname[0], "UTC") ||
2999 (tzname[1][0] != 0 && tzname[1][0] != ' '))
3000 exit(1);
3001#endif
Brett Cannon18367812003-09-19 00:59:16 +00003002
Neal Norwitz7f2588c2003-04-11 15:35:53 +00003003 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003004 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00003005 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003006 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003007#if HAVE_TZNAME
3008 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
3009 exit(1);
3010#endif
Brett Cannon18367812003-09-19 00:59:16 +00003011
3012 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3013 tzset();
3014 if (localtime(&groundhogday)->tm_hour != 11)
3015 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003016#if HAVE_TZNAME
3017 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3018 exit(1);
3019#endif
3020
3021#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003022 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3023 exit(1);
3024 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3025 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003026#endif
Brett Cannon18367812003-09-19 00:59:16 +00003027
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003028 exit(0);
3029}
3030],
3031ac_cv_working_tzset=yes,
3032ac_cv_working_tzset=no,
3033ac_cv_working_tzset=no)])
3034AC_MSG_RESULT($ac_cv_working_tzset)
3035if test "$ac_cv_working_tzset" = yes
3036then
3037 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3038 [Define if tzset() actually switches the local timezone in a meaningful way.])
3039fi
3040
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003041# Look for subsecond timestamps in struct stat
3042AC_MSG_CHECKING(for tv_nsec in struct stat)
3043AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3044AC_TRY_COMPILE([#include <sys/stat.h>], [
3045struct stat st;
3046st.st_mtim.tv_nsec = 1;
3047],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003048ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003049ac_cv_stat_tv_nsec=no,
3050ac_cv_stat_tv_nsec=no))
3051AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3052if test "$ac_cv_stat_tv_nsec" = yes
3053then
3054 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3055 [Define if you have struct stat.st_mtim.tv_nsec])
3056fi
3057
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003058# Look for BSD style subsecond timestamps in struct stat
3059AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3060AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3061AC_TRY_COMPILE([#include <sys/stat.h>], [
3062struct stat st;
3063st.st_mtimespec.tv_nsec = 1;
3064],
3065ac_cv_stat_tv_nsec2=yes,
3066ac_cv_stat_tv_nsec2=no,
3067ac_cv_stat_tv_nsec2=no))
3068AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3069if test "$ac_cv_stat_tv_nsec2" = yes
3070then
3071 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3072 [Define if you have struct stat.st_mtimensec])
3073fi
3074
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003075# On HP/UX 11.0, mvwdelch is a block with a return statement
3076AC_MSG_CHECKING(whether mvwdelch is an expression)
3077AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3078AC_TRY_COMPILE([#include <curses.h>], [
3079 int rtn;
3080 rtn = mvwdelch(0,0,0);
3081], ac_cv_mvwdelch_is_expression=yes,
3082 ac_cv_mvwdelch_is_expression=no,
3083 ac_cv_mvwdelch_is_expression=yes))
3084AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3085
3086if test "$ac_cv_mvwdelch_is_expression" = yes
3087then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003088 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3089 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003090fi
3091
3092AC_MSG_CHECKING(whether WINDOW has _flags)
3093AC_CACHE_VAL(ac_cv_window_has_flags,
3094AC_TRY_COMPILE([#include <curses.h>], [
3095 WINDOW *w;
3096 w->_flags = 0;
3097], ac_cv_window_has_flags=yes,
3098 ac_cv_window_has_flags=no,
3099 ac_cv_window_has_flags=no))
3100AC_MSG_RESULT($ac_cv_window_has_flags)
3101
3102
3103if test "$ac_cv_window_has_flags" = yes
3104then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003105 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3106 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003107fi
3108
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003109AC_MSG_CHECKING(for /dev/ptmx)
3110
3111if test -e /dev/ptmx
3112then
3113 AC_MSG_RESULT(yes)
3114 AC_DEFINE(HAVE_DEV_PTMX, 1,
3115 [Define if we have /dev/ptmx.])
3116else
3117 AC_MSG_RESULT(no)
3118fi
3119
Neal Norwitz865400f2003-03-21 01:42:58 +00003120AC_MSG_CHECKING(for /dev/ptc)
3121
3122if test -e /dev/ptc
3123then
3124 AC_MSG_RESULT(yes)
3125 AC_DEFINE(HAVE_DEV_PTC, 1,
3126 [Define if we have /dev/ptc.])
3127else
3128 AC_MSG_RESULT(no)
3129fi
3130
Martin v. Löwis01c04012002-11-11 14:58:44 +00003131AC_CHECK_TYPE(socklen_t,,
3132 AC_DEFINE(socklen_t,int,
3133 Define to `int' if <sys/socket.h> does not define.),[
3134#ifdef HAVE_SYS_TYPES_H
3135#include <sys/types.h>
3136#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003137#ifdef HAVE_SYS_SOCKET_H
3138#include <sys/socket.h>
3139#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003140])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003141
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003142AC_SUBST(THREADHEADERS)
3143
3144for h in `(cd $srcdir;echo Python/thread_*.h)`
3145do
3146 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3147done
3148
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003149AC_SUBST(SRCDIRS)
Neal Norwitzd24499d2005-12-18 21:36:39 +00003150SRCDIRS="Parser Grammar Objects Python Modules Mac"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003151AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003152for dir in $SRCDIRS; do
3153 if test ! -d $dir; then
3154 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003155 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003156done
3157AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003158
Guido van Rossum627b2d71993-12-24 10:39:16 +00003159# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003160AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3161AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003162
3163echo "creating Setup"
3164if test ! -f Modules/Setup
3165then
3166 cp $srcdir/Modules/Setup.dist Modules/Setup
3167fi
3168
3169echo "creating Setup.local"
3170if test ! -f Modules/Setup.local
3171then
3172 echo "# Edit this file for local setup changes" >Modules/Setup.local
3173fi
3174
3175echo "creating Makefile"
3176$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3177 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003178 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003179mv config.c Modules