blob: 15a2a06bf76d93b34433202d6fbd625cf0056f8a [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öwis147fbe52005-08-07 21:09:30 +0000474 echo 'extern "C" void foo();int main(){foo();}' > conftest_a.cc
475 $CXX -c conftest_a.cc # 2>&5
476 echo 'void foo(){}' > conftest_b.$ac_ext
477 $CC -c conftest_b.$ac_ext # 2>&5
478 if $CC -o conftest$ac_exeext conftest_a.$ac_objext conftest_b.$ac_objext 2>&5 \
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000479 && test -s conftest$ac_exeext && ./conftest$ac_exeext
480 then
481 LINKCC="\$(PURIFY) \$(CC)"
482 else
483 LINKCC="\$(PURIFY) \$(CXX)"
484 fi
485 rm -fr conftest*
486 fi
Guido van Rossumfb842551997-08-06 23:42:07 +0000487 case $ac_sys_system in
488 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000489 exp_extra="\"\""
490 if test $ac_sys_release -ge 5 -o \
491 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
492 exp_extra="."
493 fi
494 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000495 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000496 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000497 esac
498fi
499AC_MSG_RESULT($LINKCC)
500
Martin v. Löwis1142de32002-03-29 16:28:31 +0000501AC_MSG_CHECKING(for --enable-shared)
502AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000503 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000504
Martin v. Löwis1142de32002-03-29 16:28:31 +0000505if test -z "$enable_shared"
506then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000507 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000508 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000509 enable_shared="yes";;
510 *)
511 enable_shared="no";;
512 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000513fi
514AC_MSG_RESULT($enable_shared)
515
Skip Montanaro56f6a4f2004-06-18 02:47:22 +0000516AC_MSG_CHECKING(for --enable-profiling)
517AC_ARG_ENABLE(profiling,
518 AC_HELP_STRING(--enable-profiling, enable C-level code profiling),
519[ac_save_cc="$CC"
520 CC="$CC -pg"
521 AC_TRY_RUN([int main() { return 0; }],
522 ac_enable_profiling="yes",
523 ac_enable_profiling="no",
524 ac_enable_profiling="no")
525 CC="$ac_save_cc"])
526AC_MSG_RESULT($ac_enable_profiling)
527
528case "$ac_enable_profiling" in
529 "yes")
530 BASECFLAGS="-pg $BASECFLAGS"
531 LDFLAGS="-pg $LDFLAGS"
532 ;;
533esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000534
535AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000536
Guido van Rossumb8552162001-09-05 14:58:11 +0000537# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
538# library that we build, but we do not want to link against it (we
539# will find it with a -framework option). For this reason there is an
540# extra variable BLDLIBRARY against which Python and the extension
541# modules are linked, BLDLIBRARY. This is normally the same as
542# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000543if test "$enable_framework"
544then
545 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000546 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000547 BLDLIBRARY=''
548else
549 BLDLIBRARY='$(LDLIBRARY)'
550fi
551
Martin v. Löwis1142de32002-03-29 16:28:31 +0000552# Other platforms follow
553if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000554 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000555 case $ac_sys_system in
556 BeOS*)
557 LDLIBRARY='libpython$(VERSION).so'
558 ;;
559 CYGWIN*)
560 LDLIBRARY='libpython$(VERSION).dll.a'
561 DLLLIBRARY='libpython$(VERSION).dll'
562 ;;
563 SunOS*)
564 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000565 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000566 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000567 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000568 ;;
Hye-Shik Chang33761492004-10-26 09:53:46 +0000569 Linux*|GNU*|NetBSD*|FreeBSD*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000570 LDLIBRARY='libpython$(VERSION).so'
571 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000572 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Hye-Shik Chang33761492004-10-26 09:53:46 +0000573 case $ac_sys_system in
574 FreeBSD*)
575 SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
576 ;;
577 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000578 INSTSONAME="$LDLIBRARY".$SOVERSION
579 ;;
580 hp*|HP*)
581 LDLIBRARY='libpython$(VERSION).sl'
582 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000583 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000584 ;;
585 OSF*)
586 LDLIBRARY='libpython$(VERSION).so'
587 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000588 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000589 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000590 atheos*)
591 LDLIBRARY='libpython$(VERSION).so'
592 BLDLIBRARY='-L. -lpython$(VERSION)'
593 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
594 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000595 esac
Jason Tishler30765592003-09-04 11:04:06 +0000596else # shared is disabled
597 case $ac_sys_system in
598 CYGWIN*)
599 BLDLIBRARY='$(LIBRARY)'
600 LDLIBRARY='libpython$(VERSION).dll.a'
601 ;;
602 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000603fi
604
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000605AC_MSG_RESULT($LDLIBRARY)
606
Guido van Rossum627b2d71993-12-24 10:39:16 +0000607AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000608AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000609AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000610
611case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000612bsdos*|hp*|HP*)
613 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000614 if test -z "$INSTALL"
615 then
616 INSTALL="${srcdir}/install-sh -c"
617 fi
618esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000619AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000620
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000621# Not every filesystem supports hard links
622AC_SUBST(LN)
623if test -z "$LN" ; then
624 case $ac_sys_system in
625 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000626 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000627 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000628 *) LN=ln;;
629 esac
630fi
631
Fred Drake9f715822001-07-11 06:27:00 +0000632# Check for --with-pydebug
633AC_MSG_CHECKING(for --with-pydebug)
634AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000635 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
636[
Fred Drake9f715822001-07-11 06:27:00 +0000637if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000638then
639 AC_DEFINE(Py_DEBUG, 1,
640 [Define if you want to build an interpreter with many run-time checks.])
641 AC_MSG_RESULT(yes);
642 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000643else AC_MSG_RESULT(no); Py_DEBUG='false'
644fi],
645[AC_MSG_RESULT(no)])
646
Skip Montanarodecc6a42003-01-01 20:07:49 +0000647# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
648# merged with this chunk of code?
649
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000650# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000651# ------------------------
652# (The following bit of code is complicated enough - please keep things
653# indented properly. Just pretend you're editing Python code. ;-)
654
655# There are two parallel sets of case statements below, one that checks to
656# see if OPT was set and one that does BASECFLAGS setting based upon
657# compiler and platform. BASECFLAGS tweaks need to be made even if the
658# user set OPT.
659
660# tweak OPT based on compiler and platform, only if the user didn't set
661# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000662AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000663if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000664then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000665 case $GCC in
666 yes)
667 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000668 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000669 if test "$Py_DEBUG" = 'true' ; then
670 # Optimization messes up debuggers, so turn it off for
671 # debug builds.
672 OPT="-g -Wall -Wstrict-prototypes"
673 else
674 OPT="-g -O3 -Wall -Wstrict-prototypes"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000675 fi
676 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000677 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000678 OPT="-O3 -Wall -Wstrict-prototypes"
679 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000680 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000681 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000682 SCO_SV*) OPT="$OPT -m486 -DSCO5"
683 ;;
684 esac
Fred Drake9f715822001-07-11 06:27:00 +0000685 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000686
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000687 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000688 OPT="-O"
689 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000690 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000691
692 # The current (beta) Monterey compiler dies with optimizations
693 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000694 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000695 Monterey*)
696 OPT=""
697 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000698 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000699
Guido van Rossum4e8af441994-08-19 15:33:54 +0000700fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000701
Skip Montanarodecc6a42003-01-01 20:07:49 +0000702AC_SUBST(BASECFLAGS)
703# tweak BASECFLAGS based on compiler and platform
704case $GCC in
705yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000706 # Python violates C99 rules, by casting between incompatible
707 # pointer types. GCC may generate bad code as a result of that,
708 # so use -fno-strict-aliasing if supported.
709 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
710 ac_save_cc="$CC"
711 CC="$CC -fno-strict-aliasing"
712 AC_TRY_RUN([int main() { return 0; }],
713 ac_cv_no_strict_aliasing_ok=yes,
714 ac_cv_no_strict_aliasing_ok=no,
715 ac_cv_no_strict_aliasing_ok=no)
716 CC="$ac_save_cc"
717 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
718 if test $ac_cv_no_strict_aliasing_ok = yes
719 then
720 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
721 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000722 case $ac_sys_system in
723 SCO_SV*)
724 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
725 ;;
726 # is there any other compiler on Darwin besides gcc?
727 Darwin*)
Jack Jansene0040412003-07-23 22:17:28 +0000728 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000729 ;;
730 esac
731 ;;
732
733*)
734 case $ac_sys_system in
735 OpenUNIX*|UnixWare*)
736 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
737 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000738 OSF*)
739 BASECFLAGS="$BASECFLAGS -ieee -std"
740 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000741 SCO_SV*)
742 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
743 ;;
744 esac
745 ;;
746esac
747
Fred Drakee1ceaa02001-12-04 20:55:47 +0000748if test "$Py_DEBUG" = 'true'; then
749 :
750else
751 OPT="-DNDEBUG $OPT"
752fi
753
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000754if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000755then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000756 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000757fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000758
Guido van Rossum91922671997-10-09 20:24:13 +0000759AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
760AC_CACHE_VAL(ac_cv_opt_olimit_ok,
761[ac_save_cc="$CC"
762CC="$CC -OPT:Olimit=0"
763AC_TRY_RUN([int main() { return 0; }],
764 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000765 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000766 ac_cv_opt_olimit_ok=no)
767CC="$ac_save_cc"])
768AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000769if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000770 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000771 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
772 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
773 # environment?
774 Darwin*)
775 ;;
776 *)
777 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
778 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000779 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000780else
781 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
782 AC_CACHE_VAL(ac_cv_olimit_ok,
783 [ac_save_cc="$CC"
784 CC="$CC -Olimit 1500"
785 AC_TRY_RUN([int main() { return 0; }],
786 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000787 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000788 ac_cv_olimit_ok=no)
789 CC="$ac_save_cc"])
790 AC_MSG_RESULT($ac_cv_olimit_ok)
791 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000792 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000793 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000794fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000795
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000796# On some compilers, pthreads are available without further options
797# (e.g. MacOS X). On some of these systems, the compiler will not
798# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
799# So we have to see first whether pthreads are available without
800# options before we can check whether -Kpthread improves anything.
801AC_MSG_CHECKING(whether pthreads are available without options)
802AC_CACHE_VAL(ac_cv_pthread_is_default,
803[AC_TRY_RUN([
804#include <pthread.h>
805
806void* routine(void* p){return NULL;}
807
808int main(){
809 pthread_t p;
810 if(pthread_create(&p,NULL,routine,NULL)!=0)
811 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000812 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000813 return 0;
814}
815],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000816[
817 ac_cv_pthread_is_default=yes
818 ac_cv_kthread=no
819 ac_cv_pthread=no
820],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000821 ac_cv_pthread_is_default=no,
822 ac_cv_pthread_is_default=no)
823])
824AC_MSG_RESULT($ac_cv_pthread_is_default)
825
826
827if test $ac_cv_pthread_is_default = yes
828then
829 ac_cv_kpthread=no
830else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000831# -Kpthread, if available, provides the right #defines
832# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000833# Some compilers won't report that they do not support -Kpthread,
834# so we need to run a program to see whether it really made the
835# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000836AC_MSG_CHECKING(whether $CC accepts -Kpthread)
837AC_CACHE_VAL(ac_cv_kpthread,
838[ac_save_cc="$CC"
839CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000840AC_TRY_RUN([
841#include <pthread.h>
842
843void* routine(void* p){return NULL;}
844
845int main(){
846 pthread_t p;
847 if(pthread_create(&p,NULL,routine,NULL)!=0)
848 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000849 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000850 return 0;
851}
852],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000853 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000854 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000855 ac_cv_kpthread=no)
856CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000857AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000858fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000859
Skip Montanarod8d39a02003-07-10 20:44:10 +0000860if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000861then
862# -Kthread, if available, provides the right #defines
863# and linker options to make pthread_create available
864# Some compilers won't report that they do not support -Kthread,
865# so we need to run a program to see whether it really made the
866# function available.
867AC_MSG_CHECKING(whether $CC accepts -Kthread)
868AC_CACHE_VAL(ac_cv_kthread,
869[ac_save_cc="$CC"
870CC="$CC -Kthread"
871AC_TRY_RUN([
872#include <pthread.h>
873
874void* routine(void* p){return NULL;}
875
876int main(){
877 pthread_t p;
878 if(pthread_create(&p,NULL,routine,NULL)!=0)
879 return 1;
880 (void)pthread_detach(p);
881 return 0;
882}
883],
884 ac_cv_kthread=yes,
885 ac_cv_kthread=no,
886 ac_cv_kthread=no)
887CC="$ac_save_cc"])
888AC_MSG_RESULT($ac_cv_kthread)
889fi
890
Skip Montanarod8d39a02003-07-10 20:44:10 +0000891if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000892then
893# -pthread, if available, provides the right #defines
894# and linker options to make pthread_create available
895# Some compilers won't report that they do not support -pthread,
896# so we need to run a program to see whether it really made the
897# function available.
898AC_MSG_CHECKING(whether $CC accepts -pthread)
899AC_CACHE_VAL(ac_cv_thread,
900[ac_save_cc="$CC"
901CC="$CC -pthread"
902AC_TRY_RUN([
903#include <pthread.h>
904
905void* routine(void* p){return NULL;}
906
907int main(){
908 pthread_t p;
909 if(pthread_create(&p,NULL,routine,NULL)!=0)
910 return 1;
911 (void)pthread_detach(p);
912 return 0;
913}
914],
915 ac_cv_pthread=yes,
916 ac_cv_pthread=no,
917 ac_cv_pthread=no)
918CC="$ac_save_cc"])
919AC_MSG_RESULT($ac_cv_pthread)
920fi
921
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000922# If we have set a CC compiler flag for thread support then
923# check if it works for CXX, too.
924ac_cv_cxx_thread=no
925if test ! -z "$CXX"
926then
927AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
928ac_save_cxx="$CXX"
929
930if test "$ac_cv_kpthread" = "yes"
931then
Martin v. Löwis519adae2003-09-20 10:47:47 +0000932 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000933 ac_cv_cxx_thread=yes
934elif test "$ac_cv_kthread" = "yes"
935then
936 CXX="$CXX -Kthread"
937 ac_cv_cxx_thread=yes
938elif test "$ac_cv_pthread" = "yes"
939then
940 CXX="$CXX -pthread"
941 ac_cv_cxx_thread=yes
942fi
943
944if test $ac_cv_cxx_thread = yes
945then
946 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
947 $CXX -c conftest.$ac_ext 2>&5
948 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
949 && test -s conftest$ac_exeext && ./conftest$ac_exeext
950 then
951 ac_cv_cxx_thread=yes
952 else
953 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000954 fi
955 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000956fi
Brett Cannonc601e0f2004-11-07 01:24:12 +0000957AC_MSG_RESULT($ac_cv_cxx_thread)
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000958fi
Martin v. Löwis519adae2003-09-20 10:47:47 +0000959CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000960
Fred Drakece81d592000-07-09 14:39:29 +0000961dnl # check for ANSI or K&R ("traditional") preprocessor
962dnl AC_MSG_CHECKING(for C preprocessor type)
963dnl AC_TRY_COMPILE([
964dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
965dnl int foo;
966dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
967dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
968dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +0000969
Guido van Rossum627b2d71993-12-24 10:39:16 +0000970# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000971AC_HEADER_STDC
Martin v. Löwisc3001752005-01-23 09:27:24 +0000972AC_CHECK_HEADERS(curses.h dlfcn.h fcntl.h grp.h shadow.h langinfo.h \
Skip Montanaro7befb992004-02-10 16:50:21 +0000973libintl.h ncurses.h poll.h pthread.h \
974stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +0000975unistd.h utime.h \
Anthony Baxter8a560de2004-10-13 15:30:56 +0000976sys/audioio.h sys/bsdtty.h sys/file.h sys/loadavg.h sys/lock.h sys/mkdev.h \
977sys/modem.h \
Andrew M. Kuchling881fd902001-07-14 20:55:52 +0000978sys/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 +0000979sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +0000980sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
981bluetooth/bluetooth.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000982AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +0000983AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +0000984
Martin v. Löwisae2830c2004-09-18 09:54:52 +0000985# On Solaris, term.h requires curses.h
Martin v. Löwisfd1c69e72004-11-30 22:09:37 +0000986AC_CHECK_HEADERS(term.h,,,[
Martin v. Löwis5d52e782004-09-18 10:07:03 +0000987#ifdef HAVE_CURSES_H
988#include <curses.h>
989#endif
990])
Martin v. Löwisae2830c2004-09-18 09:54:52 +0000991
Guido van Rossum627b2d71993-12-24 10:39:16 +0000992# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000993was_it_defined=no
994AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000995AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
996 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
997])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000998AC_MSG_RESULT($was_it_defined)
999
Neal Norwitz11690112002-07-30 01:08:28 +00001000# Check whether using makedev requires defining _OSF_SOURCE
1001AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001002AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +00001003 [ makedev(0, 0) ],
1004 ac_cv_has_makedev=yes,
1005 ac_cv_has_makedev=no)
1006if test "$ac_cv_has_makedev" = "no"; then
1007 # we didn't link, try if _OSF_SOURCE will allow us to link
1008 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001009#define _OSF_SOURCE 1
1010#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +00001011 ],
1012 [ makedev(0, 0) ],
1013 ac_cv_has_makedev=yes,
1014 ac_cv_has_makedev=no)
1015 if test "$ac_cv_has_makedev" = "yes"; then
1016 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
1017 fi
1018fi
1019AC_MSG_RESULT($ac_cv_has_makedev)
1020if test "$ac_cv_has_makedev" = "yes"; then
1021 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
1022fi
1023
Martin v. Löwis399a6892002-10-04 10:22:02 +00001024# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
1025# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
1026# defined, but the compiler does not support pragma redefine_extname,
1027# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
1028# structures (such as rlimit64) without declaring them. As a
1029# work-around, disable LFS on such configurations
1030
1031use_lfs=yes
1032AC_MSG_CHECKING(Solaris LFS bug)
1033AC_TRY_COMPILE([
1034#define _LARGEFILE_SOURCE 1
1035#define _FILE_OFFSET_BITS 64
1036#include <sys/resource.h>
1037],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
1038AC_MSG_RESULT($sol_lfs_bug)
1039if test "$sol_lfs_bug" = "yes"; then
1040 use_lfs=no
1041fi
1042
1043if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +00001044# Two defines needed to enable largefile support on various platforms
1045# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001046AC_DEFINE(_LARGEFILE_SOURCE, 1,
1047[This must be defined on some systems to enable large file support.])
1048AC_DEFINE(_FILE_OFFSET_BITS, 64,
1049[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +00001050fi
Guido van Rossum810cc512001-09-09 23:51:39 +00001051
Guido van Rossum300fda71996-08-19 21:58:16 +00001052# Add some code to confdefs.h so that the test for off_t works on SCO
1053cat >> confdefs.h <<\EOF
1054#if defined(SCO_DS)
1055#undef _OFF_T
1056#endif
1057EOF
1058
Guido van Rossumef2255b2000-03-10 22:30:29 +00001059# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001060AC_TYPE_MODE_T
1061AC_TYPE_OFF_T
1062AC_TYPE_PID_T
1063AC_TYPE_SIGNAL
1064AC_TYPE_SIZE_T
1065AC_TYPE_UID_T
Guido van Rossum627b2d71993-12-24 10:39:16 +00001066
Guido van Rossumef2255b2000-03-10 22:30:29 +00001067# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001068# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001069AC_CHECK_SIZEOF(int, 4)
1070AC_CHECK_SIZEOF(long, 4)
1071AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001072AC_CHECK_SIZEOF(short, 2)
1073AC_CHECK_SIZEOF(float, 4)
1074AC_CHECK_SIZEOF(double, 8)
1075AC_CHECK_SIZEOF(fpos_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001076
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001077AC_MSG_CHECKING(for long long support)
1078have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001079AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1080 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1081 have_long_long=yes
1082])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001083AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001084if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001085AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001086fi
1087
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001088AC_MSG_CHECKING(for uintptr_t support)
1089have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001090AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
1091 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
1092 have_uintptr_t=yes
1093])
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001094AC_MSG_RESULT($have_uintptr_t)
1095if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001096AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001097fi
1098
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001099# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1100AC_MSG_CHECKING(size of off_t)
1101AC_CACHE_VAL(ac_cv_sizeof_off_t,
1102[AC_TRY_RUN([#include <stdio.h>
1103#include <sys/types.h>
1104main()
1105{
1106 FILE *f=fopen("conftestval", "w");
1107 if (!f) exit(1);
1108 fprintf(f, "%d\n", sizeof(off_t));
1109 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001110}],
1111ac_cv_sizeof_off_t=`cat conftestval`,
1112ac_cv_sizeof_off_t=0,
1113ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001114])
1115AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001116AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1117[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001118
1119AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001120if test "$have_long_long" = yes -a \
1121 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1122 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001123 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1124 [Defined to enable large file support when an off_t is bigger than a long
1125 and long long is available and at least as big as an off_t. You may need
1126 to add some flags for configuration and compilation to enable this mode.
1127 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001128 AC_MSG_RESULT(yes)
1129else
1130 AC_MSG_RESULT(no)
1131fi
1132
Fred Drakea3f6e912000-06-29 20:44:47 +00001133# AC_CHECK_SIZEOF() doesn't include <time.h>.
1134AC_MSG_CHECKING(size of time_t)
1135AC_CACHE_VAL(ac_cv_sizeof_time_t,
1136[AC_TRY_RUN([#include <stdio.h>
1137#include <time.h>
1138main()
1139{
1140 FILE *f=fopen("conftestval", "w");
1141 if (!f) exit(1);
1142 fprintf(f, "%d\n", sizeof(time_t));
1143 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001144}],
1145ac_cv_sizeof_time_t=`cat conftestval`,
1146ac_cv_sizeof_time_t=0,
1147ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001148])
1149AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001150AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1151[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001152
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001153
Trent Mick635f6fb2000-08-23 21:33:05 +00001154# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001155ac_save_cc="$CC"
1156if test "$ac_cv_kpthread" = "yes"
1157then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001158elif test "$ac_cv_kthread" = "yes"
1159then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001160elif test "$ac_cv_pthread" = "yes"
1161then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001162fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001163AC_MSG_CHECKING(for pthread_t)
1164have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001165AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001166AC_MSG_RESULT($have_pthread_t)
1167if test "$have_pthread_t" = yes ; then
1168 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1169 AC_MSG_CHECKING(size of pthread_t)
1170 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1171 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001172#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001173 main()
1174 {
1175 FILE *f=fopen("conftestval", "w");
1176 if (!f) exit(1);
1177 fprintf(f, "%d\n", sizeof(pthread_t));
1178 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001179 }],
1180 ac_cv_sizeof_pthread_t=`cat conftestval`,
1181 ac_cv_sizeof_pthread_t=0,
1182 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001183 ])
1184 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001185 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1186 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001187fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001188CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001189
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001190AC_MSG_CHECKING(for --enable-toolbox-glue)
1191AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001192 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001193
1194if test -z "$enable_toolbox_glue"
1195then
1196 case $ac_sys_system/$ac_sys_release in
1197 Darwin/*)
1198 enable_toolbox_glue="yes";;
1199 *)
1200 enable_toolbox_glue="no";;
1201 esac
1202fi
1203case "$enable_toolbox_glue" in
1204yes)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001205 extra_machdep_objs="Python/mactoolboxglue.o"
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001206 extra_undefs="-u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001207 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1208 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001209 ;;
1210*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001211 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001212 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001213 ;;
1214esac
1215AC_MSG_RESULT($enable_toolbox_glue)
1216
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001217AC_SUBST(OTHER_LIBTOOL_OPT)
1218case $ac_sys_system/$ac_sys_release in
1219 Darwin/@<:@01234567@:>@.*)
1220 OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
1221 ;;
1222 Darwin/*)
1223 OTHER_LIBTOOL_OPT=""
1224 ;;
1225esac
1226
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001227AC_SUBST(LIBTOOL_CRUFT)
1228case $ac_sys_system/$ac_sys_release in
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001229 Darwin/@<:@01234567@:>@.*)
1230 LIBTOOL_CRUFT="-framework System -lcc_dynamic -arch_only ppc"
Jack Jansenb36687a2004-07-16 08:43:47 +00001231 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001232 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001233 Darwin/*)
Bob Ippolito7026a0a2005-03-28 23:23:47 +00001234 gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3`
1235 if test ${gcc_version} '<' 4.0
1236 then
1237 LIBTOOL_CRUFT="-lcc_dynamic"
1238 else
1239 LIBTOOL_CRUFT=""
1240 fi
1241 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -lSystem -lSystemStubs -arch_only ppc'
Jack Jansenb36687a2004-07-16 08:43:47 +00001242 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001243 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001244esac
1245
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001246AC_MSG_CHECKING(for --enable-framework)
1247if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001248then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001249 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001250 # -F. is needed to allow linking to the framework while
1251 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001252 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1253 [Define if you want to produce an OpenStep/Rhapsody framework
1254 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001255 AC_MSG_RESULT(yes)
1256else
1257 AC_MSG_RESULT(no)
1258fi
1259
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001260AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001261case $ac_sys_system/$ac_sys_release in
1262 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001263 AC_DEFINE(WITH_DYLD, 1,
1264 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1265 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1266 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001267 AC_MSG_RESULT(always on for Darwin)
1268 ;;
1269 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001270 AC_MSG_RESULT(no)
1271 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001272esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001273
Guido van Rossumac405f61994-09-12 10:56:06 +00001274# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001275AC_SUBST(SO)
1276AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001277AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001278AC_SUBST(CCSHARED)
1279AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001280# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001281# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001282AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001283if test -z "$SO"
1284then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001285 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001286 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001287 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001288 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001289 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001290else
1291 # this might also be a termcap variable, see #610332
1292 echo
1293 echo '====================================================================='
1294 echo '+ +'
1295 echo '+ WARNING: You have set SO in your environment. +'
1296 echo '+ Do you really mean to change the extension for shared libraries? +'
1297 echo '+ Continuing in 10 seconds to let you to ponder. +'
1298 echo '+ +'
1299 echo '====================================================================='
1300 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001301fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001302AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001303# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001304# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001305# (Shared libraries in this instance are shared modules to be loaded into
1306# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001307AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001308if test -z "$LDSHARED"
1309then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001310 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001311 AIX*)
1312 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001313 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001314 ;;
1315 BeOS*)
1316 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001317 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001318 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001319 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001320 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001321 SunOS/5*)
1322 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001323 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001324 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001325 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001326 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001327 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001328 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001329 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1330 if test "$enable_framework" ; then
1331 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001332 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1333 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001334 else
1335 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001336 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001337 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001338 Darwin/1.4*|Darwin/5.*|Darwin/6.*)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001339 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1340 if test "$enable_framework" ; then
1341 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001342 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1343 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001344 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001345 # No framework, use the Python app as bundle-loader
1346 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001347 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001348 fi ;;
Jack Jansen6b08a402004-06-03 12:41:45 +00001349 Darwin/*)
1350 # Use -undefined dynamic_lookup whenever possible (10.3 and later).
1351 # This allows an extension to be used in any Python
Jack Jansenbe954622004-12-26 23:07:48 +00001352 cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
Jack Jansenc110f862005-01-07 10:49:32 +00001353 CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
Jack Jansenbe954622004-12-26 23:07:48 +00001354 if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
Jack Jansen6b08a402004-06-03 12:41:45 +00001355 then
1356 LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
1357 BLDSHARED="$LDSHARED"
Jack Jansen6b08a402004-06-03 12:41:45 +00001358 else
1359 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1360 if test "$enable_framework" ; then
1361 # Link against the framework. All externals should be defined.
Jack Jansenda49e192005-01-07 13:08:22 +00001362 BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
1363 LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen6b08a402004-06-03 12:41:45 +00001364 else
1365 # No framework, use the Python app as bundle-loader
1366 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
1367 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
1368 fi
1369 fi
1370 ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001371 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001372 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001373 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001374 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001375 then
Hye-Shik Chang33761492004-10-26 09:53:46 +00001376 LDSHARED="$CC -shared ${LDFLAGS}"
Guido van Rossum0286ae82000-08-29 15:06:49 +00001377 else
1378 LDSHARED="ld -Bshareable ${LDFLAGS}"
1379 fi;;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001380 NetBSD*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001381 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001382 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001383 then LDSHARED='$(CC) -shared'
1384 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001385 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001386 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001387 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001388 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001389 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001390 *) LDSHARED="ld";;
1391 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001392fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001393AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001394BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001395# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001396# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001397AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001398if test -z "$CCSHARED"
1399then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001400 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001401 SunOS*) if test "$GCC" = yes;
1402 then CCSHARED="-fPIC";
1403 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001404 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001405 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001406 else CCSHARED="+z";
1407 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001408 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001409 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001410 FreeBSD*|NetBSD*|OpenBSD*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001411 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001412 if test "$GCC" = "yes"
1413 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001414 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001415 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001416 SCO_SV*)
1417 if test "$GCC" = "yes"
1418 then CCSHARED="-fPIC"
1419 else CCSHARED="-Kpic -belf"
1420 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001421 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001422 IRIX*/6*) case $CC in
1423 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001424 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001425 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001426 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001427 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001428fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001429AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001430# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001431# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001432AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001433if test -z "$LINKFORSHARED"
1434then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001435 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001436 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001437 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001438 LINKFORSHARED="-Wl,-E -Wl,+s";;
1439# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001440 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001441 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001442 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001443 Darwin/*)
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001444 # -u _PyMac_Error is needed to pull in the mac toolbox glue,
1445 # which is
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001446 # not used by the core itself but which needs to be in the core so
1447 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001448 # -prebind is no longer used, because it actually seems to give a
1449 # slowdown in stead of a speedup, maybe due to the large number of
1450 # dynamic loads Python does.
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001451
1452 LINKFORSHARED="$extra_undefs"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001453 if test "$enable_framework"
1454 then
Jack Jansenda49e192005-01-07 13:08:22 +00001455 LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001456 fi
Raymond Hettingerec6eb362004-11-05 07:02:59 +00001457 LINKFORSHARED="$LINKFORSHARED";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001458 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001459 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001460 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001461 FreeBSD*|NetBSD*|OpenBSD*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001462 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1463 then
1464 LINKFORSHARED="-Wl,--export-dynamic"
1465 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001466 SunOS/5*) case $CC in
1467 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001468 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001469 then
1470 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001471 fi;;
1472 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001473 CYGWIN*)
1474 if test $enable_shared = "no"
1475 then
1476 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1477 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001478 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001479fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001480AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001481
Neil Schemenauer61c51152001-01-26 16:18:16 +00001482AC_SUBST(CFLAGSFORSHARED)
1483AC_MSG_CHECKING(CFLAGSFORSHARED)
1484if test ! "$LIBRARY" = "$LDLIBRARY"
1485then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001486 case $ac_sys_system in
1487 CYGWIN*)
1488 # Cygwin needs CCSHARED when building extension DLLs
1489 # but not when building the interpreter DLL.
1490 CFLAGSFORSHARED='';;
1491 *)
1492 CFLAGSFORSHARED='$(CCSHARED)'
1493 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001494fi
1495AC_MSG_RESULT($CFLAGSFORSHARED)
1496
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001497# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1498# library (with --enable-shared).
1499# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001500# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1501# if it is not required, since it creates a dependency of the shared library
1502# to LIBS. This, in turn, means that applications linking the shared libpython
1503# don't need to link LIBS explicitly. The default should be only changed
1504# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001505AC_SUBST(SHLIBS)
1506AC_MSG_CHECKING(SHLIBS)
1507case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001508 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001509 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001510esac
1511AC_MSG_RESULT($SHLIBS)
1512
1513
Guido van Rossum627b2d71993-12-24 10:39:16 +00001514# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001515AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1516AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001517
1518# only check for sem_ini if thread support is requested
1519if test "$with_threads" = "yes" -o -z "$with_threads"; then
1520 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1521 # posix4 on Solaris 2.6
1522 # pthread (first!) on Linux
1523fi
1524
Martin v. Löwis19d17342003-06-14 21:03:05 +00001525# check if we need libintl for locale functions
1526AC_CHECK_LIB(intl, textdomain,
1527 AC_DEFINE(WITH_LIBINTL, 1,
1528 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001529
1530# checks for system dependent C++ extensions support
1531case "$ac_sys_system" in
1532 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1533 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1534 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001535 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1536 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1537 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001538 AC_MSG_RESULT(yes)],
1539 [AC_MSG_RESULT(no)]);;
1540 *) ;;
1541esac
1542
Guido van Rossum70c7f481998-03-26 18:44:10 +00001543# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001544# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001545AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001546AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001547
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001548case "$ac_sys_system" in
1549BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001550AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1551;;
1552esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001553
Guido van Rossumc5a39031996-07-31 17:35:03 +00001554AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001555AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001556 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1557[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001558AC_MSG_RESULT($withval)
1559LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001560],
1561[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001562
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001563# Determine if signalmodule should be used.
1564AC_SUBST(USE_SIGNAL_MODULE)
1565AC_SUBST(SIGNAL_OBJS)
1566AC_MSG_CHECKING(for --with-signal-module)
1567AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001568 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001569
1570if test -z "$with_signal_module"
1571then with_signal_module="yes"
1572fi
1573AC_MSG_RESULT($with_signal_module)
1574
1575if test "${with_signal_module}" = "yes"; then
1576 USE_SIGNAL_MODULE=""
1577 SIGNAL_OBJS=""
1578else
1579 USE_SIGNAL_MODULE="#"
1580 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1581fi
1582
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001583# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001584AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001585USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001586
Guido van Rossum54d93d41997-01-22 20:51:58 +00001587AC_MSG_CHECKING(for --with-dec-threads)
1588AC_SUBST(LDLAST)
1589AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001590 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1591[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001592AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001593LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001594if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001595 with_thread="$withval";
1596fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001597[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001598
Martin v. Löwis11437992002-04-12 09:54:03 +00001599# Templates for things AC_DEFINEd more than once.
1600# For a single AC_DEFINE, no template is needed.
1601AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1602AH_TEMPLATE(_REENTRANT,
1603 [Define to force use of thread-safe errno, h_errno, and other functions])
1604AH_TEMPLATE(WITH_THREAD,
1605 [Define if you want to compile in rudimentary thread support])
1606
Guido van Rossum54d93d41997-01-22 20:51:58 +00001607AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001608dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001609AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001610 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001611
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001612# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001613dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001614AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001615 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1616 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001617
1618if test -z "$with_threads"
1619then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001620fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001621AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001622
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001623AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001624if test "$with_threads" = "no"
1625then
1626 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001627elif test "$ac_cv_pthread_is_default" = yes
1628then
1629 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001630 # Defining _REENTRANT on system with POSIX threads should not hurt.
1631 AC_DEFINE(_REENTRANT)
1632 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001633 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001634elif test "$ac_cv_kpthread" = "yes"
1635then
1636 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001637 if test "$ac_cv_cxx_thread" = "yes"; then
1638 CXX="$CXX -Kpthread"
1639 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001640 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001641 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001642 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001643elif test "$ac_cv_kthread" = "yes"
1644then
1645 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001646 if test "$ac_cv_cxx_thread" = "yes"; then
1647 CXX="$CXX -Kthread"
1648 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001649 AC_DEFINE(WITH_THREAD)
1650 posix_threads=yes
1651 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001652elif test "$ac_cv_pthread" = "yes"
1653then
1654 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001655 if test "$ac_cv_cxx_thread" = "yes"; then
1656 CXX="$CXX -pthread"
1657 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001658 AC_DEFINE(WITH_THREAD)
1659 posix_threads=yes
1660 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001661else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001662 if test ! -z "$with_threads" -a -d "$with_threads"
1663 then LDFLAGS="$LDFLAGS -L$with_threads"
1664 fi
1665 if test ! -z "$withval" -a -d "$withval"
1666 then LDFLAGS="$LDFLAGS -L$withval"
1667 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001668
1669 # According to the POSIX spec, a pthreads implementation must
Matthias Klosea2542be2004-08-16 11:35:51 +00001670 # define _POSIX_THREADS in unistd.h. Some apparently don't
1671 # (e.g. gnu pth with pthread emulation)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001672 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1673 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001674 [
1675#include <unistd.h>
1676#ifdef _POSIX_THREADS
1677yes
1678#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001679 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1680 AC_MSG_RESULT($unistd_defines_pthreads)
1681
Martin v. Löwis130fb172001-07-19 11:00:41 +00001682 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001683 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1684 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001685 AC_DEFINE(HURD_C_THREADS, 1,
1686 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001687 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001688 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001689 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1690 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001691 AC_DEFINE(MACH_C_THREADS, 1,
1692 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001693 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001694 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001695 AC_ARG_WITH([pth],
1696 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1697 [AC_MSG_RESULT($withval)
1698 AC_DEFINE([WITH_THREAD])
1699 AC_DEFINE([HAVE_PTH], 1,
1700 [Define if you have GNU PTH threads.])
1701 LIBS="-lpth $LIBS"
1702 THREADOBJ="Python/thread.o"],
1703 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001704
1705 # Just looking for pthread_create in libpthread is not enough:
1706 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1707 # So we really have to include pthread.h, and then link.
1708 _libs=$LIBS
1709 LIBS="$LIBS -lpthread"
1710 AC_MSG_CHECKING([for pthread_create in -lpthread])
1711 AC_TRY_LINK([#include <pthread.h>
1712
1713void * start_routine (void *arg) { exit (0); }], [
1714pthread_create (NULL, NULL, start_routine, NULL)], [
1715 AC_MSG_RESULT(yes)
1716 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001717 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001718 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001719 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001720 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001721 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001722 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001723 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1724 AC_DEFINE(ATHEOS_THREADS, 1,
1725 [Define this if you have AtheOS threads.])
1726 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001727 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001728 AC_DEFINE(BEOS_THREADS, 1,
1729 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001730 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001731 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001732 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001733 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001734 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001735 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001736 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001737 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001738 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001739 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001740 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001741 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001742 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001743 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001744 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001745 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001746 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001747 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001748 ])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001749
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001750 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1751 LIBS="$LIBS -lmpc"
1752 THREADOBJ="Python/thread.o"
1753 USE_THREAD_MODULE=""])
1754
1755 if test "$posix_threads" != "yes"; then
1756 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1757 LIBS="$LIBS -lthread"
1758 THREADOBJ="Python/thread.o"
1759 USE_THREAD_MODULE=""])
1760 fi
1761
1762 if test "$USE_THREAD_MODULE" != "#"
1763 then
1764 # If the above checks didn't disable threads, (at least) OSF1
1765 # needs this '-threads' argument during linking.
1766 case $ac_sys_system in
1767 OSF1) LDLAST=-threads;;
1768 esac
1769 fi
1770fi
1771
1772if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001773 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001774 AC_DEFINE(_POSIX_THREADS, 1,
1775 [Define if you have POSIX threads,
1776 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001777 fi
1778
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001779 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1780 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001781 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1782 Defined for Solaris 2.6 bug in pthread header.)
1783 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001784 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001785 Define if the Posix semaphores do not work on your system)
1786 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001787 esac
1788
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001789 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1790 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1791 [AC_TRY_RUN([#include <pthread.h>
1792 void *foo(void *parm) {
1793 return NULL;
1794 }
1795 main() {
1796 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001797 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001798 if (pthread_attr_init(&attr)) exit(-1);
1799 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001800 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001801 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001802 }],
1803 ac_cv_pthread_system_supported=yes,
1804 ac_cv_pthread_system_supported=no,
1805 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001806 ])
1807 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1808 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001809 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001810 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001811 AC_CHECK_FUNCS(pthread_sigmask,
1812 [case $ac_sys_system in
1813 CYGWIN*)
1814 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1815 [Define if pthread_sigmask() does not work on your system.])
1816 ;;
1817 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001818fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001819
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001820
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001821# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001822AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001823AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001824AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001825[ --enable-ipv6 Enable ipv6 (with ipv4) support
1826 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001827[ case "$enableval" in
1828 no)
1829 AC_MSG_RESULT(no)
1830 ipv6=no
1831 ;;
1832 *) AC_MSG_RESULT(yes)
1833 AC_DEFINE(ENABLE_IPV6)
1834 ipv6=yes
1835 ;;
1836 esac ],
1837
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001838[
1839dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001840 AC_TRY_RUN([ /* AF_INET6 available check */
1841#include <sys/types.h>
1842#include <sys/socket.h>
1843main()
1844{
1845 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1846 exit(1);
1847 else
1848 exit(0);
1849}
1850],
1851 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001852 ipv6=yes,
1853 AC_MSG_RESULT(no)
1854 ipv6=no,
1855 AC_MSG_RESULT(no)
1856 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001857)
1858
1859if test "$ipv6" = "yes"; then
1860 AC_MSG_CHECKING(if RFC2553 API is available)
1861 AC_TRY_COMPILE([#include <sys/types.h>
1862#include <netinet/in.h>],
1863 [struct sockaddr_in6 x;
1864x.sin6_scope_id;],
1865 AC_MSG_RESULT(yes)
1866 ipv6=yes,
1867 AC_MSG_RESULT(no, IPv6 disabled)
1868 ipv6=no)
1869fi
1870
1871if test "$ipv6" = "yes"; then
1872 AC_DEFINE(ENABLE_IPV6)
1873fi
1874])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001875
1876ipv6type=unknown
1877ipv6lib=none
1878ipv6trylibc=no
1879
1880if test "$ipv6" = "yes"; then
1881 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001882 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1883 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001884 case $i in
1885 inria)
1886 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001887 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001888#include <netinet/in.h>
1889#ifdef IPV6_INRIA_VERSION
1890yes
1891#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001892 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001893 ;;
1894 kame)
1895 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001896 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001897#include <netinet/in.h>
1898#ifdef __KAME__
1899yes
1900#endif],
1901 [ipv6type=$i;
1902 ipv6lib=inet6
1903 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001904 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001905 ;;
1906 linux-glibc)
1907 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001908 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001909#include <features.h>
1910#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1911yes
1912#endif],
1913 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001914 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001915 ;;
1916 linux-inet6)
1917 dnl http://www.v6.linux.or.jp/
1918 if test -d /usr/inet6; then
1919 ipv6type=$i
1920 ipv6lib=inet6
1921 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00001922 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001923 fi
1924 ;;
1925 solaris)
1926 if test -f /etc/netconfig; then
1927 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
1928 ipv6type=$i
1929 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001930 fi
1931 fi
1932 ;;
1933 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001934 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001935#include <sys/param.h>
1936#ifdef _TOSHIBA_INET6
1937yes
1938#endif],
1939 [ipv6type=$i;
1940 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001941 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001942 ;;
1943 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001944 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001945#include </usr/local/v6/include/sys/v6config.h>
1946#ifdef __V6D__
1947yes
1948#endif],
1949 [ipv6type=$i;
1950 ipv6lib=v6;
1951 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001952 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001953 ;;
1954 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001955 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001956#include <sys/param.h>
1957#ifdef _ZETA_MINAMI_INET6
1958yes
1959#endif],
1960 [ipv6type=$i;
1961 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001962 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001963 ;;
1964 esac
1965 if test "$ipv6type" != "unknown"; then
1966 break
1967 fi
1968 done
1969 AC_MSG_RESULT($ipv6type)
1970fi
1971
1972if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
1973 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
1974 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
1975 echo "using lib$ipv6lib"
1976 else
1977 if test $ipv6trylibc = "yes"; then
1978 echo "using libc"
1979 else
1980 echo 'Fatal: no $ipv6lib library found. cannot continue.'
1981 echo "You need to fetch lib$ipv6lib.a from appropriate"
1982 echo 'ipv6 kit and compile beforehand.'
1983 exit 1
1984 fi
1985 fi
1986fi
1987
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001988# Check for --with-doc-strings
1989AC_MSG_CHECKING(for --with-doc-strings)
1990AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001991 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001992
1993if test -z "$with_doc_strings"
1994then with_doc_strings="yes"
1995fi
1996if test "$with_doc_strings" != "no"
1997then
1998 AC_DEFINE(WITH_DOC_STRINGS, 1,
1999 [Define if you want documentation strings in extension modules])
2000fi
2001AC_MSG_RESULT($with_doc_strings)
2002
Neil Schemenauera35c6882001-02-27 04:45:05 +00002003# Check for Python-specific malloc support
Martin v. Löwisf30d60e2004-06-08 08:17:44 +00002004AC_MSG_CHECKING(for --with-tsc)
2005AC_ARG_WITH(tsc,
2006[ --with(out)-tsc enable/disable timestamp counter profile], [
2007if test "$withval" != no
2008then
2009 AC_DEFINE(WITH_TSC, 1,
2010 [Define to profile with the Pentium timestamp counter])
2011 AC_MSG_RESULT(yes)
2012else AC_MSG_RESULT(no)
2013fi],
2014[AC_MSG_RESULT(no)])
2015
2016# Check for Python-specific malloc support
Neil Schemenauera35c6882001-02-27 04:45:05 +00002017AC_MSG_CHECKING(for --with-pymalloc)
2018AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002019 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00002020
2021if test -z "$with_pymalloc"
2022then with_pymalloc="yes"
2023fi
2024if test "$with_pymalloc" != "no"
2025then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002026 AC_DEFINE(WITH_PYMALLOC, 1,
2027 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00002028fi
2029AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00002030
Barry Warsawef82cd72000-06-30 16:21:01 +00002031# Check for --with-wctype-functions
2032AC_MSG_CHECKING(for --with-wctype-functions)
2033AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002034 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
2035[
Barry Warsawef82cd72000-06-30 16:21:01 +00002036if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002037then
2038 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
2039 [Define if you want wctype.h functions to be used instead of the
2040 one supplied by Python itself. (see Include/unicodectype.h).])
2041 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00002042else AC_MSG_RESULT(no)
2043fi],
2044[AC_MSG_RESULT(no)])
2045
Guido van Rossum68242b51996-05-28 22:53:03 +00002046# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002047AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00002048DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002049
Guido van Rossume97ee181999-12-20 21:27:22 +00002050# the dlopen() function means we might want to use dynload_shlib.o. some
2051# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00002052AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002053
2054# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2055# loading of modules.
2056AC_SUBST(DYNLOADFILE)
2057AC_MSG_CHECKING(DYNLOADFILE)
2058if test -z "$DYNLOADFILE"
2059then
2060 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00002061 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
2062 if test "$ac_cv_func_dlopen" = yes
2063 then DYNLOADFILE="dynload_shlib.o"
2064 else DYNLOADFILE="dynload_aix.o"
2065 fi
2066 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00002067 BeOS*) DYNLOADFILE="dynload_beos.o";;
2068 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002069 Darwin/*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002070 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002071 *)
2072 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2073 # out any dynamic loading
2074 if test "$ac_cv_func_dlopen" = yes
2075 then DYNLOADFILE="dynload_shlib.o"
2076 else DYNLOADFILE="dynload_stub.o"
2077 fi
2078 ;;
2079 esac
2080fi
2081AC_MSG_RESULT($DYNLOADFILE)
2082if test "$DYNLOADFILE" != "dynload_stub.o"
2083then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002084 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2085 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002086fi
2087
Jack Jansenc49e5b72001-06-19 15:00:23 +00002088# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2089
2090AC_SUBST(MACHDEP_OBJS)
2091AC_MSG_CHECKING(MACHDEP_OBJS)
2092if test -z "$MACHDEP_OBJS"
2093then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002094 MACHDEP_OBJS=$extra_machdep_objs
2095else
2096 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002097fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002098AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002099
Guido van Rossum627b2d71993-12-24 10:39:16 +00002100# checks for library functions
Gustavo Niemeyer7bd33c52004-07-22 18:44:01 +00002101AC_CHECK_FUNCS(alarm bind_textdomain_codeset chown clock confstr ctermid \
2102 execv fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002103 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwisc3001752005-01-23 09:27:24 +00002104 getpriority getpwent getspnam getspent getsid getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002105 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002106 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002107 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002108 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002109 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00002110 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002111 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002112 truncate uname unsetenv utimes waitpid wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002113
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002114# For some functions, having a definition is not sufficient, since
2115# we want to take their address.
2116AC_MSG_CHECKING(for chroot)
2117AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2118 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2119 AC_MSG_RESULT(yes),
2120 AC_MSG_RESULT(no)
2121)
2122AC_MSG_CHECKING(for link)
2123AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2124 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2125 AC_MSG_RESULT(yes),
2126 AC_MSG_RESULT(no)
2127)
2128AC_MSG_CHECKING(for symlink)
2129AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2130 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2131 AC_MSG_RESULT(yes),
2132 AC_MSG_RESULT(no)
2133)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002134AC_MSG_CHECKING(for fchdir)
2135AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2136 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2137 AC_MSG_RESULT(yes),
2138 AC_MSG_RESULT(no)
2139)
2140AC_MSG_CHECKING(for fsync)
2141AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002142 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002143 AC_MSG_RESULT(yes),
2144 AC_MSG_RESULT(no)
2145)
2146AC_MSG_CHECKING(for fdatasync)
2147AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2148 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2149 AC_MSG_RESULT(yes),
2150 AC_MSG_RESULT(no)
2151)
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002152
Martin v. Löwisd5843682002-11-21 20:41:28 +00002153# On some systems (eg. FreeBSD 5), we would find a definition of the
2154# functions ctermid_r, setgroups in the library, but no prototype
2155# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2156# address to avoid compiler warnings and potential miscompilations
2157# because of the missing prototypes.
2158
2159AC_MSG_CHECKING(for ctermid_r)
2160AC_TRY_COMPILE([
2161#include "confdefs.h"
2162#include <stdio.h>
2163], void* p = ctermid_r,
2164 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2165 AC_MSG_RESULT(yes),
2166 AC_MSG_RESULT(no)
2167)
2168
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002169AC_MSG_CHECKING(for flock)
2170AC_TRY_COMPILE([
2171#include "confdefs.h"
2172#include <sys/file.h>
2173], void* p = flock,
2174 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2175 AC_MSG_RESULT(yes),
2176 AC_MSG_RESULT(no)
2177)
2178
2179AC_MSG_CHECKING(for getpagesize)
2180AC_TRY_COMPILE([
2181#include "confdefs.h"
2182#include <unistd.h>
2183], void* p = getpagesize,
2184 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2185 AC_MSG_RESULT(yes),
2186 AC_MSG_RESULT(no)
2187)
2188
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002189dnl check for true
2190AC_CHECK_PROGS(TRUE, true, /bin/true)
2191
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002192dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2193dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002194AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002195 AC_CHECK_LIB(resolv, inet_aton)
2196)
2197
Martin v. Löwise9416172003-05-03 10:12:45 +00002198AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002199AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002200#include "confdefs.h"
2201#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002202], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002203 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2204 AC_MSG_RESULT(yes),
2205 AC_MSG_RESULT(no)
2206)
2207
2208AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002209AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002210#include "confdefs.h"
2211#include <sys/socket.h>
2212#include <netinet/in.h>
2213#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002214], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002215 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2216 AC_MSG_RESULT(yes),
2217 AC_MSG_RESULT(no)
2218)
2219
2220AC_MSG_CHECKING(for inet_pton)
2221AC_TRY_COMPILE([
2222#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002223#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002224#include <sys/socket.h>
2225#include <netinet/in.h>
2226#include <arpa/inet.h>
2227], void* p = inet_pton,
2228 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2229 AC_MSG_RESULT(yes),
2230 AC_MSG_RESULT(no)
2231)
2232
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002233# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002234AC_MSG_CHECKING(for setgroups)
2235AC_TRY_COMPILE([
2236#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002237#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002238#ifdef HAVE_GRP_H
2239#include <grp.h>
2240#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002241],
2242void* p = setgroups,
2243 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2244 AC_MSG_RESULT(yes),
2245 AC_MSG_RESULT(no)
2246)
2247
Fred Drake8cef4cf2000-06-28 16:40:38 +00002248# check for openpty and forkpty
2249
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002250AC_CHECK_FUNCS(openpty,, AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"]))
2251AC_CHECK_FUNCS(forkpty,, AC_CHECK_LIB(util,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"]))
Fred Drake8cef4cf2000-06-28 16:40:38 +00002252
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002253# check for long file support functions
2254AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2255
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002256AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002257AC_CHECK_FUNCS(getpgrp,
2258 AC_TRY_COMPILE([#include <unistd.h>],
2259 [getpgrp(0);],
2260 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2261 [Define if getpgrp() must be called as getpgrp(0).])
2262 )
2263)
Jack Jansen150753c2003-03-29 22:07:47 +00002264AC_CHECK_FUNCS(setpgrp,
2265 AC_TRY_COMPILE([#include <unistd.h>],
2266 [setpgrp(0,0);],
2267 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2268 [Define if setpgrp() must be called as setpgrp(0, 0).])
2269 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002270)
2271AC_CHECK_FUNCS(gettimeofday,
2272 AC_TRY_COMPILE([#include <sys/time.h>],
2273 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2274 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2275 [Define if gettimeofday() does not have second (timezone) argument
2276 This is the case on Motorola V4 (R40V4.2)])
2277 )
2278)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002279
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002280AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002281AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002282#if defined(MAJOR_IN_MKDEV)
2283#include <sys/mkdev.h>
2284#elif defined(MAJOR_IN_SYSMACROS)
2285#include <sys/sysmacros.h>
2286#else
2287#include <sys/types.h>
2288#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002289],[
2290 makedev(major(0),minor(0));
2291],[
2292 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2293 [Define to 1 if you have the device macros.])
2294 AC_MSG_RESULT(yes)
2295],[
2296 AC_MSG_RESULT(no)
2297])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002298
2299# On OSF/1 V5.1, getaddrinfo is available, but a define
2300# for [no]getaddrinfo in netdb.h.
2301AC_MSG_CHECKING(for getaddrinfo)
2302AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002303#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002304#include <sys/socket.h>
2305#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002306#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002307],[
2308getaddrinfo(NULL, NULL, NULL, NULL);
2309], [
2310AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002311AC_MSG_CHECKING(getaddrinfo bug)
2312AC_TRY_RUN([
2313#include <sys/types.h>
2314#include <netdb.h>
2315#include <string.h>
2316#include <sys/socket.h>
2317#include <netinet/in.h>
2318
2319main()
2320{
2321 int passive, gaierr, inet4 = 0, inet6 = 0;
2322 struct addrinfo hints, *ai, *aitop;
2323 char straddr[INET6_ADDRSTRLEN], strport[16];
2324
2325 for (passive = 0; passive <= 1; passive++) {
2326 memset(&hints, 0, sizeof(hints));
2327 hints.ai_family = AF_UNSPEC;
2328 hints.ai_flags = passive ? AI_PASSIVE : 0;
2329 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002330 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002331 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2332 (void)gai_strerror(gaierr);
2333 goto bad;
2334 }
2335 for (ai = aitop; ai; ai = ai->ai_next) {
2336 if (ai->ai_addr == NULL ||
2337 ai->ai_addrlen == 0 ||
2338 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2339 straddr, sizeof(straddr), strport, sizeof(strport),
2340 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2341 goto bad;
2342 }
2343 switch (ai->ai_family) {
2344 case AF_INET:
2345 if (strcmp(strport, "54321") != 0) {
2346 goto bad;
2347 }
2348 if (passive) {
2349 if (strcmp(straddr, "0.0.0.0") != 0) {
2350 goto bad;
2351 }
2352 } else {
2353 if (strcmp(straddr, "127.0.0.1") != 0) {
2354 goto bad;
2355 }
2356 }
2357 inet4++;
2358 break;
2359 case AF_INET6:
2360 if (strcmp(strport, "54321") != 0) {
2361 goto bad;
2362 }
2363 if (passive) {
2364 if (strcmp(straddr, "::") != 0) {
2365 goto bad;
2366 }
2367 } else {
2368 if (strcmp(straddr, "::1") != 0) {
2369 goto bad;
2370 }
2371 }
2372 inet6++;
2373 break;
2374 case AF_UNSPEC:
2375 goto bad;
2376 break;
2377 default:
2378 /* another family support? */
2379 break;
2380 }
2381 }
2382 }
2383
2384 if (!(inet4 == 0 || inet4 == 2))
2385 goto bad;
2386 if (!(inet6 == 0 || inet6 == 2))
2387 goto bad;
2388
2389 if (aitop)
2390 freeaddrinfo(aitop);
2391 exit(0);
2392
2393 bad:
2394 if (aitop)
2395 freeaddrinfo(aitop);
2396 exit(1);
2397}
2398],
2399AC_MSG_RESULT(good)
2400buggygetaddrinfo=no,
2401AC_MSG_RESULT(buggy)
2402buggygetaddrinfo=yes,
2403AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002404buggygetaddrinfo=yes)], [
2405AC_MSG_RESULT(no)
2406buggygetaddrinfo=yes
2407])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002408
2409if test "$buggygetaddrinfo" = "yes"; then
2410 if test "$ipv6" = "yes"; then
2411 echo 'Fatal: You must get working getaddrinfo() function.'
2412 echo ' or you can specify "--disable-ipv6"'.
2413 exit 1
2414 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002415else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002416 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002417fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002418AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002419
Guido van Rossum627b2d71993-12-24 10:39:16 +00002420# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002421AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002422AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002423AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002424AC_CHECK_MEMBERS([struct stat.st_rdev])
2425AC_CHECK_MEMBERS([struct stat.st_blksize])
Hye-Shik Chang5f937a72005-06-02 13:09:30 +00002426AC_CHECK_MEMBERS([struct stat.st_flags])
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00002427AC_CHECK_MEMBERS([struct stat.st_gen])
2428AC_CHECK_MEMBERS([struct stat.st_birthtime])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002429AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002430
2431AC_MSG_CHECKING(for time.h that defines altzone)
2432AC_CACHE_VAL(ac_cv_header_time_altzone,
2433[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2434 ac_cv_header_time_altzone=yes,
2435 ac_cv_header_time_altzone=no)])
2436AC_MSG_RESULT($ac_cv_header_time_altzone)
2437if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002438 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002439fi
2440
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002441was_it_defined=no
2442AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002443AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002444#include <sys/types.h>
2445#include <sys/select.h>
2446#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002447], [;], [
2448 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2449 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2450 (which you can't on SCO ODT 3.0).])
2451 was_it_defined=yes
2452])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002453AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002454
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002455AC_MSG_CHECKING(for addrinfo)
2456AC_CACHE_VAL(ac_cv_struct_addrinfo,
2457AC_TRY_COMPILE([
2458# include <netdb.h>],
2459 [struct addrinfo a],
2460 ac_cv_struct_addrinfo=yes,
2461 ac_cv_struct_addrinfo=no))
2462AC_MSG_RESULT($ac_cv_struct_addrinfo)
2463if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002464 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002465fi
2466
2467AC_MSG_CHECKING(for sockaddr_storage)
2468AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2469AC_TRY_COMPILE([
2470# include <sys/types.h>
2471# include <sys/socket.h>],
2472 [struct sockaddr_storage s],
2473 ac_cv_struct_sockaddr_storage=yes,
2474 ac_cv_struct_sockaddr_storage=no))
2475AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2476if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002477 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002478fi
2479
Guido van Rossum627b2d71993-12-24 10:39:16 +00002480# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002481
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002482AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002483AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002484
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002485works=no
2486AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002487AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2488 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2489)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002490AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002491
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002492works=no
2493AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002494AC_TRY_COMPILE([], [signed char c;], works=yes,
2495 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2496)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002497AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002498
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002499have_prototypes=no
2500AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002501AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2502 AC_DEFINE(HAVE_PROTOTYPES, 1,
2503 [Define if your compiler supports function prototype])
2504 have_prototypes=yes
2505])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002506AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002507
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002508works=no
2509AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002510AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002511#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002512int foo(int x, ...) {
2513 va_list va;
2514 va_start(va, x);
2515 va_arg(va, int);
2516 va_arg(va, char *);
2517 va_arg(va, double);
2518 return 0;
2519}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002520], [return foo(10, "", 3.14);], [
2521 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2522 [Define if your compiler supports variable length function prototypes
2523 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2524 works=yes
2525])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002526AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002527
Dave Cole331708b2004-08-09 04:51:41 +00002528# check for socketpair
2529AC_MSG_CHECKING(for socketpair)
2530AC_TRY_COMPILE([
2531#include <sys/types.h>
2532#include <sys/socket.h>
2533], void *x=socketpair,
2534 AC_DEFINE(HAVE_SOCKETPAIR, 1, Define if you have the 'socketpair' function.)
2535 AC_MSG_RESULT(yes),
2536 AC_MSG_RESULT(no)
2537)
2538
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002539# check if sockaddr has sa_len member
2540AC_MSG_CHECKING(if sockaddr has sa_len member)
2541AC_TRY_COMPILE([#include <sys/types.h>
2542#include <sys/socket.h>],
2543[struct sockaddr x;
2544x.sa_len = 0;],
2545 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002546 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002547 AC_MSG_RESULT(no))
2548
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002549va_list_is_array=no
2550AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002551AC_TRY_COMPILE([
2552#ifdef HAVE_STDARG_PROTOTYPES
2553#include <stdarg.h>
2554#else
2555#include <varargs.h>
2556#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002557], [va_list list1, list2; list1 = list2;], , [
2558 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2559 va_list_is_array=yes
2560])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002561AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002562
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002563# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002564AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2565 [Define this if you have some version of gethostbyname_r()])
2566
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002567AC_CHECK_FUNC(gethostbyname_r, [
2568 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2569 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2570 OLD_CFLAGS=$CFLAGS
2571 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2572 AC_TRY_COMPILE([
2573# include <netdb.h>
2574 ], [
2575 char *name;
2576 struct hostent *he, *res;
2577 char buffer[2048];
2578 int buflen = 2048;
2579 int h_errnop;
2580
2581 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2582 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002583 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002584 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2585 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002586 AC_MSG_RESULT(yes)
2587 ], [
2588 AC_MSG_RESULT(no)
2589 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2590 AC_TRY_COMPILE([
2591# include <netdb.h>
2592 ], [
2593 char *name;
2594 struct hostent *he;
2595 char buffer[2048];
2596 int buflen = 2048;
2597 int h_errnop;
2598
2599 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2600 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002601 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002602 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2603 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002604 AC_MSG_RESULT(yes)
2605 ], [
2606 AC_MSG_RESULT(no)
2607 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2608 AC_TRY_COMPILE([
2609# include <netdb.h>
2610 ], [
2611 char *name;
2612 struct hostent *he;
2613 struct hostent_data data;
2614
2615 (void) gethostbyname_r(name, he, &data);
2616 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002617 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002618 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2619 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002620 AC_MSG_RESULT(yes)
2621 ], [
2622 AC_MSG_RESULT(no)
2623 ])
2624 ])
2625 ])
2626 CFLAGS=$OLD_CFLAGS
2627], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002628 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002629])
2630AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2631AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2632AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002633AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002634AC_SUBST(HAVE_GETHOSTBYNAME)
2635
Guido van Rossum627b2d71993-12-24 10:39:16 +00002636# checks for system services
2637# (none yet)
2638
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002639# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002640AC_CHECK_FUNC(__fpu_control,
2641 [],
2642 [AC_CHECK_LIB(ieee, __fpu_control)
2643])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002644
Guido van Rossum93274221997-05-09 02:42:00 +00002645# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002646AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002647AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002648 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2649[
Guido van Rossum93274221997-05-09 02:42:00 +00002650if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002651then
2652 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2653 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2654 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002655else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002656fi],
2657[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002658
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002659# check for --with-libm=...
2660AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002661case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002662Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002663BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002664*) LIBM=-lm
2665esac
Guido van Rossum93274221997-05-09 02:42:00 +00002666AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002667AC_ARG_WITH(libm,
2668 AC_HELP_STRING(--with-libm=STRING, math library),
2669[
Guido van Rossum93274221997-05-09 02:42:00 +00002670if test "$withval" = no
2671then LIBM=
2672 AC_MSG_RESULT(force LIBM empty)
2673elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002674then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002675 AC_MSG_RESULT(set LIBM="$withval")
2676else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002677fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002678[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002679
2680# check for --with-libc=...
2681AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002682AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002683AC_ARG_WITH(libc,
2684 AC_HELP_STRING(--with-libc=STRING, C library),
2685[
Guido van Rossum93274221997-05-09 02:42:00 +00002686if test "$withval" = no
2687then LIBC=
2688 AC_MSG_RESULT(force LIBC empty)
2689elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002690then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002691 AC_MSG_RESULT(set LIBC="$withval")
2692else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002693fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002694[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002695
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002696# check for hypot() in math library
2697LIBS_SAVE=$LIBS
2698LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002699AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002700LIBS=$LIBS_SAVE
2701
Guido van Rossumef2255b2000-03-10 22:30:29 +00002702# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002703AC_CHECK_HEADER(wchar.h, [
2704 AC_DEFINE(HAVE_WCHAR_H, 1,
2705 [Define if the compiler provides a wchar.h header file.])
2706 wchar_h="yes"
2707],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002708wchar_h="no"
2709)
2710
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002711# determine wchar_t size
2712if test "$wchar_h" = yes
2713then
Guido van Rossum67b26592001-10-20 14:21:45 +00002714 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002715fi
2716
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002717AC_MSG_CHECKING(for UCS-4 tcl)
2718have_ucs4_tcl=no
2719AC_TRY_COMPILE([
2720#include <tcl.h>
2721#if TCL_UTF_MAX != 6
2722# error "NOT UCS4_TCL"
2723#endif], [], [
2724 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
2725 have_ucs4_tcl=yes
2726])
2727AC_MSG_RESULT($have_ucs4_tcl)
2728
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002729# check whether wchar_t is signed or not
2730if test "$wchar_h" = yes
2731then
2732 # check whether wchar_t is signed or not
2733 AC_MSG_CHECKING(whether wchar_t is signed)
2734 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
2735 AC_TRY_RUN([
2736 #include <wchar.h>
2737 int main()
2738 {
2739 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 1 : 0);
2740 }
2741 ],
2742 ac_cv_wchar_t_signed=yes,
2743 ac_cv_wchar_t_signed=no,
2744 ac_cv_wchar_t_signed=yes)])
2745 AC_MSG_RESULT($ac_cv_wchar_t_signed)
2746fi
2747
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002748AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002749dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002750AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002751 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2752 [],
2753 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002754
2755if test $enable_unicode = yes
2756then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002757 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002758 case "$have_ucs4_tcl" in
2759 yes) enable_unicode="ucs4"
2760 ;;
2761 *) enable_unicode="ucs2"
2762 ;;
2763 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002764fi
2765
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002766AH_TEMPLATE(Py_UNICODE_SIZE,
2767 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002768case "$enable_unicode" in
2769ucs2) unicode_size="2"
2770 AC_DEFINE(Py_UNICODE_SIZE,2)
2771 ;;
2772ucs4) unicode_size="4"
2773 AC_DEFINE(Py_UNICODE_SIZE,4)
2774 ;;
2775esac
2776
Martin v. Löwis11437992002-04-12 09:54:03 +00002777AH_TEMPLATE(PY_UNICODE_TYPE,
2778 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002779
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002780AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002781if test "$enable_unicode" = "no"
2782then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002783 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002784 AC_MSG_RESULT(not used)
2785else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002786 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002787 AC_DEFINE(Py_USING_UNICODE, 1,
2788 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002789
2790 # wchar_t is only usable if it maps to an unsigned type
2791 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
Matthias Klose7dbeed72004-12-24 08:22:17 +00002792 -a "$ac_cv_wchar_t_signed" = "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002793 then
2794 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002795 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2796 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002797 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002798 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002799 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2800 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2801 then
2802 PY_UNICODE_TYPE="unsigned short"
2803 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2804 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2805 then
2806 PY_UNICODE_TYPE="unsigned long"
2807 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2808 else
2809 PY_UNICODE_TYPE="no type found"
2810 fi
2811 AC_MSG_RESULT($PY_UNICODE_TYPE)
2812fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002813
2814# check for endianness
2815AC_C_BIGENDIAN
2816
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002817# Check whether right shifting a negative integer extends the sign bit
2818# or fills with zeros (like the Cray J90, according to Tim Peters).
2819AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002820AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002821AC_TRY_RUN([
2822int main()
2823{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002824 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002825}
Guido van Rossum3065c942001-09-17 04:03:14 +00002826],
2827ac_cv_rshift_extends_sign=yes,
2828ac_cv_rshift_extends_sign=no,
2829ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002830AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2831if test "$ac_cv_rshift_extends_sign" = no
2832then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002833 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2834 [Define if i>>j for signed int i does not extend the sign bit
2835 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002836fi
2837
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002838# check for getc_unlocked and related locking functions
2839AC_MSG_CHECKING(for getc_unlocked() and friends)
2840AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2841AC_TRY_LINK([#include <stdio.h>],[
2842 FILE *f = fopen("/dev/null", "r");
2843 flockfile(f);
2844 getc_unlocked(f);
2845 funlockfile(f);
2846], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2847AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2848if test "$ac_cv_have_getc_unlocked" = yes
2849then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002850 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2851 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002852fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002853
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002854# check for readline 2.1
2855AC_CHECK_LIB(readline, rl_callback_handler_install,
2856 AC_DEFINE(HAVE_RL_CALLBACK, 1,
2857 [Define if you have readline 2.1]), , -ltermcap)
2858
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00002859# check for readline 2.2
2860AC_TRY_CPP([#include <readline/readline.h>],
2861have_readline=yes, have_readline=no)
2862if test $have_readline = yes
2863then
2864 AC_EGREP_HEADER([extern int rl_completion_append_character;],
2865 [readline/readline.h],
2866 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
2867 [Define if you have readline 2.2]), )
2868fi
2869
Martin v. Löwis0daad592001-09-30 21:09:59 +00002870# check for readline 4.0
2871AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002872 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
2873 [Define if you have readline 4.0]), , -ltermcap)
Martin v. Löwis0daad592001-09-30 21:09:59 +00002874
Guido van Rossum353ae582001-07-10 16:45:32 +00002875# check for readline 4.2
2876AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002877 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
2878 [Define if you have readline 4.2]), , -ltermcap)
Guido van Rossum353ae582001-07-10 16:45:32 +00002879
Michael W. Hudson30ea2f22004-07-07 17:44:12 +00002880# also in readline 4.2
2881AC_TRY_CPP([#include <readline/readline.h>],
2882have_readline=yes, have_readline=no)
2883if test $have_readline = yes
2884then
2885 AC_EGREP_HEADER([extern int rl_catch_signals;],
2886 [readline/readline.h],
2887 AC_DEFINE(HAVE_RL_CATCH_SIGNAL, 1,
2888 [Define if you can turn off readline's signal handling.]), )
2889fi
2890
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002891AC_MSG_CHECKING(for broken nice())
2892AC_CACHE_VAL(ac_cv_broken_nice, [
2893AC_TRY_RUN([
2894int main()
2895{
2896 int val1 = nice(1);
2897 if (val1 != -1 && val1 == nice(2))
2898 exit(0);
2899 exit(1);
2900}
Guido van Rossum3065c942001-09-17 04:03:14 +00002901],
2902ac_cv_broken_nice=yes,
2903ac_cv_broken_nice=no,
2904ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002905AC_MSG_RESULT($ac_cv_broken_nice)
2906if test "$ac_cv_broken_nice" = yes
2907then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002908 AC_DEFINE(HAVE_BROKEN_NICE, 1,
2909 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002910fi
2911
Nicholas Bastine62c5c82004-03-21 23:45:42 +00002912AC_MSG_CHECKING(for broken poll())
2913AC_TRY_RUN([
2914#include <poll.h>
2915
2916int main (void)
2917 {
2918 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
2919
2920 close (42);
2921
2922 int poll_test = poll (&poll_struct, 1, 0);
2923
2924 if (poll_test < 0)
2925 {
2926 exit(0);
2927 }
2928 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
2929 {
2930 exit(0);
2931 }
2932 else
2933 {
2934 exit(1);
2935 }
2936 }
2937],
2938ac_cv_broken_poll=yes,
2939ac_cv_broken_poll=no,
2940ac_cv_broken_poll=no)
2941AC_MSG_RESULT($ac_cv_broken_poll)
2942if test "$ac_cv_broken_poll" = yes
2943then
2944 AC_DEFINE(HAVE_BROKEN_POLL, 1,
2945 [Define if poll() sets errno on invalid file descriptors.])
2946fi
2947
Brett Cannon43802422005-02-10 20:48:03 +00002948# Before we can test tzset, we need to check if struct tm has a tm_zone
2949# (which is not required by ISO C or UNIX spec) and/or if we support
2950# tzname[]
2951AC_STRUCT_TIMEZONE
Nicholas Bastine62c5c82004-03-21 23:45:42 +00002952
Brett Cannon43802422005-02-10 20:48:03 +00002953# check tzset(3) exists and works like we expect it to
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002954AC_MSG_CHECKING(for working tzset())
2955AC_CACHE_VAL(ac_cv_working_tzset, [
2956AC_TRY_RUN([
2957#include <stdlib.h>
2958#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00002959#include <string.h>
Brett Cannon43802422005-02-10 20:48:03 +00002960
2961#if HAVE_TZNAME
2962extern char *tzname[];
2963#endif
2964
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002965int main()
2966{
Brett Cannon18367812003-09-19 00:59:16 +00002967 /* Note that we need to ensure that not only does tzset(3)
2968 do 'something' with localtime, but it works as documented
2969 in the library reference and as expected by the test suite.
Brett Cannon43802422005-02-10 20:48:03 +00002970 This includes making sure that tzname is set properly if
2971 tm->tm_zone does not exist since it is the alternative way
2972 of getting timezone info.
Brett Cannon18367812003-09-19 00:59:16 +00002973
2974 Red Hat 6.2 doesn't understand the southern hemisphere
Brett Cannon43802422005-02-10 20:48:03 +00002975 after New Year's Day.
Brett Cannon18367812003-09-19 00:59:16 +00002976 */
2977
Brett Cannon43802422005-02-10 20:48:03 +00002978 time_t groundhogday = 1044144000; /* GMT-based */
Brett Cannon18367812003-09-19 00:59:16 +00002979 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
2980
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002981 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002982 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00002983 if (localtime(&groundhogday)->tm_hour != 0)
2984 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00002985#if HAVE_TZNAME
2986 /* For UTC, tzname[1] is sometimes "", sometimes " " */
2987 if (strcmp(tzname[0], "UTC") ||
2988 (tzname[1][0] != 0 && tzname[1][0] != ' '))
2989 exit(1);
2990#endif
Brett Cannon18367812003-09-19 00:59:16 +00002991
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002992 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002993 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00002994 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002995 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00002996#if HAVE_TZNAME
2997 if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT"))
2998 exit(1);
2999#endif
Brett Cannon18367812003-09-19 00:59:16 +00003000
3001 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
3002 tzset();
3003 if (localtime(&groundhogday)->tm_hour != 11)
3004 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003005#if HAVE_TZNAME
3006 if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT"))
3007 exit(1);
3008#endif
3009
3010#if HAVE_STRUCT_TM_TM_ZONE
Brett Cannon18367812003-09-19 00:59:16 +00003011 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
3012 exit(1);
3013 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
3014 exit(1);
Brett Cannon43802422005-02-10 20:48:03 +00003015#endif
Brett Cannon18367812003-09-19 00:59:16 +00003016
Guido van Rossumd11b62e2003-03-14 21:51:36 +00003017 exit(0);
3018}
3019],
3020ac_cv_working_tzset=yes,
3021ac_cv_working_tzset=no,
3022ac_cv_working_tzset=no)])
3023AC_MSG_RESULT($ac_cv_working_tzset)
3024if test "$ac_cv_working_tzset" = yes
3025then
3026 AC_DEFINE(HAVE_WORKING_TZSET, 1,
3027 [Define if tzset() actually switches the local timezone in a meaningful way.])
3028fi
3029
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003030# Look for subsecond timestamps in struct stat
3031AC_MSG_CHECKING(for tv_nsec in struct stat)
3032AC_CACHE_VAL(ac_cv_stat_tv_nsec,
3033AC_TRY_COMPILE([#include <sys/stat.h>], [
3034struct stat st;
3035st.st_mtim.tv_nsec = 1;
3036],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00003037ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00003038ac_cv_stat_tv_nsec=no,
3039ac_cv_stat_tv_nsec=no))
3040AC_MSG_RESULT($ac_cv_stat_tv_nsec)
3041if test "$ac_cv_stat_tv_nsec" = yes
3042then
3043 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
3044 [Define if you have struct stat.st_mtim.tv_nsec])
3045fi
3046
Martin v. Löwisebd9d5b2005-08-09 15:00:59 +00003047# Look for BSD style subsecond timestamps in struct stat
3048AC_MSG_CHECKING(for tv_nsec2 in struct stat)
3049AC_CACHE_VAL(ac_cv_stat_tv_nsec2,
3050AC_TRY_COMPILE([#include <sys/stat.h>], [
3051struct stat st;
3052st.st_mtimespec.tv_nsec = 1;
3053],
3054ac_cv_stat_tv_nsec2=yes,
3055ac_cv_stat_tv_nsec2=no,
3056ac_cv_stat_tv_nsec2=no))
3057AC_MSG_RESULT($ac_cv_stat_tv_nsec2)
3058if test "$ac_cv_stat_tv_nsec2" = yes
3059then
3060 AC_DEFINE(HAVE_STAT_TV_NSEC2, 1,
3061 [Define if you have struct stat.st_mtimensec])
3062fi
3063
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003064# On HP/UX 11.0, mvwdelch is a block with a return statement
3065AC_MSG_CHECKING(whether mvwdelch is an expression)
3066AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
3067AC_TRY_COMPILE([#include <curses.h>], [
3068 int rtn;
3069 rtn = mvwdelch(0,0,0);
3070], ac_cv_mvwdelch_is_expression=yes,
3071 ac_cv_mvwdelch_is_expression=no,
3072 ac_cv_mvwdelch_is_expression=yes))
3073AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
3074
3075if test "$ac_cv_mvwdelch_is_expression" = yes
3076then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003077 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
3078 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003079fi
3080
3081AC_MSG_CHECKING(whether WINDOW has _flags)
3082AC_CACHE_VAL(ac_cv_window_has_flags,
3083AC_TRY_COMPILE([#include <curses.h>], [
3084 WINDOW *w;
3085 w->_flags = 0;
3086], ac_cv_window_has_flags=yes,
3087 ac_cv_window_has_flags=no,
3088 ac_cv_window_has_flags=no))
3089AC_MSG_RESULT($ac_cv_window_has_flags)
3090
3091
3092if test "$ac_cv_window_has_flags" = yes
3093then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00003094 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
3095 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00003096fi
3097
Martin v. Löwis24a880b2002-12-31 12:55:15 +00003098AC_MSG_CHECKING(for /dev/ptmx)
3099
3100if test -e /dev/ptmx
3101then
3102 AC_MSG_RESULT(yes)
3103 AC_DEFINE(HAVE_DEV_PTMX, 1,
3104 [Define if we have /dev/ptmx.])
3105else
3106 AC_MSG_RESULT(no)
3107fi
3108
Neal Norwitz865400f2003-03-21 01:42:58 +00003109AC_MSG_CHECKING(for /dev/ptc)
3110
3111if test -e /dev/ptc
3112then
3113 AC_MSG_RESULT(yes)
3114 AC_DEFINE(HAVE_DEV_PTC, 1,
3115 [Define if we have /dev/ptc.])
3116else
3117 AC_MSG_RESULT(no)
3118fi
3119
Martin v. Löwis01c04012002-11-11 14:58:44 +00003120AC_CHECK_TYPE(socklen_t,,
3121 AC_DEFINE(socklen_t,int,
3122 Define to `int' if <sys/socket.h> does not define.),[
3123#ifdef HAVE_SYS_TYPES_H
3124#include <sys/types.h>
3125#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00003126#ifdef HAVE_SYS_SOCKET_H
3127#include <sys/socket.h>
3128#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00003129])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003130
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00003131AC_SUBST(THREADHEADERS)
3132
3133for h in `(cd $srcdir;echo Python/thread_*.h)`
3134do
3135 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
3136done
3137
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003138AC_SUBST(SRCDIRS)
Jack Jansen0b06be72002-06-21 14:48:38 +00003139SRCDIRS="Parser Grammar Objects Python Modules Mac Mac/Python"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00003140AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003141for dir in $SRCDIRS; do
3142 if test ! -d $dir; then
3143 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00003144 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00003145done
3146AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00003147
Guido van Rossum627b2d71993-12-24 10:39:16 +00003148# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00003149AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
3150AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00003151
3152echo "creating Setup"
3153if test ! -f Modules/Setup
3154then
3155 cp $srcdir/Modules/Setup.dist Modules/Setup
3156fi
3157
3158echo "creating Setup.local"
3159if test ! -f Modules/Setup.local
3160then
3161 echo "# Edit this file for local setup changes" >Modules/Setup.local
3162fi
3163
3164echo "creating Makefile"
3165$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
3166 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00003167 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00003168mv config.c Modules