blob: 101fd441382a5797587c569b98128babb47f6f94 [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
186 case $ac_sys_system/$ac_sys_release in
187 SunOS/5.8|SunOS/5.9)
188 AC_DEFINE(_XOPEN_SOURCE, 500,
189 Define to the level of X/Open that your system supports)
190 ;;
191 *)
192 AC_DEFINE(_XOPEN_SOURCE, 600,
193 Define to the level of X/Open that your system supports)
194 ;;
195 esac
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000196
197 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
198 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
199 # several APIs are not declared. Since this is also needed in some
200 # cases for HP-UX, we define it globally.
201
202 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Define to activate Unix95-and-earlier features)
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000203
Bob Ippolito7026a0a2005-03-28 23:23:47 +0000204 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
205
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000206fi
207
Guido van Rossum91922671997-10-09 20:24:13 +0000208#
209# SGI compilers allow the specification of the both the ABI and the
210# ISA on the command line. Depending on the values of these switches,
211# different and often incompatable code will be generated.
212#
213# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
214# thus supply support for various ABI/ISA combinations. The MACHDEP
215# variable is also adjusted.
216#
217AC_SUBST(SGI_ABI)
218if test ! -z "$SGI_ABI"
219then
220 CC="cc $SGI_ABI"
221 LDFLAGS="$SGI_ABI $LDFLAGS"
222 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
223fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000224AC_MSG_RESULT($MACHDEP)
225
Jack Jansen83f898c2002-12-30 22:23:40 +0000226# And add extra plat-mac for darwin
227AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000228AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000229AC_MSG_CHECKING(EXTRAPLATDIR)
230if test -z "$EXTRAPLATDIR"
231then
232 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000233 darwin)
234 EXTRAPLATDIR="\$(PLATMACDIRS)"
235 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
236 ;;
237 *)
238 EXTRAPLATDIR=""
239 EXTRAMACHDEPPATH=""
240 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000241 esac
242fi
243AC_MSG_RESULT($EXTRAPLATDIR)
244
Jack Jansen6b08a402004-06-03 12:41:45 +0000245# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET,
246# it may influence the way we can build extensions, so distutils
247# needs to check it
248AC_SUBST(CONFIGURE_MACOSX_DEPLOYMENT_TARGET)
249CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
250
Guido van Rossum627b2d71993-12-24 10:39:16 +0000251# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000252
253# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
254# for debug/optimization stuff. BASECFLAGS is for flags that are required
255# just to get things to compile and link. Users are free to override OPT
256# when running configure or make. The build should not break if they do.
257# BASECFLAGS should generally not be messed with, however.
258
259# XXX shouldn't some/most/all of this code be merged with the stuff later
260# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000261AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000262AC_ARG_WITH(gcc,
263 AC_HELP_STRING(--without-gcc,never use gcc),
264[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000265 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000266 no) CC=cc
267 without_gcc=yes;;
268 yes) CC=gcc
269 without_gcc=no;;
270 *) CC=$withval
271 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000272 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000273 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000274 AIX*) CC=cc_r
275 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000276 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000277 case $BE_HOST_CPU in
278 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000279 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000280 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000281 BASECFLAGS="$BASECFLAGS -export pragma"
282 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000283 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000284 ;;
285 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000286 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000287 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000288 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000289 ;;
290 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000291 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000292 ;;
293 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000294 AR="\$(srcdir)/Modules/ar_beos"
295 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000296 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000297 Monterey*)
298 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000299 without_gcc=;;
300 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000301 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000302AC_MSG_RESULT($without_gcc)
303
Guido van Rossum27552902001-01-23 01:52:26 +0000304AC_SUBST(CXX)
Guido van Rossum95012191999-12-16 17:50:52 +0000305AC_SUBST(MAINOBJ)
Fred Drakea1a84e72001-03-06 05:52:16 +0000306MAINOBJ=python.o
Guido van Rossum95012191999-12-16 17:50:52 +0000307AC_MSG_CHECKING(for --with-cxx=<compiler>)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000308AC_ARG_WITH(cxx,
309 AC_HELP_STRING(--with-cxx=<compiler>, enable C++ support),
310[
Martin v. Löwis537970f2000-12-13 17:37:02 +0000311 check_cxx=no
Guido van Rossum95012191999-12-16 17:50:52 +0000312 case $withval in
313 no) CXX=
314 with_cxx=no;;
315 *) CXX=$withval
Fred Drakea1a84e72001-03-06 05:52:16 +0000316 MAINOBJ=ccpython.o
Guido van Rossum95012191999-12-16 17:50:52 +0000317 with_cxx=$withval;;
318 esac], [
319 with_cxx=no
Martin v. Löwis537970f2000-12-13 17:37:02 +0000320 check_cxx=yes
Guido van Rossum95012191999-12-16 17:50:52 +0000321])
322AC_MSG_RESULT($with_cxx)
Martin v. Löwis537970f2000-12-13 17:37:02 +0000323
Michael W. Hudson54241132001-12-07 15:38:26 +0000324if test "$with_cxx" = "yes"
325then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000326 AC_MSG_ERROR([must supply a compiler when using --with-cxx])
Michael W. Hudson54241132001-12-07 15:38:26 +0000327fi
328
Martin v. Löwis537970f2000-12-13 17:37:02 +0000329dnl The following fragment works similar to AC_PROG_CXX.
330dnl It does not fail if CXX is not found, and it is not executed if
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000331dnl --without-cxx was given.
Martin v. Löwis537970f2000-12-13 17:37:02 +0000332dnl Finally, it does not test whether CXX is g++.
333
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000334dnl Autoconf 2.5x does not have AC_PROG_CXX_WORKS anymore
335ifdef([AC_PROG_CXX_WORKS],[],
336 [AC_DEFUN([AC_PROG_CXX_WORKS],
337 [AC_LANG_PUSH(C++)dnl
338 _AC_COMPILER_EXEEXT
339 AC_LANG_POP()
340 ]
341)])
342
Martin v. Löwis537970f2000-12-13 17:37:02 +0000343if test "$check_cxx" = "yes"
344then
345 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
346 if test "$CXX" = "notfound"
347 then
348 CXX=
349 else
350 AC_PROG_CXX_WORKS
351 fi
352fi
353
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000354# If the user switches compilers, we can't believe the cache
355if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
356then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000357 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
358(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000359fi
360
Guido van Rossum627b2d71993-12-24 10:39:16 +0000361AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000362
363# checks for UNIX variants that set C preprocessor variables
364AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000365
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000366# Check for unsupported systems
367case $ac_sys_system/$ac_sys_release in
Skip Montanaroce59c042004-01-17 14:19:44 +0000368Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000369 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
370 echo See README for details.
371 exit 1;;
372esac
373
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000374AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000375AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000376AC_ARG_WITH(suffix,
377 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
378[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000379 case $withval in
380 no) EXEEXT=;;
381 yes) EXEEXT=.exe;;
382 *) EXEEXT=$withval;;
383 esac])
384AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000385
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000386# Test whether we're running on a non-case-sensitive system, in which
387# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000388AC_SUBST(BUILDEXEEXT)
389AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000390if test ! -d CaseSensitiveTestDir; then
391mkdir CaseSensitiveTestDir
392fi
393
394if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000395then
Jack Jansen1999ef42001-12-06 21:47:20 +0000396 AC_MSG_RESULT(yes)
397 BUILDEXEEXT=.exe
398else
399 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000400 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000401fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000402rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000403
Guido van Rossumdd997f71998-10-07 19:58:26 +0000404case $MACHDEP in
405bsdos*)
406 case $CC in
407 gcc) CC="$CC -D_HAVE_BSDI";;
408 esac;;
409esac
410
Guido van Rossum84561611997-08-21 00:08:11 +0000411case $ac_sys_system in
412hp*|HP*)
413 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000414 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000415 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000416Monterey*)
417 case $CC in
418 cc) CC="$CC -Wl,-Bexport";;
419 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000420SunOS*)
421 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000422 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000423 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000424esac
425
Martin v. Löwise8964d42001-03-06 12:09:07 +0000426
Neil Schemenauer61c51152001-01-26 16:18:16 +0000427AC_SUBST(LIBRARY)
428AC_MSG_CHECKING(LIBRARY)
429if test -z "$LIBRARY"
430then
431 LIBRARY='libpython$(VERSION).a'
432fi
433AC_MSG_RESULT($LIBRARY)
434
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000435# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000436# name of the library into which to insert object files). BLDLIBRARY is also
437# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
438# is blank as the main program is not linked directly against LDLIBRARY.
439# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
440# systems without shared libraries, LDLIBRARY is the same as LIBRARY
441# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
442# DLLLIBRARY is the shared (i.e., DLL) library.
443#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000444# RUNSHARED is used to run shared python without installed libraries
445#
446# INSTSONAME is the name of the shared library that will be use to install
447# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000448AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000449AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000450AC_SUBST(BLDLIBRARY)
451AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000452AC_SUBST(INSTSONAME)
453AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000454LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000455BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000456INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000457DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000458LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000459RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000460
Guido van Rossumfb842551997-08-06 23:42:07 +0000461# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000462# If CXX is set, and if it is needed to link a main function that was
463# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
464# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000465# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000466# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000467AC_SUBST(LINKCC)
468AC_MSG_CHECKING(LINKCC)
469if test -z "$LINKCC"
470then
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000471 if test -z "$CXX"; then
472 LINKCC="\$(PURIFY) \$(CC)"
473 else
Martin v. Löwis1931ca72002-06-01 21:39:58 +0000474 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000475 $CXX -c conftest.$ac_ext 2>&5
476 if $CC -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
477 && test -s conftest$ac_exeext && ./conftest$ac_exeext
478 then
479 LINKCC="\$(PURIFY) \$(CC)"
480 else
481 LINKCC="\$(PURIFY) \$(CXX)"
482 fi
483 rm -fr conftest*
484 fi
Guido van Rossumfb842551997-08-06 23:42:07 +0000485 case $ac_sys_system in
486 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000487 exp_extra="\"\""
488 if test $ac_sys_release -ge 5 -o \
489 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
490 exp_extra="."
491 fi
492 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000493 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000494 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000495 esac
496fi
497AC_MSG_RESULT($LINKCC)
498
Martin v. Löwis1142de32002-03-29 16:28:31 +0000499AC_MSG_CHECKING(for --enable-shared)
500AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000501 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000502
Martin v. Löwis1142de32002-03-29 16:28:31 +0000503if test -z "$enable_shared"
504then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000505 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000506 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000507 enable_shared="yes";;
508 *)
509 enable_shared="no";;
510 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000511fi
512AC_MSG_RESULT($enable_shared)
513
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000514AC_MSG_CHECKING(for --enable-profiling)
515AC_ARG_ENABLE(profiling,
516 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
517[ac_save_cc="$CC"
518 CC="$CC -pg"
519 AC_TRY_RUN([int main() { return 0; }],
520 ac_enable_profiling="yes",
521 ac_enable_profiling="no",
522 ac_enable_profiling="no")
523 CC="$ac_save_cc"])
524AC_MSG_RESULT($ac_enable_profiling)
525
526case "$ac_enable_profiling" in
527 "yes")
528 BASECFLAGS="-pg $BASECFLAGS"
529 LDFLAGS="-pg $LDFLAGS"
530 ;;
531esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000532
533AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000534
Guido van Rossumb8552162001-09-05 14:58:11 +0000535# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
536# library that we build, but we do not want to link against it (we
537# will find it with a -framework option). For this reason there is an
538# extra variable BLDLIBRARY against which Python and the extension
539# modules are linked, BLDLIBRARY. This is normally the same as
540# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000541if test "$enable_framework"
542then
543 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000544 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000545 BLDLIBRARY=''
546else
547 BLDLIBRARY='$(LDLIBRARY)'
548fi
549
Martin v. Löwis1142de32002-03-29 16:28:31 +0000550# Other platforms follow
551if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000552 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000553 case $ac_sys_system in
554 BeOS*)
555 LDLIBRARY='libpython$(VERSION).so'
556 ;;
557 CYGWIN*)
558 LDLIBRARY='libpython$(VERSION).dll.a'
559 DLLLIBRARY='libpython$(VERSION).dll'
560 ;;
561 SunOS*)
562 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000563 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000564 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000565 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000566 ;;
Hye-Shik Chang33761492004-10-26 09:53:46 +0000567 Linux*|GNU*|NetBSD*|FreeBSD*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000568 LDLIBRARY='libpython$(VERSION).so'
569 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000570 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000571 case $ac_sys_system in
572 FreeBSD*)
573 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
574 ;;
575 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000576 INSTSONAME="$LDLIBRARY".$SOVERSION
577 ;;
578 hp*|HP*)
579 LDLIBRARY='libpython$(VERSION).sl'
580 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000581 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000582 ;;
583 OSF*)
584 LDLIBRARY='libpython$(VERSION).so'
585 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000586 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000587 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000588 atheos*)
589 LDLIBRARY='libpython$(VERSION).so'
590 BLDLIBRARY='-L. -lpython$(VERSION)'
591 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
592 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000593 esac
Jason Tishler30765592003-09-04 11:04:06 +0000594else # shared is disabled
595 case $ac_sys_system in
596 CYGWIN*)
597 BLDLIBRARY='$(LIBRARY)'
598 LDLIBRARY='libpython$(VERSION).dll.a'
599 ;;
600 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000601fi
602
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000603AC_MSG_RESULT($LDLIBRARY)
604
Guido van Rossum627b2d71993-12-24 10:39:16 +0000605AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000606AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000607AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000608
609case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000610bsdos*|hp*|HP*)
611 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000612 if test -z "$INSTALL"
613 then
614 INSTALL="${srcdir}/install-sh -c"
615 fi
616esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000617AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000618
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000619# Not every filesystem supports hard links
620AC_SUBST(LN)
621if test -z "$LN" ; then
622 case $ac_sys_system in
623 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000624 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000625 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000626 *) LN=ln;;
627 esac
628fi
629
Fred Drake9f715822001-07-11 06:27:00 +0000630# Check for --with-pydebug
631AC_MSG_CHECKING(for --with-pydebug)
632AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000633 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
634[
Fred Drake9f715822001-07-11 06:27:00 +0000635if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000636then
637 AC_DEFINE(Py_DEBUG, 1,
638 [Define if you want to build an interpreter with many run-time checks.])
639 AC_MSG_RESULT(yes);
640 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000641else AC_MSG_RESULT(no); Py_DEBUG='false'
642fi],
643[AC_MSG_RESULT(no)])
644
Skip Montanarodecc6a42003-01-01 20:07:49 +0000645# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
646# merged with this chunk of code?
647
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000648# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000649# ------------------------
650# (The following bit of code is complicated enough - please keep things
651# indented properly. Just pretend you're editing Python code. ;-)
652
653# There are two parallel sets of case statements below, one that checks to
654# see if OPT was set and one that does BASECFLAGS setting based upon
655# compiler and platform. BASECFLAGS tweaks need to be made even if the
656# user set OPT.
657
658# tweak OPT based on compiler and platform, only if the user didn't set
659# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000660AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000661if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000662then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000663 case $GCC in
664 yes)
665 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000666 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000667 if test "$Py_DEBUG" = 'true' ; then
668 # Optimization messes up debuggers, so turn it off for
669 # debug builds.
670 OPT="-g -Wall -Wstrict-prototypes"
671 else
672 OPT="-g -O3 -Wall -Wstrict-prototypes"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000673 fi
674 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000675 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000676 OPT="-O3 -Wall -Wstrict-prototypes"
677 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000678 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000679 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000680 SCO_SV*) OPT="$OPT -m486 -DSCO5"
681 ;;
682 esac
Fred Drake9f715822001-07-11 06:27:00 +0000683 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000684
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000685 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000686 OPT="-O"
687 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000688 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000689
690 # The current (beta) Monterey compiler dies with optimizations
691 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000692 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000693 Monterey*)
694 OPT=""
695 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000696 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000697
Guido van Rossum4e8af441994-08-19 15:33:54 +0000698fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000699
Skip Montanarodecc6a42003-01-01 20:07:49 +0000700AC_SUBST(BASECFLAGS)
701# tweak BASECFLAGS based on compiler and platform
702case $GCC in
703yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000704 # Python violates C99 rules, by casting between incompatible
705 # pointer types. GCC may generate bad code as a result of that,
706 # so use -fno-strict-aliasing if supported.
707 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
708 ac_save_cc="$CC"
709 CC="$CC -fno-strict-aliasing"
710 AC_TRY_RUN([int main() { return 0; }],
711 ac_cv_no_strict_aliasing_ok=yes,
712 ac_cv_no_strict_aliasing_ok=no,
713 ac_cv_no_strict_aliasing_ok=no)
714 CC="$ac_save_cc"
715 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
716 if test $ac_cv_no_strict_aliasing_ok = yes
717 then
718 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
719 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000720 case $ac_sys_system in
721 SCO_SV*)
722 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
723 ;;
724 # is there any other compiler on Darwin besides gcc?
725 Darwin*)
Jack Jansene0040412003-07-23 22:17:28 +0000726 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000727 ;;
728 esac
729 ;;
730
731*)
732 case $ac_sys_system in
733 OpenUNIX*|UnixWare*)
734 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
735 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000736 OSF*)
737 BASECFLAGS="$BASECFLAGS -ieee -std"
738 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000739 SCO_SV*)
740 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
741 ;;
742 esac
743 ;;
744esac
745
Fred Drakee1ceaa02001-12-04 20:55:47 +0000746if test "$Py_DEBUG" = 'true'; then
747 :
748else
749 OPT="-DNDEBUG $OPT"
750fi
751
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000752if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000753then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000754 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000755fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000756
Guido van Rossum91922671997-10-09 20:24:13 +0000757AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
758AC_CACHE_VAL(ac_cv_opt_olimit_ok,
759[ac_save_cc="$CC"
760CC="$CC -OPT:Olimit=0"
761AC_TRY_RUN([int main() { return 0; }],
762 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000763 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000764 ac_cv_opt_olimit_ok=no)
765CC="$ac_save_cc"])
766AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000767if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000768 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000769 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
770 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
771 # environment?
772 Darwin*)
773 ;;
774 *)
775 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
776 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000777 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000778else
779 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
780 AC_CACHE_VAL(ac_cv_olimit_ok,
781 [ac_save_cc="$CC"
782 CC="$CC -Olimit 1500"
783 AC_TRY_RUN([int main() { return 0; }],
784 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000785 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000786 ac_cv_olimit_ok=no)
787 CC="$ac_save_cc"])
788 AC_MSG_RESULT($ac_cv_olimit_ok)
789 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000790 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000791 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000792fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000793
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000794# On some compilers, pthreads are available without further options
795# (e.g. MacOS X). On some of these systems, the compiler will not
796# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
797# So we have to see first whether pthreads are available without
798# options before we can check whether -Kpthread improves anything.
799AC_MSG_CHECKING(whether pthreads are available without options)
800AC_CACHE_VAL(ac_cv_pthread_is_default,
801[AC_TRY_RUN([
802#include <pthread.h>
803
804void* routine(void* p){return NULL;}
805
806int main(){
807 pthread_t p;
808 if(pthread_create(&p,NULL,routine,NULL)!=0)
809 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000810 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000811 return 0;
812}
813],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000814[
815 ac_cv_pthread_is_default=yes
816 ac_cv_kthread=no
817 ac_cv_pthread=no
818],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000819 ac_cv_pthread_is_default=no,
820 ac_cv_pthread_is_default=no)
821])
822AC_MSG_RESULT($ac_cv_pthread_is_default)
823
824
825if test $ac_cv_pthread_is_default = yes
826then
827 ac_cv_kpthread=no
828else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000829# -Kpthread, if available, provides the right #defines
830# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000831# Some compilers won't report that they do not support -Kpthread,
832# so we need to run a program to see whether it really made the
833# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000834AC_MSG_CHECKING(whether $CC accepts -Kpthread)
835AC_CACHE_VAL(ac_cv_kpthread,
836[ac_save_cc="$CC"
837CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000838AC_TRY_RUN([
839#include <pthread.h>
840
841void* routine(void* p){return NULL;}
842
843int main(){
844 pthread_t p;
845 if(pthread_create(&p,NULL,routine,NULL)!=0)
846 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000847 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000848 return 0;
849}
850],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000851 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000852 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000853 ac_cv_kpthread=no)
854CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000855AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000856fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000857
Skip Montanarod8d39a02003-07-10 20:44:10 +0000858if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000859then
860# -Kthread, if available, provides the right #defines
861# and linker options to make pthread_create available
862# Some compilers won't report that they do not support -Kthread,
863# so we need to run a program to see whether it really made the
864# function available.
865AC_MSG_CHECKING(whether $CC accepts -Kthread)
866AC_CACHE_VAL(ac_cv_kthread,
867[ac_save_cc="$CC"
868CC="$CC -Kthread"
869AC_TRY_RUN([
870#include <pthread.h>
871
872void* routine(void* p){return NULL;}
873
874int main(){
875 pthread_t p;
876 if(pthread_create(&p,NULL,routine,NULL)!=0)
877 return 1;
878 (void)pthread_detach(p);
879 return 0;
880}
881],
882 ac_cv_kthread=yes,
883 ac_cv_kthread=no,
884 ac_cv_kthread=no)
885CC="$ac_save_cc"])
886AC_MSG_RESULT($ac_cv_kthread)
887fi
888
Skip Montanarod8d39a02003-07-10 20:44:10 +0000889if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000890then
891# -pthread, if available, provides the right #defines
892# and linker options to make pthread_create available
893# Some compilers won't report that they do not support -pthread,
894# so we need to run a program to see whether it really made the
895# function available.
896AC_MSG_CHECKING(whether $CC accepts -pthread)
897AC_CACHE_VAL(ac_cv_thread,
898[ac_save_cc="$CC"
899CC="$CC -pthread"
900AC_TRY_RUN([
901#include <pthread.h>
902
903void* routine(void* p){return NULL;}
904
905int main(){
906 pthread_t p;
907 if(pthread_create(&p,NULL,routine,NULL)!=0)
908 return 1;
909 (void)pthread_detach(p);
910 return 0;
911}
912],
913 ac_cv_pthread=yes,
914 ac_cv_pthread=no,
915 ac_cv_pthread=no)
916CC="$ac_save_cc"])
917AC_MSG_RESULT($ac_cv_pthread)
918fi
919
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000920# If we have set a CC compiler flag for thread support then
921# check if it works for CXX, too.
922ac_cv_cxx_thread=no
923if test ! -z "$CXX"
924then
925AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
926ac_save_cxx="$CXX"
927
928if test "$ac_cv_kpthread" = "yes"
929then
Martin v. Löwis519adae2003-09-20 10:47:47 +0000930 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000931 ac_cv_cxx_thread=yes
932elif test "$ac_cv_kthread" = "yes"
933then
934 CXX="$CXX -Kthread"
935 ac_cv_cxx_thread=yes
936elif test "$ac_cv_pthread" = "yes"
937then
938 CXX="$CXX -pthread"
939 ac_cv_cxx_thread=yes
940fi
941
942if test $ac_cv_cxx_thread = yes
943then
944 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
945 $CXX -c conftest.$ac_ext 2>&5
946 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
947 && test -s conftest$ac_exeext && ./conftest$ac_exeext
948 then
949 ac_cv_cxx_thread=yes
950 else
951 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000952 fi
953 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000954fi
Brett Cannonc601e0f2004-11-07 01:24:12 +0000955AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000956fi
Martin v. Löwis519adae2003-09-20 10:47:47 +0000957CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000958
Fred Drakece81d592000-07-09 14:39:29 +0000959dnl # check for ANSI or K&R ("traditional") preprocessor
960dnl AC_MSG_CHECKING(for C preprocessor type)
961dnl AC_TRY_COMPILE([
962dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
963dnl int foo;
964dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
965dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
966dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +0000967
Guido van Rossum627b2d71993-12-24 10:39:16 +0000968# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000969AC_HEADER_STDC
Martin v. Löwisc3001752005-01-23 09:27:24 +0000970AC_CHECK_HEADERS(curses.h dlfcn.h fcntl.h grp.h shadow.h langinfo.h \
Skip Montanaro7befb992004-02-10 16:50:21 +0000971libintl.h ncurses.h poll.h pthread.h \
972stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +0000973unistd.h utime.h \
Anthony Baxter8a560de2004-10-13 15:30:56 +0000974sys/audioio.h sys/bsdtty.h sys/file.h sys/loadavg.h sys/lock.h sys/mkdev.h \
975sys/modem.h \
Andrew M. Kuchling881fd902001-07-14 20:55:52 +0000976sys/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 +0000977sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +0000978sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
979bluetooth/bluetooth.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000980AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +0000981AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +0000982
Martin v. Löwisae2830c2004-09-18 09:54:52 +0000983# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +0000984AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +0000985#ifdef HAVE_CURSES_H
986#include <curses.h>
987#endif
988])
Martin v. Löwisae2830c2004-09-18 09:54:52 +0000989
Guido van Rossum627b2d71993-12-24 10:39:16 +0000990# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000991was_it_defined=no
992AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000993AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
994 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
995])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000996AC_MSG_RESULT($was_it_defined)
997
Neal Norwitz11690112002-07-30 01:08:28 +0000998# Check whether using makedev requires defining _OSF_SOURCE
999AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001000AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001001 [ makedev(0, 0) ],
1002 ac_cv_has_makedev=yes,
1003 ac_cv_has_makedev=no)
1004if test "$ac_cv_has_makedev" = "no"; then
1005 # we didn't link, try if _OSF_SOURCE will allow us to link
1006 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001007#define _OSF_SOURCE 1
1008#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001009 ],
1010 [ makedev(0, 0) ],
1011 ac_cv_has_makedev=yes,
1012 ac_cv_has_makedev=no)
1013 if test "$ac_cv_has_makedev" = "yes"; then
1014 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1015 fi
1016fi
1017AC_MSG_RESULT($ac_cv_has_makedev)
1018if test "$ac_cv_has_makedev" = "yes"; then
1019 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1020fi
1021
Martin v. Löwis399a6892002-10-04 10:22:02 +00001022# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1023# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1024# defined, but the compiler does not support pragma redefine_extname,
1025# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1026# structures (such as rlimit64) without declaring them. As a
1027# work-around, disable LFS on such configurations
1028
1029use_lfs=yes
1030AC_MSG_CHECKING(Solaris LFS bug)
1031AC_TRY_COMPILE([
1032#define _LARGEFILE_SOURCE 1
1033#define _FILE_OFFSET_BITS 64
1034#include <sys/resource.h>
1035],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1036AC_MSG_RESULT($sol_lfs_bug)
1037if test "$sol_lfs_bug" = "yes"; then
1038 use_lfs=no
1039fi
1040
1041if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001042# Two defines needed to enable largefile support on various platforms
1043# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001044AC_DEFINE(_LARGEFILE_SOURCE, 1,
1045[This must be defined on some systems to enable large file support.])
1046AC_DEFINE(_FILE_OFFSET_BITS, 64,
1047[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001048fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001049
Guido van Rossum300fda71996-08-19 21:58:16 +00001050# Add some code to confdefs.h so that the test for off_t works on SCO
1051cat >> confdefs.h <<\EOF
1052#if defined(SCO_DS)
1053#undef _OFF_T
1054#endif
1055EOF
1056
Guido van Rossumef2255b2000-03-10 22:30:29 +00001057# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001058AC_TYPE_MODE_T
1059AC_TYPE_OFF_T
1060AC_TYPE_PID_T
1061AC_TYPE_SIGNAL
1062AC_TYPE_SIZE_T
1063AC_TYPE_UID_T
Guido van Rossum627b2d71993-12-24 10:39:16 +00001064
Guido van Rossumef2255b2000-03-10 22:30:29 +00001065# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001066# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001067AC_CHECK_SIZEOF(int, 4)
1068AC_CHECK_SIZEOF(long, 4)
1069AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001070AC_CHECK_SIZEOF(short, 2)
1071AC_CHECK_SIZEOF(float, 4)
1072AC_CHECK_SIZEOF(double, 8)
1073AC_CHECK_SIZEOF(fpos_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001074
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001075AC_MSG_CHECKING(for long long support)
1076have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001077AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1078 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1079 have_long_long=yes
1080])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001081AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001082if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001083AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001084fi
1085
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001086AC_MSG_CHECKING(for uintptr_t support)
1087have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001088AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
1089 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
1090 have_uintptr_t=yes
1091])
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001092AC_MSG_RESULT($have_uintptr_t)
1093if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001094AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001095fi
1096
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001097# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1098AC_MSG_CHECKING(size of off_t)
1099AC_CACHE_VAL(ac_cv_sizeof_off_t,
1100[AC_TRY_RUN([#include <stdio.h>
1101#include <sys/types.h>
1102main()
1103{
1104 FILE *f=fopen("conftestval", "w");
1105 if (!f) exit(1);
1106 fprintf(f, "%d\n", sizeof(off_t));
1107 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001108}],
1109ac_cv_sizeof_off_t=`cat conftestval`,
1110ac_cv_sizeof_off_t=0,
1111ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001112])
1113AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001114AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1115[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001116
1117AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001118if test "$have_long_long" = yes -a \
1119 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1120 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001121 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1122 [Defined to enable large file support when an off_t is bigger than a long
1123 and long long is available and at least as big as an off_t. You may need
1124 to add some flags for configuration and compilation to enable this mode.
1125 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001126 AC_MSG_RESULT(yes)
1127else
1128 AC_MSG_RESULT(no)
1129fi
1130
Fred Drakea3f6e912000-06-29 20:44:47 +00001131# AC_CHECK_SIZEOF() doesn't include <time.h>.
1132AC_MSG_CHECKING(size of time_t)
1133AC_CACHE_VAL(ac_cv_sizeof_time_t,
1134[AC_TRY_RUN([#include <stdio.h>
1135#include <time.h>
1136main()
1137{
1138 FILE *f=fopen("conftestval", "w");
1139 if (!f) exit(1);
1140 fprintf(f, "%d\n", sizeof(time_t));
1141 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001142}],
1143ac_cv_sizeof_time_t=`cat conftestval`,
1144ac_cv_sizeof_time_t=0,
1145ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001146])
1147AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001148AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1149[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001150
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001151
Trent Mick635f6fb2000-08-23 21:33:05 +00001152# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001153ac_save_cc="$CC"
1154if test "$ac_cv_kpthread" = "yes"
1155then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001156elif test "$ac_cv_kthread" = "yes"
1157then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001158elif test "$ac_cv_pthread" = "yes"
1159then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001160fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001161AC_MSG_CHECKING(for pthread_t)
1162have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001163AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001164AC_MSG_RESULT($have_pthread_t)
1165if test "$have_pthread_t" = yes ; then
1166 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1167 AC_MSG_CHECKING(size of pthread_t)
1168 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1169 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001170#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001171 main()
1172 {
1173 FILE *f=fopen("conftestval", "w");
1174 if (!f) exit(1);
1175 fprintf(f, "%d\n", sizeof(pthread_t));
1176 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001177 }],
1178 ac_cv_sizeof_pthread_t=`cat conftestval`,
1179 ac_cv_sizeof_pthread_t=0,
1180 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001181 ])
1182 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001183 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1184 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001185fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001186CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001187
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001188AC_MSG_CHECKING(for --enable-toolbox-glue)
1189AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001190 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001191
1192if test -z "$enable_toolbox_glue"
1193then
1194 case $ac_sys_system/$ac_sys_release in
1195 Darwin/*)
1196 enable_toolbox_glue="yes";;
1197 *)
1198 enable_toolbox_glue="no";;
1199 esac
1200fi
1201case "$enable_toolbox_glue" in
1202yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001203 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001204 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001205 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1206 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001207 ;;
1208*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001209 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001210 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001211 ;;
1212esac
1213AC_MSG_RESULT($enable_toolbox_glue)
1214
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001215AC_SUBST(OTHER_LIBTOOL_OPT)
1216case $ac_sys_system/$ac_sys_release in
1217 Darwin/@<:@01234567@:>@.*)
1218 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1219 ;;
1220 Darwin/*)
1221 OTHER_LIBTOOL_OPT=""
1222 ;;
1223esac
1224
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001225AC_SUBST(LIBTOOL_CRUFT)
1226case $ac_sys_system/$ac_sys_release in
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001227 Darwin/@<:@01234567@:>@.*)
1228 LIBTOOL_CRUFT="-framework System -lcc_dynamic -arch_only ppc"
Jack Jansenb36687a2004-07-16 08:43:47 +00001229 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001230 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001231 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001232 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1233 if test ${gcc_version} '<' 4.0
1234 then
1235 LIBTOOL_CRUFT="-lcc_dynamic"
1236 else
1237 LIBTOOL_CRUFT=""
1238 fi
1239 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -lSystem -lSystemStubs -arch_only ppc'
Jack Jansenb36687a2004-07-16 08:43:47 +00001240 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001241 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001242esac
1243
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001244AC_MSG_CHECKING(for --enable-framework)
1245if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001246then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001247 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001248 # -F. is needed to allow linking to the framework while
1249 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001250 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1251 [Define if you want to produce an OpenStep/Rhapsody framework
1252 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001253 AC_MSG_RESULT(yes)
1254else
1255 AC_MSG_RESULT(no)
1256fi
1257
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001258AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001259case $ac_sys_system/$ac_sys_release in
1260 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001261 AC_DEFINE(WITH_DYLD, 1,
1262 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1263 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1264 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001265 AC_MSG_RESULT(always on for Darwin)
1266 ;;
1267 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001268 AC_MSG_RESULT(no)
1269 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001270esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001271
Guido van Rossumac405f61994-09-12 10:56:06 +00001272# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001273AC_SUBST(SO)
1274AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001275AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001276AC_SUBST(CCSHARED)
1277AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001278# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001279# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001280AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001281if test -z "$SO"
1282then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001283 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001284 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001285 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001286 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001287 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001288else
1289 # this might also be a termcap variable, see #610332
1290 echo
1291 echo '====================================================================='
1292 echo '+ +'
1293 echo '+ WARNING: You have set SO in your environment. +'
1294 echo '+ Do you really mean to change the extension for shared libraries? +'
1295 echo '+ Continuing in 10 seconds to let you to ponder. +'
1296 echo '+ +'
1297 echo '====================================================================='
1298 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001299fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001300AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001301# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001302# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001303# (Shared libraries in this instance are shared modules to be loaded into
1304# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001305AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001306if test -z "$LDSHARED"
1307then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001308 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001309 AIX*)
1310 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001311 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001312 ;;
1313 BeOS*)
1314 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001315 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001316 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001317 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001318 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001319 SunOS/5*)
1320 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001321 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001322 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001323 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001324 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001325 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001326 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001327 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1328 if test "$enable_framework" ; then
1329 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001330 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1331 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001332 else
1333 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001334 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001335 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001336 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001337 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1338 if test "$enable_framework" ; then
1339 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001340 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1341 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001342 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001343 # No framework, use the Python app as bundle-loader
1344 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001345 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001346 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001347 Darwin/*)
1348 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1349 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001350 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Jack Jansenc110f862005-01-07 10:49:32 +00001351 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Jack Jansenbe954622004-12-26 23:07:48 +00001352 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001353 then
1354 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1355 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001356 else
1357 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1358 if test "$enable_framework" ; then
1359 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001360 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1361 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001362 else
1363 # No framework, use the Python app as bundle-loader
1364 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1365 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1366 fi
1367 fi
1368 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001369 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001370 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001371 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001372 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001373 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001374 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001375 else
1376 LDSHARED="ld -Bshareable ${LDFLAGS}"
1377 fi;;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001378 NetBSD*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001379 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001380 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001381 then LDSHARED='$(CC) -shared'
1382 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001383 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001384 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001385 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001386 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001387 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001388 *) LDSHARED="ld";;
1389 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001390fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001391AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001392BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001393# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001394# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001395AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001396if test -z "$CCSHARED"
1397then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001398 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001399 SunOS*) if test "$GCC" = yes;
1400 then CCSHARED="-fPIC";
1401 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001402 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001403 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001404 else CCSHARED="+z";
1405 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001406 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001407 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001408 FreeBSD*|NetBSD*|OpenBSD*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001409 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001410 if test "$GCC" = "yes"
1411 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001412 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001413 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001414 SCO_SV*)
1415 if test "$GCC" = "yes"
1416 then CCSHARED="-fPIC"
1417 else CCSHARED="-Kpic -belf"
1418 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001419 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001420 IRIX*/6*) case $CC in
1421 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001422 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001423 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001424 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001425 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001426fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001427AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001428# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001429# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001430AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001431if test -z "$LINKFORSHARED"
1432then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001433 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001434 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001435 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001436 LINKFORSHARED="-Wl,-E -Wl,+s";;
1437# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001438 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001439 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001440 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001441 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001442 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1443 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001444 # not used by the core itself but which needs to be in the core so
1445 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001446 # -prebind is no longer used, because it actually seems to give a
1447 # slowdown in stead of a speedup, maybe due to the large number of
1448 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001449
1450 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001451 if test "$enable_framework"
1452 then
Jack Jansenda49e192005-01-07 13:08:22 +00001453 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001454 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001455 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001456 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001457 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001458 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001459 FreeBSD*|NetBSD*|OpenBSD*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001460 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1461 then
1462 LINKFORSHARED="-Wl,--export-dynamic"
1463 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001464 SunOS/5*) case $CC in
1465 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001466 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001467 then
1468 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001469 fi;;
1470 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001471 CYGWIN*)
1472 if test $enable_shared = "no"
1473 then
1474 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1475 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001476 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001477fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001478AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001479
Neil Schemenauer61c51152001-01-26 16:18:16 +00001480AC_SUBST(CFLAGSFORSHARED)
1481AC_MSG_CHECKING(CFLAGSFORSHARED)
1482if test ! "$LIBRARY" = "$LDLIBRARY"
1483then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001484 case $ac_sys_system in
1485 CYGWIN*)
1486 # Cygwin needs CCSHARED when building extension DLLs
1487 # but not when building the interpreter DLL.
1488 CFLAGSFORSHARED='';;
1489 *)
1490 CFLAGSFORSHARED='$(CCSHARED)'
1491 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001492fi
1493AC_MSG_RESULT($CFLAGSFORSHARED)
1494
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001495# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1496# library (with --enable-shared).
1497# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001498# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1499# if it is not required, since it creates a dependency of the shared library
1500# to LIBS. This, in turn, means that applications linking the shared libpython
1501# don't need to link LIBS explicitly. The default should be only changed
1502# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001503AC_SUBST(SHLIBS)
1504AC_MSG_CHECKING(SHLIBS)
1505case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001506 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001507 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001508esac
1509AC_MSG_RESULT($SHLIBS)
1510
1511
Guido van Rossum627b2d71993-12-24 10:39:16 +00001512# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001513AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1514AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001515
1516# only check for sem_ini if thread support is requested
1517if test "$with_threads" = "yes" -o -z "$with_threads"; then
1518 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1519 # posix4 on Solaris 2.6
1520 # pthread (first!) on Linux
1521fi
1522
Martin v. Löwis19d17342003-06-14 21:03:05 +00001523# check if we need libintl for locale functions
1524AC_CHECK_LIB(intl, textdomain,
1525 AC_DEFINE(WITH_LIBINTL, 1,
1526 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001527
1528# checks for system dependent C++ extensions support
1529case "$ac_sys_system" in
1530 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1531 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1532 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001533 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1534 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1535 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001536 AC_MSG_RESULT(yes)],
1537 [AC_MSG_RESULT(no)]);;
1538 *) ;;
1539esac
1540
Guido van Rossum70c7f481998-03-26 18:44:10 +00001541# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001542# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001543AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001544AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001545
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001546case "$ac_sys_system" in
1547BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001548AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1549;;
1550esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001551
Guido van Rossumc5a39031996-07-31 17:35:03 +00001552AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001553AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001554 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1555[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001556AC_MSG_RESULT($withval)
1557LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001558],
1559[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001560
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001561# Determine if signalmodule should be used.
1562AC_SUBST(USE_SIGNAL_MODULE)
1563AC_SUBST(SIGNAL_OBJS)
1564AC_MSG_CHECKING(for --with-signal-module)
1565AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001566 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001567
1568if test -z "$with_signal_module"
1569then with_signal_module="yes"
1570fi
1571AC_MSG_RESULT($with_signal_module)
1572
1573if test "${with_signal_module}" = "yes"; then
1574 USE_SIGNAL_MODULE=""
1575 SIGNAL_OBJS=""
1576else
1577 USE_SIGNAL_MODULE="#"
1578 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1579fi
1580
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001581# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001582AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001583USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001584
Guido van Rossum54d93d41997-01-22 20:51:58 +00001585AC_MSG_CHECKING(for --with-dec-threads)
1586AC_SUBST(LDLAST)
1587AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001588 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1589[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001590AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001591LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001592if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001593 with_thread="$withval";
1594fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001595[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001596
Martin v. Löwis11437992002-04-12 09:54:03 +00001597# Templates for things AC_DEFINEd more than once.
1598# For a single AC_DEFINE, no template is needed.
1599AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1600AH_TEMPLATE(_REENTRANT,
1601 [Define to force use of thread-safe errno, h_errno, and other functions])
1602AH_TEMPLATE(WITH_THREAD,
1603 [Define if you want to compile in rudimentary thread support])
1604
Guido van Rossum54d93d41997-01-22 20:51:58 +00001605AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001606dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001607AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001608 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001609
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001610# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001611dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001612AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001613 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1614 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001615
1616if test -z "$with_threads"
1617then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001618fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001619AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001620
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001621AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001622if test "$with_threads" = "no"
1623then
1624 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001625elif test "$ac_cv_pthread_is_default" = yes
1626then
1627 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001628 # Defining _REENTRANT on system with POSIX threads should not hurt.
1629 AC_DEFINE(_REENTRANT)
1630 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001631 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001632elif test "$ac_cv_kpthread" = "yes"
1633then
1634 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001635 if test "$ac_cv_cxx_thread" = "yes"; then
1636 CXX="$CXX -Kpthread"
1637 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001638 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001639 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001640 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001641elif test "$ac_cv_kthread" = "yes"
1642then
1643 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001644 if test "$ac_cv_cxx_thread" = "yes"; then
1645 CXX="$CXX -Kthread"
1646 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001647 AC_DEFINE(WITH_THREAD)
1648 posix_threads=yes
1649 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001650elif test "$ac_cv_pthread" = "yes"
1651then
1652 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001653 if test "$ac_cv_cxx_thread" = "yes"; then
1654 CXX="$CXX -pthread"
1655 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001656 AC_DEFINE(WITH_THREAD)
1657 posix_threads=yes
1658 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001659else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001660 if test ! -z "$with_threads" -a -d "$with_threads"
1661 then LDFLAGS="$LDFLAGS -L$with_threads"
1662 fi
1663 if test ! -z "$withval" -a -d "$withval"
1664 then LDFLAGS="$LDFLAGS -L$withval"
1665 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001666
1667 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001668 # define _POSIX_THREADS in unistd.h. Some apparently don't
1669 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001670 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1671 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001672 [
1673#include <unistd.h>
1674#ifdef _POSIX_THREADS
1675yes
1676#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001677 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1678 AC_MSG_RESULT($unistd_defines_pthreads)
1679
Martin v. Löwis130fb172001-07-19 11:00:41 +00001680 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001681 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1682 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001683 AC_DEFINE(HURD_C_THREADS, 1,
1684 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001685 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001686 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001687 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1688 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001689 AC_DEFINE(MACH_C_THREADS, 1,
1690 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001691 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001692 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001693 AC_ARG_WITH([pth],
1694 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1695 [AC_MSG_RESULT($withval)
1696 AC_DEFINE([WITH_THREAD])
1697 AC_DEFINE([HAVE_PTH], 1,
1698 [Define if you have GNU PTH threads.])
1699 LIBS="-lpth $LIBS"
1700 THREADOBJ="Python/thread.o"],
1701 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001702
1703 # Just looking for pthread_create in libpthread is not enough:
1704 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1705 # So we really have to include pthread.h, and then link.
1706 _libs=$LIBS
1707 LIBS="$LIBS -lpthread"
1708 AC_MSG_CHECKING([for pthread_create in -lpthread])
1709 AC_TRY_LINK([#include <pthread.h>
1710
1711void * start_routine (void *arg) { exit (0); }], [
1712pthread_create (NULL, NULL, start_routine, NULL)], [
1713 AC_MSG_RESULT(yes)
1714 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001715 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001716 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001717 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001718 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001719 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001720 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001721 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1722 AC_DEFINE(ATHEOS_THREADS, 1,
1723 [Define this if you have AtheOS threads.])
1724 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001725 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001726 AC_DEFINE(BEOS_THREADS, 1,
1727 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001728 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001729 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001730 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001731 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001732 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001733 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001734 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001735 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001736 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001737 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001738 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001739 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001740 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001741 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001742 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001743 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001744 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001745 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001746 ])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001747
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001748 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1749 LIBS="$LIBS -lmpc"
1750 THREADOBJ="Python/thread.o"
1751 USE_THREAD_MODULE=""])
1752
1753 if test "$posix_threads" != "yes"; then
1754 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1755 LIBS="$LIBS -lthread"
1756 THREADOBJ="Python/thread.o"
1757 USE_THREAD_MODULE=""])
1758 fi
1759
1760 if test "$USE_THREAD_MODULE" != "#"
1761 then
1762 # If the above checks didn't disable threads, (at least) OSF1
1763 # needs this '-threads' argument during linking.
1764 case $ac_sys_system in
1765 OSF1) LDLAST=-threads;;
1766 esac
1767 fi
1768fi
1769
1770if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001771 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001772 AC_DEFINE(_POSIX_THREADS, 1,
1773 [Define if you have POSIX threads,
1774 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001775 fi
1776
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001777 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1778 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001779 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1780 Defined for Solaris 2.6 bug in pthread header.)
1781 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001782 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001783 Define if the Posix semaphores do not work on your system)
1784 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001785 esac
1786
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001787 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1788 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1789 [AC_TRY_RUN([#include <pthread.h>
1790 void *foo(void *parm) {
1791 return NULL;
1792 }
1793 main() {
1794 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001795 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001796 if (pthread_attr_init(&attr)) exit(-1);
1797 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001798 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001799 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001800 }],
1801 ac_cv_pthread_system_supported=yes,
1802 ac_cv_pthread_system_supported=no,
1803 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001804 ])
1805 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1806 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001807 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001808 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001809 AC_CHECK_FUNCS(pthread_sigmask,
1810 [case $ac_sys_system in
1811 CYGWIN*)
1812 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1813 [Define if pthread_sigmask() does not work on your system.])
1814 ;;
1815 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001816fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001817
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001818
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001819# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001820AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001821AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001822AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001823[ --enable-ipv6 Enable ipv6 (with ipv4) support
1824 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001825[ case "$enableval" in
1826 no)
1827 AC_MSG_RESULT(no)
1828 ipv6=no
1829 ;;
1830 *) AC_MSG_RESULT(yes)
1831 AC_DEFINE(ENABLE_IPV6)
1832 ipv6=yes
1833 ;;
1834 esac ],
1835
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001836[
1837dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001838 AC_TRY_RUN([ /* AF_INET6 available check */
1839#include <sys/types.h>
1840#include <sys/socket.h>
1841main()
1842{
1843 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1844 exit(1);
1845 else
1846 exit(0);
1847}
1848],
1849 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001850 ipv6=yes,
1851 AC_MSG_RESULT(no)
1852 ipv6=no,
1853 AC_MSG_RESULT(no)
1854 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001855)
1856
1857if test "$ipv6" = "yes"; then
1858 AC_MSG_CHECKING(if RFC2553 API is available)
1859 AC_TRY_COMPILE([#include <sys/types.h>
1860#include <netinet/in.h>],
1861 [struct sockaddr_in6 x;
1862x.sin6_scope_id;],
1863 AC_MSG_RESULT(yes)
1864 ipv6=yes,
1865 AC_MSG_RESULT(no, IPv6 disabled)
1866 ipv6=no)
1867fi
1868
1869if test "$ipv6" = "yes"; then
1870 AC_DEFINE(ENABLE_IPV6)
1871fi
1872])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001873
1874ipv6type=unknown
1875ipv6lib=none
1876ipv6trylibc=no
1877
1878if test "$ipv6" = "yes"; then
1879 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001880 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1881 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001882 case $i in
1883 inria)
1884 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001885 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001886#include <netinet/in.h>
1887#ifdef IPV6_INRIA_VERSION
1888yes
1889#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001890 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001891 ;;
1892 kame)
1893 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001894 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001895#include <netinet/in.h>
1896#ifdef __KAME__
1897yes
1898#endif],
1899 [ipv6type=$i;
1900 ipv6lib=inet6
1901 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001902 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001903 ;;
1904 linux-glibc)
1905 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001906 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001907#include <features.h>
1908#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1909yes
1910#endif],
1911 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001912 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001913 ;;
1914 linux-inet6)
1915 dnl http://www.v6.linux.or.jp/
1916 if test -d /usr/inet6; then
1917 ipv6type=$i
1918 ipv6lib=inet6
1919 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00001920 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001921 fi
1922 ;;
1923 solaris)
1924 if test -f /etc/netconfig; then
1925 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
1926 ipv6type=$i
1927 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001928 fi
1929 fi
1930 ;;
1931 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001932 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001933#include <sys/param.h>
1934#ifdef _TOSHIBA_INET6
1935yes
1936#endif],
1937 [ipv6type=$i;
1938 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001939 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001940 ;;
1941 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001942 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001943#include </usr/local/v6/include/sys/v6config.h>
1944#ifdef __V6D__
1945yes
1946#endif],
1947 [ipv6type=$i;
1948 ipv6lib=v6;
1949 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001950 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001951 ;;
1952 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001953 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001954#include <sys/param.h>
1955#ifdef _ZETA_MINAMI_INET6
1956yes
1957#endif],
1958 [ipv6type=$i;
1959 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001960 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001961 ;;
1962 esac
1963 if test "$ipv6type" != "unknown"; then
1964 break
1965 fi
1966 done
1967 AC_MSG_RESULT($ipv6type)
1968fi
1969
1970if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
1971 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
1972 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
1973 echo "using lib$ipv6lib"
1974 else
1975 if test $ipv6trylibc = "yes"; then
1976 echo "using libc"
1977 else
1978 echo 'Fatal: no $ipv6lib library found. cannot continue.'
1979 echo "You need to fetch lib$ipv6lib.a from appropriate"
1980 echo 'ipv6 kit and compile beforehand.'
1981 exit 1
1982 fi
1983 fi
1984fi
1985
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001986# Check for --with-doc-strings
1987AC_MSG_CHECKING(for --with-doc-strings)
1988AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001989 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001990
1991if test -z "$with_doc_strings"
1992then with_doc_strings="yes"
1993fi
1994if test "$with_doc_strings" != "no"
1995then
1996 AC_DEFINE(WITH_DOC_STRINGS, 1,
1997 [Define if you want documentation strings in extension modules])
1998fi
1999AC_MSG_RESULT($with_doc_strings)
2000
Neil Schemenauera35c6882001-02-27 04:45:05 +00002001# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002002AC_MSG_CHECKING(for --with-tsc)
2003AC_ARG_WITH(tsc,
2004[ --with(out)-tsc enable/disable timestamp counter profile], [
2005if test "$withval" != no
2006then
2007 AC_DEFINE(WITH_TSC, 1,
2008 [Define to profile with the Pentium timestamp counter])
2009 AC_MSG_RESULT(yes)
2010else AC_MSG_RESULT(no)
2011fi],
2012[AC_MSG_RESULT(no)])
2013
2014# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002015AC_MSG_CHECKING(for --with-pymalloc)
2016AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002017 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002018
2019if test -z "$with_pymalloc"
2020then with_pymalloc="yes"
2021fi
2022if test "$with_pymalloc" != "no"
2023then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002024 AC_DEFINE(WITH_PYMALLOC, 1,
2025 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002026fi
2027AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002028
Barry Warsawef82cd72000-06-30 16:21:01 +00002029# Check for --with-wctype-functions
2030AC_MSG_CHECKING(for --with-wctype-functions)
2031AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002032 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2033[
Barry Warsawef82cd72000-06-30 16:21:01 +00002034if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002035then
2036 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2037 [Define if you want wctype.h functions to be used instead of the
2038 one supplied by Python itself. (see Include/unicodectype.h).])
2039 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002040else AC_MSG_RESULT(no)
2041fi],
2042[AC_MSG_RESULT(no)])
2043
Guido van Rossum68242b51996-05-28 22:53:03 +00002044# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002045AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002046DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002047
Guido van Rossume97ee181999-12-20 21:27:22 +00002048# the dlopen() function means we might want to use dynload_shlib.o. some
2049# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002050AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002051
2052# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2053# loading of modules.
2054AC_SUBST(DYNLOADFILE)
2055AC_MSG_CHECKING(DYNLOADFILE)
2056if test -z "$DYNLOADFILE"
2057then
2058 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002059 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2060 if test "$ac_cv_func_dlopen" = yes
2061 then DYNLOADFILE="dynload_shlib.o"
2062 else DYNLOADFILE="dynload_aix.o"
2063 fi
2064 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002065 BeOS*) DYNLOADFILE="dynload_beos.o";;
2066 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002067 Darwin/*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002068 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002069 *)
2070 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2071 # out any dynamic loading
2072 if test "$ac_cv_func_dlopen" = yes
2073 then DYNLOADFILE="dynload_shlib.o"
2074 else DYNLOADFILE="dynload_stub.o"
2075 fi
2076 ;;
2077 esac
2078fi
2079AC_MSG_RESULT($DYNLOADFILE)
2080if test "$DYNLOADFILE" != "dynload_stub.o"
2081then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002082 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2083 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002084fi
2085
Jack Jansenc49e5b72001-06-19 15:00:23 +00002086# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2087
2088AC_SUBST(MACHDEP_OBJS)
2089AC_MSG_CHECKING(MACHDEP_OBJS)
2090if test -z "$MACHDEP_OBJS"
2091then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002092 MACHDEP_OBJS=$extra_machdep_objs
2093else
2094 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002095fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002096AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002097
Guido van Rossum627b2d71993-12-24 10:39:16 +00002098# checks for library functions
Gustavo Niemeyer7bd33c52004-07-22 18:44:01 +00002099AC_CHECK_FUNCS(alarm bind_textdomain_codeset chown clock confstr ctermid \
2100 execv fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002101 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002102 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002103 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002104 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002105 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002106 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002107 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002108 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002109 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002110 truncate uname unsetenv utimes waitpid wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002111
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002112# For some functions, having a definition is not sufficient, since
2113# we want to take their address.
2114AC_MSG_CHECKING(for chroot)
2115AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2116 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2117 AC_MSG_RESULT(yes),
2118 AC_MSG_RESULT(no)
2119)
2120AC_MSG_CHECKING(for link)
2121AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2122 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2123 AC_MSG_RESULT(yes),
2124 AC_MSG_RESULT(no)
2125)
2126AC_MSG_CHECKING(for symlink)
2127AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2128 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2129 AC_MSG_RESULT(yes),
2130 AC_MSG_RESULT(no)
2131)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002132AC_MSG_CHECKING(for fchdir)
2133AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2134 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2135 AC_MSG_RESULT(yes),
2136 AC_MSG_RESULT(no)
2137)
2138AC_MSG_CHECKING(for fsync)
2139AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002140 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002141 AC_MSG_RESULT(yes),
2142 AC_MSG_RESULT(no)
2143)
2144AC_MSG_CHECKING(for fdatasync)
2145AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2146 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2147 AC_MSG_RESULT(yes),
2148 AC_MSG_RESULT(no)
2149)
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002150
Martin v. Löwisd5843682002-11-21 20:41:28 +00002151# On some systems (eg. FreeBSD 5), we would find a definition of the
2152# functions ctermid_r, setgroups in the library, but no prototype
2153# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2154# address to avoid compiler warnings and potential miscompilations
2155# because of the missing prototypes.
2156
2157AC_MSG_CHECKING(for ctermid_r)
2158AC_TRY_COMPILE([
2159#include "confdefs.h"
2160#include <stdio.h>
2161], void* p = ctermid_r,
2162 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2163 AC_MSG_RESULT(yes),
2164 AC_MSG_RESULT(no)
2165)
2166
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002167AC_MSG_CHECKING(for flock)
2168AC_TRY_COMPILE([
2169#include "confdefs.h"
2170#include <sys/file.h>
2171], void* p = flock,
2172 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2173 AC_MSG_RESULT(yes),
2174 AC_MSG_RESULT(no)
2175)
2176
2177AC_MSG_CHECKING(for getpagesize)
2178AC_TRY_COMPILE([
2179#include "confdefs.h"
2180#include <unistd.h>
2181], void* p = getpagesize,
2182 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2183 AC_MSG_RESULT(yes),
2184 AC_MSG_RESULT(no)
2185)
2186
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002187dnl check for true
2188AC_CHECK_PROGS(TRUE, true, /bin/true)
2189
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002190dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2191dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002192AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002193 AC_CHECK_LIB(resolv, inet_aton)
2194)
2195
Martin v. Löwise9416172003-05-03 10:12:45 +00002196AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002197AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002198#include "confdefs.h"
2199#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002200], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002201 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2202 AC_MSG_RESULT(yes),
2203 AC_MSG_RESULT(no)
2204)
2205
2206AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002207AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002208#include "confdefs.h"
2209#include <sys/socket.h>
2210#include <netinet/in.h>
2211#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002212], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002213 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2214 AC_MSG_RESULT(yes),
2215 AC_MSG_RESULT(no)
2216)
2217
2218AC_MSG_CHECKING(for inet_pton)
2219AC_TRY_COMPILE([
2220#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002221#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002222#include <sys/socket.h>
2223#include <netinet/in.h>
2224#include <arpa/inet.h>
2225], void* p = inet_pton,
2226 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2227 AC_MSG_RESULT(yes),
2228 AC_MSG_RESULT(no)
2229)
2230
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002231# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002232AC_MSG_CHECKING(for setgroups)
2233AC_TRY_COMPILE([
2234#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002235#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002236#ifdef HAVE_GRP_H
2237#include <grp.h>
2238#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002239],
2240void* p = setgroups,
2241 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2242 AC_MSG_RESULT(yes),
2243 AC_MSG_RESULT(no)
2244)
2245
Fred Drake8cef4cf2000-06-28 16:40:38 +00002246# check for openpty and forkpty
2247
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002248AC_CHECK_FUNCS(openpty,, AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"]))
2249AC_CHECK_FUNCS(forkpty,, AC_CHECK_LIB(util,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"]))
Fred Drake8cef4cf2000-06-28 16:40:38 +00002250
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002251# check for long file support functions
2252AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2253
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002254AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002255AC_CHECK_FUNCS(getpgrp,
2256 AC_TRY_COMPILE([#include <unistd.h>],
2257 [getpgrp(0);],
2258 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2259 [Define if getpgrp() must be called as getpgrp(0).])
2260 )
2261)
Jack Jansen150753c2003-03-29 22:07:47 +00002262AC_CHECK_FUNCS(setpgrp,
2263 AC_TRY_COMPILE([#include <unistd.h>],
2264 [setpgrp(0,0);],
2265 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2266 [Define if setpgrp() must be called as setpgrp(0, 0).])
2267 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002268)
2269AC_CHECK_FUNCS(gettimeofday,
2270 AC_TRY_COMPILE([#include <sys/time.h>],
2271 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2272 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2273 [Define if gettimeofday() does not have second (timezone) argument
2274 This is the case on Motorola V4 (R40V4.2)])
2275 )
2276)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002277
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002278AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002279AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002280#if defined(MAJOR_IN_MKDEV)
2281#include <sys/mkdev.h>
2282#elif defined(MAJOR_IN_SYSMACROS)
2283#include <sys/sysmacros.h>
2284#else
2285#include <sys/types.h>
2286#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002287],[
2288 makedev(major(0),minor(0));
2289],[
2290 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2291 [Define to 1 if you have the device macros.])
2292 AC_MSG_RESULT(yes)
2293],[
2294 AC_MSG_RESULT(no)
2295])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002296
2297# On OSF/1 V5.1, getaddrinfo is available, but a define
2298# for [no]getaddrinfo in netdb.h.
2299AC_MSG_CHECKING(for getaddrinfo)
2300AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002301#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002302#include <sys/socket.h>
2303#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002304#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002305],[
2306getaddrinfo(NULL, NULL, NULL, NULL);
2307], [
2308AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002309AC_MSG_CHECKING(getaddrinfo bug)
2310AC_TRY_RUN([
2311#include <sys/types.h>
2312#include <netdb.h>
2313#include <string.h>
2314#include <sys/socket.h>
2315#include <netinet/in.h>
2316
2317main()
2318{
2319 int passive, gaierr, inet4 = 0, inet6 = 0;
2320 struct addrinfo hints, *ai, *aitop;
2321 char straddr[INET6_ADDRSTRLEN], strport[16];
2322
2323 for (passive = 0; passive <= 1; passive++) {
2324 memset(&hints, 0, sizeof(hints));
2325 hints.ai_family = AF_UNSPEC;
2326 hints.ai_flags = passive ? AI_PASSIVE : 0;
2327 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002328 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002329 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2330 (void)gai_strerror(gaierr);
2331 goto bad;
2332 }
2333 for (ai = aitop; ai; ai = ai->ai_next) {
2334 if (ai->ai_addr == NULL ||
2335 ai->ai_addrlen == 0 ||
2336 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2337 straddr, sizeof(straddr), strport, sizeof(strport),
2338 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2339 goto bad;
2340 }
2341 switch (ai->ai_family) {
2342 case AF_INET:
2343 if (strcmp(strport, "54321") != 0) {
2344 goto bad;
2345 }
2346 if (passive) {
2347 if (strcmp(straddr, "0.0.0.0") != 0) {
2348 goto bad;
2349 }
2350 } else {
2351 if (strcmp(straddr, "127.0.0.1") != 0) {
2352 goto bad;
2353 }
2354 }
2355 inet4++;
2356 break;
2357 case AF_INET6:
2358 if (strcmp(strport, "54321") != 0) {
2359 goto bad;
2360 }
2361 if (passive) {
2362 if (strcmp(straddr, "::") != 0) {
2363 goto bad;
2364 }
2365 } else {
2366 if (strcmp(straddr, "::1") != 0) {
2367 goto bad;
2368 }
2369 }
2370 inet6++;
2371 break;
2372 case AF_UNSPEC:
2373 goto bad;
2374 break;
2375 default:
2376 /* another family support? */
2377 break;
2378 }
2379 }
2380 }
2381
2382 if (!(inet4 == 0 || inet4 == 2))
2383 goto bad;
2384 if (!(inet6 == 0 || inet6 == 2))
2385 goto bad;
2386
2387 if (aitop)
2388 freeaddrinfo(aitop);
2389 exit(0);
2390
2391 bad:
2392 if (aitop)
2393 freeaddrinfo(aitop);
2394 exit(1);
2395}
2396],
2397AC_MSG_RESULT(good)
2398buggygetaddrinfo=no,
2399AC_MSG_RESULT(buggy)
2400buggygetaddrinfo=yes,
2401AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002402buggygetaddrinfo=yes)], [
2403AC_MSG_RESULT(no)
2404buggygetaddrinfo=yes
2405])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002406
2407if test "$buggygetaddrinfo" = "yes"; then
2408 if test "$ipv6" = "yes"; then
2409 echo 'Fatal: You must get working getaddrinfo() function.'
2410 echo ' or you can specify "--disable-ipv6"'.
2411 exit 1
2412 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002413else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002414 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002415fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002416AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002417
Guido van Rossum627b2d71993-12-24 10:39:16 +00002418# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002419AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002420AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002421AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002422AC_CHECK_MEMBERS([struct stat.st_rdev])
2423AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002424AC_CHECK_MEMBERS([struct stat.st_flags])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002425AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002426
2427AC_MSG_CHECKING(for time.h that defines altzone)
2428AC_CACHE_VAL(ac_cv_header_time_altzone,
2429[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2430 ac_cv_header_time_altzone=yes,
2431 ac_cv_header_time_altzone=no)])
2432AC_MSG_RESULT($ac_cv_header_time_altzone)
2433if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002434 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002435fi
2436
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002437was_it_defined=no
2438AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002439AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002440#include <sys/types.h>
2441#include <sys/select.h>
2442#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002443], [;], [
2444 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2445 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2446 (which you can't on SCO ODT 3.0).])
2447 was_it_defined=yes
2448])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002449AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002450
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002451AC_MSG_CHECKING(for addrinfo)
2452AC_CACHE_VAL(ac_cv_struct_addrinfo,
2453AC_TRY_COMPILE([
2454# include <netdb.h>],
2455 [struct addrinfo a],
2456 ac_cv_struct_addrinfo=yes,
2457 ac_cv_struct_addrinfo=no))
2458AC_MSG_RESULT($ac_cv_struct_addrinfo)
2459if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002460 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002461fi
2462
2463AC_MSG_CHECKING(for sockaddr_storage)
2464AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2465AC_TRY_COMPILE([
2466# include <sys/types.h>
2467# include <sys/socket.h>],
2468 [struct sockaddr_storage s],
2469 ac_cv_struct_sockaddr_storage=yes,
2470 ac_cv_struct_sockaddr_storage=no))
2471AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2472if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002473 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002474fi
2475
Guido van Rossum627b2d71993-12-24 10:39:16 +00002476# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002477
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002478AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002479AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002480
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002481works=no
2482AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002483AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2484 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2485)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002486AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002487
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002488works=no
2489AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002490AC_TRY_COMPILE([], [signed char c;], works=yes,
2491 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2492)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002493AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002494
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002495have_prototypes=no
2496AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002497AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2498 AC_DEFINE(HAVE_PROTOTYPES, 1,
2499 [Define if your compiler supports function prototype])
2500 have_prototypes=yes
2501])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002502AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002503
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002504works=no
2505AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002506AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002507#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002508int foo(int x, ...) {
2509 va_list va;
2510 va_start(va, x);
2511 va_arg(va, int);
2512 va_arg(va, char *);
2513 va_arg(va, double);
2514 return 0;
2515}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002516], [return foo(10, "", 3.14);], [
2517 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2518 [Define if your compiler supports variable length function prototypes
2519 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2520 works=yes
2521])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002522AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002523
Dave Cole331708b2004-08-09 04:51:41 +00002524# check for socketpair
2525AC_MSG_CHECKING(for socketpair)
2526AC_TRY_COMPILE([
2527#include <sys/types.h>
2528#include <sys/socket.h>
2529], void *x=socketpair,
2530 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2531 AC_MSG_RESULT(yes),
2532 AC_MSG_RESULT(no)
2533)
2534
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002535# check if sockaddr has sa_len member
2536AC_MSG_CHECKING(if sockaddr has sa_len member)
2537AC_TRY_COMPILE([#include <sys/types.h>
2538#include <sys/socket.h>],
2539[struct sockaddr x;
2540x.sa_len = 0;],
2541 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002542 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002543 AC_MSG_RESULT(no))
2544
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002545va_list_is_array=no
2546AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002547AC_TRY_COMPILE([
2548#ifdef HAVE_STDARG_PROTOTYPES
2549#include <stdarg.h>
2550#else
2551#include <varargs.h>
2552#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002553], [va_list list1, list2; list1 = list2;], , [
2554 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2555 va_list_is_array=yes
2556])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002557AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002558
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002559# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002560AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2561 [Define this if you have some version of gethostbyname_r()])
2562
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002563AC_CHECK_FUNC(gethostbyname_r, [
2564 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2565 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2566 OLD_CFLAGS=$CFLAGS
2567 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2568 AC_TRY_COMPILE([
2569# include <netdb.h>
2570 ], [
2571 char *name;
2572 struct hostent *he, *res;
2573 char buffer[2048];
2574 int buflen = 2048;
2575 int h_errnop;
2576
2577 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2578 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002579 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002580 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2581 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002582 AC_MSG_RESULT(yes)
2583 ], [
2584 AC_MSG_RESULT(no)
2585 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2586 AC_TRY_COMPILE([
2587# include <netdb.h>
2588 ], [
2589 char *name;
2590 struct hostent *he;
2591 char buffer[2048];
2592 int buflen = 2048;
2593 int h_errnop;
2594
2595 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2596 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002597 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002598 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2599 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002600 AC_MSG_RESULT(yes)
2601 ], [
2602 AC_MSG_RESULT(no)
2603 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2604 AC_TRY_COMPILE([
2605# include <netdb.h>
2606 ], [
2607 char *name;
2608 struct hostent *he;
2609 struct hostent_data data;
2610
2611 (void) gethostbyname_r(name, he, &data);
2612 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002613 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002614 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2615 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002616 AC_MSG_RESULT(yes)
2617 ], [
2618 AC_MSG_RESULT(no)
2619 ])
2620 ])
2621 ])
2622 CFLAGS=$OLD_CFLAGS
2623], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002624 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002625])
2626AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2627AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2628AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002629AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002630AC_SUBST(HAVE_GETHOSTBYNAME)
2631
Guido van Rossum627b2d71993-12-24 10:39:16 +00002632# checks for system services
2633# (none yet)
2634
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002635# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002636AC_CHECK_FUNC(__fpu_control,
2637 [],
2638 [AC_CHECK_LIB(ieee, __fpu_control)
2639])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002640
Guido van Rossum93274221997-05-09 02:42:00 +00002641# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002642AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002643AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002644 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2645[
Guido van Rossum93274221997-05-09 02:42:00 +00002646if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002647then
2648 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2649 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2650 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002651else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002652fi],
2653[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002654
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002655# check for --with-libm=...
2656AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002657case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002658Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002659BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002660*) LIBM=-lm
2661esac
Guido van Rossum93274221997-05-09 02:42:00 +00002662AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002663AC_ARG_WITH(libm,
2664 AC_HELP_STRING(--with-libm=STRING, math library),
2665[
Guido van Rossum93274221997-05-09 02:42:00 +00002666if test "$withval" = no
2667then LIBM=
2668 AC_MSG_RESULT(force LIBM empty)
2669elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002670then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002671 AC_MSG_RESULT(set LIBM="$withval")
2672else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002673fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002674[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002675
2676# check for --with-libc=...
2677AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002678AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002679AC_ARG_WITH(libc,
2680 AC_HELP_STRING(--with-libc=STRING, C library),
2681[
Guido van Rossum93274221997-05-09 02:42:00 +00002682if test "$withval" = no
2683then LIBC=
2684 AC_MSG_RESULT(force LIBC empty)
2685elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002686then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002687 AC_MSG_RESULT(set LIBC="$withval")
2688else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002689fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002690[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002691
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002692# check for hypot() in math library
2693LIBS_SAVE=$LIBS
2694LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002695AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002696LIBS=$LIBS_SAVE
2697
Guido van Rossumef2255b2000-03-10 22:30:29 +00002698# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002699AC_CHECK_HEADER(wchar.h, [
2700 AC_DEFINE(HAVE_WCHAR_H, 1,
2701 [Define if the compiler provides a wchar.h header file.])
2702 wchar_h="yes"
2703],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002704wchar_h="no"
2705)
2706
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002707# determine wchar_t size
2708if test "$wchar_h" = yes
2709then
Guido van Rossum67b26592001-10-20 14:21:45 +00002710 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002711fi
2712
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002713AC_MSG_CHECKING(for UCS-4 tcl)
2714have_ucs4_tcl=no
2715AC_TRY_COMPILE([
2716#include <tcl.h>
2717#if TCL_UTF_MAX != 6
2718# error "NOT UCS4_TCL"
2719#endif], [], [
2720 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
2721 have_ucs4_tcl=yes
2722])
2723AC_MSG_RESULT($have_ucs4_tcl)
2724
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002725# check whether wchar_t is signed or not
2726if test "$wchar_h" = yes
2727then
2728 # check whether wchar_t is signed or not
2729 AC_MSG_CHECKING(whether wchar_t is signed)
2730 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
2731 AC_TRY_RUN([
2732 #include <wchar.h>
2733 int main()
2734 {
2735 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 1 : 0);
2736 }
2737 ],
2738 ac_cv_wchar_t_signed=yes,
2739 ac_cv_wchar_t_signed=no,
2740 ac_cv_wchar_t_signed=yes)])
2741 AC_MSG_RESULT($ac_cv_wchar_t_signed)
2742fi
2743
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002744AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002745dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002746AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002747 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2748 [],
2749 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002750
2751if test $enable_unicode = yes
2752then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002753 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002754 case "$have_ucs4_tcl" in
2755 yes) enable_unicode="ucs4"
2756 ;;
2757 *) enable_unicode="ucs2"
2758 ;;
2759 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002760fi
2761
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002762AH_TEMPLATE(Py_UNICODE_SIZE,
2763 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002764case "$enable_unicode" in
2765ucs2) unicode_size="2"
2766 AC_DEFINE(Py_UNICODE_SIZE,2)
2767 ;;
2768ucs4) unicode_size="4"
2769 AC_DEFINE(Py_UNICODE_SIZE,4)
2770 ;;
2771esac
2772
Martin v. Löwis11437992002-04-12 09:54:03 +00002773AH_TEMPLATE(PY_UNICODE_TYPE,
2774 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002775
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002776AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002777if test "$enable_unicode" = "no"
2778then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002779 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002780 AC_MSG_RESULT(not used)
2781else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002782 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002783 AC_DEFINE(Py_USING_UNICODE, 1,
2784 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002785
2786 # wchar_t is only usable if it maps to an unsigned type
2787 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00002788 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002789 then
2790 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002791 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2792 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002793 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002794 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002795 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2796 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2797 then
2798 PY_UNICODE_TYPE="unsigned short"
2799 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2800 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2801 then
2802 PY_UNICODE_TYPE="unsigned long"
2803 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2804 else
2805 PY_UNICODE_TYPE="no type found"
2806 fi
2807 AC_MSG_RESULT($PY_UNICODE_TYPE)
2808fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002809
2810# check for endianness
2811AC_C_BIGENDIAN
2812
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002813# Check whether right shifting a negative integer extends the sign bit
2814# or fills with zeros (like the Cray J90, according to Tim Peters).
2815AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002816AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002817AC_TRY_RUN([
2818int main()
2819{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002820 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002821}
Guido van Rossum3065c942001-09-17 04:03:14 +00002822],
2823ac_cv_rshift_extends_sign=yes,
2824ac_cv_rshift_extends_sign=no,
2825ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002826AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2827if test "$ac_cv_rshift_extends_sign" = no
2828then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002829 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2830 [Define if i>>j for signed int i does not extend the sign bit
2831 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002832fi
2833
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002834# check for getc_unlocked and related locking functions
2835AC_MSG_CHECKING(for getc_unlocked() and friends)
2836AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2837AC_TRY_LINK([#include <stdio.h>],[
2838 FILE *f = fopen("/dev/null", "r");
2839 flockfile(f);
2840 getc_unlocked(f);
2841 funlockfile(f);
2842], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2843AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2844if test "$ac_cv_have_getc_unlocked" = yes
2845then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002846 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2847 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002848fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002849
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002850# check for readline 2.1
2851AC_CHECK_LIB(readline, rl_callback_handler_install,
2852 AC_DEFINE(HAVE_RL_CALLBACK, 1,
2853 [Define if you have readline 2.1]), , -ltermcap)
2854
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00002855# check for readline 2.2
2856AC_TRY_CPP([#include <readline/readline.h>],
2857have_readline=yes, have_readline=no)
2858if test $have_readline = yes
2859then
2860 AC_EGREP_HEADER([extern int rl_completion_append_character;],
2861 [readline/readline.h],
2862 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
2863 [Define if you have readline 2.2]), )
2864fi
2865
Martin v. Löwis0daad592001-09-30 21:09:59 +00002866# check for readline 4.0
2867AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002868 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
2869 [Define if you have readline 4.0]), , -ltermcap)
Martin v. Löwis0daad592001-09-30 21:09:59 +00002870
Guido van Rossum353ae582001-07-10 16:45:32 +00002871# check for readline 4.2
2872AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002873 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
2874 [Define if you have readline 4.2]), , -ltermcap)
Guido van Rossum353ae582001-07-10 16:45:32 +00002875
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002876# also in readline 4.2
2877AC_TRY_CPP([#include <readline/readline.h>],
2878have_readline=yes, have_readline=no)
2879if test $have_readline = yes
2880then
2881 AC_EGREP_HEADER([extern int rl_catch_signals;],
2882 [readline/readline.h],
2883 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
2884 [Define if you can turn off readline's signal handling.]), )
2885fi
2886
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002887AC_MSG_CHECKING(for broken nice())
2888AC_CACHE_VAL(ac_cv_broken_nice, [
2889AC_TRY_RUN([
2890int main()
2891{
2892 int val1 = nice(1);
2893 if (val1 != -1 && val1 == nice(2))
2894 exit(0);
2895 exit(1);
2896}
Guido van Rossum3065c942001-09-17 04:03:14 +00002897],
2898ac_cv_broken_nice=yes,
2899ac_cv_broken_nice=no,
2900ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002901AC_MSG_RESULT($ac_cv_broken_nice)
2902if test "$ac_cv_broken_nice" = yes
2903then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002904 AC_DEFINE(HAVE_BROKEN_NICE, 1,
2905 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002906fi
2907
Nicholas Bastine62c5c82004-03-21 23:45:42 +00002908AC_MSG_CHECKING(for broken poll())
2909AC_TRY_RUN([
2910#include <poll.h>
2911
2912int main (void)
2913 {
2914 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
2915
2916 close (42);
2917
2918 int poll_test = poll (&poll_struct, 1, 0);
2919
2920 if (poll_test < 0)
2921 {
2922 exit(0);
2923 }
2924 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
2925 {
2926 exit(0);
2927 }
2928 else
2929 {
2930 exit(1);
2931 }
2932 }
2933],
2934ac_cv_broken_poll=yes,
2935ac_cv_broken_poll=no,
2936ac_cv_broken_poll=no)
2937AC_MSG_RESULT($ac_cv_broken_poll)
2938if test "$ac_cv_broken_poll" = yes
2939then
2940 AC_DEFINE(HAVE_BROKEN_POLL, 1,
2941 [Define if poll() sets errno on invalid file descriptors.])
2942fi
2943
Brett Cannon43802422005-02-10 20:48:03 +00002944# Before we can test tzset, we need to check if struct tm has a tm_zone
2945# (which is not required by ISO C or UNIX spec) and/or if we support
2946# tzname[]
2947AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00002948
Brett Cannon43802422005-02-10 20:48:03 +00002949# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002950AC_MSG_CHECKING(for working tzset())
2951AC_CACHE_VAL(ac_cv_working_tzset, [
2952AC_TRY_RUN([
2953#include <stdlib.h>
2954#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00002955#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00002956
2957#if HAVE_TZNAME
2958extern char *tzname[];
2959#endif
2960
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002961int main()
2962{
Brett Cannon18367812003-09-19 00:59:16 +00002963 /* Note that we need to ensure that not only does tzset(3)
2964 do 'something' with localtime, but it works as documented
2965 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00002966 This includes making sure that tzname is set properly if
2967 tm->tm_zone does not exist since it is the alternative way
2968 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00002969
2970 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00002971 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00002972 */
2973
Brett Cannon43802422005-02-10 20:48:03 +00002974 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00002975 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
2976
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002977 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002978 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00002979 if (localtime(&groundhogday)->tm_hour != 0)
2980 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00002981#if HAVE_TZNAME
2982 /* For UTC, tzname[1] is sometimes "", sometimes " " */
2983 if (strcmp(tzname[0], "UTC") ||
2984 (tzname[1][0] != 0 && tzname[1][0] != ' '))
2985 exit(1);
2986#endif
Brett Cannon18367812003-09-19 00:59:16 +00002987
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002988 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002989 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00002990 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002991 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00002992#if HAVE_TZNAME
2993 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
2994 exit(1);
2995#endif
Brett Cannon18367812003-09-19 00:59:16 +00002996
2997 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
2998 tzset();
2999 if (localtime(&groundhogday)->tm_hour != 11)
3000 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003001#if HAVE_TZNAME
3002 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3003 exit(1);
3004#endif
3005
3006#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003007 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3008 exit(1);
3009 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3010 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003011#endif
Brett Cannon18367812003-09-19 00:59:16 +00003012
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003013 exit(0);
3014}
3015],
3016ac_cv_working_tzset=yes,
3017ac_cv_working_tzset=no,
3018ac_cv_working_tzset=no)])
3019AC_MSG_RESULT($ac_cv_working_tzset)
3020if test "$ac_cv_working_tzset" = yes
3021then
3022 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3023 [Define if tzset() actually switches the local timezone in a meaningful way.])
3024fi
3025
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003026# Look for subsecond timestamps in struct stat
3027AC_MSG_CHECKING(for tv_nsec in struct stat)
3028AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3029AC_TRY_COMPILE([#include <sys/stat.h>], [
3030struct stat st;
3031st.st_mtim.tv_nsec = 1;
3032],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003033ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003034ac_cv_stat_tv_nsec=no,
3035ac_cv_stat_tv_nsec=no))
3036AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3037if test "$ac_cv_stat_tv_nsec" = yes
3038then
3039 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3040 [Define if you have struct stat.st_mtim.tv_nsec])
3041fi
3042
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003043# On HP/UX 11.0, mvwdelch is a block with a return statement
3044AC_MSG_CHECKING(whether mvwdelch is an expression)
3045AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3046AC_TRY_COMPILE([#include <curses.h>], [
3047 int rtn;
3048 rtn = mvwdelch(0,0,0);
3049], ac_cv_mvwdelch_is_expression=yes,
3050 ac_cv_mvwdelch_is_expression=no,
3051 ac_cv_mvwdelch_is_expression=yes))
3052AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3053
3054if test "$ac_cv_mvwdelch_is_expression" = yes
3055then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003056 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3057 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003058fi
3059
3060AC_MSG_CHECKING(whether WINDOW has _flags)
3061AC_CACHE_VAL(ac_cv_window_has_flags,
3062AC_TRY_COMPILE([#include <curses.h>], [
3063 WINDOW *w;
3064 w->_flags = 0;
3065], ac_cv_window_has_flags=yes,
3066 ac_cv_window_has_flags=no,
3067 ac_cv_window_has_flags=no))
3068AC_MSG_RESULT($ac_cv_window_has_flags)
3069
3070
3071if test "$ac_cv_window_has_flags" = yes
3072then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003073 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3074 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003075fi
3076
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003077AC_MSG_CHECKING(for /dev/ptmx)
3078
3079if test -e /dev/ptmx
3080then
3081 AC_MSG_RESULT(yes)
3082 AC_DEFINE(HAVE_DEV_PTMX, 1,
3083 [Define if we have /dev/ptmx.])
3084else
3085 AC_MSG_RESULT(no)
3086fi
3087
Neal Norwitz865400f2003-03-21 01:42:58 +00003088AC_MSG_CHECKING(for /dev/ptc)
3089
3090if test -e /dev/ptc
3091then
3092 AC_MSG_RESULT(yes)
3093 AC_DEFINE(HAVE_DEV_PTC, 1,
3094 [Define if we have /dev/ptc.])
3095else
3096 AC_MSG_RESULT(no)
3097fi
3098
Martin v. Löwis01c04012002-11-11 14:58:44 +00003099AC_CHECK_TYPE(socklen_t,,
3100 AC_DEFINE(socklen_t,int,
3101 Define to `int' if <sys/socket.h> does not define.),[
3102#ifdef HAVE_SYS_TYPES_H
3103#include <sys/types.h>
3104#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003105#ifdef HAVE_SYS_SOCKET_H
3106#include <sys/socket.h>
3107#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003108])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003109
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003110AC_SUBST(THREADHEADERS)
3111
3112for h in `(cd $srcdir;echo Python/thread_*.h)`
3113do
3114 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3115done
3116
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003117AC_SUBST(SRCDIRS)
Jack Jansen0b06be72002-06-21 14:48:38 +00003118SRCDIRS="Parser Grammar Objects Python Modules Mac Mac/Python"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003119AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003120for dir in $SRCDIRS; do
3121 if test ! -d $dir; then
3122 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003123 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003124done
3125AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003126
Guido van Rossum627b2d71993-12-24 10:39:16 +00003127# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003128AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3129AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003130
3131echo "creating Setup"
3132if test ! -f Modules/Setup
3133then
3134 cp $srcdir/Modules/Setup.dist Modules/Setup
3135fi
3136
3137echo "creating Setup.local"
3138if test ! -f Modules/Setup.local
3139then
3140 echo "# Edit this file for local setup changes" >Modules/Setup.local
3141fi
3142
3143echo "creating Makefile"
3144$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3145 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003146 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003147mv config.c Modules