blob: 609845449b2494fdabd8af78034cd6d74504f032 [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)
Fred Drake9bd44622003-07-30 17:39:48 +00004m4_define(PYTHON_VERSION, 2.4)
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öwis88afe662002-10-26 13:47:44 +00008AC_INIT(python, PYTHON_VERSION)
9AC_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öwise981a4e2002-11-11 13:26:51 +000053define_xopen_source=yes
Martin v. Löwis6f18a3c2002-07-20 08:51:52 +000054
Neil Schemenauer4edbc2a2001-03-22 00:34:03 +000055# Arguments passed to configure.
56AC_SUBST(CONFIG_ARGS)
57CONFIG_ARGS="$ac_configure_args"
58
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000059dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Jack Jansenb6e9cad2001-08-15 01:26:28 +000060AC_ARG_ENABLE(framework,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000061 AC_HELP_STRING(--enable-framework@<:@=INSTALLDIR@:>@, Build (MacOSX|Darwin) framework),
62[
Jack Jansenb6e9cad2001-08-15 01:26:28 +000063 case $enableval in
64 yes)
65 enableval=/Library/Frameworks
Jack Jansen127e56e2001-09-11 14:41:54 +000066 esac
67 case $enableval in
68 no)
69 PYTHONFRAMEWORK=
70 PYTHONFRAMEWORKDIR=no-framework
71 PYTHONFRAMEWORKPREFIX=
72 PYTHONFRAMEWORKINSTALLDIR=
73 enable_framework=
Jack Jansenb6e9cad2001-08-15 01:26:28 +000074 ;;
75 *)
Jack Jansen127e56e2001-09-11 14:41:54 +000076 PYTHONFRAMEWORK=Python
77 PYTHONFRAMEWORKDIR=Python.framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000078 PYTHONFRAMEWORKPREFIX=$enableval
Jack Jansen127e56e2001-09-11 14:41:54 +000079 PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR
80 prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION
Jack Jansenb6e9cad2001-08-15 01:26:28 +000081 esac
Jack Jansenb6e9cad2001-08-15 01:26:28 +000082 ],[
83 PYTHONFRAMEWORK=
Jack Jansen127e56e2001-09-11 14:41:54 +000084 PYTHONFRAMEWORKDIR=no-framework
Jack Jansenb6e9cad2001-08-15 01:26:28 +000085 PYTHONFRAMEWORKPREFIX=
86 PYTHONFRAMEWORKINSTALLDIR=
87 enable_framework=
88])
89AC_SUBST(PYTHONFRAMEWORK)
90AC_SUBST(PYTHONFRAMEWORKDIR)
91AC_SUBST(PYTHONFRAMEWORKPREFIX)
92AC_SUBST(PYTHONFRAMEWORKINSTALLDIR)
Guido van Rossum4b6b5791996-09-09 20:09:34 +000093
Jack Jansenb6e9cad2001-08-15 01:26:28 +000094##AC_ARG_WITH(dyld,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +000095## AC_HELP_STRING(--with-dyld,
96## Use (OpenStep|Rhapsody) dynamic linker))
Jack Jansenb6e9cad2001-08-15 01:26:28 +000097##
Guido van Rossumb418f891996-07-30 18:06:02 +000098# Set name for machine-dependent library files
99AC_SUBST(MACHDEP)
100AC_MSG_CHECKING(MACHDEP)
101if test -z "$MACHDEP"
102then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000103 ac_sys_system=`uname -s`
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000104 if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
105 -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000106 ac_sys_release=`uname -v`
Guido van Rossumb418f891996-07-30 18:06:02 +0000107 else
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000108 ac_sys_release=`uname -r`
Guido van Rossumb418f891996-07-30 18:06:02 +0000109 fi
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000110 ac_md_system=`echo $ac_sys_system |
111 tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
112 ac_md_release=`echo $ac_sys_release |
Guido van Rossum67b26592001-10-20 14:21:45 +0000113 tr -d '[/ ]' | sed 's/^[[A-Z]]\.//' | sed 's/\..*//'`
Guido van Rossumb97ef171997-09-28 05:44:03 +0000114 MACHDEP="$ac_md_system$ac_md_release"
Guido van Rossum4b6b5791996-09-09 20:09:34 +0000115
Guido van Rossumbcd91e01997-03-20 20:46:29 +0000116 case $MACHDEP in
Andrew M. Kuchling5a3e4cb2001-07-20 19:29:04 +0000117 cygwin*) MACHDEP="cygwin";;
Jack Jansen8a97f4a2001-12-05 23:27:32 +0000118 darwin*) MACHDEP="darwin";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000119 atheos*) MACHDEP="atheos";;
Martin v. Löwisf3322282003-07-13 09:46:13 +0000120 irix646) MACHDEP="irix6";;
Guido van Rossumb97ef171997-09-28 05:44:03 +0000121 '') MACHDEP="unknown";;
Guido van Rossumb418f891996-07-30 18:06:02 +0000122 esac
123fi
Jack Jansen83f898c2002-12-30 22:23:40 +0000124
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000125# Some systems cannot stand _XOPEN_SOURCE being defined at all; they
126# disable features if it is defined, without any means to access these
127# features as extensions. For these systems, we skip the definition of
128# _XOPEN_SOURCE. Before adding a system to the list to gain access to
129# some feature, make sure there is no alternative way to access this
130# feature. Also, when using wildcards, make sure you have verified the
131# need for not defining _XOPEN_SOURCE on all systems matching the
132# wildcard, and that the wildcard does not include future systems
133# (which may remove their limitations).
134dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
135case $ac_sys_system/$ac_sys_release in
136 # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined,
137 # even though select is a POSIX function. Reported by J. Ribbens.
Martin v. Löwis76bafc62003-10-03 13:47:44 +0000138 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish.
139 OpenBSD/2.* | OpenBSD/3.@<:@01234@:>@)
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000140 define_xopen_source=no;;
Martin v. Löwisa9d71422003-03-28 18:43:31 +0000141 # On Solaris 2.6, sys/wait.h is inconsistent in the usage
142 # of union __?sigval. Reported by Stuart Bishop.
143 SunOS/5.6)
144 define_xopen_source=no;;
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000145 # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE,
146 # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice.
Martin v. Löwis253d1f42004-05-07 19:14:14 +0000147 # Reconfirmed for 7.1.4 by Martin v. Loewis.
148 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-4@:>@)
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000149 define_xopen_source=no;;
150 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000151 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000152 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000153 define_xopen_source=no;;
Anthony Baxter6169c6b2003-10-04 07:46:23 +0000154 # On FreeBSD 4.8 and MacOS X 10.2, a bug in ncurses.h means that
155 # it craps out if _XOPEN_EXTENDED_SOURCE is defined. Apparently,
156 # this is fixed in 10.3, which identifies itself as Darwin/7.*
157 # This should hopefully be fixed in FreeBSD 4.9
158 FreeBSD/4.8* | Darwin/6* )
159 define_xopen_source=no;;
Martin v. Löwisc19c5a62003-11-18 20:00:44 +0000160 # On AIX 4, mbstate_t is defined only when _XOPEN_SOURCE == 500 but used in
161 # wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined or
162 # has another value. By not (re)defining it, the defaults come in place.
163 AIX/4)
164 define_xopen_source=no;;
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000165esac
166
167if test $define_xopen_source = yes
168then
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000169 AC_DEFINE(_XOPEN_SOURCE, 600,
170 Define to the level of X/Open that your system supports)
171
172 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
173 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
174 # several APIs are not declared. Since this is also needed in some
175 # cases for HP-UX, we define it globally.
176
177 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Define to activate Unix95-and-earlier features)
178 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
179
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000180fi
181
Guido van Rossum91922671997-10-09 20:24:13 +0000182#
183# SGI compilers allow the specification of the both the ABI and the
184# ISA on the command line. Depending on the values of these switches,
185# different and often incompatable code will be generated.
186#
187# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
188# thus supply support for various ABI/ISA combinations. The MACHDEP
189# variable is also adjusted.
190#
191AC_SUBST(SGI_ABI)
192if test ! -z "$SGI_ABI"
193then
194 CC="cc $SGI_ABI"
195 LDFLAGS="$SGI_ABI $LDFLAGS"
196 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
197fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000198AC_MSG_RESULT($MACHDEP)
199
Jack Jansen83f898c2002-12-30 22:23:40 +0000200# And add extra plat-mac for darwin
201AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000202AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000203AC_MSG_CHECKING(EXTRAPLATDIR)
204if test -z "$EXTRAPLATDIR"
205then
206 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000207 darwin)
208 EXTRAPLATDIR="\$(PLATMACDIRS)"
209 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
210 ;;
211 *)
212 EXTRAPLATDIR=""
213 EXTRAMACHDEPPATH=""
214 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000215 esac
216fi
217AC_MSG_RESULT($EXTRAPLATDIR)
218
Guido van Rossum627b2d71993-12-24 10:39:16 +0000219# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000220
221# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
222# for debug/optimization stuff. BASECFLAGS is for flags that are required
223# just to get things to compile and link. Users are free to override OPT
224# when running configure or make. The build should not break if they do.
225# BASECFLAGS should generally not be messed with, however.
226
227# XXX shouldn't some/most/all of this code be merged with the stuff later
228# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000229AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000230AC_ARG_WITH(gcc,
231 AC_HELP_STRING(--without-gcc,never use gcc),
232[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000233 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000234 no) CC=cc
235 without_gcc=yes;;
236 yes) CC=gcc
237 without_gcc=no;;
238 *) CC=$withval
239 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000240 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000241 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000242 AIX*) CC=cc_r
243 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000244 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000245 case $BE_HOST_CPU in
246 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000247 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000248 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000249 BASECFLAGS="$BASECFLAGS -export pragma"
250 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000251 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000252 ;;
253 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000254 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000255 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000256 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000257 ;;
258 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000259 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000260 ;;
261 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000262 AR="\$(srcdir)/Modules/ar_beos"
263 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000264 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000265 Monterey*)
266 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000267 without_gcc=;;
268 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000269 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000270AC_MSG_RESULT($without_gcc)
271
Guido van Rossum27552902001-01-23 01:52:26 +0000272AC_SUBST(CXX)
Guido van Rossum95012191999-12-16 17:50:52 +0000273AC_SUBST(MAINOBJ)
Fred Drakea1a84e72001-03-06 05:52:16 +0000274MAINOBJ=python.o
Guido van Rossum95012191999-12-16 17:50:52 +0000275AC_MSG_CHECKING(for --with-cxx=<compiler>)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000276AC_ARG_WITH(cxx,
277 AC_HELP_STRING(--with-cxx=<compiler>, enable C++ support),
278[
Martin v. Löwis537970f2000-12-13 17:37:02 +0000279 check_cxx=no
Guido van Rossum95012191999-12-16 17:50:52 +0000280 case $withval in
281 no) CXX=
282 with_cxx=no;;
283 *) CXX=$withval
Fred Drakea1a84e72001-03-06 05:52:16 +0000284 MAINOBJ=ccpython.o
Guido van Rossum95012191999-12-16 17:50:52 +0000285 with_cxx=$withval;;
286 esac], [
287 with_cxx=no
Martin v. Löwis537970f2000-12-13 17:37:02 +0000288 check_cxx=yes
Guido van Rossum95012191999-12-16 17:50:52 +0000289])
290AC_MSG_RESULT($with_cxx)
Martin v. Löwis537970f2000-12-13 17:37:02 +0000291
Michael W. Hudson54241132001-12-07 15:38:26 +0000292if test "$with_cxx" = "yes"
293then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000294 AC_MSG_ERROR([must supply a compiler when using --with-cxx])
Michael W. Hudson54241132001-12-07 15:38:26 +0000295fi
296
Martin v. Löwis537970f2000-12-13 17:37:02 +0000297dnl The following fragment works similar to AC_PROG_CXX.
298dnl It does not fail if CXX is not found, and it is not executed if
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000299dnl --without-cxx was given.
Martin v. Löwis537970f2000-12-13 17:37:02 +0000300dnl Finally, it does not test whether CXX is g++.
301
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000302dnl Autoconf 2.5x does not have AC_PROG_CXX_WORKS anymore
303ifdef([AC_PROG_CXX_WORKS],[],
304 [AC_DEFUN([AC_PROG_CXX_WORKS],
305 [AC_LANG_PUSH(C++)dnl
306 _AC_COMPILER_EXEEXT
307 AC_LANG_POP()
308 ]
309)])
310
Martin v. Löwis537970f2000-12-13 17:37:02 +0000311if test "$check_cxx" = "yes"
312then
313 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
314 if test "$CXX" = "notfound"
315 then
316 CXX=
317 else
318 AC_PROG_CXX_WORKS
319 fi
320fi
321
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000322# If the user switches compilers, we can't believe the cache
323if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
324then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000325 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
326(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000327fi
328
Guido van Rossum627b2d71993-12-24 10:39:16 +0000329AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000330
331# checks for UNIX variants that set C preprocessor variables
332AC_AIX
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000333
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000334# Check for unsupported systems
335case $ac_sys_system/$ac_sys_release in
Skip Montanaroce59c042004-01-17 14:19:44 +0000336Linux*/1*)
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000337 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
338 echo See README for details.
339 exit 1;;
340esac
341
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000342AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000343AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000344AC_ARG_WITH(suffix,
345 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
346[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000347 case $withval in
348 no) EXEEXT=;;
349 yes) EXEEXT=.exe;;
350 *) EXEEXT=$withval;;
351 esac])
352AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000353
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000354# Test whether we're running on a non-case-sensitive system, in which
355# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000356AC_SUBST(BUILDEXEEXT)
357AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000358if test ! -d CaseSensitiveTestDir; then
359mkdir CaseSensitiveTestDir
360fi
361
362if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000363then
Jack Jansen1999ef42001-12-06 21:47:20 +0000364 AC_MSG_RESULT(yes)
365 BUILDEXEEXT=.exe
366else
367 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000368 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000369fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000370rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000371
Guido van Rossumdd997f71998-10-07 19:58:26 +0000372case $MACHDEP in
373bsdos*)
374 case $CC in
375 gcc) CC="$CC -D_HAVE_BSDI";;
376 esac;;
377esac
378
Guido van Rossum84561611997-08-21 00:08:11 +0000379case $ac_sys_system in
380hp*|HP*)
381 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000382 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000383 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000384Monterey*)
385 case $CC in
386 cc) CC="$CC -Wl,-Bexport";;
387 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000388SunOS*)
389 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000390 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000391 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000392esac
393
Martin v. Löwise8964d42001-03-06 12:09:07 +0000394
Neil Schemenauer61c51152001-01-26 16:18:16 +0000395AC_SUBST(LIBRARY)
396AC_MSG_CHECKING(LIBRARY)
397if test -z "$LIBRARY"
398then
399 LIBRARY='libpython$(VERSION).a'
400fi
401AC_MSG_RESULT($LIBRARY)
402
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000403# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000404# name of the library into which to insert object files). BLDLIBRARY is also
405# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
406# is blank as the main program is not linked directly against LDLIBRARY.
407# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
408# systems without shared libraries, LDLIBRARY is the same as LIBRARY
409# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
410# DLLLIBRARY is the shared (i.e., DLL) library.
411#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000412# RUNSHARED is used to run shared python without installed libraries
413#
414# INSTSONAME is the name of the shared library that will be use to install
415# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000416AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000417AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000418AC_SUBST(BLDLIBRARY)
419AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000420AC_SUBST(INSTSONAME)
421AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000422LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000423BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000424INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000425DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000426LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000427RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000428
Guido van Rossumfb842551997-08-06 23:42:07 +0000429# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000430# If CXX is set, and if it is needed to link a main function that was
431# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
432# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000433# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000434# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000435AC_SUBST(LINKCC)
436AC_MSG_CHECKING(LINKCC)
437if test -z "$LINKCC"
438then
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000439 if test -z "$CXX"; then
440 LINKCC="\$(PURIFY) \$(CC)"
441 else
Martin v. Löwis1931ca72002-06-01 21:39:58 +0000442 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000443 $CXX -c conftest.$ac_ext 2>&5
444 if $CC -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
445 && test -s conftest$ac_exeext && ./conftest$ac_exeext
446 then
447 LINKCC="\$(PURIFY) \$(CC)"
448 else
449 LINKCC="\$(PURIFY) \$(CXX)"
450 fi
451 rm -fr conftest*
452 fi
Guido van Rossumfb842551997-08-06 23:42:07 +0000453 case $ac_sys_system in
454 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000455 exp_extra="\"\""
456 if test $ac_sys_release -ge 5 -o \
457 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
458 exp_extra="."
459 fi
460 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000461 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000462 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000463 esac
464fi
465AC_MSG_RESULT($LINKCC)
466
Martin v. Löwis1142de32002-03-29 16:28:31 +0000467AC_MSG_CHECKING(for --enable-shared)
468AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000469 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000470
Martin v. Löwis1142de32002-03-29 16:28:31 +0000471if test -z "$enable_shared"
472then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000473 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000474 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000475 enable_shared="yes";;
476 *)
477 enable_shared="no";;
478 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000479fi
480AC_MSG_RESULT($enable_shared)
481
482
483AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000484
Guido van Rossumb8552162001-09-05 14:58:11 +0000485# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
486# library that we build, but we do not want to link against it (we
487# will find it with a -framework option). For this reason there is an
488# extra variable BLDLIBRARY against which Python and the extension
489# modules are linked, BLDLIBRARY. This is normally the same as
490# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000491if test "$enable_framework"
492then
493 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000494 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000495 BLDLIBRARY=''
496else
497 BLDLIBRARY='$(LDLIBRARY)'
498fi
499
Martin v. Löwis1142de32002-03-29 16:28:31 +0000500# Other platforms follow
501if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000502 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000503 case $ac_sys_system in
504 BeOS*)
505 LDLIBRARY='libpython$(VERSION).so'
506 ;;
507 CYGWIN*)
508 LDLIBRARY='libpython$(VERSION).dll.a'
509 DLLLIBRARY='libpython$(VERSION).dll'
510 ;;
511 SunOS*)
512 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000513 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000514 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis2389c412003-10-31 15:42:07 +0000515 INSTSONAME="$LDLIBRARY".$SOVERSION
Martin v. Löwis1142de32002-03-29 16:28:31 +0000516 ;;
Martin v. Löwis96ce8052003-05-31 07:58:45 +0000517 Linux*|GNU*|NetBSD*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000518 LDLIBRARY='libpython$(VERSION).so'
519 BLDLIBRARY='-L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000520 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000521 INSTSONAME="$LDLIBRARY".$SOVERSION
522 ;;
523 hp*|HP*)
524 LDLIBRARY='libpython$(VERSION).sl'
525 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000526 RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000527 ;;
528 OSF*)
529 LDLIBRARY='libpython$(VERSION).so'
530 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwisfc9b75f2003-08-09 09:06:52 +0000531 RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
Martin v. Löwis1142de32002-03-29 16:28:31 +0000532 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000533 atheos*)
534 LDLIBRARY='libpython$(VERSION).so'
535 BLDLIBRARY='-L. -lpython$(VERSION)'
536 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
537 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000538 esac
Jason Tishler30765592003-09-04 11:04:06 +0000539else # shared is disabled
540 case $ac_sys_system in
541 CYGWIN*)
542 BLDLIBRARY='$(LIBRARY)'
543 LDLIBRARY='libpython$(VERSION).dll.a'
544 ;;
545 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000546fi
547
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000548AC_MSG_RESULT($LDLIBRARY)
549
Guido van Rossum627b2d71993-12-24 10:39:16 +0000550AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000551AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000552AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000553
554case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000555bsdos*|hp*|HP*)
556 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000557 if test -z "$INSTALL"
558 then
559 INSTALL="${srcdir}/install-sh -c"
560 fi
561esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000562AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000563
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000564# Not every filesystem supports hard links
565AC_SUBST(LN)
566if test -z "$LN" ; then
567 case $ac_sys_system in
568 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000569 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000570 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000571 *) LN=ln;;
572 esac
573fi
574
Fred Drake9f715822001-07-11 06:27:00 +0000575# Check for --with-pydebug
576AC_MSG_CHECKING(for --with-pydebug)
577AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000578 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
579[
Fred Drake9f715822001-07-11 06:27:00 +0000580if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000581then
582 AC_DEFINE(Py_DEBUG, 1,
583 [Define if you want to build an interpreter with many run-time checks.])
584 AC_MSG_RESULT(yes);
585 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000586else AC_MSG_RESULT(no); Py_DEBUG='false'
587fi],
588[AC_MSG_RESULT(no)])
589
Skip Montanarodecc6a42003-01-01 20:07:49 +0000590# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
591# merged with this chunk of code?
592
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000593# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000594# ------------------------
595# (The following bit of code is complicated enough - please keep things
596# indented properly. Just pretend you're editing Python code. ;-)
597
598# There are two parallel sets of case statements below, one that checks to
599# see if OPT was set and one that does BASECFLAGS setting based upon
600# compiler and platform. BASECFLAGS tweaks need to be made even if the
601# user set OPT.
602
603# tweak OPT based on compiler and platform, only if the user didn't set
604# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000605AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000606if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000607then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000608 case $GCC in
609 yes)
610 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000611 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000612 if test "$Py_DEBUG" = 'true' ; then
613 # Optimization messes up debuggers, so turn it off for
614 # debug builds.
615 OPT="-g -Wall -Wstrict-prototypes"
616 else
617 OPT="-g -O3 -Wall -Wstrict-prototypes"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000618 fi
619 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000620 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000621 OPT="-O3 -Wall -Wstrict-prototypes"
622 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000623 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000624 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000625 SCO_SV*) OPT="$OPT -m486 -DSCO5"
626 ;;
627 esac
Fred Drake9f715822001-07-11 06:27:00 +0000628 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000629
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000630 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000631 OPT="-O"
632 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000633 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000634
635 # The current (beta) Monterey compiler dies with optimizations
636 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000637 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000638 Monterey*)
639 OPT=""
640 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000641 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000642
Guido van Rossum4e8af441994-08-19 15:33:54 +0000643fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000644
Skip Montanarodecc6a42003-01-01 20:07:49 +0000645AC_SUBST(BASECFLAGS)
646# tweak BASECFLAGS based on compiler and platform
647case $GCC in
648yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000649 # Python violates C99 rules, by casting between incompatible
650 # pointer types. GCC may generate bad code as a result of that,
651 # so use -fno-strict-aliasing if supported.
652 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
653 ac_save_cc="$CC"
654 CC="$CC -fno-strict-aliasing"
655 AC_TRY_RUN([int main() { return 0; }],
656 ac_cv_no_strict_aliasing_ok=yes,
657 ac_cv_no_strict_aliasing_ok=no,
658 ac_cv_no_strict_aliasing_ok=no)
659 CC="$ac_save_cc"
660 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
661 if test $ac_cv_no_strict_aliasing_ok = yes
662 then
663 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
664 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000665 case $ac_sys_system in
666 SCO_SV*)
667 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
668 ;;
669 # is there any other compiler on Darwin besides gcc?
670 Darwin*)
Jack Jansene0040412003-07-23 22:17:28 +0000671 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000672 ;;
673 esac
674 ;;
675
676*)
677 case $ac_sys_system in
678 OpenUNIX*|UnixWare*)
679 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
680 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000681 OSF*)
682 BASECFLAGS="$BASECFLAGS -ieee -std"
683 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000684 SCO_SV*)
685 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
686 ;;
687 esac
688 ;;
689esac
690
Fred Drakee1ceaa02001-12-04 20:55:47 +0000691if test "$Py_DEBUG" = 'true'; then
692 :
693else
694 OPT="-DNDEBUG $OPT"
695fi
696
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000697if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000698then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000699 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000700fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000701
Guido van Rossum91922671997-10-09 20:24:13 +0000702AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
703AC_CACHE_VAL(ac_cv_opt_olimit_ok,
704[ac_save_cc="$CC"
705CC="$CC -OPT:Olimit=0"
706AC_TRY_RUN([int main() { return 0; }],
707 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000708 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000709 ac_cv_opt_olimit_ok=no)
710CC="$ac_save_cc"])
711AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000712if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000713 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000714 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
715 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
716 # environment?
717 Darwin*)
718 ;;
719 *)
720 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
721 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000722 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000723else
724 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
725 AC_CACHE_VAL(ac_cv_olimit_ok,
726 [ac_save_cc="$CC"
727 CC="$CC -Olimit 1500"
728 AC_TRY_RUN([int main() { return 0; }],
729 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000730 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000731 ac_cv_olimit_ok=no)
732 CC="$ac_save_cc"])
733 AC_MSG_RESULT($ac_cv_olimit_ok)
734 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000735 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000736 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000737fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000738
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000739# On some compilers, pthreads are available without further options
740# (e.g. MacOS X). On some of these systems, the compiler will not
741# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
742# So we have to see first whether pthreads are available without
743# options before we can check whether -Kpthread improves anything.
744AC_MSG_CHECKING(whether pthreads are available without options)
745AC_CACHE_VAL(ac_cv_pthread_is_default,
746[AC_TRY_RUN([
747#include <pthread.h>
748
749void* routine(void* p){return NULL;}
750
751int main(){
752 pthread_t p;
753 if(pthread_create(&p,NULL,routine,NULL)!=0)
754 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000755 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000756 return 0;
757}
758],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000759[
760 ac_cv_pthread_is_default=yes
761 ac_cv_kthread=no
762 ac_cv_pthread=no
763],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000764 ac_cv_pthread_is_default=no,
765 ac_cv_pthread_is_default=no)
766])
767AC_MSG_RESULT($ac_cv_pthread_is_default)
768
769
770if test $ac_cv_pthread_is_default = yes
771then
772 ac_cv_kpthread=no
773else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000774# -Kpthread, if available, provides the right #defines
775# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000776# Some compilers won't report that they do not support -Kpthread,
777# so we need to run a program to see whether it really made the
778# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000779AC_MSG_CHECKING(whether $CC accepts -Kpthread)
780AC_CACHE_VAL(ac_cv_kpthread,
781[ac_save_cc="$CC"
782CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000783AC_TRY_RUN([
784#include <pthread.h>
785
786void* routine(void* p){return NULL;}
787
788int main(){
789 pthread_t p;
790 if(pthread_create(&p,NULL,routine,NULL)!=0)
791 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000792 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000793 return 0;
794}
795],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000796 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000797 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000798 ac_cv_kpthread=no)
799CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000800AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000801fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000802
Skip Montanarod8d39a02003-07-10 20:44:10 +0000803if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000804then
805# -Kthread, if available, provides the right #defines
806# and linker options to make pthread_create available
807# Some compilers won't report that they do not support -Kthread,
808# so we need to run a program to see whether it really made the
809# function available.
810AC_MSG_CHECKING(whether $CC accepts -Kthread)
811AC_CACHE_VAL(ac_cv_kthread,
812[ac_save_cc="$CC"
813CC="$CC -Kthread"
814AC_TRY_RUN([
815#include <pthread.h>
816
817void* routine(void* p){return NULL;}
818
819int main(){
820 pthread_t p;
821 if(pthread_create(&p,NULL,routine,NULL)!=0)
822 return 1;
823 (void)pthread_detach(p);
824 return 0;
825}
826],
827 ac_cv_kthread=yes,
828 ac_cv_kthread=no,
829 ac_cv_kthread=no)
830CC="$ac_save_cc"])
831AC_MSG_RESULT($ac_cv_kthread)
832fi
833
Skip Montanarod8d39a02003-07-10 20:44:10 +0000834if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000835then
836# -pthread, if available, provides the right #defines
837# and linker options to make pthread_create available
838# Some compilers won't report that they do not support -pthread,
839# so we need to run a program to see whether it really made the
840# function available.
841AC_MSG_CHECKING(whether $CC accepts -pthread)
842AC_CACHE_VAL(ac_cv_thread,
843[ac_save_cc="$CC"
844CC="$CC -pthread"
845AC_TRY_RUN([
846#include <pthread.h>
847
848void* routine(void* p){return NULL;}
849
850int main(){
851 pthread_t p;
852 if(pthread_create(&p,NULL,routine,NULL)!=0)
853 return 1;
854 (void)pthread_detach(p);
855 return 0;
856}
857],
858 ac_cv_pthread=yes,
859 ac_cv_pthread=no,
860 ac_cv_pthread=no)
861CC="$ac_save_cc"])
862AC_MSG_RESULT($ac_cv_pthread)
863fi
864
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000865# If we have set a CC compiler flag for thread support then
866# check if it works for CXX, too.
867ac_cv_cxx_thread=no
868if test ! -z "$CXX"
869then
870AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
871ac_save_cxx="$CXX"
872
873if test "$ac_cv_kpthread" = "yes"
874then
Martin v. Löwis519adae2003-09-20 10:47:47 +0000875 CXX="$CXX -Kpthread"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000876 ac_cv_cxx_thread=yes
877elif test "$ac_cv_kthread" = "yes"
878then
879 CXX="$CXX -Kthread"
880 ac_cv_cxx_thread=yes
881elif test "$ac_cv_pthread" = "yes"
882then
883 CXX="$CXX -pthread"
884 ac_cv_cxx_thread=yes
885fi
886
887if test $ac_cv_cxx_thread = yes
888then
889 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
890 $CXX -c conftest.$ac_ext 2>&5
891 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
892 && test -s conftest$ac_exeext && ./conftest$ac_exeext
893 then
894 ac_cv_cxx_thread=yes
895 else
896 ac_cv_cxx_thread=no
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000897 fi
898 rm -fr conftest*
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000899fi
900fi
Martin v. Löwis519adae2003-09-20 10:47:47 +0000901CXX="$ac_save_cxx"
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000902AC_MSG_RESULT($ac_cv_cxx_thread)
903
Fred Drakece81d592000-07-09 14:39:29 +0000904dnl # check for ANSI or K&R ("traditional") preprocessor
905dnl AC_MSG_CHECKING(for C preprocessor type)
906dnl AC_TRY_COMPILE([
907dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
908dnl int foo;
909dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
910dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
911dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +0000912
Guido van Rossum627b2d71993-12-24 10:39:16 +0000913# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000914AC_HEADER_STDC
Skip Montanaro7befb992004-02-10 16:50:21 +0000915AC_CHECK_HEADERS(dlfcn.h fcntl.h grp.h langinfo.h \
916libintl.h ncurses.h poll.h pthread.h \
917stropts.h termios.h thread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +0000918unistd.h utime.h \
Neal Norwitz82251032003-05-23 14:35:24 +0000919sys/audioio.h sys/bsdtty.h sys/file.h sys/lock.h sys/mkdev.h sys/modem.h \
Andrew M. Kuchling881fd902001-07-14 20:55:52 +0000920sys/param.h sys/poll.h sys/select.h sys/socket.h sys/time.h sys/times.h \
Martin v. Löwisa5f09072002-10-11 05:37:59 +0000921sys/un.h sys/utsname.h sys/wait.h pty.h term.h libutil.h \
Hye-Shik Chang81268602004-02-02 06:05:24 +0000922sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
923bluetooth/bluetooth.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000924AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +0000925AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +0000926
927# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000928was_it_defined=no
929AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000930AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
931 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
932])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000933AC_MSG_RESULT($was_it_defined)
934
Neal Norwitz11690112002-07-30 01:08:28 +0000935# Check whether using makedev requires defining _OSF_SOURCE
936AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000937AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +0000938 [ makedev(0, 0) ],
939 ac_cv_has_makedev=yes,
940 ac_cv_has_makedev=no)
941if test "$ac_cv_has_makedev" = "no"; then
942 # we didn't link, try if _OSF_SOURCE will allow us to link
943 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000944#define _OSF_SOURCE 1
945#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +0000946 ],
947 [ makedev(0, 0) ],
948 ac_cv_has_makedev=yes,
949 ac_cv_has_makedev=no)
950 if test "$ac_cv_has_makedev" = "yes"; then
951 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
952 fi
953fi
954AC_MSG_RESULT($ac_cv_has_makedev)
955if test "$ac_cv_has_makedev" = "yes"; then
956 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
957fi
958
Martin v. Löwis399a6892002-10-04 10:22:02 +0000959# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
960# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
961# defined, but the compiler does not support pragma redefine_extname,
962# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
963# structures (such as rlimit64) without declaring them. As a
964# work-around, disable LFS on such configurations
965
966use_lfs=yes
967AC_MSG_CHECKING(Solaris LFS bug)
968AC_TRY_COMPILE([
969#define _LARGEFILE_SOURCE 1
970#define _FILE_OFFSET_BITS 64
971#include <sys/resource.h>
972],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
973AC_MSG_RESULT($sol_lfs_bug)
974if test "$sol_lfs_bug" = "yes"; then
975 use_lfs=no
976fi
977
978if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +0000979# Two defines needed to enable largefile support on various platforms
980# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000981AC_DEFINE(_LARGEFILE_SOURCE, 1,
982[This must be defined on some systems to enable large file support.])
983AC_DEFINE(_FILE_OFFSET_BITS, 64,
984[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +0000985fi
Guido van Rossum810cc512001-09-09 23:51:39 +0000986
Guido van Rossum300fda71996-08-19 21:58:16 +0000987# Add some code to confdefs.h so that the test for off_t works on SCO
988cat >> confdefs.h <<\EOF
989#if defined(SCO_DS)
990#undef _OFF_T
991#endif
992EOF
993
Guido van Rossumef2255b2000-03-10 22:30:29 +0000994# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000995AC_TYPE_MODE_T
996AC_TYPE_OFF_T
997AC_TYPE_PID_T
998AC_TYPE_SIGNAL
999AC_TYPE_SIZE_T
1000AC_TYPE_UID_T
Guido van Rossum627b2d71993-12-24 10:39:16 +00001001
Guido van Rossumef2255b2000-03-10 22:30:29 +00001002# Sizes of various common basic types
Skip Montanarob9820a32004-01-17 00:16:12 +00001003# ANSI C requires sizeof(char) == 1, so no need to check it
Guido van Rossum3065c942001-09-17 04:03:14 +00001004AC_CHECK_SIZEOF(int, 4)
1005AC_CHECK_SIZEOF(long, 4)
1006AC_CHECK_SIZEOF(void *, 4)
Guido van Rossum3065c942001-09-17 04:03:14 +00001007AC_CHECK_SIZEOF(short, 2)
1008AC_CHECK_SIZEOF(float, 4)
1009AC_CHECK_SIZEOF(double, 8)
1010AC_CHECK_SIZEOF(fpos_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001011
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001012AC_MSG_CHECKING(for long long support)
1013have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001014AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1015 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1016 have_long_long=yes
1017])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001018AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001019if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001020AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001021fi
1022
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001023AC_MSG_CHECKING(for uintptr_t support)
1024have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001025AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
1026 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
1027 have_uintptr_t=yes
1028])
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001029AC_MSG_RESULT($have_uintptr_t)
1030if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001031AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001032fi
1033
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001034# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1035AC_MSG_CHECKING(size of off_t)
1036AC_CACHE_VAL(ac_cv_sizeof_off_t,
1037[AC_TRY_RUN([#include <stdio.h>
1038#include <sys/types.h>
1039main()
1040{
1041 FILE *f=fopen("conftestval", "w");
1042 if (!f) exit(1);
1043 fprintf(f, "%d\n", sizeof(off_t));
1044 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001045}],
1046ac_cv_sizeof_off_t=`cat conftestval`,
1047ac_cv_sizeof_off_t=0,
1048ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001049])
1050AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001051AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1052[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001053
1054AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001055if test "$have_long_long" = yes -a \
1056 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1057 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001058 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1059 [Defined to enable large file support when an off_t is bigger than a long
1060 and long long is available and at least as big as an off_t. You may need
1061 to add some flags for configuration and compilation to enable this mode.
1062 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001063 AC_MSG_RESULT(yes)
1064else
1065 AC_MSG_RESULT(no)
1066fi
1067
Fred Drakea3f6e912000-06-29 20:44:47 +00001068# AC_CHECK_SIZEOF() doesn't include <time.h>.
1069AC_MSG_CHECKING(size of time_t)
1070AC_CACHE_VAL(ac_cv_sizeof_time_t,
1071[AC_TRY_RUN([#include <stdio.h>
1072#include <time.h>
1073main()
1074{
1075 FILE *f=fopen("conftestval", "w");
1076 if (!f) exit(1);
1077 fprintf(f, "%d\n", sizeof(time_t));
1078 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001079}],
1080ac_cv_sizeof_time_t=`cat conftestval`,
1081ac_cv_sizeof_time_t=0,
1082ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001083])
1084AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001085AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1086[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001087
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001088
Trent Mick635f6fb2000-08-23 21:33:05 +00001089# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001090ac_save_cc="$CC"
1091if test "$ac_cv_kpthread" = "yes"
1092then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001093elif test "$ac_cv_kthread" = "yes"
1094then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001095elif test "$ac_cv_pthread" = "yes"
1096then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001097fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001098AC_MSG_CHECKING(for pthread_t)
1099have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001100AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001101AC_MSG_RESULT($have_pthread_t)
1102if test "$have_pthread_t" = yes ; then
1103 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1104 AC_MSG_CHECKING(size of pthread_t)
1105 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1106 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001107#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001108 main()
1109 {
1110 FILE *f=fopen("conftestval", "w");
1111 if (!f) exit(1);
1112 fprintf(f, "%d\n", sizeof(pthread_t));
1113 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001114 }],
1115 ac_cv_sizeof_pthread_t=`cat conftestval`,
1116 ac_cv_sizeof_pthread_t=0,
1117 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001118 ])
1119 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001120 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1121 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001122fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001123CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001124
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001125AC_MSG_CHECKING(for --enable-toolbox-glue)
1126AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001127 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001128
1129if test -z "$enable_toolbox_glue"
1130then
1131 case $ac_sys_system/$ac_sys_release in
1132 Darwin/*)
1133 enable_toolbox_glue="yes";;
1134 *)
1135 enable_toolbox_glue="no";;
1136 esac
1137fi
1138case "$enable_toolbox_glue" in
1139yes)
Jack Jansen666b1e72001-10-31 12:11:48 +00001140 extra_frameworks="-framework CoreServices -framework Foundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001141 extra_machdep_objs="Python/mactoolboxglue.o"
Jack Jansen591cbed2001-08-15 13:55:15 +00001142 extra_undefs="-u __dummy -u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001143 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1144 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001145 ;;
1146*)
1147 extra_frameworks=""
1148 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001149 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001150 ;;
1151esac
1152AC_MSG_RESULT($enable_toolbox_glue)
1153
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001154AC_SUBST(LIBTOOL_CRUFT)
1155case $ac_sys_system/$ac_sys_release in
Jack Jansen418c3b12001-11-14 10:59:57 +00001156 Darwin/1.3*)
Jack Jansenea0c3822002-08-01 21:57:49 +00001157 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +00001158 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansen66b84832003-07-04 12:14:39 +00001159 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/Python'
Jack Jansena3891ea2001-09-07 14:25:12 +00001160 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001161 Darwin/*)
Jack Jansenea0c3822002-08-01 21:57:49 +00001162 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +00001163 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansen66b84832003-07-04 12:14:39 +00001164 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/Python'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001165 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001166esac
1167
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001168AC_MSG_CHECKING(for --enable-framework)
1169if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001170then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001171 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001172 # -F. is needed to allow linking to the framework while
1173 # in the build location.
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001174 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1175 [Define if you want to produce an OpenStep/Rhapsody framework
1176 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001177 AC_MSG_RESULT(yes)
1178else
1179 AC_MSG_RESULT(no)
1180fi
1181
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001182AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001183case $ac_sys_system/$ac_sys_release in
1184 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001185 AC_DEFINE(WITH_DYLD, 1,
1186 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1187 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1188 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001189 AC_MSG_RESULT(always on for Darwin)
1190 ;;
1191 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001192 AC_MSG_RESULT(no)
1193 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001194esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001195
Guido van Rossumac405f61994-09-12 10:56:06 +00001196# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001197AC_SUBST(SO)
1198AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001199AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001200AC_SUBST(CCSHARED)
1201AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001202# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001203# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001204AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001205if test -z "$SO"
1206then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001207 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001208 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001209 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001210 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001211 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001212else
1213 # this might also be a termcap variable, see #610332
1214 echo
1215 echo '====================================================================='
1216 echo '+ +'
1217 echo '+ WARNING: You have set SO in your environment. +'
1218 echo '+ Do you really mean to change the extension for shared libraries? +'
1219 echo '+ Continuing in 10 seconds to let you to ponder. +'
1220 echo '+ +'
1221 echo '====================================================================='
1222 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001223fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001224AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001225# LDSHARED is the ld *command* used to create shared library
Skip Montanaroce59c042004-01-17 14:19:44 +00001226# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001227# (Shared libraries in this instance are shared modules to be loaded into
1228# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001229AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001230if test -z "$LDSHARED"
1231then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001232 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001233 AIX*)
1234 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001235 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001236 ;;
1237 BeOS*)
1238 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001239 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001240 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001241 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001242 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001243 SunOS/5*)
1244 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001245 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001246 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001247 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001248 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001249 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Jack Jansen418c3b12001-11-14 10:59:57 +00001250 Darwin/1.3*)
Jack Jansena3891ea2001-09-07 14:25:12 +00001251 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1252 if test "$enable_framework" ; then
1253 # Link against the framework. All externals should be defined.
Jack Jansenc8607b72003-12-08 01:10:12 +00001254 BLDSHARED="$LDSHARED "'-Wl,-F. -framework $(PYTHONFRAMEWORK)'
1255 LDSHARED="$LDSHARED "'-Wl,-F$(PYTHONFRAMEWORKPREFIX) -framework $(PYTHONFRAMEWORK)'
Jack Jansena3891ea2001-09-07 14:25:12 +00001256 else
1257 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001258 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001259 fi ;;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001260 Darwin/*)
1261 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1262 if test "$enable_framework" ; then
1263 # Link against the framework. All externals should be defined.
Jack Jansenc8607b72003-12-08 01:10:12 +00001264 BLDSHARED="$LDSHARED "'-Wl,-F. -framework $(PYTHONFRAMEWORK)'
1265 LDSHARED="$LDSHARED "'-Wl,-F$(PYTHONFRAMEWORKPREFIX) -framework $(PYTHONFRAMEWORK)'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001266 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001267 # No framework, use the Python app as bundle-loader
1268 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001269 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001270 fi ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001271 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001272 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001273 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001274 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001275 then
1276 LDSHARED="cc -shared ${LDFLAGS}"
1277 else
1278 LDSHARED="ld -Bshareable ${LDFLAGS}"
1279 fi;;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001280 NetBSD*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001281 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001282 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001283 then LDSHARED='$(CC) -shared'
1284 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001285 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001286 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001287 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001288 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001289 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001290 *) LDSHARED="ld";;
1291 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001292fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001293AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001294BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001295# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001296# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001297AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001298if test -z "$CCSHARED"
1299then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001300 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001301 SunOS*) if test "$GCC" = yes;
1302 then CCSHARED="-fPIC";
1303 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001304 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001305 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001306 else CCSHARED="+z";
1307 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001308 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001309 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001310 FreeBSD*|NetBSD*|OpenBSD*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001311 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001312 if test "$GCC" = "yes"
1313 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001314 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001315 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001316 SCO_SV*)
1317 if test "$GCC" = "yes"
1318 then CCSHARED="-fPIC"
1319 else CCSHARED="-Kpic -belf"
1320 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001321 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001322 IRIX*/6*) case $CC in
1323 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001324 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001325 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001326 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001327 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001328fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001329AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001330# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001331# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001332AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001333if test -z "$LINKFORSHARED"
1334then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001335 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001336 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001337 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001338 LINKFORSHARED="-Wl,-E -Wl,+s";;
1339# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001340 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001341 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001342 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001343 Darwin/*)
1344 # -u __dummy makes the linker aware of the objc runtime
1345 # in System.framework; otherwise, __objcInit (referenced in
1346 # crt1.o) gets erroneously defined as common, which breaks dynamic
1347 # loading of any modules which reference it in System.framework.
1348 # -u _PyMac_Error is needed to pull in the mac toolbox glue, which is
1349 # not used by the core itself but which needs to be in the core so
1350 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001351 # -prebind is no longer used, because it actually seems to give a
1352 # slowdown in stead of a speedup, maybe due to the large number of
1353 # dynamic loads Python does.
1354 LINKFORSHARED="$extra_undefs -framework System"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001355 if test "$enable_framework"
1356 then
Jack Jansenc8607b72003-12-08 01:10:12 +00001357 LINKFORSHARED="$LINKFORSHARED -Wl,-F. -framework Python"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001358 fi
1359 LINKFORSHARED="$LINKFORSHARED $extra_frameworks";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001360 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001361 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001362 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001363 FreeBSD*|NetBSD*|OpenBSD*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001364 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1365 then
1366 LINKFORSHARED="-Wl,--export-dynamic"
1367 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001368 SunOS/5*) case $CC in
1369 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001370 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001371 then
1372 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001373 fi;;
1374 esac;;
Jason Tishler30765592003-09-04 11:04:06 +00001375 CYGWIN*)
1376 if test $enable_shared = "no"
1377 then
1378 LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
1379 fi;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001380 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001381fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001382AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001383
Neil Schemenauer61c51152001-01-26 16:18:16 +00001384AC_SUBST(CFLAGSFORSHARED)
1385AC_MSG_CHECKING(CFLAGSFORSHARED)
1386if test ! "$LIBRARY" = "$LDLIBRARY"
1387then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001388 case $ac_sys_system in
1389 CYGWIN*)
1390 # Cygwin needs CCSHARED when building extension DLLs
1391 # but not when building the interpreter DLL.
1392 CFLAGSFORSHARED='';;
1393 *)
1394 CFLAGSFORSHARED='$(CCSHARED)'
1395 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001396fi
1397AC_MSG_RESULT($CFLAGSFORSHARED)
1398
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001399# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1400# library (with --enable-shared).
1401# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001402# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1403# if it is not required, since it creates a dependency of the shared library
1404# to LIBS. This, in turn, means that applications linking the shared libpython
1405# don't need to link LIBS explicitly. The default should be only changed
1406# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001407AC_SUBST(SHLIBS)
1408AC_MSG_CHECKING(SHLIBS)
1409case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001410 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001411 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001412esac
1413AC_MSG_RESULT($SHLIBS)
1414
1415
Guido van Rossum627b2d71993-12-24 10:39:16 +00001416# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001417AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1418AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwis519adae2003-09-20 10:47:47 +00001419
1420# only check for sem_ini if thread support is requested
1421if test "$with_threads" = "yes" -o -z "$with_threads"; then
1422 AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1423 # posix4 on Solaris 2.6
1424 # pthread (first!) on Linux
1425fi
1426
Martin v. Löwis19d17342003-06-14 21:03:05 +00001427# check if we need libintl for locale functions
1428AC_CHECK_LIB(intl, textdomain,
1429 AC_DEFINE(WITH_LIBINTL, 1,
1430 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001431
1432# checks for system dependent C++ extensions support
1433case "$ac_sys_system" in
1434 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1435 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1436 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001437 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1438 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1439 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001440 AC_MSG_RESULT(yes)],
1441 [AC_MSG_RESULT(no)]);;
1442 *) ;;
1443esac
1444
Guido van Rossum70c7f481998-03-26 18:44:10 +00001445# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001446# BeOS' sockets are stashed in libnet.
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001447AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001448AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Skip Montanarob9949db2004-01-17 04:04:13 +00001449
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001450case "$ac_sys_system" in
1451BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001452AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1453;;
1454esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001455
Guido van Rossumc5a39031996-07-31 17:35:03 +00001456AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001457AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001458 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1459[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001460AC_MSG_RESULT($withval)
1461LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001462],
1463[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001464
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001465# Determine if signalmodule should be used.
1466AC_SUBST(USE_SIGNAL_MODULE)
1467AC_SUBST(SIGNAL_OBJS)
1468AC_MSG_CHECKING(for --with-signal-module)
1469AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001470 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001471
1472if test -z "$with_signal_module"
1473then with_signal_module="yes"
1474fi
1475AC_MSG_RESULT($with_signal_module)
1476
1477if test "${with_signal_module}" = "yes"; then
1478 USE_SIGNAL_MODULE=""
1479 SIGNAL_OBJS=""
1480else
1481 USE_SIGNAL_MODULE="#"
1482 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1483fi
1484
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001485# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001486AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001487USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001488
Guido van Rossum54d93d41997-01-22 20:51:58 +00001489AC_MSG_CHECKING(for --with-dec-threads)
1490AC_SUBST(LDLAST)
1491AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001492 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1493[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001494AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001495LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001496if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001497 with_thread="$withval";
1498fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001499[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001500
Martin v. Löwis11437992002-04-12 09:54:03 +00001501# Templates for things AC_DEFINEd more than once.
1502# For a single AC_DEFINE, no template is needed.
1503AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1504AH_TEMPLATE(_REENTRANT,
1505 [Define to force use of thread-safe errno, h_errno, and other functions])
1506AH_TEMPLATE(WITH_THREAD,
1507 [Define if you want to compile in rudimentary thread support])
1508
Guido van Rossum54d93d41997-01-22 20:51:58 +00001509AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001510dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001511AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001512 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001513
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001514# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001515dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001516AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001517 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1518 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001519
1520if test -z "$with_threads"
1521then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001522fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001523AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001524
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001525AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001526if test "$with_threads" = "no"
1527then
1528 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001529elif test "$ac_cv_pthread_is_default" = yes
1530then
1531 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001532 # Defining _REENTRANT on system with POSIX threads should not hurt.
1533 AC_DEFINE(_REENTRANT)
1534 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001535 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001536elif test "$ac_cv_kpthread" = "yes"
1537then
1538 CC="$CC -Kpthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001539 if test "$ac_cv_cxx_thread" = "yes"; then
1540 CXX="$CXX -Kpthread"
1541 fi
Martin v. Löwis130fb172001-07-19 11:00:41 +00001542 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001543 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001544 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001545elif test "$ac_cv_kthread" = "yes"
1546then
1547 CC="$CC -Kthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001548 if test "$ac_cv_cxx_thread" = "yes"; then
1549 CXX="$CXX -Kthread"
1550 fi
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001551 AC_DEFINE(WITH_THREAD)
1552 posix_threads=yes
1553 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001554elif test "$ac_cv_pthread" = "yes"
1555then
1556 CC="$CC -pthread"
Martin v. Löwis519adae2003-09-20 10:47:47 +00001557 if test "$ac_cv_cxx_thread" = "yes"; then
1558 CXX="$CXX -pthread"
1559 fi
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001560 AC_DEFINE(WITH_THREAD)
1561 posix_threads=yes
1562 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001563else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001564 if test ! -z "$with_threads" -a -d "$with_threads"
1565 then LDFLAGS="$LDFLAGS -L$with_threads"
1566 fi
1567 if test ! -z "$withval" -a -d "$withval"
1568 then LDFLAGS="$LDFLAGS -L$withval"
1569 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001570
1571 # According to the POSIX spec, a pthreads implementation must
1572 # define _POSIX_THREADS in unistd.h. Some apparently don't (which ones?)
1573 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1574 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001575 [
1576#include <unistd.h>
1577#ifdef _POSIX_THREADS
1578yes
1579#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001580 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1581 AC_MSG_RESULT($unistd_defines_pthreads)
1582
Martin v. Löwis130fb172001-07-19 11:00:41 +00001583 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001584 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1585 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001586 AC_DEFINE(HURD_C_THREADS, 1,
1587 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001588 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001589 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001590 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1591 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001592 AC_DEFINE(MACH_C_THREADS, 1,
1593 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001594 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001595 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001596 AC_ARG_WITH([pth],
1597 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1598 [AC_MSG_RESULT($withval)
1599 AC_DEFINE([WITH_THREAD])
1600 AC_DEFINE([HAVE_PTH], 1,
1601 [Define if you have GNU PTH threads.])
1602 LIBS="-lpth $LIBS"
1603 THREADOBJ="Python/thread.o"],
1604 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001605
1606 # Just looking for pthread_create in libpthread is not enough:
1607 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1608 # So we really have to include pthread.h, and then link.
1609 _libs=$LIBS
1610 LIBS="$LIBS -lpthread"
1611 AC_MSG_CHECKING([for pthread_create in -lpthread])
1612 AC_TRY_LINK([#include <pthread.h>
1613
1614void * start_routine (void *arg) { exit (0); }], [
1615pthread_create (NULL, NULL, start_routine, NULL)], [
1616 AC_MSG_RESULT(yes)
1617 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001618 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001619 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001620 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001621 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001622 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001623 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001624 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1625 AC_DEFINE(ATHEOS_THREADS, 1,
1626 [Define this if you have AtheOS threads.])
1627 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001628 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001629 AC_DEFINE(BEOS_THREADS, 1,
1630 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001631 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001632 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001633 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001634 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001635 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001636 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001637 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001638 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001639 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001640 AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001641 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001642 LIBS="$LIBS -lpthread"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001643 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001644 AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001645 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001646 LIBS="$LIBS -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001647 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001648 USE_THREAD_MODULE="#"])
Skip Montanarof8712e52004-01-17 03:04:46 +00001649 ])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001650
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001651 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1652 LIBS="$LIBS -lmpc"
1653 THREADOBJ="Python/thread.o"
1654 USE_THREAD_MODULE=""])
1655
1656 if test "$posix_threads" != "yes"; then
1657 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1658 LIBS="$LIBS -lthread"
1659 THREADOBJ="Python/thread.o"
1660 USE_THREAD_MODULE=""])
1661 fi
1662
1663 if test "$USE_THREAD_MODULE" != "#"
1664 then
1665 # If the above checks didn't disable threads, (at least) OSF1
1666 # needs this '-threads' argument during linking.
1667 case $ac_sys_system in
1668 OSF1) LDLAST=-threads;;
1669 esac
1670 fi
1671fi
1672
1673if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001674 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001675 AC_DEFINE(_POSIX_THREADS, 1,
1676 [Define if you have POSIX threads,
1677 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001678 fi
1679
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001680 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1681 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001682 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1683 Defined for Solaris 2.6 bug in pthread header.)
1684 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001685 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001686 Define if the Posix semaphores do not work on your system)
1687 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001688 esac
1689
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001690 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1691 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1692 [AC_TRY_RUN([#include <pthread.h>
1693 void *foo(void *parm) {
1694 return NULL;
1695 }
1696 main() {
1697 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001698 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001699 if (pthread_attr_init(&attr)) exit(-1);
1700 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001701 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001702 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001703 }],
1704 ac_cv_pthread_system_supported=yes,
1705 ac_cv_pthread_system_supported=no,
1706 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001707 ])
1708 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1709 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001710 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001711 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001712 AC_CHECK_FUNCS(pthread_sigmask,
1713 [case $ac_sys_system in
1714 CYGWIN*)
1715 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1716 [Define if pthread_sigmask() does not work on your system.])
1717 ;;
1718 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001719fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001720
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001721
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001722# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001723AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001724AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001725AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001726[ --enable-ipv6 Enable ipv6 (with ipv4) support
1727 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001728[ case "$enableval" in
1729 no)
1730 AC_MSG_RESULT(no)
1731 ipv6=no
1732 ;;
1733 *) AC_MSG_RESULT(yes)
1734 AC_DEFINE(ENABLE_IPV6)
1735 ipv6=yes
1736 ;;
1737 esac ],
1738
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001739[
1740dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001741 AC_TRY_RUN([ /* AF_INET6 available check */
1742#include <sys/types.h>
1743#include <sys/socket.h>
1744main()
1745{
1746 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1747 exit(1);
1748 else
1749 exit(0);
1750}
1751],
1752 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001753 ipv6=yes,
1754 AC_MSG_RESULT(no)
1755 ipv6=no,
1756 AC_MSG_RESULT(no)
1757 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001758)
1759
1760if test "$ipv6" = "yes"; then
1761 AC_MSG_CHECKING(if RFC2553 API is available)
1762 AC_TRY_COMPILE([#include <sys/types.h>
1763#include <netinet/in.h>],
1764 [struct sockaddr_in6 x;
1765x.sin6_scope_id;],
1766 AC_MSG_RESULT(yes)
1767 ipv6=yes,
1768 AC_MSG_RESULT(no, IPv6 disabled)
1769 ipv6=no)
1770fi
1771
1772if test "$ipv6" = "yes"; then
1773 AC_DEFINE(ENABLE_IPV6)
1774fi
1775])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001776
1777ipv6type=unknown
1778ipv6lib=none
1779ipv6trylibc=no
1780
1781if test "$ipv6" = "yes"; then
1782 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001783 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1784 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001785 case $i in
1786 inria)
1787 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001788 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001789#include <netinet/in.h>
1790#ifdef IPV6_INRIA_VERSION
1791yes
1792#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001793 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001794 ;;
1795 kame)
1796 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001797 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001798#include <netinet/in.h>
1799#ifdef __KAME__
1800yes
1801#endif],
1802 [ipv6type=$i;
1803 ipv6lib=inet6
1804 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001805 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001806 ;;
1807 linux-glibc)
1808 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001809 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001810#include <features.h>
1811#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1812yes
1813#endif],
1814 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001815 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001816 ;;
1817 linux-inet6)
1818 dnl http://www.v6.linux.or.jp/
1819 if test -d /usr/inet6; then
1820 ipv6type=$i
1821 ipv6lib=inet6
1822 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00001823 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001824 fi
1825 ;;
1826 solaris)
1827 if test -f /etc/netconfig; then
1828 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
1829 ipv6type=$i
1830 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001831 fi
1832 fi
1833 ;;
1834 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001835 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001836#include <sys/param.h>
1837#ifdef _TOSHIBA_INET6
1838yes
1839#endif],
1840 [ipv6type=$i;
1841 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001842 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001843 ;;
1844 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001845 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001846#include </usr/local/v6/include/sys/v6config.h>
1847#ifdef __V6D__
1848yes
1849#endif],
1850 [ipv6type=$i;
1851 ipv6lib=v6;
1852 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001853 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001854 ;;
1855 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001856 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001857#include <sys/param.h>
1858#ifdef _ZETA_MINAMI_INET6
1859yes
1860#endif],
1861 [ipv6type=$i;
1862 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001863 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001864 ;;
1865 esac
1866 if test "$ipv6type" != "unknown"; then
1867 break
1868 fi
1869 done
1870 AC_MSG_RESULT($ipv6type)
1871fi
1872
1873if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
1874 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
1875 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
1876 echo "using lib$ipv6lib"
1877 else
1878 if test $ipv6trylibc = "yes"; then
1879 echo "using libc"
1880 else
1881 echo 'Fatal: no $ipv6lib library found. cannot continue.'
1882 echo "You need to fetch lib$ipv6lib.a from appropriate"
1883 echo 'ipv6 kit and compile beforehand.'
1884 exit 1
1885 fi
1886 fi
1887fi
1888
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001889# Check for --with-doc-strings
1890AC_MSG_CHECKING(for --with-doc-strings)
1891AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001892 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001893
1894if test -z "$with_doc_strings"
1895then with_doc_strings="yes"
1896fi
1897if test "$with_doc_strings" != "no"
1898then
1899 AC_DEFINE(WITH_DOC_STRINGS, 1,
1900 [Define if you want documentation strings in extension modules])
1901fi
1902AC_MSG_RESULT($with_doc_strings)
1903
Neil Schemenauera35c6882001-02-27 04:45:05 +00001904# Check for Python-specific malloc support
1905AC_MSG_CHECKING(for --with-pymalloc)
1906AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001907 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00001908
1909if test -z "$with_pymalloc"
1910then with_pymalloc="yes"
1911fi
1912if test "$with_pymalloc" != "no"
1913then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001914 AC_DEFINE(WITH_PYMALLOC, 1,
1915 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00001916fi
1917AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00001918
Barry Warsawef82cd72000-06-30 16:21:01 +00001919# Check for --with-wctype-functions
1920AC_MSG_CHECKING(for --with-wctype-functions)
1921AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001922 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
1923[
Barry Warsawef82cd72000-06-30 16:21:01 +00001924if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001925then
1926 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
1927 [Define if you want wctype.h functions to be used instead of the
1928 one supplied by Python itself. (see Include/unicodectype.h).])
1929 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00001930else AC_MSG_RESULT(no)
1931fi],
1932[AC_MSG_RESULT(no)])
1933
Guido van Rossum68242b51996-05-28 22:53:03 +00001934# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001935AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00001936DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001937
Guido van Rossume97ee181999-12-20 21:27:22 +00001938# the dlopen() function means we might want to use dynload_shlib.o. some
1939# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00001940AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00001941
1942# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
1943# loading of modules.
1944AC_SUBST(DYNLOADFILE)
1945AC_MSG_CHECKING(DYNLOADFILE)
1946if test -z "$DYNLOADFILE"
1947then
1948 case $ac_sys_system/$ac_sys_release in
Martin v. Löwisc19c5a62003-11-18 20:00:44 +00001949 AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c
1950 if test "$ac_cv_func_dlopen" = yes
1951 then DYNLOADFILE="dynload_shlib.o"
1952 else DYNLOADFILE="dynload_aix.o"
1953 fi
1954 ;;
Guido van Rossume97ee181999-12-20 21:27:22 +00001955 BeOS*) DYNLOADFILE="dynload_beos.o";;
1956 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001957 Darwin/*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001958 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00001959 *)
1960 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
1961 # out any dynamic loading
1962 if test "$ac_cv_func_dlopen" = yes
1963 then DYNLOADFILE="dynload_shlib.o"
1964 else DYNLOADFILE="dynload_stub.o"
1965 fi
1966 ;;
1967 esac
1968fi
1969AC_MSG_RESULT($DYNLOADFILE)
1970if test "$DYNLOADFILE" != "dynload_stub.o"
1971then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001972 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
1973 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00001974fi
1975
Jack Jansenc49e5b72001-06-19 15:00:23 +00001976# MACHDEP_OBJS can be set to platform-specific object files needed by Python
1977
1978AC_SUBST(MACHDEP_OBJS)
1979AC_MSG_CHECKING(MACHDEP_OBJS)
1980if test -z "$MACHDEP_OBJS"
1981then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001982 MACHDEP_OBJS=$extra_machdep_objs
1983else
1984 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00001985fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001986AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00001987
Guido van Rossum627b2d71993-12-24 10:39:16 +00001988# checks for library functions
Martin v. Löwisd5843682002-11-21 20:41:28 +00001989AC_CHECK_FUNCS(alarm chown clock confstr ctermid execv \
Martin v. Löwisa64988c2003-09-20 15:30:20 +00001990 fork fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00001991 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
Martin v. Löwis49ee14d2003-11-10 06:35:36 +00001992 getpriority getpwent getsid getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00001993 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00001994 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00001995 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00001996 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00001997 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Skip Montanaro7e11a012004-02-07 12:55:46 +00001998 sigaction siginterrupt sigrelse strftime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00001999 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002000 truncate uname unsetenv utimes waitpid wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002001
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002002# For some functions, having a definition is not sufficient, since
2003# we want to take their address.
2004AC_MSG_CHECKING(for chroot)
2005AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2006 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2007 AC_MSG_RESULT(yes),
2008 AC_MSG_RESULT(no)
2009)
2010AC_MSG_CHECKING(for link)
2011AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2012 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2013 AC_MSG_RESULT(yes),
2014 AC_MSG_RESULT(no)
2015)
2016AC_MSG_CHECKING(for symlink)
2017AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2018 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2019 AC_MSG_RESULT(yes),
2020 AC_MSG_RESULT(no)
2021)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002022AC_MSG_CHECKING(for fchdir)
2023AC_TRY_COMPILE([#include <unistd.h>], void *x=fchdir,
2024 AC_DEFINE(HAVE_FCHDIR, 1, Define if you have the 'fchdir' function.)
2025 AC_MSG_RESULT(yes),
2026 AC_MSG_RESULT(no)
2027)
2028AC_MSG_CHECKING(for fsync)
2029AC_TRY_COMPILE([#include <unistd.h>], void *x=fsync,
Skip Montanarod4fa8072003-09-25 14:49:15 +00002030 AC_DEFINE(HAVE_FSYNC, 1, Define if you have the 'fsync' function.)
Martin v. Löwisa64988c2003-09-20 15:30:20 +00002031 AC_MSG_RESULT(yes),
2032 AC_MSG_RESULT(no)
2033)
2034AC_MSG_CHECKING(for fdatasync)
2035AC_TRY_COMPILE([#include <unistd.h>], void *x=fdatasync,
2036 AC_DEFINE(HAVE_FDATASYNC, 1, Define if you have the 'fdatasync' function.)
2037 AC_MSG_RESULT(yes),
2038 AC_MSG_RESULT(no)
2039)
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002040
Martin v. Löwisd5843682002-11-21 20:41:28 +00002041# On some systems (eg. FreeBSD 5), we would find a definition of the
2042# functions ctermid_r, setgroups in the library, but no prototype
2043# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2044# address to avoid compiler warnings and potential miscompilations
2045# because of the missing prototypes.
2046
2047AC_MSG_CHECKING(for ctermid_r)
2048AC_TRY_COMPILE([
2049#include "confdefs.h"
2050#include <stdio.h>
2051], void* p = ctermid_r,
2052 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2053 AC_MSG_RESULT(yes),
2054 AC_MSG_RESULT(no)
2055)
2056
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002057AC_MSG_CHECKING(for flock)
2058AC_TRY_COMPILE([
2059#include "confdefs.h"
2060#include <sys/file.h>
2061], void* p = flock,
2062 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2063 AC_MSG_RESULT(yes),
2064 AC_MSG_RESULT(no)
2065)
2066
2067AC_MSG_CHECKING(for getpagesize)
2068AC_TRY_COMPILE([
2069#include "confdefs.h"
2070#include <unistd.h>
2071], void* p = getpagesize,
2072 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2073 AC_MSG_RESULT(yes),
2074 AC_MSG_RESULT(no)
2075)
2076
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002077dnl check for true
2078AC_CHECK_PROGS(TRUE, true, /bin/true)
2079
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002080dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2081dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002082AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002083 AC_CHECK_LIB(resolv, inet_aton)
2084)
2085
Martin v. Löwise9416172003-05-03 10:12:45 +00002086AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002087AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002088#include "confdefs.h"
2089#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002090], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002091 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2092 AC_MSG_RESULT(yes),
2093 AC_MSG_RESULT(no)
2094)
2095
2096AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002097AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002098#include "confdefs.h"
2099#include <sys/socket.h>
2100#include <netinet/in.h>
2101#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002102], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002103 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2104 AC_MSG_RESULT(yes),
2105 AC_MSG_RESULT(no)
2106)
2107
2108AC_MSG_CHECKING(for inet_pton)
2109AC_TRY_COMPILE([
2110#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002111#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002112#include <sys/socket.h>
2113#include <netinet/in.h>
2114#include <arpa/inet.h>
2115], void* p = inet_pton,
2116 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2117 AC_MSG_RESULT(yes),
2118 AC_MSG_RESULT(no)
2119)
2120
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002121# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002122AC_MSG_CHECKING(for setgroups)
2123AC_TRY_COMPILE([
2124#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002125#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002126#ifdef HAVE_GRP_H
2127#include <grp.h>
2128#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002129],
2130void* p = setgroups,
2131 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2132 AC_MSG_RESULT(yes),
2133 AC_MSG_RESULT(no)
2134)
2135
Fred Drake8cef4cf2000-06-28 16:40:38 +00002136# check for openpty and forkpty
2137
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002138AC_CHECK_FUNCS(openpty,, AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"]))
2139AC_CHECK_FUNCS(forkpty,, AC_CHECK_LIB(util,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"]))
Fred Drake8cef4cf2000-06-28 16:40:38 +00002140
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002141# check for long file support functions
2142AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2143
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002144AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002145AC_CHECK_FUNCS(getpgrp,
2146 AC_TRY_COMPILE([#include <unistd.h>],
2147 [getpgrp(0);],
2148 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2149 [Define if getpgrp() must be called as getpgrp(0).])
2150 )
2151)
Jack Jansen150753c2003-03-29 22:07:47 +00002152AC_CHECK_FUNCS(setpgrp,
2153 AC_TRY_COMPILE([#include <unistd.h>],
2154 [setpgrp(0,0);],
2155 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2156 [Define if setpgrp() must be called as setpgrp(0, 0).])
2157 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002158)
2159AC_CHECK_FUNCS(gettimeofday,
2160 AC_TRY_COMPILE([#include <sys/time.h>],
2161 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2162 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2163 [Define if gettimeofday() does not have second (timezone) argument
2164 This is the case on Motorola V4 (R40V4.2)])
2165 )
2166)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002167
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002168AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002169AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002170#if defined(MAJOR_IN_MKDEV)
2171#include <sys/mkdev.h>
2172#elif defined(MAJOR_IN_SYSMACROS)
2173#include <sys/sysmacros.h>
2174#else
2175#include <sys/types.h>
2176#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002177],[
2178 makedev(major(0),minor(0));
2179],[
2180 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2181 [Define to 1 if you have the device macros.])
2182 AC_MSG_RESULT(yes)
2183],[
2184 AC_MSG_RESULT(no)
2185])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002186
2187# On OSF/1 V5.1, getaddrinfo is available, but a define
2188# for [no]getaddrinfo in netdb.h.
2189AC_MSG_CHECKING(for getaddrinfo)
2190AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002191#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002192#include <sys/socket.h>
2193#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002194#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002195],[
2196getaddrinfo(NULL, NULL, NULL, NULL);
2197], [
2198AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002199AC_MSG_CHECKING(getaddrinfo bug)
2200AC_TRY_RUN([
2201#include <sys/types.h>
2202#include <netdb.h>
2203#include <string.h>
2204#include <sys/socket.h>
2205#include <netinet/in.h>
2206
2207main()
2208{
2209 int passive, gaierr, inet4 = 0, inet6 = 0;
2210 struct addrinfo hints, *ai, *aitop;
2211 char straddr[INET6_ADDRSTRLEN], strport[16];
2212
2213 for (passive = 0; passive <= 1; passive++) {
2214 memset(&hints, 0, sizeof(hints));
2215 hints.ai_family = AF_UNSPEC;
2216 hints.ai_flags = passive ? AI_PASSIVE : 0;
2217 hints.ai_socktype = SOCK_STREAM;
Hye-Shik Chang54f94392004-04-14 07:55:31 +00002218 hints.ai_protocol = IPPROTO_TCP;
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002219 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2220 (void)gai_strerror(gaierr);
2221 goto bad;
2222 }
2223 for (ai = aitop; ai; ai = ai->ai_next) {
2224 if (ai->ai_addr == NULL ||
2225 ai->ai_addrlen == 0 ||
2226 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2227 straddr, sizeof(straddr), strport, sizeof(strport),
2228 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2229 goto bad;
2230 }
2231 switch (ai->ai_family) {
2232 case AF_INET:
2233 if (strcmp(strport, "54321") != 0) {
2234 goto bad;
2235 }
2236 if (passive) {
2237 if (strcmp(straddr, "0.0.0.0") != 0) {
2238 goto bad;
2239 }
2240 } else {
2241 if (strcmp(straddr, "127.0.0.1") != 0) {
2242 goto bad;
2243 }
2244 }
2245 inet4++;
2246 break;
2247 case AF_INET6:
2248 if (strcmp(strport, "54321") != 0) {
2249 goto bad;
2250 }
2251 if (passive) {
2252 if (strcmp(straddr, "::") != 0) {
2253 goto bad;
2254 }
2255 } else {
2256 if (strcmp(straddr, "::1") != 0) {
2257 goto bad;
2258 }
2259 }
2260 inet6++;
2261 break;
2262 case AF_UNSPEC:
2263 goto bad;
2264 break;
2265 default:
2266 /* another family support? */
2267 break;
2268 }
2269 }
2270 }
2271
2272 if (!(inet4 == 0 || inet4 == 2))
2273 goto bad;
2274 if (!(inet6 == 0 || inet6 == 2))
2275 goto bad;
2276
2277 if (aitop)
2278 freeaddrinfo(aitop);
2279 exit(0);
2280
2281 bad:
2282 if (aitop)
2283 freeaddrinfo(aitop);
2284 exit(1);
2285}
2286],
2287AC_MSG_RESULT(good)
2288buggygetaddrinfo=no,
2289AC_MSG_RESULT(buggy)
2290buggygetaddrinfo=yes,
2291AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002292buggygetaddrinfo=yes)], [
2293AC_MSG_RESULT(no)
2294buggygetaddrinfo=yes
2295])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002296
2297if test "$buggygetaddrinfo" = "yes"; then
2298 if test "$ipv6" = "yes"; then
2299 echo 'Fatal: You must get working getaddrinfo() function.'
2300 echo ' or you can specify "--disable-ipv6"'.
2301 exit 1
2302 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002303else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002304 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002305fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002306AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002307
Guido van Rossum627b2d71993-12-24 10:39:16 +00002308# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002309AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002310AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002311AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002312AC_CHECK_MEMBERS([struct stat.st_rdev])
2313AC_CHECK_MEMBERS([struct stat.st_blksize])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002314AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002315
2316AC_MSG_CHECKING(for time.h that defines altzone)
2317AC_CACHE_VAL(ac_cv_header_time_altzone,
2318[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2319 ac_cv_header_time_altzone=yes,
2320 ac_cv_header_time_altzone=no)])
2321AC_MSG_RESULT($ac_cv_header_time_altzone)
2322if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002323 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002324fi
2325
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002326was_it_defined=no
2327AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002328AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002329#include <sys/types.h>
2330#include <sys/select.h>
2331#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002332], [;], [
2333 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2334 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2335 (which you can't on SCO ODT 3.0).])
2336 was_it_defined=yes
2337])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002338AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002339
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002340AC_MSG_CHECKING(for addrinfo)
2341AC_CACHE_VAL(ac_cv_struct_addrinfo,
2342AC_TRY_COMPILE([
2343# include <netdb.h>],
2344 [struct addrinfo a],
2345 ac_cv_struct_addrinfo=yes,
2346 ac_cv_struct_addrinfo=no))
2347AC_MSG_RESULT($ac_cv_struct_addrinfo)
2348if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002349 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002350fi
2351
2352AC_MSG_CHECKING(for sockaddr_storage)
2353AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2354AC_TRY_COMPILE([
2355# include <sys/types.h>
2356# include <sys/socket.h>],
2357 [struct sockaddr_storage s],
2358 ac_cv_struct_sockaddr_storage=yes,
2359 ac_cv_struct_sockaddr_storage=no))
2360AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2361if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002362 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002363fi
2364
Guido van Rossum627b2d71993-12-24 10:39:16 +00002365# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002366
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002367AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002368AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002369
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002370works=no
2371AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002372AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2373 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2374)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002375AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002376
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002377works=no
2378AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002379AC_TRY_COMPILE([], [signed char c;], works=yes,
2380 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2381)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002382AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002383
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002384have_prototypes=no
2385AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002386AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2387 AC_DEFINE(HAVE_PROTOTYPES, 1,
2388 [Define if your compiler supports function prototype])
2389 have_prototypes=yes
2390])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002391AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002392
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002393works=no
2394AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002395AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002396#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002397int foo(int x, ...) {
2398 va_list va;
2399 va_start(va, x);
2400 va_arg(va, int);
2401 va_arg(va, char *);
2402 va_arg(va, double);
2403 return 0;
2404}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002405], [return foo(10, "", 3.14);], [
2406 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2407 [Define if your compiler supports variable length function prototypes
2408 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2409 works=yes
2410])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002411AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002412
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002413# check if sockaddr has sa_len member
2414AC_MSG_CHECKING(if sockaddr has sa_len member)
2415AC_TRY_COMPILE([#include <sys/types.h>
2416#include <sys/socket.h>],
2417[struct sockaddr x;
2418x.sa_len = 0;],
2419 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002420 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002421 AC_MSG_RESULT(no))
2422
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002423va_list_is_array=no
2424AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002425AC_TRY_COMPILE([
2426#ifdef HAVE_STDARG_PROTOTYPES
2427#include <stdarg.h>
2428#else
2429#include <varargs.h>
2430#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002431], [va_list list1, list2; list1 = list2;], , [
2432 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2433 va_list_is_array=yes
2434])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002435AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002436
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002437# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002438AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2439 [Define this if you have some version of gethostbyname_r()])
2440
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002441AC_CHECK_FUNC(gethostbyname_r, [
2442 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2443 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2444 OLD_CFLAGS=$CFLAGS
2445 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2446 AC_TRY_COMPILE([
2447# include <netdb.h>
2448 ], [
2449 char *name;
2450 struct hostent *he, *res;
2451 char buffer[2048];
2452 int buflen = 2048;
2453 int h_errnop;
2454
2455 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2456 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002457 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002458 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2459 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002460 AC_MSG_RESULT(yes)
2461 ], [
2462 AC_MSG_RESULT(no)
2463 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2464 AC_TRY_COMPILE([
2465# include <netdb.h>
2466 ], [
2467 char *name;
2468 struct hostent *he;
2469 char buffer[2048];
2470 int buflen = 2048;
2471 int h_errnop;
2472
2473 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2474 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002475 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002476 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2477 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002478 AC_MSG_RESULT(yes)
2479 ], [
2480 AC_MSG_RESULT(no)
2481 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2482 AC_TRY_COMPILE([
2483# include <netdb.h>
2484 ], [
2485 char *name;
2486 struct hostent *he;
2487 struct hostent_data data;
2488
2489 (void) gethostbyname_r(name, he, &data);
2490 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002491 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002492 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2493 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002494 AC_MSG_RESULT(yes)
2495 ], [
2496 AC_MSG_RESULT(no)
2497 ])
2498 ])
2499 ])
2500 CFLAGS=$OLD_CFLAGS
2501], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002502 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002503])
2504AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2505AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2506AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002507AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002508AC_SUBST(HAVE_GETHOSTBYNAME)
2509
Guido van Rossum627b2d71993-12-24 10:39:16 +00002510# checks for system services
2511# (none yet)
2512
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002513# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002514AC_CHECK_FUNC(__fpu_control,
2515 [],
2516 [AC_CHECK_LIB(ieee, __fpu_control)
2517])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002518
Guido van Rossum93274221997-05-09 02:42:00 +00002519# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002520AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002521AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002522 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2523[
Guido van Rossum93274221997-05-09 02:42:00 +00002524if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002525then
2526 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2527 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2528 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002529else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002530fi],
2531[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002532
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002533# check for --with-libm=...
2534AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002535case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002536Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002537BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002538*) LIBM=-lm
2539esac
Guido van Rossum93274221997-05-09 02:42:00 +00002540AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002541AC_ARG_WITH(libm,
2542 AC_HELP_STRING(--with-libm=STRING, math library),
2543[
Guido van Rossum93274221997-05-09 02:42:00 +00002544if test "$withval" = no
2545then LIBM=
2546 AC_MSG_RESULT(force LIBM empty)
2547elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002548then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002549 AC_MSG_RESULT(set LIBM="$withval")
2550else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002551fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002552[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002553
2554# check for --with-libc=...
2555AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002556AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002557AC_ARG_WITH(libc,
2558 AC_HELP_STRING(--with-libc=STRING, C library),
2559[
Guido van Rossum93274221997-05-09 02:42:00 +00002560if test "$withval" = no
2561then LIBC=
2562 AC_MSG_RESULT(force LIBC empty)
2563elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002564then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002565 AC_MSG_RESULT(set LIBC="$withval")
2566else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002567fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002568[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002569
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002570# check for hypot() in math library
2571LIBS_SAVE=$LIBS
2572LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002573AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002574LIBS=$LIBS_SAVE
2575
Guido van Rossumef2255b2000-03-10 22:30:29 +00002576# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002577AC_CHECK_HEADER(wchar.h, [
2578 AC_DEFINE(HAVE_WCHAR_H, 1,
2579 [Define if the compiler provides a wchar.h header file.])
2580 wchar_h="yes"
2581],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002582wchar_h="no"
2583)
2584
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002585# determine wchar_t size
2586if test "$wchar_h" = yes
2587then
Guido van Rossum67b26592001-10-20 14:21:45 +00002588 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002589fi
2590
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002591AC_MSG_CHECKING(for UCS-4 tcl)
2592have_ucs4_tcl=no
2593AC_TRY_COMPILE([
2594#include <tcl.h>
2595#if TCL_UTF_MAX != 6
2596# error "NOT UCS4_TCL"
2597#endif], [], [
2598 AC_DEFINE(HAVE_UCS4_TCL, 1, [Define this if you have tcl and TCL_UTF_MAX==6])
2599 have_ucs4_tcl=yes
2600])
2601AC_MSG_RESULT($have_ucs4_tcl)
2602
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002603# check whether wchar_t is signed or not
2604if test "$wchar_h" = yes
2605then
2606 # check whether wchar_t is signed or not
2607 AC_MSG_CHECKING(whether wchar_t is signed)
2608 AC_CACHE_VAL(ac_cv_wchar_t_signed, [
2609 AC_TRY_RUN([
2610 #include <wchar.h>
2611 int main()
2612 {
2613 exit((((wchar_t) -1) < ((wchar_t) 0)) ? 1 : 0);
2614 }
2615 ],
2616 ac_cv_wchar_t_signed=yes,
2617 ac_cv_wchar_t_signed=no,
2618 ac_cv_wchar_t_signed=yes)])
2619 AC_MSG_RESULT($ac_cv_wchar_t_signed)
2620fi
2621
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002622AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002623dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002624AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002625 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2626 [],
2627 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002628
2629if test $enable_unicode = yes
2630then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002631 # Without any arguments, Py_UNICODE defaults to two-byte mode
Martin v. Löwisfa3bdea2003-09-04 18:50:54 +00002632 case "$have_ucs4_tcl" in
2633 yes) enable_unicode="ucs4"
2634 ;;
2635 *) enable_unicode="ucs2"
2636 ;;
2637 esac
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002638fi
2639
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002640AH_TEMPLATE(Py_UNICODE_SIZE,
2641 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002642case "$enable_unicode" in
2643ucs2) unicode_size="2"
2644 AC_DEFINE(Py_UNICODE_SIZE,2)
2645 ;;
2646ucs4) unicode_size="4"
2647 AC_DEFINE(Py_UNICODE_SIZE,4)
2648 ;;
2649esac
2650
Martin v. Löwis11437992002-04-12 09:54:03 +00002651AH_TEMPLATE(PY_UNICODE_TYPE,
2652 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002653
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002654AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002655if test "$enable_unicode" = "no"
2656then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002657 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002658 AC_MSG_RESULT(not used)
2659else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002660 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002661 AC_DEFINE(Py_USING_UNICODE, 1,
2662 [Define if you want to have a Unicode type.])
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002663
2664 # wchar_t is only usable if it maps to an unsigned type
2665 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \
2666 -a "$ac_cv_wchar_t_signed" == "no"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002667 then
2668 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002669 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2670 [Define if you have a useable wchar_t type defined in wchar.h; useable
Marc-André Lemburgd7160f82003-09-22 11:14:40 +00002671 means wchar_t must be an unsigned type with at least 16 bits. (see
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002672 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002673 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2674 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2675 then
2676 PY_UNICODE_TYPE="unsigned short"
2677 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2678 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2679 then
2680 PY_UNICODE_TYPE="unsigned long"
2681 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2682 else
2683 PY_UNICODE_TYPE="no type found"
2684 fi
2685 AC_MSG_RESULT($PY_UNICODE_TYPE)
2686fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002687
2688# check for endianness
2689AC_C_BIGENDIAN
2690
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002691# Check whether right shifting a negative integer extends the sign bit
2692# or fills with zeros (like the Cray J90, according to Tim Peters).
2693AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002694AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002695AC_TRY_RUN([
2696int main()
2697{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002698 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002699}
Guido van Rossum3065c942001-09-17 04:03:14 +00002700],
2701ac_cv_rshift_extends_sign=yes,
2702ac_cv_rshift_extends_sign=no,
2703ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002704AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2705if test "$ac_cv_rshift_extends_sign" = no
2706then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002707 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2708 [Define if i>>j for signed int i does not extend the sign bit
2709 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002710fi
2711
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002712# check for getc_unlocked and related locking functions
2713AC_MSG_CHECKING(for getc_unlocked() and friends)
2714AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2715AC_TRY_LINK([#include <stdio.h>],[
2716 FILE *f = fopen("/dev/null", "r");
2717 flockfile(f);
2718 getc_unlocked(f);
2719 funlockfile(f);
2720], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2721AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2722if test "$ac_cv_have_getc_unlocked" = yes
2723then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002724 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2725 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002726fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002727
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00002728# check for readline 2.2
2729AC_TRY_CPP([#include <readline/readline.h>],
2730have_readline=yes, have_readline=no)
2731if test $have_readline = yes
2732then
2733 AC_EGREP_HEADER([extern int rl_completion_append_character;],
2734 [readline/readline.h],
2735 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
2736 [Define if you have readline 2.2]), )
2737fi
2738
Martin v. Löwis0daad592001-09-30 21:09:59 +00002739# check for readline 4.0
2740AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002741 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
2742 [Define if you have readline 4.0]), , -ltermcap)
Martin v. Löwis0daad592001-09-30 21:09:59 +00002743
Guido van Rossum353ae582001-07-10 16:45:32 +00002744# check for readline 4.2
2745AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002746 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
2747 [Define if you have readline 4.2]), , -ltermcap)
Guido van Rossum353ae582001-07-10 16:45:32 +00002748
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002749AC_MSG_CHECKING(for broken nice())
2750AC_CACHE_VAL(ac_cv_broken_nice, [
2751AC_TRY_RUN([
2752int main()
2753{
2754 int val1 = nice(1);
2755 if (val1 != -1 && val1 == nice(2))
2756 exit(0);
2757 exit(1);
2758}
Guido van Rossum3065c942001-09-17 04:03:14 +00002759],
2760ac_cv_broken_nice=yes,
2761ac_cv_broken_nice=no,
2762ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002763AC_MSG_RESULT($ac_cv_broken_nice)
2764if test "$ac_cv_broken_nice" = yes
2765then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002766 AC_DEFINE(HAVE_BROKEN_NICE, 1,
2767 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002768fi
2769
Nicholas Bastine62c5c82004-03-21 23:45:42 +00002770AC_MSG_CHECKING(for broken poll())
2771AC_TRY_RUN([
2772#include <poll.h>
2773
2774int main (void)
2775 {
2776 struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 };
2777
2778 close (42);
2779
2780 int poll_test = poll (&poll_struct, 1, 0);
2781
2782 if (poll_test < 0)
2783 {
2784 exit(0);
2785 }
2786 else if (poll_test == 0 && poll_struct.revents != POLLNVAL)
2787 {
2788 exit(0);
2789 }
2790 else
2791 {
2792 exit(1);
2793 }
2794 }
2795],
2796ac_cv_broken_poll=yes,
2797ac_cv_broken_poll=no,
2798ac_cv_broken_poll=no)
2799AC_MSG_RESULT($ac_cv_broken_poll)
2800if test "$ac_cv_broken_poll" = yes
2801then
2802 AC_DEFINE(HAVE_BROKEN_POLL, 1,
2803 [Define if poll() sets errno on invalid file descriptors.])
2804fi
2805
2806
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002807# tzset(3) exists and works like we expect it to
2808AC_MSG_CHECKING(for working tzset())
2809AC_CACHE_VAL(ac_cv_working_tzset, [
2810AC_TRY_RUN([
2811#include <stdlib.h>
2812#include <time.h>
Brett Cannon18367812003-09-19 00:59:16 +00002813#include <string.h>
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002814int main()
2815{
Brett Cannon18367812003-09-19 00:59:16 +00002816 /* Note that we need to ensure that not only does tzset(3)
2817 do 'something' with localtime, but it works as documented
2818 in the library reference and as expected by the test suite.
2819
2820 Red Hat 6.2 doesn't understand the southern hemisphere
2821 after New Year's Day; it thinks swaps on that day.
2822 */
2823
2824 time_t groundhogday = 1044144000; /* GMT-based; well, it's a colony */
2825 time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
2826
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002827 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002828 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00002829 if (localtime(&groundhogday)->tm_hour != 0)
2830 exit(1);
2831
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002832 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002833 tzset();
Brett Cannon18367812003-09-19 00:59:16 +00002834 if (localtime(&groundhogday)->tm_hour != 19)
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002835 exit(1);
Brett Cannon18367812003-09-19 00:59:16 +00002836
2837 putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
2838 tzset();
2839 if (localtime(&groundhogday)->tm_hour != 11)
2840 exit(1);
2841 if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
2842 exit(1);
2843 if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
2844 exit(1);
2845
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002846 exit(0);
2847}
2848],
2849ac_cv_working_tzset=yes,
2850ac_cv_working_tzset=no,
2851ac_cv_working_tzset=no)])
2852AC_MSG_RESULT($ac_cv_working_tzset)
2853if test "$ac_cv_working_tzset" = yes
2854then
2855 AC_DEFINE(HAVE_WORKING_TZSET, 1,
2856 [Define if tzset() actually switches the local timezone in a meaningful way.])
2857fi
2858
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002859# Look for subsecond timestamps in struct stat
2860AC_MSG_CHECKING(for tv_nsec in struct stat)
2861AC_CACHE_VAL(ac_cv_stat_tv_nsec,
2862AC_TRY_COMPILE([#include <sys/stat.h>], [
2863struct stat st;
2864st.st_mtim.tv_nsec = 1;
2865],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00002866ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002867ac_cv_stat_tv_nsec=no,
2868ac_cv_stat_tv_nsec=no))
2869AC_MSG_RESULT($ac_cv_stat_tv_nsec)
2870if test "$ac_cv_stat_tv_nsec" = yes
2871then
2872 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
2873 [Define if you have struct stat.st_mtim.tv_nsec])
2874fi
2875
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002876# On HP/UX 11.0, mvwdelch is a block with a return statement
2877AC_MSG_CHECKING(whether mvwdelch is an expression)
2878AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
2879AC_TRY_COMPILE([#include <curses.h>], [
2880 int rtn;
2881 rtn = mvwdelch(0,0,0);
2882], ac_cv_mvwdelch_is_expression=yes,
2883 ac_cv_mvwdelch_is_expression=no,
2884 ac_cv_mvwdelch_is_expression=yes))
2885AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
2886
2887if test "$ac_cv_mvwdelch_is_expression" = yes
2888then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002889 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
2890 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002891fi
2892
2893AC_MSG_CHECKING(whether WINDOW has _flags)
2894AC_CACHE_VAL(ac_cv_window_has_flags,
2895AC_TRY_COMPILE([#include <curses.h>], [
2896 WINDOW *w;
2897 w->_flags = 0;
2898], ac_cv_window_has_flags=yes,
2899 ac_cv_window_has_flags=no,
2900 ac_cv_window_has_flags=no))
2901AC_MSG_RESULT($ac_cv_window_has_flags)
2902
2903
2904if test "$ac_cv_window_has_flags" = yes
2905then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002906 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
2907 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002908fi
2909
Martin v. Löwis24a880b2002-12-31 12:55:15 +00002910AC_MSG_CHECKING(for /dev/ptmx)
2911
2912if test -e /dev/ptmx
2913then
2914 AC_MSG_RESULT(yes)
2915 AC_DEFINE(HAVE_DEV_PTMX, 1,
2916 [Define if we have /dev/ptmx.])
2917else
2918 AC_MSG_RESULT(no)
2919fi
2920
Neal Norwitz865400f2003-03-21 01:42:58 +00002921AC_MSG_CHECKING(for /dev/ptc)
2922
2923if test -e /dev/ptc
2924then
2925 AC_MSG_RESULT(yes)
2926 AC_DEFINE(HAVE_DEV_PTC, 1,
2927 [Define if we have /dev/ptc.])
2928else
2929 AC_MSG_RESULT(no)
2930fi
2931
Martin v. Löwis01c04012002-11-11 14:58:44 +00002932AC_CHECK_TYPE(socklen_t,,
2933 AC_DEFINE(socklen_t,int,
2934 Define to `int' if <sys/socket.h> does not define.),[
2935#ifdef HAVE_SYS_TYPES_H
2936#include <sys/types.h>
2937#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00002938#ifdef HAVE_SYS_SOCKET_H
2939#include <sys/socket.h>
2940#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00002941])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002942
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00002943AC_SUBST(THREADHEADERS)
2944
2945for h in `(cd $srcdir;echo Python/thread_*.h)`
2946do
2947 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
2948done
2949
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002950AC_SUBST(SRCDIRS)
Jack Jansen0b06be72002-06-21 14:48:38 +00002951SRCDIRS="Parser Grammar Objects Python Modules Mac Mac/Python"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00002952AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002953for dir in $SRCDIRS; do
2954 if test ! -d $dir; then
2955 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00002956 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002957done
2958AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00002959
Guido van Rossum627b2d71993-12-24 10:39:16 +00002960# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00002961AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
2962AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00002963
2964echo "creating Setup"
2965if test ! -f Modules/Setup
2966then
2967 cp $srcdir/Modules/Setup.dist Modules/Setup
2968fi
2969
2970echo "creating Setup.local"
2971if test ! -f Modules/Setup.local
2972then
2973 echo "# Edit this file for local setup changes" >Modules/Setup.local
2974fi
2975
2976echo "creating Makefile"
2977$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
2978 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00002979 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00002980mv config.c Modules