blob: a15a023c585bdcb0014f8abf13479ae6a9156ec3 [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)
4m4_define(PYTHON_VERSION, 2.3)
5
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öwis858f8172003-05-24 12:35:47 +0000138 # Reconfirmed for OpenBSD 3.3 by Zachary Hamm.
139 OpenBSD/2.* | OpenBSD/3.@<:@0123@:>@)
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.
147 OpenUNIX/8.0.0| UnixWare/7.1.@<:@0-3@:>@)
148 define_xopen_source=no;;
149 # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE,
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000150 # but used in struct sockaddr.sa_family. Reported by Tim Rice.
Martin v. Löwisc2409b42003-05-11 05:53:41 +0000151 SCO_SV/3.2)
Martin v. Löwis53e73c32003-05-05 05:13:18 +0000152 define_xopen_source=no;;
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000153esac
154
155if test $define_xopen_source = yes
156then
Martin v. Löwis678fc1e2002-11-12 06:04:39 +0000157 AC_DEFINE(_XOPEN_SOURCE, 600,
158 Define to the level of X/Open that your system supports)
159
160 # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires
161 # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else
162 # several APIs are not declared. Since this is also needed in some
163 # cases for HP-UX, we define it globally.
164
165 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Define to activate Unix95-and-earlier features)
166 AC_DEFINE(_POSIX_C_SOURCE, 200112L, Define to activate features from IEEE Stds 1003.1-2001)
167
Martin v. Löwise981a4e2002-11-11 13:26:51 +0000168fi
169
Guido van Rossum91922671997-10-09 20:24:13 +0000170#
171# SGI compilers allow the specification of the both the ABI and the
172# ISA on the command line. Depending on the values of these switches,
173# different and often incompatable code will be generated.
174#
175# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
176# thus supply support for various ABI/ISA combinations. The MACHDEP
177# variable is also adjusted.
178#
179AC_SUBST(SGI_ABI)
180if test ! -z "$SGI_ABI"
181then
182 CC="cc $SGI_ABI"
183 LDFLAGS="$SGI_ABI $LDFLAGS"
184 MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
185fi
Guido van Rossumb418f891996-07-30 18:06:02 +0000186AC_MSG_RESULT($MACHDEP)
187
Jack Jansen83f898c2002-12-30 22:23:40 +0000188# And add extra plat-mac for darwin
189AC_SUBST(EXTRAPLATDIR)
Jack Jansen7b59b422003-03-17 15:44:10 +0000190AC_SUBST(EXTRAMACHDEPPATH)
Jack Jansen83f898c2002-12-30 22:23:40 +0000191AC_MSG_CHECKING(EXTRAPLATDIR)
192if test -z "$EXTRAPLATDIR"
193then
194 case $MACHDEP in
Jack Jansen7b59b422003-03-17 15:44:10 +0000195 darwin)
196 EXTRAPLATDIR="\$(PLATMACDIRS)"
197 EXTRAMACHDEPPATH="\$(PLATMACPATH)"
198 ;;
199 *)
200 EXTRAPLATDIR=""
201 EXTRAMACHDEPPATH=""
202 ;;
Jack Jansen83f898c2002-12-30 22:23:40 +0000203 esac
204fi
205AC_MSG_RESULT($EXTRAPLATDIR)
206
Guido van Rossum627b2d71993-12-24 10:39:16 +0000207# checks for alternative programs
Skip Montanarodecc6a42003-01-01 20:07:49 +0000208
209# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
210# for debug/optimization stuff. BASECFLAGS is for flags that are required
211# just to get things to compile and link. Users are free to override OPT
212# when running configure or make. The build should not break if they do.
213# BASECFLAGS should generally not be messed with, however.
214
215# XXX shouldn't some/most/all of this code be merged with the stuff later
216# on that fiddles with OPT and BASECFLAGS?
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000217AC_MSG_CHECKING(for --without-gcc)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000218AC_ARG_WITH(gcc,
219 AC_HELP_STRING(--without-gcc,never use gcc),
220[
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000221 case $withval in
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000222 no) CC=cc
223 without_gcc=yes;;
224 yes) CC=gcc
225 without_gcc=no;;
226 *) CC=$withval
227 without_gcc=$withval;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000228 esac], [
Guido van Rossumb418f891996-07-30 18:06:02 +0000229 case $ac_sys_system in
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000230 AIX*) CC=cc_r
231 without_gcc=;;
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000232 BeOS*)
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000233 case $BE_HOST_CPU in
234 ppc)
Fred Drake5790be12000-10-09 17:06:13 +0000235 CC=mwcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000236 without_gcc=yes
Skip Montanarodecc6a42003-01-01 20:07:49 +0000237 BASECFLAGS="$BASECFLAGS -export pragma"
238 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000239 LDFLAGS="$LDFLAGS -nodup"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000240 ;;
241 x86)
Fred Drake5790be12000-10-09 17:06:13 +0000242 CC=gcc
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000243 without_gcc=no
Skip Montanarodecc6a42003-01-01 20:07:49 +0000244 OPT="$OPT -O"
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000245 ;;
246 *)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000247 AC_MSG_ERROR([Unknown BeOS platform "$BE_HOST_CPU"])
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000248 ;;
249 esac
Neil Schemenauerb3531b82001-02-16 04:09:05 +0000250 AR="\$(srcdir)/Modules/ar_beos"
251 RANLIB=:
Guido van Rossum7a5f4201999-01-12 20:30:23 +0000252 ;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000253 Monterey*)
254 RANLIB=:
Martin v. Löwis130fb172001-07-19 11:00:41 +0000255 without_gcc=;;
256 *) without_gcc=no;;
Guido van Rossum55a214e1995-09-13 17:48:09 +0000257 esac])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000258AC_MSG_RESULT($without_gcc)
259
Guido van Rossum27552902001-01-23 01:52:26 +0000260AC_SUBST(CXX)
Guido van Rossum95012191999-12-16 17:50:52 +0000261AC_SUBST(MAINOBJ)
Fred Drakea1a84e72001-03-06 05:52:16 +0000262MAINOBJ=python.o
Guido van Rossum95012191999-12-16 17:50:52 +0000263AC_MSG_CHECKING(for --with-cxx=<compiler>)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000264AC_ARG_WITH(cxx,
265 AC_HELP_STRING(--with-cxx=<compiler>, enable C++ support),
266[
Martin v. Löwis537970f2000-12-13 17:37:02 +0000267 check_cxx=no
Guido van Rossum95012191999-12-16 17:50:52 +0000268 case $withval in
269 no) CXX=
270 with_cxx=no;;
271 *) CXX=$withval
Fred Drakea1a84e72001-03-06 05:52:16 +0000272 MAINOBJ=ccpython.o
Guido van Rossum95012191999-12-16 17:50:52 +0000273 with_cxx=$withval;;
274 esac], [
275 with_cxx=no
Martin v. Löwis537970f2000-12-13 17:37:02 +0000276 check_cxx=yes
Guido van Rossum95012191999-12-16 17:50:52 +0000277])
278AC_MSG_RESULT($with_cxx)
Martin v. Löwis537970f2000-12-13 17:37:02 +0000279
Michael W. Hudson54241132001-12-07 15:38:26 +0000280if test "$with_cxx" = "yes"
281then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000282 AC_MSG_ERROR([must supply a compiler when using --with-cxx])
Michael W. Hudson54241132001-12-07 15:38:26 +0000283fi
284
Martin v. Löwis537970f2000-12-13 17:37:02 +0000285dnl The following fragment works similar to AC_PROG_CXX.
286dnl It does not fail if CXX is not found, and it is not executed if
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000287dnl --without-cxx was given.
Martin v. Löwis537970f2000-12-13 17:37:02 +0000288dnl Finally, it does not test whether CXX is g++.
289
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000290dnl Autoconf 2.5x does not have AC_PROG_CXX_WORKS anymore
291ifdef([AC_PROG_CXX_WORKS],[],
292 [AC_DEFUN([AC_PROG_CXX_WORKS],
293 [AC_LANG_PUSH(C++)dnl
294 _AC_COMPILER_EXEEXT
295 AC_LANG_POP()
296 ]
297)])
298
Martin v. Löwis537970f2000-12-13 17:37:02 +0000299if test "$check_cxx" = "yes"
300then
301 AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, notfound)
302 if test "$CXX" = "notfound"
303 then
304 CXX=
305 else
306 AC_PROG_CXX_WORKS
307 fi
308fi
309
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000310# If the user switches compilers, we can't believe the cache
311if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
312then
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000313 AC_MSG_ERROR([cached CC is different -- throw away $cache_file
314(it is also a good idea to do 'make clean' before compiling)])
Guido van Rossum03ad99f1995-03-09 14:09:54 +0000315fi
316
Guido van Rossum627b2d71993-12-24 10:39:16 +0000317AC_PROG_CC
Martin v. Löwis1d5ecb72001-08-09 10:29:44 +0000318
319# checks for UNIX variants that set C preprocessor variables
320AC_AIX
321AC_MINIX
322
Martin v. Löwis779ffc02002-12-02 22:17:01 +0000323# Check for unsupported systems
324case $ac_sys_system/$ac_sys_release in
325SunOS/4*|DYNIX/*|dgux*/*|IRIX/4*|Linux*/1*)
326 echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
327 echo See README for details.
328 exit 1;;
329esac
330
331if test "$MINIX" = yes; then
332 echo This system \(MINIX\) is no longer supported.
333 echo Read README for details.
334 exit 1
335fi
336
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000337AC_EXEEXT
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000338AC_MSG_CHECKING(for --with-suffix)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000339AC_ARG_WITH(suffix,
340 AC_HELP_STRING(--with-suffix=.exe, set executable suffix),
341[
Neil Schemenauer3ae1d0a2001-01-27 06:54:42 +0000342 case $withval in
343 no) EXEEXT=;;
344 yes) EXEEXT=.exe;;
345 *) EXEEXT=$withval;;
346 esac])
347AC_MSG_RESULT($EXEEXT)
Jack Jansen1999ef42001-12-06 21:47:20 +0000348
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000349# Test whether we're running on a non-case-sensitive system, in which
350# case we give a warning if no ext is given
Jack Jansen1999ef42001-12-06 21:47:20 +0000351AC_SUBST(BUILDEXEEXT)
352AC_MSG_CHECKING(for case-insensitive build directory)
Jack Jansen3c2c4332002-11-06 13:33:32 +0000353if test ! -d CaseSensitiveTestDir; then
354mkdir CaseSensitiveTestDir
355fi
356
357if test -d casesensitivetestdir
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000358then
Jack Jansen1999ef42001-12-06 21:47:20 +0000359 AC_MSG_RESULT(yes)
360 BUILDEXEEXT=.exe
361else
362 AC_MSG_RESULT(no)
Jack Jansendd19cf82001-12-06 22:36:17 +0000363 BUILDEXEEXT=$EXEEXT
Jack Jansen9a66b6d2001-08-08 13:56:14 +0000364fi
Jack Jansen3c2c4332002-11-06 13:33:32 +0000365rmdir CaseSensitiveTestDir
Guido van Rossumfb842551997-08-06 23:42:07 +0000366
Guido van Rossumdd997f71998-10-07 19:58:26 +0000367case $MACHDEP in
368bsdos*)
369 case $CC in
370 gcc) CC="$CC -D_HAVE_BSDI";;
371 esac;;
372esac
373
Guido van Rossum84561611997-08-21 00:08:11 +0000374case $ac_sys_system in
375hp*|HP*)
376 case $CC in
Guido van Rossumcd5ff9f2000-09-22 16:15:54 +0000377 cc|*/cc) CC="$CC -Ae";;
Guido van Rossum84561611997-08-21 00:08:11 +0000378 esac;;
Trent Mick635f6fb2000-08-23 21:33:05 +0000379Monterey*)
380 case $CC in
381 cc) CC="$CC -Wl,-Bexport";;
382 esac;;
Martin v. Löwise8964d42001-03-06 12:09:07 +0000383SunOS*)
384 # Some functions have a prototype only with that define, e.g. confstr
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000385 AC_DEFINE(__EXTENSIONS__, 1, [Defined on Solaris to see additional function prototypes.])
Martin v. Löwise8964d42001-03-06 12:09:07 +0000386 ;;
Guido van Rossum84561611997-08-21 00:08:11 +0000387esac
388
Martin v. Löwise8964d42001-03-06 12:09:07 +0000389
Neil Schemenauer61c51152001-01-26 16:18:16 +0000390AC_SUBST(LIBRARY)
391AC_MSG_CHECKING(LIBRARY)
392if test -z "$LIBRARY"
393then
394 LIBRARY='libpython$(VERSION).a'
395fi
396AC_MSG_RESULT($LIBRARY)
397
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000398# LDLIBRARY is the name of the library to link against (as opposed to the
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000399# name of the library into which to insert object files). BLDLIBRARY is also
400# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY
401# is blank as the main program is not linked directly against LDLIBRARY.
402# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On
403# systems without shared libraries, LDLIBRARY is the same as LIBRARY
404# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library,
405# DLLLIBRARY is the shared (i.e., DLL) library.
406#
Martin v. Löwis1142de32002-03-29 16:28:31 +0000407# RUNSHARED is used to run shared python without installed libraries
408#
409# INSTSONAME is the name of the shared library that will be use to install
410# on the system - some systems like version suffix, others don't
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000411AC_SUBST(LDLIBRARY)
Guido van Rossum27552902001-01-23 01:52:26 +0000412AC_SUBST(DLLLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000413AC_SUBST(BLDLIBRARY)
414AC_SUBST(LDLIBRARYDIR)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000415AC_SUBST(INSTSONAME)
416AC_SUBST(RUNSHARED)
Neil Schemenauer61c51152001-01-26 16:18:16 +0000417LDLIBRARY="$LIBRARY"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000418BLDLIBRARY='$(LDLIBRARY)'
Martin v. Löwis09bdf722002-05-08 08:51:29 +0000419INSTSONAME='$(LDLIBRARY)'
Guido van Rossum27552902001-01-23 01:52:26 +0000420DLLLIBRARY=''
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000421LDLIBRARYDIR=''
Martin v. Löwis1142de32002-03-29 16:28:31 +0000422RUNSHARED=''
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000423
Guido van Rossumfb842551997-08-06 23:42:07 +0000424# LINKCC is the command that links the python executable -- default is $(CC).
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000425# If CXX is set, and if it is needed to link a main function that was
426# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable:
427# python might then depend on the C++ runtime
Fred Drake5790be12000-10-09 17:06:13 +0000428# This is altered for AIX in order to build the export list before
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000429# linking.
Guido van Rossumfb842551997-08-06 23:42:07 +0000430AC_SUBST(LINKCC)
431AC_MSG_CHECKING(LINKCC)
432if test -z "$LINKCC"
433then
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000434 if test -z "$CXX"; then
435 LINKCC="\$(PURIFY) \$(CC)"
436 else
Martin v. Löwis1931ca72002-06-01 21:39:58 +0000437 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
Martin v. Löwisb7da67a2001-10-18 15:35:38 +0000438 $CXX -c conftest.$ac_ext 2>&5
439 if $CC -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
440 && test -s conftest$ac_exeext && ./conftest$ac_exeext
441 then
442 LINKCC="\$(PURIFY) \$(CC)"
443 else
444 LINKCC="\$(PURIFY) \$(CXX)"
445 fi
446 rm -fr conftest*
447 fi
Guido van Rossumfb842551997-08-06 23:42:07 +0000448 case $ac_sys_system in
449 AIX*)
Neal Norwitz0b27ff92003-03-31 15:53:49 +0000450 exp_extra="\"\""
451 if test $ac_sys_release -ge 5 -o \
452 $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then
453 exp_extra="."
454 fi
455 LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";;
Guido van Rossum3c4bb801997-12-18 23:55:32 +0000456 dgux*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000457 LINKCC="LD_RUN_PATH=$libdir $LINKCC";;
Trent Mick635f6fb2000-08-23 21:33:05 +0000458 Monterey64*)
Martin v. Löwis4e732dc2002-03-19 15:15:32 +0000459 LINKCC="$LINKCC -L/usr/lib/ia64l64";;
Guido van Rossumfb842551997-08-06 23:42:07 +0000460 esac
461fi
462AC_MSG_RESULT($LINKCC)
463
Martin v. Löwis1142de32002-03-29 16:28:31 +0000464AC_MSG_CHECKING(for --enable-shared)
465AC_ARG_ENABLE(shared,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000466 AC_HELP_STRING(--enable-shared, disable/enable building shared python library))
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000467
Martin v. Löwis1142de32002-03-29 16:28:31 +0000468if test -z "$enable_shared"
469then
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000470 case $ac_sys_system in
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000471 CYGWIN* | atheos*)
Martin v. Löwisb51033d2002-05-03 05:53:15 +0000472 enable_shared="yes";;
473 *)
474 enable_shared="no";;
475 esac
Martin v. Löwis1142de32002-03-29 16:28:31 +0000476fi
477AC_MSG_RESULT($enable_shared)
478
479
480AC_MSG_CHECKING(LDLIBRARY)
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000481
Guido van Rossumb8552162001-09-05 14:58:11 +0000482# MacOSX framework builds need more magic. LDLIBRARY is the dynamic
483# library that we build, but we do not want to link against it (we
484# will find it with a -framework option). For this reason there is an
485# extra variable BLDLIBRARY against which Python and the extension
486# modules are linked, BLDLIBRARY. This is normally the same as
487# LDLIBRARY, but empty for MacOSX framework builds.
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000488if test "$enable_framework"
489then
490 LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
Jack Jansen66b84832003-07-04 12:14:39 +0000491 RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH"
Jack Jansenb6e9cad2001-08-15 01:26:28 +0000492 BLDLIBRARY=''
493else
494 BLDLIBRARY='$(LDLIBRARY)'
495fi
496
Martin v. Löwis1142de32002-03-29 16:28:31 +0000497# Other platforms follow
498if test $enable_shared = "yes"; then
Mark Hammond8235ea12002-07-19 06:55:41 +0000499 AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
Martin v. Löwis1142de32002-03-29 16:28:31 +0000500 case $ac_sys_system in
501 BeOS*)
502 LDLIBRARY='libpython$(VERSION).so'
503 ;;
504 CYGWIN*)
505 LDLIBRARY='libpython$(VERSION).dll.a'
506 DLLLIBRARY='libpython$(VERSION).dll'
507 ;;
508 SunOS*)
509 LDLIBRARY='libpython$(VERSION).so'
Martin v. Löwisd141a8c2003-06-14 15:20:28 +0000510 BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)'
Martin v. Löwis1142de32002-03-29 16:28:31 +0000511 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
512 ;;
Martin v. Löwis96ce8052003-05-31 07:58:45 +0000513 Linux*|GNU*|NetBSD*)
Martin v. Löwis1142de32002-03-29 16:28:31 +0000514 LDLIBRARY='libpython$(VERSION).so'
515 BLDLIBRARY='-L. -lpython$(VERSION)'
516 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
517 INSTSONAME="$LDLIBRARY".$SOVERSION
518 ;;
519 hp*|HP*)
520 LDLIBRARY='libpython$(VERSION).sl'
521 BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)'
522 RUNSHARED=SHLIB_PATH=`pwd`:$SHLIB_PATH
523 ;;
524 OSF*)
525 LDLIBRARY='libpython$(VERSION).so'
526 BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)'
527 RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
528 ;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000529 atheos*)
530 LDLIBRARY='libpython$(VERSION).so'
531 BLDLIBRARY='-L. -lpython$(VERSION)'
532 RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib}
533 ;;
Martin v. Löwis1142de32002-03-29 16:28:31 +0000534 esac
535 # DG/UX requires some fancy ld contortions to produce a .so from an .a
536 case $MACHDEP in
537 dguxR4)
538 LDLIBRARY='libpython$(VERSION).so'
Skip Montanarodecc6a42003-01-01 20:07:49 +0000539 BASECFLAGS="$BASECFLAGS -pic"
Martin v. Löwis1142de32002-03-29 16:28:31 +0000540 ;;
541 esac
542fi
543
Guido van Rossum54ecc3d1999-01-27 17:53:11 +0000544AC_MSG_RESULT($LDLIBRARY)
545
Guido van Rossum627b2d71993-12-24 10:39:16 +0000546AC_PROG_RANLIB
Guido van Rossum433c8ad1994-08-01 12:07:07 +0000547AC_SUBST(AR)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000548AC_CHECK_PROGS(AR, ar aal, ar)
Neil Schemenauera42c8272001-03-31 00:01:55 +0000549
550case $MACHDEP in
Neil Schemenaueraf5567f2001-10-21 22:32:04 +0000551bsdos*|hp*|HP*)
552 # install -d does not work on BSDI or HP-UX
Neil Schemenauera42c8272001-03-31 00:01:55 +0000553 if test -z "$INSTALL"
554 then
555 INSTALL="${srcdir}/install-sh -c"
556 fi
557esac
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000558AC_PROG_INSTALL
Guido van Rossumb418f891996-07-30 18:06:02 +0000559
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000560# Not every filesystem supports hard links
561AC_SUBST(LN)
562if test -z "$LN" ; then
563 case $ac_sys_system in
564 BeOS*) LN="ln -s";;
Guido van Rossumaef734b2001-01-10 21:09:12 +0000565 CYGWIN*) LN="ln -s";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +0000566 atheos*) LN="ln -s";;
Guido van Rossumec95c7b1998-08-04 17:59:56 +0000567 *) LN=ln;;
568 esac
569fi
570
Fred Drake9f715822001-07-11 06:27:00 +0000571# Check for --with-pydebug
572AC_MSG_CHECKING(for --with-pydebug)
573AC_ARG_WITH(pydebug,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +0000574 AC_HELP_STRING(--with-pydebug, build with Py_DEBUG defined),
575[
Fred Drake9f715822001-07-11 06:27:00 +0000576if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000577then
578 AC_DEFINE(Py_DEBUG, 1,
579 [Define if you want to build an interpreter with many run-time checks.])
580 AC_MSG_RESULT(yes);
581 Py_DEBUG='true'
Fred Drake9f715822001-07-11 06:27:00 +0000582else AC_MSG_RESULT(no); Py_DEBUG='false'
583fi],
584[AC_MSG_RESULT(no)])
585
Skip Montanarodecc6a42003-01-01 20:07:49 +0000586# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be
587# merged with this chunk of code?
588
Neil Schemenauer55f0cf32001-01-24 17:24:33 +0000589# Optimizer/debugger flags
Skip Montanarodecc6a42003-01-01 20:07:49 +0000590# ------------------------
591# (The following bit of code is complicated enough - please keep things
592# indented properly. Just pretend you're editing Python code. ;-)
593
594# There are two parallel sets of case statements below, one that checks to
595# see if OPT was set and one that does BASECFLAGS setting based upon
596# compiler and platform. BASECFLAGS tweaks need to be made even if the
597# user set OPT.
598
599# tweak OPT based on compiler and platform, only if the user didn't set
600# it on the command line
Guido van Rossumb418f891996-07-30 18:06:02 +0000601AC_SUBST(OPT)
Guido van Rossum4e8af441994-08-19 15:33:54 +0000602if test -z "$OPT"
Guido van Rossumb418f891996-07-30 18:06:02 +0000603then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000604 case $GCC in
605 yes)
606 case $ac_cv_prog_cc_g in
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000607 yes)
Fred Drake9f715822001-07-11 06:27:00 +0000608 if test "$Py_DEBUG" = 'true' ; then
609 # Optimization messes up debuggers, so turn it off for
610 # debug builds.
611 OPT="-g -Wall -Wstrict-prototypes"
612 else
613 OPT="-g -O3 -Wall -Wstrict-prototypes"
Skip Montanarodecc6a42003-01-01 20:07:49 +0000614 fi
615 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000616 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000617 OPT="-O3 -Wall -Wstrict-prototypes"
618 ;;
Fred Drake9f715822001-07-11 06:27:00 +0000619 esac
Martin v. Löwis21ee4092002-09-30 16:19:48 +0000620 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000621 SCO_SV*) OPT="$OPT -m486 -DSCO5"
622 ;;
623 esac
Fred Drake9f715822001-07-11 06:27:00 +0000624 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000625
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000626 *)
Skip Montanarodecc6a42003-01-01 20:07:49 +0000627 OPT="-O"
628 ;;
Guido van Rossum2242f2f2001-04-11 20:58:20 +0000629 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000630
631 # The current (beta) Monterey compiler dies with optimizations
632 # XXX what is Monterey? Does it still die w/ -O? Can we get rid of this?
Jack Jansenca06bc62001-08-03 15:32:23 +0000633 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000634 Monterey*)
635 OPT=""
636 ;;
Jack Jansenca06bc62001-08-03 15:32:23 +0000637 esac
Skip Montanarodecc6a42003-01-01 20:07:49 +0000638
Guido van Rossum4e8af441994-08-19 15:33:54 +0000639fi
Guido van Rossum627b2d71993-12-24 10:39:16 +0000640
Skip Montanarodecc6a42003-01-01 20:07:49 +0000641AC_SUBST(BASECFLAGS)
642# tweak BASECFLAGS based on compiler and platform
643case $GCC in
644yes)
Martin v. Löwis70fedcd2003-07-07 21:26:19 +0000645 # Python violates C99 rules, by casting between incompatible
646 # pointer types. GCC may generate bad code as a result of that,
647 # so use -fno-strict-aliasing if supported.
648 AC_MSG_CHECKING(whether $CC accepts -fno-strict-aliasing)
649 ac_save_cc="$CC"
650 CC="$CC -fno-strict-aliasing"
651 AC_TRY_RUN([int main() { return 0; }],
652 ac_cv_no_strict_aliasing_ok=yes,
653 ac_cv_no_strict_aliasing_ok=no,
654 ac_cv_no_strict_aliasing_ok=no)
655 CC="$ac_save_cc"
656 AC_MSG_RESULT($ac_cv_no_strict_aliasing_ok)
657 if test $ac_cv_no_strict_aliasing_ok = yes
658 then
659 BASECFLAGS="$BASECFLAGS -fno-strict-aliasing"
660 fi
Skip Montanarodecc6a42003-01-01 20:07:49 +0000661 case $ac_sys_system in
662 SCO_SV*)
663 BASECFLAGS="$BASECFLAGS -m486 -DSCO5"
664 ;;
665 # is there any other compiler on Darwin besides gcc?
666 Darwin*)
667 BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp"
668 ;;
669 esac
670 ;;
671
672*)
673 case $ac_sys_system in
674 OpenUNIX*|UnixWare*)
675 BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca "
676 ;;
Neal Norwitzb44f1652003-05-26 14:11:55 +0000677 OSF*)
678 BASECFLAGS="$BASECFLAGS -ieee -std"
679 ;;
Skip Montanarodecc6a42003-01-01 20:07:49 +0000680 SCO_SV*)
681 BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5"
682 ;;
683 esac
684 ;;
685esac
686
Fred Drakee1ceaa02001-12-04 20:55:47 +0000687if test "$Py_DEBUG" = 'true'; then
688 :
689else
690 OPT="-DNDEBUG $OPT"
691fi
692
Guido van Rossum6f2260e1996-09-09 16:21:03 +0000693if test "$ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000694then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000695 BASECFLAGS="$BASECFLAGS $ac_arch_flags"
Guido van Rossumc5a39031996-07-31 17:35:03 +0000696fi
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000697
Guido van Rossum91922671997-10-09 20:24:13 +0000698AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
699AC_CACHE_VAL(ac_cv_opt_olimit_ok,
700[ac_save_cc="$CC"
701CC="$CC -OPT:Olimit=0"
702AC_TRY_RUN([int main() { return 0; }],
703 ac_cv_opt_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000704 ac_cv_opt_olimit_ok=no,
Guido van Rossum91922671997-10-09 20:24:13 +0000705 ac_cv_opt_olimit_ok=no)
706CC="$ac_save_cc"])
707AC_MSG_RESULT($ac_cv_opt_olimit_ok)
Guido van Rossum2efa34b1997-10-23 17:43:11 +0000708if test $ac_cv_opt_olimit_ok = yes; then
Guido van Rossum5839e582000-10-09 19:52:35 +0000709 case $ac_sys_system in
Skip Montanarodecc6a42003-01-01 20:07:49 +0000710 # XXX is this branch needed? On MacOSX 10.2.2 the result of the
711 # olimit_ok test is "no". Is it "yes" in some other Darwin-esque
712 # environment?
713 Darwin*)
714 ;;
715 *)
716 BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
717 ;;
Guido van Rossum5839e582000-10-09 19:52:35 +0000718 esac
Guido van Rossumf8678121998-07-07 21:05:09 +0000719else
720 AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
721 AC_CACHE_VAL(ac_cv_olimit_ok,
722 [ac_save_cc="$CC"
723 CC="$CC -Olimit 1500"
724 AC_TRY_RUN([int main() { return 0; }],
725 ac_cv_olimit_ok=yes,
Guido van Rossum3065c942001-09-17 04:03:14 +0000726 ac_cv_olimit_ok=no,
Guido van Rossumf8678121998-07-07 21:05:09 +0000727 ac_cv_olimit_ok=no)
728 CC="$ac_save_cc"])
729 AC_MSG_RESULT($ac_cv_olimit_ok)
730 if test $ac_cv_olimit_ok = yes; then
Skip Montanarodecc6a42003-01-01 20:07:49 +0000731 BASECFLAGS="$BASECFLAGS -Olimit 1500"
Guido van Rossumf8678121998-07-07 21:05:09 +0000732 fi
Guido van Rossum201afe51997-05-14 21:14:44 +0000733fi
Guido van Rossumf8678121998-07-07 21:05:09 +0000734
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000735# On some compilers, pthreads are available without further options
736# (e.g. MacOS X). On some of these systems, the compiler will not
737# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
738# So we have to see first whether pthreads are available without
739# options before we can check whether -Kpthread improves anything.
740AC_MSG_CHECKING(whether pthreads are available without options)
741AC_CACHE_VAL(ac_cv_pthread_is_default,
742[AC_TRY_RUN([
743#include <pthread.h>
744
745void* routine(void* p){return NULL;}
746
747int main(){
748 pthread_t p;
749 if(pthread_create(&p,NULL,routine,NULL)!=0)
750 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000751 (void)pthread_detach(p);
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000752 return 0;
753}
754],
Skip Montanarod8d39a02003-07-10 20:44:10 +0000755[
756 ac_cv_pthread_is_default=yes
757 ac_cv_kthread=no
758 ac_cv_pthread=no
759],
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000760 ac_cv_pthread_is_default=no,
761 ac_cv_pthread_is_default=no)
762])
763AC_MSG_RESULT($ac_cv_pthread_is_default)
764
765
766if test $ac_cv_pthread_is_default = yes
767then
768 ac_cv_kpthread=no
769else
Martin v. Löwis130fb172001-07-19 11:00:41 +0000770# -Kpthread, if available, provides the right #defines
771# and linker options to make pthread_create available
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000772# Some compilers won't report that they do not support -Kpthread,
773# so we need to run a program to see whether it really made the
774# function available.
Martin v. Löwis130fb172001-07-19 11:00:41 +0000775AC_MSG_CHECKING(whether $CC accepts -Kpthread)
776AC_CACHE_VAL(ac_cv_kpthread,
777[ac_save_cc="$CC"
778CC="$CC -Kpthread"
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000779AC_TRY_RUN([
780#include <pthread.h>
781
782void* routine(void* p){return NULL;}
783
784int main(){
785 pthread_t p;
786 if(pthread_create(&p,NULL,routine,NULL)!=0)
787 return 1;
Jack Jansen4f8d0542002-03-08 13:43:01 +0000788 (void)pthread_detach(p);
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000789 return 0;
790}
791],
Martin v. Löwis130fb172001-07-19 11:00:41 +0000792 ac_cv_kpthread=yes,
Martin v. Löwis260aecc2001-10-07 08:14:41 +0000793 ac_cv_kpthread=no,
Martin v. Löwis130fb172001-07-19 11:00:41 +0000794 ac_cv_kpthread=no)
795CC="$ac_save_cc"])
Martin v. Löwis130fb172001-07-19 11:00:41 +0000796AC_MSG_RESULT($ac_cv_kpthread)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +0000797fi
Martin v. Löwis130fb172001-07-19 11:00:41 +0000798
Skip Montanarod8d39a02003-07-10 20:44:10 +0000799if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis5f433f02003-05-05 05:05:30 +0000800then
801# -Kthread, if available, provides the right #defines
802# and linker options to make pthread_create available
803# Some compilers won't report that they do not support -Kthread,
804# so we need to run a program to see whether it really made the
805# function available.
806AC_MSG_CHECKING(whether $CC accepts -Kthread)
807AC_CACHE_VAL(ac_cv_kthread,
808[ac_save_cc="$CC"
809CC="$CC -Kthread"
810AC_TRY_RUN([
811#include <pthread.h>
812
813void* routine(void* p){return NULL;}
814
815int main(){
816 pthread_t p;
817 if(pthread_create(&p,NULL,routine,NULL)!=0)
818 return 1;
819 (void)pthread_detach(p);
820 return 0;
821}
822],
823 ac_cv_kthread=yes,
824 ac_cv_kthread=no,
825 ac_cv_kthread=no)
826CC="$ac_save_cc"])
827AC_MSG_RESULT($ac_cv_kthread)
828fi
829
Skip Montanarod8d39a02003-07-10 20:44:10 +0000830if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +0000831then
832# -pthread, if available, provides the right #defines
833# and linker options to make pthread_create available
834# Some compilers won't report that they do not support -pthread,
835# so we need to run a program to see whether it really made the
836# function available.
837AC_MSG_CHECKING(whether $CC accepts -pthread)
838AC_CACHE_VAL(ac_cv_thread,
839[ac_save_cc="$CC"
840CC="$CC -pthread"
841AC_TRY_RUN([
842#include <pthread.h>
843
844void* routine(void* p){return NULL;}
845
846int main(){
847 pthread_t p;
848 if(pthread_create(&p,NULL,routine,NULL)!=0)
849 return 1;
850 (void)pthread_detach(p);
851 return 0;
852}
853],
854 ac_cv_pthread=yes,
855 ac_cv_pthread=no,
856 ac_cv_pthread=no)
857CC="$ac_save_cc"])
858AC_MSG_RESULT($ac_cv_pthread)
859fi
860
Martin v. Löwisab1e5852003-06-28 07:46:38 +0000861# If we have set a CC compiler flag for thread support then
862# check if it works for CXX, too.
863ac_cv_cxx_thread=no
864if test ! -z "$CXX"
865then
866AC_MSG_CHECKING(whether $CXX also accepts flags for thread support)
867ac_save_cxx="$CXX"
868
869if test "$ac_cv_kpthread" = "yes"
870then
871 CXX="$CXX -Kpthread"
872 ac_cv_cxx_thread=yes
873elif test "$ac_cv_kthread" = "yes"
874then
875 CXX="$CXX -Kthread"
876 ac_cv_cxx_thread=yes
877elif test "$ac_cv_pthread" = "yes"
878then
879 CXX="$CXX -pthread"
880 ac_cv_cxx_thread=yes
881fi
882
883if test $ac_cv_cxx_thread = yes
884then
885 echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext
886 $CXX -c conftest.$ac_ext 2>&5
887 if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \
888 && test -s conftest$ac_exeext && ./conftest$ac_exeext
889 then
890 ac_cv_cxx_thread=yes
891 else
892 ac_cv_cxx_thread=no
893 CXX="$ac_save_cxx"
894 fi
895 rm -fr conftest*
896else
897 CXX="$ac_save_cxx"
898fi
899fi
900AC_MSG_RESULT($ac_cv_cxx_thread)
901
Fred Drakece81d592000-07-09 14:39:29 +0000902dnl # check for ANSI or K&R ("traditional") preprocessor
903dnl AC_MSG_CHECKING(for C preprocessor type)
904dnl AC_TRY_COMPILE([
905dnl #define spam(name, doc) {#name, &name, #name "() -- " doc}
906dnl int foo;
907dnl struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
908dnl ], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
909dnl AC_MSG_RESULT($cpp_type)
Guido van Rossum300fda71996-08-19 21:58:16 +0000910
Guido van Rossum627b2d71993-12-24 10:39:16 +0000911# checks for header files
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000912AC_HEADER_STDC
Martin v. Löwis2e64c342002-03-27 18:49:02 +0000913AC_CHECK_HEADERS(dlfcn.h fcntl.h grp.h limits.h langinfo.h \
914libintl.h locale.h ncurses.h poll.h pthread.h \
Martin v. Löwis14e73b12003-01-01 09:51:12 +0000915signal.h stdarg.h stddef.h stdlib.h stropts.h termios.h thread.h \
916unistd.h utime.h \
Neal Norwitz82251032003-05-23 14:35:24 +0000917sys/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 +0000918sys/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 +0000919sys/un.h sys/utsname.h sys/wait.h pty.h term.h libutil.h \
Barry Warsawfe33b792003-01-07 22:42:49 +0000920sys/resource.h netpacket/packet.h sysexits.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000921AC_HEADER_DIRENT
Martin v. Löwisdbe3f762002-10-10 14:27:30 +0000922AC_HEADER_MAJOR
Guido van Rossum627b2d71993-12-24 10:39:16 +0000923
924# checks for typedefs
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000925was_it_defined=no
926AC_MSG_CHECKING(for clock_t in time.h)
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000927AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, [
928 AC_DEFINE(clock_t, long, [Define to 'long' if <time.h> doesn't define.])
929])
Guido van Rossum5739e7e1995-01-20 16:50:53 +0000930AC_MSG_RESULT($was_it_defined)
931
Neal Norwitz11690112002-07-30 01:08:28 +0000932# Check whether using makedev requires defining _OSF_SOURCE
933AC_MSG_CHECKING(for makedev)
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000934AC_TRY_LINK([#include <sys/types.h> ],
Neal Norwitz11690112002-07-30 01:08:28 +0000935 [ makedev(0, 0) ],
936 ac_cv_has_makedev=yes,
937 ac_cv_has_makedev=no)
938if test "$ac_cv_has_makedev" = "no"; then
939 # we didn't link, try if _OSF_SOURCE will allow us to link
940 AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +0000941#define _OSF_SOURCE 1
942#include <sys/types.h>
Neal Norwitz11690112002-07-30 01:08:28 +0000943 ],
944 [ makedev(0, 0) ],
945 ac_cv_has_makedev=yes,
946 ac_cv_has_makedev=no)
947 if test "$ac_cv_has_makedev" = "yes"; then
948 AC_DEFINE(_OSF_SOURCE, 1, [Define _OSF_SOURCE to get the makedev macro.])
949 fi
950fi
951AC_MSG_RESULT($ac_cv_has_makedev)
952if test "$ac_cv_has_makedev" = "yes"; then
953 AC_DEFINE(HAVE_MAKEDEV, 1, [Define this if you have the makedev macro.])
954fi
955
Martin v. Löwis399a6892002-10-04 10:22:02 +0000956# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in
957# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are
958# defined, but the compiler does not support pragma redefine_extname,
959# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit
960# structures (such as rlimit64) without declaring them. As a
961# work-around, disable LFS on such configurations
962
963use_lfs=yes
964AC_MSG_CHECKING(Solaris LFS bug)
965AC_TRY_COMPILE([
966#define _LARGEFILE_SOURCE 1
967#define _FILE_OFFSET_BITS 64
968#include <sys/resource.h>
969],struct rlimit foo;,sol_lfs_bug=no,sol_lfs_bug=yes)
970AC_MSG_RESULT($sol_lfs_bug)
971if test "$sol_lfs_bug" = "yes"; then
972 use_lfs=no
973fi
974
975if test "$use_lfs" = "yes"; then
Guido van Rossum810cc512001-09-09 23:51:39 +0000976# Two defines needed to enable largefile support on various platforms
977# These may affect some typedefs
Martin v. Löwisc45929e2002-04-06 10:10:49 +0000978AC_DEFINE(_LARGEFILE_SOURCE, 1,
979[This must be defined on some systems to enable large file support.])
980AC_DEFINE(_FILE_OFFSET_BITS, 64,
981[This must be set to 64 on some systems to enable large file support.])
Martin v. Löwis399a6892002-10-04 10:22:02 +0000982fi
Guido van Rossum810cc512001-09-09 23:51:39 +0000983
Guido van Rossum300fda71996-08-19 21:58:16 +0000984# Add some code to confdefs.h so that the test for off_t works on SCO
985cat >> confdefs.h <<\EOF
986#if defined(SCO_DS)
987#undef _OFF_T
988#endif
989EOF
990
Guido van Rossumef2255b2000-03-10 22:30:29 +0000991# Type availability checks
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000992AC_TYPE_MODE_T
993AC_TYPE_OFF_T
994AC_TYPE_PID_T
995AC_TYPE_SIGNAL
996AC_TYPE_SIZE_T
997AC_TYPE_UID_T
Guido van Rossum627b2d71993-12-24 10:39:16 +0000998
Guido van Rossumef2255b2000-03-10 22:30:29 +0000999# Sizes of various common basic types
Guido van Rossum3065c942001-09-17 04:03:14 +00001000AC_CHECK_SIZEOF(int, 4)
1001AC_CHECK_SIZEOF(long, 4)
1002AC_CHECK_SIZEOF(void *, 4)
1003AC_CHECK_SIZEOF(char, 1)
1004AC_CHECK_SIZEOF(short, 2)
1005AC_CHECK_SIZEOF(float, 4)
1006AC_CHECK_SIZEOF(double, 8)
1007AC_CHECK_SIZEOF(fpos_t, 4)
Guido van Rossumac405f61994-09-12 10:56:06 +00001008
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001009AC_MSG_CHECKING(for long long support)
1010have_long_long=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001011AC_TRY_COMPILE([], [long long x; x = (long long)0;], [
1012 AC_DEFINE(HAVE_LONG_LONG, 1, [Define this if you have the type long long.])
1013 have_long_long=yes
1014])
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001015AC_MSG_RESULT($have_long_long)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001016if test "$have_long_long" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001017AC_CHECK_SIZEOF(long long, 8)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001018fi
1019
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001020AC_MSG_CHECKING(for uintptr_t support)
1021have_uintptr_t=no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001022AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], [
1023 AC_DEFINE(HAVE_UINTPTR_T, 1, [Define this if you have the type uintptr_t.])
1024 have_uintptr_t=yes
1025])
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001026AC_MSG_RESULT($have_uintptr_t)
1027if test "$have_uintptr_t" = yes ; then
Guido van Rossum3065c942001-09-17 04:03:14 +00001028AC_CHECK_SIZEOF(uintptr_t, 4)
Barry Warsawbc7c7f92000-08-18 04:53:33 +00001029fi
1030
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001031# Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
1032AC_MSG_CHECKING(size of off_t)
1033AC_CACHE_VAL(ac_cv_sizeof_off_t,
1034[AC_TRY_RUN([#include <stdio.h>
1035#include <sys/types.h>
1036main()
1037{
1038 FILE *f=fopen("conftestval", "w");
1039 if (!f) exit(1);
1040 fprintf(f, "%d\n", sizeof(off_t));
1041 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001042}],
1043ac_cv_sizeof_off_t=`cat conftestval`,
1044ac_cv_sizeof_off_t=0,
1045ac_cv_sizeof_off_t=4)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001046])
1047AC_MSG_RESULT($ac_cv_sizeof_off_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001048AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t,
1049[The number of bytes in an off_t.])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001050
1051AC_MSG_CHECKING(whether to enable large file support)
Guido van Rossum8bc1dfd1999-04-10 16:01:48 +00001052if test "$have_long_long" = yes -a \
1053 "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
1054 "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001055 AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1,
1056 [Defined to enable large file support when an off_t is bigger than a long
1057 and long long is available and at least as big as an off_t. You may need
1058 to add some flags for configuration and compilation to enable this mode.
1059 (For Solaris and Linux, the necessary defines are already defined.)])
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001060 AC_MSG_RESULT(yes)
1061else
1062 AC_MSG_RESULT(no)
1063fi
1064
Fred Drakea3f6e912000-06-29 20:44:47 +00001065# AC_CHECK_SIZEOF() doesn't include <time.h>.
1066AC_MSG_CHECKING(size of time_t)
1067AC_CACHE_VAL(ac_cv_sizeof_time_t,
1068[AC_TRY_RUN([#include <stdio.h>
1069#include <time.h>
1070main()
1071{
1072 FILE *f=fopen("conftestval", "w");
1073 if (!f) exit(1);
1074 fprintf(f, "%d\n", sizeof(time_t));
1075 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001076}],
1077ac_cv_sizeof_time_t=`cat conftestval`,
1078ac_cv_sizeof_time_t=0,
1079ac_cv_sizeof_time_t=4)
Fred Drakea3f6e912000-06-29 20:44:47 +00001080])
1081AC_MSG_RESULT($ac_cv_sizeof_time_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001082AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t,
1083[The number of bytes in a time_t.])
Fred Drakea3f6e912000-06-29 20:44:47 +00001084
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00001085
Trent Mick635f6fb2000-08-23 21:33:05 +00001086# if have pthread_t then define SIZEOF_PTHREAD_T
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001087ac_save_cc="$CC"
1088if test "$ac_cv_kpthread" = "yes"
1089then CC="$CC -Kpthread"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001090elif test "$ac_cv_kthread" = "yes"
1091then CC="$CC -Kthread"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001092elif test "$ac_cv_pthread" = "yes"
1093then CC="$CC -pthread"
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001094fi
Trent Mick635f6fb2000-08-23 21:33:05 +00001095AC_MSG_CHECKING(for pthread_t)
1096have_pthread_t=no
Guido van Rossum12580492000-09-24 16:47:19 +00001097AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = *(pthread_t*)0;], have_pthread_t=yes)
Trent Mick635f6fb2000-08-23 21:33:05 +00001098AC_MSG_RESULT($have_pthread_t)
1099if test "$have_pthread_t" = yes ; then
1100 # AC_CHECK_SIZEOF() doesn't include <pthread.h>.
1101 AC_MSG_CHECKING(size of pthread_t)
1102 AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
1103 [AC_TRY_RUN([#include <stdio.h>
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001104#include <pthread.h>
Trent Mick635f6fb2000-08-23 21:33:05 +00001105 main()
1106 {
1107 FILE *f=fopen("conftestval", "w");
1108 if (!f) exit(1);
1109 fprintf(f, "%d\n", sizeof(pthread_t));
1110 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001111 }],
1112 ac_cv_sizeof_pthread_t=`cat conftestval`,
1113 ac_cv_sizeof_pthread_t=0,
1114 ac_cv_sizeof_pthread_t=4)
Trent Mick635f6fb2000-08-23 21:33:05 +00001115 ])
1116 AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001117 AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t,
1118 [The number of bytes in a pthread_t.])
Trent Mick635f6fb2000-08-23 21:33:05 +00001119fi
Martin v. Löwis123cbd22001-07-19 14:21:10 +00001120CC="$ac_save_cc"
Trent Mick635f6fb2000-08-23 21:33:05 +00001121
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001122AC_MSG_CHECKING(for --enable-toolbox-glue)
1123AC_ARG_ENABLE(toolbox-glue,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001124 AC_HELP_STRING(--enable-toolbox-glue, disable/enable MacOSX glue code for extensions))
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001125
1126if test -z "$enable_toolbox_glue"
1127then
1128 case $ac_sys_system/$ac_sys_release in
1129 Darwin/*)
1130 enable_toolbox_glue="yes";;
1131 *)
1132 enable_toolbox_glue="no";;
1133 esac
1134fi
1135case "$enable_toolbox_glue" in
1136yes)
Jack Jansen666b1e72001-10-31 12:11:48 +00001137 extra_frameworks="-framework CoreServices -framework Foundation"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001138 extra_machdep_objs="Python/mactoolboxglue.o"
Jack Jansen591cbed2001-08-15 13:55:15 +00001139 extra_undefs="-u __dummy -u _PyMac_Error"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001140 AC_DEFINE(USE_TOOLBOX_OBJECT_GLUE, 1,
1141 [Define if you want to use MacPython modules on MacOSX in unix-Python.])
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001142 ;;
1143*)
1144 extra_frameworks=""
1145 extra_machdep_objs=""
Jack Jansen591cbed2001-08-15 13:55:15 +00001146 extra_undefs=""
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001147 ;;
1148esac
1149AC_MSG_RESULT($enable_toolbox_glue)
1150
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001151AC_SUBST(LIBTOOL_CRUFT)
1152case $ac_sys_system/$ac_sys_release in
Jack Jansen418c3b12001-11-14 10:59:57 +00001153 Darwin/1.3*)
Jack Jansenea0c3822002-08-01 21:57:49 +00001154 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +00001155 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansen66b84832003-07-04 12:14:39 +00001156 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/Python'
Jack Jansena3891ea2001-09-07 14:25:12 +00001157 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum5839e582000-10-09 19:52:35 +00001158 Darwin/*)
Jack Jansenea0c3822002-08-01 21:57:49 +00001159 LIBTOOL_CRUFT="-lcc_dynamic -arch_only ppc"
Jack Jansen418c3b12001-11-14 10:59:57 +00001160 LIBTOOL_CRUFT="$LIBTOOL_CRUFT $extra_frameworks"
Jack Jansen66b84832003-07-04 12:14:39 +00001161 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/Python'
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001162 LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001163esac
1164
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001165AC_MSG_CHECKING(for --enable-framework)
1166if test "$enable_framework"
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001167then
Skip Montanarodecc6a42003-01-01 20:07:49 +00001168 BASECFLAGS="$BASECFLAGS -fno-common -dynamic"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001169 # -F. is needed to allow linking to the framework while
1170 # in the build location.
Jack Jansenea0c3822002-08-01 21:57:49 +00001171 LDFLAGS="$LDFLAGS -Wl,-F."
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001172 AC_DEFINE(WITH_NEXT_FRAMEWORK, 1,
1173 [Define if you want to produce an OpenStep/Rhapsody framework
1174 (shared library plus accessory files).])
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001175 AC_MSG_RESULT(yes)
1176else
1177 AC_MSG_RESULT(no)
1178fi
1179
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001180AC_MSG_CHECKING(for dyld)
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001181case $ac_sys_system/$ac_sys_release in
1182 Darwin/*)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001183 AC_DEFINE(WITH_DYLD, 1,
1184 [Define if you want to use the new-style (Openstep, Rhapsody, MacOS)
1185 dynamic linker (dyld) instead of the old-style (NextStep) dynamic
1186 linker (rld). Dyld is necessary to support frameworks.])
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001187 AC_MSG_RESULT(always on for Darwin)
1188 ;;
1189 *)
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001190 AC_MSG_RESULT(no)
1191 ;;
Jack Jansen9a66b6d2001-08-08 13:56:14 +00001192esac
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001193
Guido van Rossumac405f61994-09-12 10:56:06 +00001194# Set info about shared libraries.
Guido van Rossumac405f61994-09-12 10:56:06 +00001195AC_SUBST(SO)
1196AC_SUBST(LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001197AC_SUBST(BLDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001198AC_SUBST(CCSHARED)
1199AC_SUBST(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001200# SO is the extension of shared libraries `(including the dot!)
Guido van Rossumaef734b2001-01-10 21:09:12 +00001201# -- usually .so, .sl on HP-UX, .dll on Cygwin
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001202AC_MSG_CHECKING(SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001203if test -z "$SO"
1204then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001205 case $ac_sys_system in
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001206 hp*|HP*) SO=.sl;;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001207 CYGWIN*) SO=.dll;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00001208 *) SO=.so;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001209 esac
Martin v. Löwis368de8f2003-06-14 14:46:38 +00001210else
1211 # this might also be a termcap variable, see #610332
1212 echo
1213 echo '====================================================================='
1214 echo '+ +'
1215 echo '+ WARNING: You have set SO in your environment. +'
1216 echo '+ Do you really mean to change the extension for shared libraries? +'
1217 echo '+ Continuing in 10 seconds to let you to ponder. +'
1218 echo '+ +'
1219 echo '====================================================================='
1220 sleep 10
Guido van Rossumac405f61994-09-12 10:56:06 +00001221fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001222AC_MSG_RESULT($SO)
Guido van Rossumac405f61994-09-12 10:56:06 +00001223# LDSHARED is the ld *command* used to create shared library
Martin v. Löwis5b718fc2001-09-10 15:34:42 +00001224# -- "ld" on SunOS 4.x.x, "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001225# (Shared libraries in this instance are shared modules to be loaded into
1226# Python, as opposed to building Python itself as a shared library.)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001227AC_MSG_CHECKING(LDSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001228if test -z "$LDSHARED"
1229then
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001230 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001231 AIX*)
1232 BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:Modules/python.exp"
Guido van Rossumce608b02001-09-28 15:59:38 +00001233 LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001234 ;;
1235 BeOS*)
1236 BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY"
Guido van Rossumce608b02001-09-28 15:59:38 +00001237 LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY"
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001238 ;;
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001239 IRIX/5*) LDSHARED="ld -shared";;
Guido van Rossum91922671997-10-09 20:24:13 +00001240 IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001241 SunOS/4*) LDSHARED="ld";;
Greg Ward57c9a6632000-05-26 12:22:54 +00001242 SunOS/5*)
1243 if test "$GCC" = "yes"
Neil Schemenauer95052722001-02-19 18:17:33 +00001244 then LDSHARED='$(CC) -shared'
Martin v. Löwisaa5afe12002-10-07 06:21:41 +00001245 else LDSHARED='$(CC) -G';
Greg Ward57c9a6632000-05-26 12:22:54 +00001246 fi ;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001247 hp*|HP*) LDSHARED="ld -b";;
Guido van Rossum71001e41995-01-26 00:44:03 +00001248 OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
Guido van Rossum7d473291995-01-20 14:12:16 +00001249 DYNIX/ptx*) LDSHARED="ld -G";;
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.
1254 LDSHARED="$LDSHARED "'-framework $(PYTHONFRAMEWORK)'
1255 else
1256 # No framework. Ignore undefined symbols, assuming they come from Python
Jack Jansen418c3b12001-11-14 10:59:57 +00001257 LDSHARED="$LDSHARED -undefined suppress"
Jack Jansena3891ea2001-09-07 14:25:12 +00001258 fi ;;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001259 Darwin/*)
1260 LDSHARED='$(CC) $(LDFLAGS) -bundle'
1261 if test "$enable_framework" ; then
1262 # Link against the framework. All externals should be defined.
1263 LDSHARED="$LDSHARED "'-framework $(PYTHONFRAMEWORK)'
1264 else
Michael W. Hudson0c46c0c2002-03-07 09:58:56 +00001265 # No framework, use the Python app as bundle-loader
1266 BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)'
Jack Jansenc28fc372003-02-25 13:14:43 +00001267 LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)'
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001268 fi ;;
Martin v. Löwis3cba5c02002-09-16 17:50:59 +00001269 Linux*|GNU*) LDSHARED='$(CC) -shared';;
Guido van Rossum3c4bb801997-12-18 23:55:32 +00001270 dgux*) LDSHARED="ld -G";;
Guido van Rossum458e7fa1999-09-17 15:40:40 +00001271 BSD/OS*/4*) LDSHARED="gcc -shared";;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001272 OpenBSD*|FreeBSD*)
Jeremy Hylton4bcc7c52000-08-31 17:45:35 +00001273 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
Guido van Rossum0286ae82000-08-29 15:06:49 +00001274 then
1275 LDSHARED="cc -shared ${LDFLAGS}"
1276 else
1277 LDSHARED="ld -Bshareable ${LDFLAGS}"
1278 fi;;
Martin v. Löwisd61888b2002-09-30 11:17:27 +00001279 NetBSD*) LDSHARED="cc -shared ${LDFLAGS}";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001280 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001281 if test "$GCC" = "yes"
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001282 then LDSHARED='$(CC) -shared'
1283 else LDSHARED='$(CC) -G'
Martin v. Löwisbec19582001-03-21 15:57:54 +00001284 fi;;
Martin v. Löwis79f3c532002-12-11 12:51:58 +00001285 SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';;
Trent Mick635f6fb2000-08-23 21:33:05 +00001286 Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
Guido van Rossumaef734b2001-01-10 21:09:12 +00001287 CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001288 atheos*) LDSHARED="gcc -shared";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001289 *) LDSHARED="ld";;
1290 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001291fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001292AC_MSG_RESULT($LDSHARED)
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001293BLDSHARED=${BLDSHARED-$LDSHARED}
Guido van Rossumac405f61994-09-12 10:56:06 +00001294# CCSHARED are the C *flags* used to create objects to go into a shared
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001295# library (module) -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001296AC_MSG_CHECKING(CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001297if test -z "$CCSHARED"
1298then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001299 case $ac_sys_system/$ac_sys_release in
Neil Schemenauer66252162001-02-19 04:47:42 +00001300 SunOS*) if test "$GCC" = yes;
1301 then CCSHARED="-fPIC";
1302 fi;;
Guido van Rossumaf07a441995-02-13 19:45:27 +00001303 hp*|HP*) if test "$GCC" = yes;
Martin v. Löwis703ad702001-09-05 08:36:52 +00001304 then CCSHARED="-fPIC";
Guido van Rossumaf07a441995-02-13 19:45:27 +00001305 else CCSHARED="+z";
1306 fi;;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001307 Linux*|GNU*) CCSHARED="-fPIC";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001308 BSD/OS*/4*) CCSHARED="-fpic";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001309 FreeBSD*|NetBSD*|OpenBSD*) CCSHARED="-fPIC";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001310 OpenUNIX*|UnixWare*)
Martin v. Löwisbec19582001-03-21 15:57:54 +00001311 if test "$GCC" = "yes"
1312 then CCSHARED="-fPIC"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001313 else CCSHARED="-KPIC"
Martin v. Löwisbec19582001-03-21 15:57:54 +00001314 fi;;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001315 SCO_SV*)
1316 if test "$GCC" = "yes"
1317 then CCSHARED="-fPIC"
1318 else CCSHARED="-Kpic -belf"
1319 fi;;
Trent Mick635f6fb2000-08-23 21:33:05 +00001320 Monterey*) CCSHARED="-G";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001321 IRIX*/6*) case $CC in
1322 *gcc*) CCSHARED="-shared";;
Guido van Rossumee21f411998-04-20 18:51:54 +00001323 *) CCSHARED="";;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001324 esac;;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001325 atheos*) CCSHARED="-fPIC";;
Guido van Rossumac405f61994-09-12 10:56:06 +00001326 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001327fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001328AC_MSG_RESULT($CCSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001329# LINKFORSHARED are the flags passed to the $(CC) command that links
Guido van Rossumb65a48e1995-06-14 18:21:23 +00001330# the python executable -- this is only needed for a few systems
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001331AC_MSG_CHECKING(LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001332if test -z "$LINKFORSHARED"
1333then
Guido van Rossum6100aaf1997-04-29 21:48:51 +00001334 case $ac_sys_system/$ac_sys_release in
Neil Schemenauerb3531b82001-02-16 04:09:05 +00001335 AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';;
Guido van Rossum5dab3d81996-12-06 21:18:18 +00001336 hp*|HP*)
Martin v. Löwis1142de32002-03-29 16:28:31 +00001337 LINKFORSHARED="-Wl,-E -Wl,+s";;
1338# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Guido van Rossumf5957ea1999-10-05 21:59:33 +00001339 BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001340 Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
Guido van Rossum54ecc3d1999-01-27 17:53:11 +00001341 # -u libsys_s pulls in all symbols in libsys
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001342 Darwin/*)
1343 # -u __dummy makes the linker aware of the objc runtime
1344 # in System.framework; otherwise, __objcInit (referenced in
1345 # crt1.o) gets erroneously defined as common, which breaks dynamic
1346 # loading of any modules which reference it in System.framework.
1347 # -u _PyMac_Error is needed to pull in the mac toolbox glue, which is
1348 # not used by the core itself but which needs to be in the core so
1349 # that dynamically loaded extension modules have access to it.
Jack Jansen97e3f002003-02-23 22:59:01 +00001350 # -prebind is no longer used, because it actually seems to give a
1351 # slowdown in stead of a speedup, maybe due to the large number of
1352 # dynamic loads Python does.
1353 LINKFORSHARED="$extra_undefs -framework System"
Jack Jansenb6e9cad2001-08-15 01:26:28 +00001354 if test "$enable_framework"
1355 then
1356 LINKFORSHARED="$LINKFORSHARED -framework Python"
1357 fi
1358 LINKFORSHARED="$LINKFORSHARED $extra_frameworks";;
Martin v. Löwis25ae43b2001-10-07 08:39:18 +00001359 OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
Martin v. Löwis21ee4092002-09-30 16:19:48 +00001360 SCO_SV*) LINKFORSHARED="-Wl,-Bexport";;
Fred Drake02706f52000-09-25 15:08:46 +00001361 ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
Martin v. Löwis36546db2001-09-05 14:24:43 +00001362 FreeBSD*|NetBSD*|OpenBSD*)
Guido van Rossumdf693651999-01-07 21:50:41 +00001363 if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
1364 then
1365 LINKFORSHARED="-Wl,--export-dynamic"
1366 fi;;
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001367 SunOS/5*) case $CC in
1368 *gcc*)
Martin v. Löwisa4548572002-04-18 14:51:36 +00001369 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
Guido van Rossum8f4ceb11997-12-18 23:42:19 +00001370 then
1371 LINKFORSHARED="-Xlinker --export-dynamic"
Guido van Rossum2b5ca001998-03-05 15:41:09 +00001372 fi;;
1373 esac;;
Guido van Rossumac405f61994-09-12 10:56:06 +00001374 esac
Guido van Rossumac405f61994-09-12 10:56:06 +00001375fi
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001376AC_MSG_RESULT($LINKFORSHARED)
Guido van Rossumac405f61994-09-12 10:56:06 +00001377
Neil Schemenauer61c51152001-01-26 16:18:16 +00001378AC_SUBST(CFLAGSFORSHARED)
1379AC_MSG_CHECKING(CFLAGSFORSHARED)
1380if test ! "$LIBRARY" = "$LDLIBRARY"
1381then
Neil Schemenauerd9cf41c2001-01-27 21:39:17 +00001382 case $ac_sys_system in
1383 CYGWIN*)
1384 # Cygwin needs CCSHARED when building extension DLLs
1385 # but not when building the interpreter DLL.
1386 CFLAGSFORSHARED='';;
1387 *)
1388 CFLAGSFORSHARED='$(CCSHARED)'
1389 esac
Neil Schemenauer61c51152001-01-26 16:18:16 +00001390fi
1391AC_MSG_RESULT($CFLAGSFORSHARED)
1392
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001393# SHLIBS are libraries (except -lc and -lm) to link to the python shared
1394# library (with --enable-shared).
1395# For platforms on which shared libraries are not allowed to have unresolved
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001396# symbols, this must be set to $(LIBS) (expanded by make). We do this even
1397# if it is not required, since it creates a dependency of the shared library
1398# to LIBS. This, in turn, means that applications linking the shared libpython
1399# don't need to link LIBS explicitly. The default should be only changed
1400# on systems where this approach causes problems.
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001401AC_SUBST(SHLIBS)
1402AC_MSG_CHECKING(SHLIBS)
1403case "$ac_sys_system" in
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001404 *)
Martin v. Löwisd6359c52002-08-04 12:38:50 +00001405 SHLIBS='$(LIBS)';;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001406esac
1407AC_MSG_RESULT($SHLIBS)
1408
1409
Guido van Rossum627b2d71993-12-24 10:39:16 +00001410# checks for libraries
Guido van Rossum76be6ed1995-01-02 18:33:54 +00001411AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
1412AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
Martin v. Löwisd3545ec2003-05-03 11:25:43 +00001413AC_SEARCH_LIBS(sem_init, pthread rt posix4) # 'Real Time' functions on Solaris
1414 # posix4 on Solaris 2.6
1415 # pthread (first!) on Linux
Martin v. Löwis19d17342003-06-14 21:03:05 +00001416# check if we need libintl for locale functions
1417AC_CHECK_LIB(intl, textdomain,
1418 AC_DEFINE(WITH_LIBINTL, 1,
1419 [Define to 1 if libintl is needed for locale functions.]))
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001420
1421# checks for system dependent C++ extensions support
1422case "$ac_sys_system" in
1423 AIX*) AC_MSG_CHECKING(for genuine AIX C++ extensions support)
1424 AC_TRY_LINK([#include "/usr/lpp/xlC/include/load.h"],
1425 [loadAndInit("", 0, "")],
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001426 [AC_DEFINE(AIX_GENUINE_CPLUSPLUS, 1,
1427 [Define for AIX if your compiler is a genuine IBM xlC/xlC_r
1428 and you want support for AIX C++ shared extension modules.])
Guido van Rossum0eefa3f1999-11-16 15:57:37 +00001429 AC_MSG_RESULT(yes)],
1430 [AC_MSG_RESULT(no)]);;
1431 *) ;;
1432esac
1433
Guido van Rossum70c7f481998-03-26 18:44:10 +00001434# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
Martin v. Löwise1172582002-11-13 08:51:19 +00001435# However on SGI IRIX 4, these exist but are broken.
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001436# BeOS' sockets are stashed in libnet.
1437case "$ac_sys_system" in
1438IRIX*) ;;
Guido van Rossum2cb56601998-05-07 13:25:56 +00001439*)
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001440AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
Guido van Rossumf618d2c1995-01-17 16:36:13 +00001441AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
Jeremy Hyltoncb25d5e2000-07-27 21:23:28 +00001442;;
1443esac
1444case "$ac_sys_system" in
1445BeOS*)
Guido van Rossumec95c7b1998-08-04 17:59:56 +00001446AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
1447;;
1448esac
Guido van Rossum70c7f481998-03-26 18:44:10 +00001449
Guido van Rossumc5a39031996-07-31 17:35:03 +00001450AC_MSG_CHECKING(for --with-libs)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001451AC_ARG_WITH(libs,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001452 AC_HELP_STRING(--with-libs='lib1 ...', link against additional libs),
1453[
Guido van Rossumc5a39031996-07-31 17:35:03 +00001454AC_MSG_RESULT($withval)
1455LIBS="$withval $LIBS"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001456],
1457[AC_MSG_RESULT(no)])
Guido van Rossum627b2d71993-12-24 10:39:16 +00001458
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001459# Determine if signalmodule should be used.
1460AC_SUBST(USE_SIGNAL_MODULE)
1461AC_SUBST(SIGNAL_OBJS)
1462AC_MSG_CHECKING(for --with-signal-module)
1463AC_ARG_WITH(signal-module,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001464 AC_HELP_STRING(--with-signal-module, disable/enable signal module))
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00001465
1466if test -z "$with_signal_module"
1467then with_signal_module="yes"
1468fi
1469AC_MSG_RESULT($with_signal_module)
1470
1471if test "${with_signal_module}" = "yes"; then
1472 USE_SIGNAL_MODULE=""
1473 SIGNAL_OBJS=""
1474else
1475 USE_SIGNAL_MODULE="#"
1476 SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o"
1477fi
1478
Guido van Rossum3d15bd82001-01-10 18:53:48 +00001479# This is used to generate Setup.config
Guido van Rossum009f7871997-12-04 00:51:42 +00001480AC_SUBST(USE_THREAD_MODULE)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001481USE_THREAD_MODULE=""
Guido van Rossum009f7871997-12-04 00:51:42 +00001482
Guido van Rossum54d93d41997-01-22 20:51:58 +00001483AC_MSG_CHECKING(for --with-dec-threads)
1484AC_SUBST(LDLAST)
1485AC_ARG_WITH(dec-threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001486 AC_HELP_STRING(--with-dec-threads, use DEC Alpha/OSF1 thread-safe libraries),
1487[
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001488AC_MSG_RESULT($withval)
Guido van Rossum54d93d41997-01-22 20:51:58 +00001489LDLAST=-threads
Guido van Rossumf78abae1997-01-21 22:02:36 +00001490if test "${with_thread+set}" != set; then
Guido van Rossum54d93d41997-01-22 20:51:58 +00001491 with_thread="$withval";
1492fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001493[AC_MSG_RESULT(no)])
Guido van Rossum54d93d41997-01-22 20:51:58 +00001494
Martin v. Löwis11437992002-04-12 09:54:03 +00001495# Templates for things AC_DEFINEd more than once.
1496# For a single AC_DEFINE, no template is needed.
1497AH_TEMPLATE(C_THREADS,[Define if you have the Mach cthreads package])
1498AH_TEMPLATE(_REENTRANT,
1499 [Define to force use of thread-safe errno, h_errno, and other functions])
1500AH_TEMPLATE(WITH_THREAD,
1501 [Define if you want to compile in rudimentary thread support])
1502
Guido van Rossum54d93d41997-01-22 20:51:58 +00001503AC_MSG_CHECKING(for --with-threads)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001504dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001505AC_ARG_WITH(threads,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001506 AC_HELP_STRING(--with(out)-threads@<:@=DIRECTORY@:>@, disable/enable thread support))
Guido van Rossum54d93d41997-01-22 20:51:58 +00001507
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001508# --with-thread is deprecated, but check for it anyway
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001509dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Barry Warsawa0f3c5c2000-06-30 16:39:35 +00001510AC_ARG_WITH(thread,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001511 AC_HELP_STRING(--with(out)-thread@<:@=DIRECTORY@:>@, deprecated; use --with(out)-threads),
1512 [with_threads=$with_thread])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001513
1514if test -z "$with_threads"
1515then with_threads="yes"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001516fi
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001517AC_MSG_RESULT($with_threads)
Guido van Rossum6400c261997-05-22 20:34:27 +00001518
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001519AC_SUBST(THREADOBJ)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001520if test "$with_threads" = "no"
1521then
1522 USE_THREAD_MODULE="#"
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001523elif test "$ac_cv_pthread_is_default" = yes
1524then
1525 AC_DEFINE(WITH_THREAD)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001526 # Defining _REENTRANT on system with POSIX threads should not hurt.
1527 AC_DEFINE(_REENTRANT)
1528 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001529 THREADOBJ="Python/thread.o"
Martin v. Löwis130fb172001-07-19 11:00:41 +00001530elif test "$ac_cv_kpthread" = "yes"
1531then
1532 CC="$CC -Kpthread"
1533 AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001534 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001535 THREADOBJ="Python/thread.o"
Martin v. Löwis5f433f02003-05-05 05:05:30 +00001536elif test "$ac_cv_kthread" = "yes"
1537then
1538 CC="$CC -Kthread"
1539 AC_DEFINE(WITH_THREAD)
1540 posix_threads=yes
1541 THREADOBJ="Python/thread.o"
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001542elif test "$ac_cv_pthread" = "yes"
1543then
1544 CC="$CC -pthread"
1545 AC_DEFINE(WITH_THREAD)
1546 posix_threads=yes
1547 THREADOBJ="Python/thread.o"
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001548else
Martin v. Löwis130fb172001-07-19 11:00:41 +00001549 if test ! -z "$with_threads" -a -d "$with_threads"
1550 then LDFLAGS="$LDFLAGS -L$with_threads"
1551 fi
1552 if test ! -z "$withval" -a -d "$withval"
1553 then LDFLAGS="$LDFLAGS -L$withval"
1554 fi
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001555
1556 # According to the POSIX spec, a pthreads implementation must
1557 # define _POSIX_THREADS in unistd.h. Some apparently don't (which ones?)
1558 AC_MSG_CHECKING(for _POSIX_THREADS in unistd.h)
1559 AC_EGREP_CPP(yes,
Neal Norwitz6eb37f02003-02-23 23:28:15 +00001560 [
1561#include <unistd.h>
1562#ifdef _POSIX_THREADS
1563yes
1564#endif
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001565 ], unistd_defines_pthreads=yes, unistd_defines_pthreads=no)
1566 AC_MSG_RESULT($unistd_defines_pthreads)
1567
Martin v. Löwis130fb172001-07-19 11:00:41 +00001568 AC_DEFINE(_REENTRANT)
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001569 AC_CHECK_HEADER(cthreads.h, [AC_DEFINE(WITH_THREAD)
1570 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001571 AC_DEFINE(HURD_C_THREADS, 1,
1572 [Define if you are using Mach cthreads directly under /include])
Martin v. Löwisa6e97582002-01-01 18:41:33 +00001573 LIBS="$LIBS -lthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001574 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001575 AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
1576 AC_DEFINE(C_THREADS)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001577 AC_DEFINE(MACH_C_THREADS, 1,
1578 [Define if you are using Mach cthreads under mach /])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001579 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001580 AC_MSG_CHECKING(for --with-pth)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001581 AC_ARG_WITH([pth],
1582 AC_HELP_STRING(--with-pth, use GNU pth threading libraries),
1583 [AC_MSG_RESULT($withval)
1584 AC_DEFINE([WITH_THREAD])
1585 AC_DEFINE([HAVE_PTH], 1,
1586 [Define if you have GNU PTH threads.])
1587 LIBS="-lpth $LIBS"
1588 THREADOBJ="Python/thread.o"],
1589 [AC_MSG_RESULT(no)
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001590
1591 # Just looking for pthread_create in libpthread is not enough:
1592 # on HP/UX, pthread.h renames pthread_create to a different symbol name.
1593 # So we really have to include pthread.h, and then link.
1594 _libs=$LIBS
1595 LIBS="$LIBS -lpthread"
1596 AC_MSG_CHECKING([for pthread_create in -lpthread])
1597 AC_TRY_LINK([#include <pthread.h>
1598
1599void * start_routine (void *arg) { exit (0); }], [
1600pthread_create (NULL, NULL, start_routine, NULL)], [
1601 AC_MSG_RESULT(yes)
1602 AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001603 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001604 THREADOBJ="Python/thread.o"],[
Martin v. Löwis8158b5a2001-10-08 13:17:28 +00001605 LIBS=$_libs
Martin v. Löwis130fb172001-07-19 11:00:41 +00001606 AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001607 posix_threads=yes
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001608 THREADOBJ="Python/thread.o"],[
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001609 AC_CHECK_HEADER(atheos/threads.h, [AC_DEFINE(WITH_THREAD)
1610 AC_DEFINE(ATHEOS_THREADS, 1,
1611 [Define this if you have AtheOS threads.])
1612 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001613 AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001614 AC_DEFINE(BEOS_THREADS, 1,
1615 [Define this if you have BeOS threads.])
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001616 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001617 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001618 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001619 LIBS="$LIBS -lpthreads"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001620 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001621 AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001622 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001623 LIBS="$LIBS -lc_r"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001624 THREADOBJ="Python/thread.o"], [
Martin v. Löwis130fb172001-07-19 11:00:41 +00001625 AC_CHECK_LIB(thread, __d6_pthread_create, [AC_DEFINE(WITH_THREAD)
Martin v. Löwis779ffc02002-12-02 22:17:01 +00001626 echo Systems with __d6_pthread_create are not supported anymore.
1627 echo See README
1628 exit 1
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001629 posix_threads=yes
Martin v. Löwis130fb172001-07-19 11:00:41 +00001630 LIBS="$LIBS -lthread"
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(pthread, __pthread_create_system, [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 -lpthread"
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(cma, 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 -lcma"
Martin v. Löwis2d7e2642002-04-05 16:50:53 +00001639 THREADOBJ="Python/thread.o"],[
Martin v. Löwis130fb172001-07-19 11:00:41 +00001640 USE_THREAD_MODULE="#"])
Martin v. Löwisf90ae202002-06-11 06:22:31 +00001641 ])])])])])])])])])])])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001642
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001643 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
1644 LIBS="$LIBS -lmpc"
1645 THREADOBJ="Python/thread.o"
1646 USE_THREAD_MODULE=""])
1647
1648 if test "$posix_threads" != "yes"; then
1649 AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
1650 LIBS="$LIBS -lthread"
1651 THREADOBJ="Python/thread.o"
1652 USE_THREAD_MODULE=""])
1653 fi
1654
1655 if test "$USE_THREAD_MODULE" != "#"
1656 then
1657 # If the above checks didn't disable threads, (at least) OSF1
1658 # needs this '-threads' argument during linking.
1659 case $ac_sys_system in
1660 OSF1) LDLAST=-threads;;
1661 esac
1662 fi
1663fi
1664
1665if test "$posix_threads" = "yes"; then
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001666 if test "$unistd_defines_pthreads" = "no"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001667 AC_DEFINE(_POSIX_THREADS, 1,
1668 [Define if you have POSIX threads,
1669 and your system does not define that.])
Martin v. Löwis69c0ff32001-10-15 14:34:42 +00001670 fi
1671
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001672 # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8.
1673 case $ac_sys_system/$ac_sys_release in
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001674 SunOS/5.6) AC_DEFINE(HAVE_PTHREAD_DESTRUCTOR, 1,
1675 Defined for Solaris 2.6 bug in pthread header.)
1676 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001677 SunOS/5.8) AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1,
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001678 Define if the Posix semaphores do not work on your system)
1679 ;;
Martin v. Löwisdfc33fd2003-01-21 10:14:41 +00001680 esac
1681
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001682 AC_MSG_CHECKING(if PTHREAD_SCOPE_SYSTEM is supported)
1683 AC_CACHE_VAL(ac_cv_pthread_system_supported,
1684 [AC_TRY_RUN([#include <pthread.h>
1685 void *foo(void *parm) {
1686 return NULL;
1687 }
1688 main() {
1689 pthread_attr_t attr;
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001690 pthread_t id;
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001691 if (pthread_attr_init(&attr)) exit(-1);
1692 if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
Martin v. Löwisa82d3472002-02-24 16:05:05 +00001693 if (pthread_create(&id, &attr, foo, NULL)) exit(-1);
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001694 exit(0);
Guido van Rossum3065c942001-09-17 04:03:14 +00001695 }],
1696 ac_cv_pthread_system_supported=yes,
1697 ac_cv_pthread_system_supported=no,
1698 ac_cv_pthread_system_supported=no)
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001699 ])
1700 AC_MSG_RESULT($ac_cv_pthread_system_supported)
1701 if test "$ac_cv_pthread_system_supported" = "yes"; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001702 AC_DEFINE(PTHREAD_SYSTEM_SCHED_SUPPORTED, 1, [Defined if PTHREAD_SCOPE_SYSTEM supported.])
Guido van Rossumd0b69ec2001-09-10 14:10:54 +00001703 fi
Jason Tishlerfac083d2003-07-22 15:20:49 +00001704 AC_CHECK_FUNCS(pthread_sigmask,
1705 [case $ac_sys_system in
1706 CYGWIN*)
1707 AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1,
1708 [Define if pthread_sigmask() does not work on your system.])
1709 ;;
1710 esac])
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001711fi
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001712
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00001713
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001714# Check for enable-ipv6
Martin v. Löwis11437992002-04-12 09:54:03 +00001715AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001716AC_MSG_CHECKING([if --enable-ipv6 is specified])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001717AC_ARG_ENABLE(ipv6,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001718[ --enable-ipv6 Enable ipv6 (with ipv4) support
1719 --disable-ipv6 Disable ipv6 support],
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001720[ case "$enableval" in
1721 no)
1722 AC_MSG_RESULT(no)
1723 ipv6=no
1724 ;;
1725 *) AC_MSG_RESULT(yes)
1726 AC_DEFINE(ENABLE_IPV6)
1727 ipv6=yes
1728 ;;
1729 esac ],
1730
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001731[
1732dnl the check does not work on cross compilation case...
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001733 AC_TRY_RUN([ /* AF_INET6 available check */
1734#include <sys/types.h>
1735#include <sys/socket.h>
1736main()
1737{
1738 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1739 exit(1);
1740 else
1741 exit(0);
1742}
1743],
1744 AC_MSG_RESULT(yes)
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001745 ipv6=yes,
1746 AC_MSG_RESULT(no)
1747 ipv6=no,
1748 AC_MSG_RESULT(no)
1749 ipv6=no
Martin v. Löwisa5f8bb52001-09-05 08:22:34 +00001750)
1751
1752if test "$ipv6" = "yes"; then
1753 AC_MSG_CHECKING(if RFC2553 API is available)
1754 AC_TRY_COMPILE([#include <sys/types.h>
1755#include <netinet/in.h>],
1756 [struct sockaddr_in6 x;
1757x.sin6_scope_id;],
1758 AC_MSG_RESULT(yes)
1759 ipv6=yes,
1760 AC_MSG_RESULT(no, IPv6 disabled)
1761 ipv6=no)
1762fi
1763
1764if test "$ipv6" = "yes"; then
1765 AC_DEFINE(ENABLE_IPV6)
1766fi
1767])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001768
1769ipv6type=unknown
1770ipv6lib=none
1771ipv6trylibc=no
1772
1773if test "$ipv6" = "yes"; then
1774 AC_MSG_CHECKING([ipv6 stack type])
Guido van Rossumb8552162001-09-05 14:58:11 +00001775 for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta;
1776 do
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001777 case $i in
1778 inria)
1779 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001780 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001781#include <netinet/in.h>
1782#ifdef IPV6_INRIA_VERSION
1783yes
1784#endif],
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001785 [ipv6type=$i])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001786 ;;
1787 kame)
1788 dnl http://www.kame.net/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001789 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001790#include <netinet/in.h>
1791#ifdef __KAME__
1792yes
1793#endif],
1794 [ipv6type=$i;
1795 ipv6lib=inet6
1796 ipv6libdir=/usr/local/v6/lib
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001797 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001798 ;;
1799 linux-glibc)
1800 dnl http://www.v6.linux.or.jp/
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001801 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001802#include <features.h>
1803#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2))
1804yes
1805#endif],
1806 [ipv6type=$i;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001807 ipv6trylibc=yes])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001808 ;;
1809 linux-inet6)
1810 dnl http://www.v6.linux.or.jp/
1811 if test -d /usr/inet6; then
1812 ipv6type=$i
1813 ipv6lib=inet6
1814 ipv6libdir=/usr/inet6/lib
Skip Montanarodecc6a42003-01-01 20:07:49 +00001815 BASECFLAGS="-I/usr/inet6/include $BASECFLAGS"
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001816 fi
1817 ;;
1818 solaris)
1819 if test -f /etc/netconfig; then
1820 if /usr/xpg4/bin/grep -q tcp6 /etc/netconfig; then
1821 ipv6type=$i
1822 ipv6trylibc=yes
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001823 fi
1824 fi
1825 ;;
1826 toshiba)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001827 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001828#include <sys/param.h>
1829#ifdef _TOSHIBA_INET6
1830yes
1831#endif],
1832 [ipv6type=$i;
1833 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001834 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001835 ;;
1836 v6d)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001837 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001838#include </usr/local/v6/include/sys/v6config.h>
1839#ifdef __V6D__
1840yes
1841#endif],
1842 [ipv6type=$i;
1843 ipv6lib=v6;
1844 ipv6libdir=/usr/local/v6/lib;
Skip Montanarodecc6a42003-01-01 20:07:49 +00001845 BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001846 ;;
1847 zeta)
Martin v. Löwisa5f73f92001-10-15 08:06:29 +00001848 AC_EGREP_CPP(yes, [
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001849#include <sys/param.h>
1850#ifdef _ZETA_MINAMI_INET6
1851yes
1852#endif],
1853 [ipv6type=$i;
1854 ipv6lib=inet6;
Martin v. Löwis44ddbde2001-12-02 10:15:37 +00001855 ipv6libdir=/usr/local/v6/lib])
Martin v. Löwisa2ac6022001-08-09 11:40:14 +00001856 ;;
1857 esac
1858 if test "$ipv6type" != "unknown"; then
1859 break
1860 fi
1861 done
1862 AC_MSG_RESULT($ipv6type)
1863fi
1864
1865if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
1866 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
1867 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
1868 echo "using lib$ipv6lib"
1869 else
1870 if test $ipv6trylibc = "yes"; then
1871 echo "using libc"
1872 else
1873 echo 'Fatal: no $ipv6lib library found. cannot continue.'
1874 echo "You need to fetch lib$ipv6lib.a from appropriate"
1875 echo 'ipv6 kit and compile beforehand.'
1876 exit 1
1877 fi
1878 fi
1879fi
1880
Jack Jansen7b8c7542002-04-14 20:12:41 +00001881# Check for universal newline support
Guido van Rossum402905e2002-08-15 13:56:35 +00001882AC_MSG_CHECKING(for --with-universal-newlines)
Jack Jansen7b8c7542002-04-14 20:12:41 +00001883AC_ARG_WITH(universal-newlines,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001884 AC_HELP_STRING(--with(out)-universal-newlines, disable/enable foreign newlines))
Jack Jansen7b8c7542002-04-14 20:12:41 +00001885
1886if test -z "$with_universal_newlines"
1887then with_universal_newlines="yes"
1888fi
Martin v. Löwis7e4cfcb2002-12-19 16:21:49 +00001889if test "$with_universal_newlines" = "no"
Martin v. Löwis03d00d52002-12-19 19:03:31 +00001890then
Martin v. Löwis7e4cfcb2002-12-19 16:21:49 +00001891 echo --without-universal-newlines is unsupported, see README
1892 exit 1
Martin v. Löwis03d00d52002-12-19 19:03:31 +00001893else
Martin v. Löwise8aea582002-04-16 05:51:02 +00001894 AC_DEFINE(WITH_UNIVERSAL_NEWLINES, 1,
1895 [Define if you want to read files with foreign newlines.])
Jack Jansen7b8c7542002-04-14 20:12:41 +00001896fi
1897AC_MSG_RESULT($with_universal_newlines)
1898
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001899# Check for --with-doc-strings
1900AC_MSG_CHECKING(for --with-doc-strings)
1901AC_ARG_WITH(doc-strings,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001902 AC_HELP_STRING(--with(out)-doc-strings, disable/enable documentation strings))
Martin v. Löwisa3fb4f72002-06-09 13:33:54 +00001903
1904if test -z "$with_doc_strings"
1905then with_doc_strings="yes"
1906fi
1907if test "$with_doc_strings" != "no"
1908then
1909 AC_DEFINE(WITH_DOC_STRINGS, 1,
1910 [Define if you want documentation strings in extension modules])
1911fi
1912AC_MSG_RESULT($with_doc_strings)
1913
Neil Schemenauera35c6882001-02-27 04:45:05 +00001914# Check for Python-specific malloc support
1915AC_MSG_CHECKING(for --with-pymalloc)
1916AC_ARG_WITH(pymalloc,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001917 AC_HELP_STRING(--with(out)-pymalloc, disable/enable specialized mallocs))
Neil Schemenauer16c22972002-03-22 15:34:49 +00001918
1919if test -z "$with_pymalloc"
1920then with_pymalloc="yes"
1921fi
1922if test "$with_pymalloc" != "no"
1923then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001924 AC_DEFINE(WITH_PYMALLOC, 1,
1925 [Define if you want to compile in Python-specific mallocs])
Neil Schemenauer16c22972002-03-22 15:34:49 +00001926fi
1927AC_MSG_RESULT($with_pymalloc)
Neil Schemenauera35c6882001-02-27 04:45:05 +00001928
Barry Warsawef82cd72000-06-30 16:21:01 +00001929# Check for --with-wctype-functions
1930AC_MSG_CHECKING(for --with-wctype-functions)
1931AC_ARG_WITH(wctype-functions,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001932 AC_HELP_STRING(--with-wctype-functions, use wctype.h functions),
1933[
Barry Warsawef82cd72000-06-30 16:21:01 +00001934if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001935then
1936 AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
1937 [Define if you want wctype.h functions to be used instead of the
1938 one supplied by Python itself. (see Include/unicodectype.h).])
1939 AC_MSG_RESULT(yes)
Barry Warsawef82cd72000-06-30 16:21:01 +00001940else AC_MSG_RESULT(no)
1941fi],
1942[AC_MSG_RESULT(no)])
1943
Guido van Rossum68242b51996-05-28 22:53:03 +00001944# -I${DLINCLDIR} is added to the compile rule for importdl.o
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001945AC_SUBST(DLINCLDIR)
Guido van Rossum98935bf2001-09-05 19:13:16 +00001946DLINCLDIR=.
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001947
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001948AC_MSG_CHECKING(for --with-sgi-dl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00001949AC_ARG_WITH(sgi-dl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001950 AC_HELP_STRING(--with-sgi-dl=DIRECTORY, IRIX 4 dynamic linking),
1951[
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001952AC_MSG_RESULT($withval)
Martin v. Löwis9ef33762002-12-02 22:23:56 +00001953echo --with-sgi-dl is unsupported, see README
Martin v. Löwis779ffc02002-12-02 22:17:01 +00001954exit 1
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001955AC_DEFINE(WITH_SGI_DL, 1,
1956 [Define if you want to use SGI (IRIX 4) dynamic linking.
1957 This requires the "dl" library by Jack Jansen,
1958 ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
1959 Do not bother on IRIX 5, it already has dynamic linking using SunOS
1960 style shared libraries])
Guido van Rossume97ee181999-12-20 21:27:22 +00001961DYNLOADFILE="dynload_dl.o"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001962dldir=$withval
Guido van Rossum40951012000-10-07 16:21:27 +00001963if test ! -z "$dldir" -a -d "$dldir"
Guido van Rossum300fda71996-08-19 21:58:16 +00001964then LDFLAGS="$LDFLAGS -L$dldir"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001965else AC_MSG_ERROR([proper usage is --with-sgi-dl=DIRECTORY])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001966fi
1967DLINCLDIR=${dldir}
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001968LIBS="$LIBS -ldl -lmld"], AC_MSG_RESULT(no))
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001969
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001970AC_MSG_CHECKING(for --with-dl-dld)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001971AC_ARG_WITH(dl-dld,
1972 AC_HELP_STRING(--with-dl-dld=DL_DIR, GNU dynamic linking),
1973[
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001974AC_MSG_RESULT($withval)
Martin v. Löwis9ef33762002-12-02 22:23:56 +00001975echo --with-dl-dld is unsupported, see README
Martin v. Löwis779ffc02002-12-02 22:17:01 +00001976exit 1
Martin v. Löwisc45929e2002-04-06 10:10:49 +00001977AC_DEFINE(WITH_DL_DLD, 1,
1978 [Define if you want to emulate SGI (IRIX 4) dynamic linking.
1979 This is rumoured to work on VAX (Ultrix), Sun3 (SunOS 3.4),
1980 Sequent Symmetry (Dynix), and Atari ST.
1981 This requires the 'dl-dld' library,
1982 ftp://ftp.cwi.nl/pub/dynload/dl-dld-1.1.tar.Z,
1983 as well as the 'GNU dld' library,
1984 ftp://ftp.cwi.nl/pub/dynload/dld-3.2.3.tar.Z.
1985 Do not bother on SunOS 4 or 5, they already have dynamic linking using
1986 shared libraries.])
Guido van Rossume97ee181999-12-20 21:27:22 +00001987DYNLOADFILE="dynload_dl.o"
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001988dldir=`echo "$withval" | sed 's/,.*//'`
1989dlddir=`echo "$withval" | sed 's/.*,//'`
Barry Warsaw7d1219d2000-10-05 18:45:53 +00001990if test ! -z "$dldir" -a -d "$dldir" -a ! -z "$dlddir" -a -d "$dlddir"
Guido van Rossum300fda71996-08-19 21:58:16 +00001991then LDFLAGS="$LDFLAGS -L$dldir -L$dlddir"
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00001992else AC_MSG_ERROR([proper usage is --with-dl-dld=DL_DIRECTORY,DLD_DIRECTORY])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00001993fi
1994DLINCLDIR=${dldir}
Guido van Rossum5739e7e1995-01-20 16:50:53 +00001995LIBS="$LIBS -ldl -ldld"], AC_MSG_RESULT(no))
Guido van Rossum627b2d71993-12-24 10:39:16 +00001996
Guido van Rossume97ee181999-12-20 21:27:22 +00001997# the dlopen() function means we might want to use dynload_shlib.o. some
1998# platforms, such as AIX, have dlopen(), but don't want to use it.
Thomas Wouters3a584202000-08-05 23:28:51 +00001999AC_CHECK_FUNCS(dlopen)
Guido van Rossume97ee181999-12-20 21:27:22 +00002000
2001# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic
2002# loading of modules.
2003AC_SUBST(DYNLOADFILE)
2004AC_MSG_CHECKING(DYNLOADFILE)
2005if test -z "$DYNLOADFILE"
2006then
2007 case $ac_sys_system/$ac_sys_release in
2008 AIX*) DYNLOADFILE="dynload_aix.o";;
2009 BeOS*) DYNLOADFILE="dynload_beos.o";;
2010 hp*|HP*) DYNLOADFILE="dynload_hpux.o";;
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002011 Darwin/*) DYNLOADFILE="dynload_next.o";;
Martin v. Löwisf90ae202002-06-11 06:22:31 +00002012 atheos*) DYNLOADFILE="dynload_atheos.o";;
Guido van Rossume97ee181999-12-20 21:27:22 +00002013 *)
2014 # use dynload_shlib.c and dlopen() if we have it; otherwise stub
2015 # out any dynamic loading
2016 if test "$ac_cv_func_dlopen" = yes
2017 then DYNLOADFILE="dynload_shlib.o"
2018 else DYNLOADFILE="dynload_stub.o"
2019 fi
2020 ;;
2021 esac
2022fi
2023AC_MSG_RESULT($DYNLOADFILE)
2024if test "$DYNLOADFILE" != "dynload_stub.o"
2025then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002026 AC_DEFINE(HAVE_DYNAMIC_LOADING, 1,
2027 [Defined when any dynamic module loading is enabled.])
Guido van Rossume97ee181999-12-20 21:27:22 +00002028fi
2029
Jack Jansenc49e5b72001-06-19 15:00:23 +00002030# MACHDEP_OBJS can be set to platform-specific object files needed by Python
2031
2032AC_SUBST(MACHDEP_OBJS)
2033AC_MSG_CHECKING(MACHDEP_OBJS)
2034if test -z "$MACHDEP_OBJS"
2035then
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002036 MACHDEP_OBJS=$extra_machdep_objs
2037else
2038 MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs"
Jack Jansenc49e5b72001-06-19 15:00:23 +00002039fi
Jack Jansenb6e9cad2001-08-15 01:26:28 +00002040AC_MSG_RESULT(MACHDEP_OBJS)
Jack Jansenc49e5b72001-06-19 15:00:23 +00002041
Guido van Rossum627b2d71993-12-24 10:39:16 +00002042# checks for library functions
Martin v. Löwisd5843682002-11-21 20:41:28 +00002043AC_CHECK_FUNCS(alarm chown clock confstr ctermid execv \
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002044 fchdir fork fsync fdatasync fpathconf ftime ftruncate \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002045 gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \
2046 getpriority getpwent getwd \
Martin v. Löwise9416172003-05-03 10:12:45 +00002047 kill killpg lchown lstat mkfifo mknod mktime \
Martin v. Löwisa5f09072002-10-11 05:37:59 +00002048 mremap nice pathconf pause plock poll pthread_init \
Guido van Rossum162e38c2003-02-19 15:25:10 +00002049 putenv readlink realpath \
Martin v. Löwisd5843682002-11-21 20:41:28 +00002050 select setegid seteuid setgid \
Martin v. Löwis4daacb12003-03-28 18:37:01 +00002051 setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002052 sigaction siginterrupt sigrelse strftime strptime \
Michael W. Hudson34f20ea2002-05-27 15:08:24 +00002053 sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
Martin v. Löwis438b5342002-12-27 10:16:42 +00002054 truncate uname unsetenv utimes waitpid wcscoll _getpty)
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002055
Martin v. Löwisc8ad7cc2002-11-11 13:23:45 +00002056# For some functions, having a definition is not sufficient, since
2057# we want to take their address.
2058AC_MSG_CHECKING(for chroot)
2059AC_TRY_COMPILE([#include <unistd.h>], void *x=chroot,
2060 AC_DEFINE(HAVE_CHROOT, 1, Define if you have the 'chroot' function.)
2061 AC_MSG_RESULT(yes),
2062 AC_MSG_RESULT(no)
2063)
2064AC_MSG_CHECKING(for link)
2065AC_TRY_COMPILE([#include <unistd.h>], void *x=link,
2066 AC_DEFINE(HAVE_LINK, 1, Define if you have the 'link' function.)
2067 AC_MSG_RESULT(yes),
2068 AC_MSG_RESULT(no)
2069)
2070AC_MSG_CHECKING(for symlink)
2071AC_TRY_COMPILE([#include <unistd.h>], void *x=symlink,
2072 AC_DEFINE(HAVE_SYMLINK, 1, Define if you have the 'symlink' function.)
2073 AC_MSG_RESULT(yes),
2074 AC_MSG_RESULT(no)
2075)
2076
Martin v. Löwisd5843682002-11-21 20:41:28 +00002077# On some systems (eg. FreeBSD 5), we would find a definition of the
2078# functions ctermid_r, setgroups in the library, but no prototype
2079# (e.g. because we use _XOPEN_SOURCE). See whether we can take their
2080# address to avoid compiler warnings and potential miscompilations
2081# because of the missing prototypes.
2082
2083AC_MSG_CHECKING(for ctermid_r)
2084AC_TRY_COMPILE([
2085#include "confdefs.h"
2086#include <stdio.h>
2087], void* p = ctermid_r,
2088 AC_DEFINE(HAVE_CTERMID_R, 1, Define if you have the 'ctermid_r' function.)
2089 AC_MSG_RESULT(yes),
2090 AC_MSG_RESULT(no)
2091)
2092
Martin v. Löwisf26d63b2003-03-30 17:23:49 +00002093AC_MSG_CHECKING(for flock)
2094AC_TRY_COMPILE([
2095#include "confdefs.h"
2096#include <sys/file.h>
2097], void* p = flock,
2098 AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
2099 AC_MSG_RESULT(yes),
2100 AC_MSG_RESULT(no)
2101)
2102
2103AC_MSG_CHECKING(for getpagesize)
2104AC_TRY_COMPILE([
2105#include "confdefs.h"
2106#include <unistd.h>
2107], void* p = getpagesize,
2108 AC_DEFINE(HAVE_GETPAGESIZE, 1, Define if you have the 'getpagesize' function.)
2109 AC_MSG_RESULT(yes),
2110 AC_MSG_RESULT(no)
2111)
2112
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002113dnl check for true
2114AC_CHECK_PROGS(TRUE, true, /bin/true)
2115
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002116dnl On some systems (e.g. Solaris 9), hstrerror and inet_aton are in -lresolv
2117dnl On others, they are in the C library, so we to take no action
Martin v. Löwis4ee6eef2003-05-26 05:37:51 +00002118AC_CHECK_LIB(c, inet_aton, [$ac_cv_prog_TRUE],
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002119 AC_CHECK_LIB(resolv, inet_aton)
2120)
2121
Martin v. Löwise9416172003-05-03 10:12:45 +00002122AC_MSG_CHECKING(for hstrerror)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002123AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002124#include "confdefs.h"
2125#include <netdb.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002126], void* p = hstrerror; hstrerror(0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002127 AC_DEFINE(HAVE_HSTRERROR, 1, Define if you have the 'hstrerror' function.)
2128 AC_MSG_RESULT(yes),
2129 AC_MSG_RESULT(no)
2130)
2131
2132AC_MSG_CHECKING(for inet_aton)
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002133AC_TRY_LINK([
Martin v. Löwise9416172003-05-03 10:12:45 +00002134#include "confdefs.h"
2135#include <sys/socket.h>
2136#include <netinet/in.h>
2137#include <arpa/inet.h>
Martin v. Löwis95c419b2003-05-03 12:10:48 +00002138], void* p = inet_aton;inet_aton(0,0),
Martin v. Löwise9416172003-05-03 10:12:45 +00002139 AC_DEFINE(HAVE_INET_ATON, 1, Define if you have the 'inet_aton' function.)
2140 AC_MSG_RESULT(yes),
2141 AC_MSG_RESULT(no)
2142)
2143
2144AC_MSG_CHECKING(for inet_pton)
2145AC_TRY_COMPILE([
2146#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002147#include <sys/types.h>
Martin v. Löwise9416172003-05-03 10:12:45 +00002148#include <sys/socket.h>
2149#include <netinet/in.h>
2150#include <arpa/inet.h>
2151], void* p = inet_pton,
2152 AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.)
2153 AC_MSG_RESULT(yes),
2154 AC_MSG_RESULT(no)
2155)
2156
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002157# On some systems, setgroups is in unistd.h, on others, in grp.h
Martin v. Löwisd5843682002-11-21 20:41:28 +00002158AC_MSG_CHECKING(for setgroups)
2159AC_TRY_COMPILE([
2160#include "confdefs.h"
Martin v. Löwisf2e488d2003-05-05 22:00:11 +00002161#include <unistd.h>
Martin v. Löwisd6640d42003-07-06 09:29:52 +00002162#ifdef HAVE_GRP_H
2163#include <grp.h>
2164#endif
Martin v. Löwisd5843682002-11-21 20:41:28 +00002165],
2166void* p = setgroups,
2167 AC_DEFINE(HAVE_SETGROUPS, 1, Define if you have the 'setgroups' function.)
2168 AC_MSG_RESULT(yes),
2169 AC_MSG_RESULT(no)
2170)
2171
Fred Drake8cef4cf2000-06-28 16:40:38 +00002172# check for openpty and forkpty
2173
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002174AC_CHECK_FUNCS(openpty,, AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY) LIBS="$LIBS -lutil"]))
2175AC_CHECK_FUNCS(forkpty,, AC_CHECK_LIB(util,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"]))
Fred Drake8cef4cf2000-06-28 16:40:38 +00002176
Guido van Rossum00f0f6e1999-01-06 18:52:29 +00002177# check for long file support functions
2178AC_CHECK_FUNCS(fseek64 fseeko fstatvfs ftell64 ftello statvfs)
2179
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002180AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002181AC_CHECK_FUNCS(getpgrp,
2182 AC_TRY_COMPILE([#include <unistd.h>],
2183 [getpgrp(0);],
2184 AC_DEFINE(GETPGRP_HAVE_ARG, 1,
2185 [Define if getpgrp() must be called as getpgrp(0).])
2186 )
2187)
Jack Jansen150753c2003-03-29 22:07:47 +00002188AC_CHECK_FUNCS(setpgrp,
2189 AC_TRY_COMPILE([#include <unistd.h>],
2190 [setpgrp(0,0);],
2191 AC_DEFINE(SETPGRP_HAVE_ARG, 1,
2192 [Define if setpgrp() must be called as setpgrp(0, 0).])
2193 )
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002194)
2195AC_CHECK_FUNCS(gettimeofday,
2196 AC_TRY_COMPILE([#include <sys/time.h>],
2197 [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,
2198 AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1,
2199 [Define if gettimeofday() does not have second (timezone) argument
2200 This is the case on Motorola V4 (R40V4.2)])
2201 )
2202)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002203
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002204AC_MSG_CHECKING(for major, minor, and makedev)
Martin v. Löwise3271202002-11-07 07:42:30 +00002205AC_TRY_LINK([
Neal Norwitz6eb37f02003-02-23 23:28:15 +00002206#if defined(MAJOR_IN_MKDEV)
2207#include <sys/mkdev.h>
2208#elif defined(MAJOR_IN_SYSMACROS)
2209#include <sys/sysmacros.h>
2210#else
2211#include <sys/types.h>
2212#endif
Martin v. Löwisdbe3f762002-10-10 14:27:30 +00002213],[
2214 makedev(major(0),minor(0));
2215],[
2216 AC_DEFINE(HAVE_DEVICE_MACROS, 1,
2217 [Define to 1 if you have the device macros.])
2218 AC_MSG_RESULT(yes)
2219],[
2220 AC_MSG_RESULT(no)
2221])
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002222
2223# On OSF/1 V5.1, getaddrinfo is available, but a define
2224# for [no]getaddrinfo in netdb.h.
2225AC_MSG_CHECKING(for getaddrinfo)
2226AC_TRY_LINK([
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002227#include <sys/types.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002228#include <sys/socket.h>
2229#include <netdb.h>
Martin v. Löwisc010b6d2001-11-09 17:50:52 +00002230#include <stdio.h>
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002231],[
2232getaddrinfo(NULL, NULL, NULL, NULL);
2233], [
2234AC_MSG_RESULT(yes)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002235AC_MSG_CHECKING(getaddrinfo bug)
2236AC_TRY_RUN([
2237#include <sys/types.h>
2238#include <netdb.h>
2239#include <string.h>
2240#include <sys/socket.h>
2241#include <netinet/in.h>
2242
2243main()
2244{
2245 int passive, gaierr, inet4 = 0, inet6 = 0;
2246 struct addrinfo hints, *ai, *aitop;
2247 char straddr[INET6_ADDRSTRLEN], strport[16];
2248
2249 for (passive = 0; passive <= 1; passive++) {
2250 memset(&hints, 0, sizeof(hints));
2251 hints.ai_family = AF_UNSPEC;
2252 hints.ai_flags = passive ? AI_PASSIVE : 0;
2253 hints.ai_socktype = SOCK_STREAM;
2254 if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) {
2255 (void)gai_strerror(gaierr);
2256 goto bad;
2257 }
2258 for (ai = aitop; ai; ai = ai->ai_next) {
2259 if (ai->ai_addr == NULL ||
2260 ai->ai_addrlen == 0 ||
2261 getnameinfo(ai->ai_addr, ai->ai_addrlen,
2262 straddr, sizeof(straddr), strport, sizeof(strport),
2263 NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
2264 goto bad;
2265 }
2266 switch (ai->ai_family) {
2267 case AF_INET:
2268 if (strcmp(strport, "54321") != 0) {
2269 goto bad;
2270 }
2271 if (passive) {
2272 if (strcmp(straddr, "0.0.0.0") != 0) {
2273 goto bad;
2274 }
2275 } else {
2276 if (strcmp(straddr, "127.0.0.1") != 0) {
2277 goto bad;
2278 }
2279 }
2280 inet4++;
2281 break;
2282 case AF_INET6:
2283 if (strcmp(strport, "54321") != 0) {
2284 goto bad;
2285 }
2286 if (passive) {
2287 if (strcmp(straddr, "::") != 0) {
2288 goto bad;
2289 }
2290 } else {
2291 if (strcmp(straddr, "::1") != 0) {
2292 goto bad;
2293 }
2294 }
2295 inet6++;
2296 break;
2297 case AF_UNSPEC:
2298 goto bad;
2299 break;
2300 default:
2301 /* another family support? */
2302 break;
2303 }
2304 }
2305 }
2306
2307 if (!(inet4 == 0 || inet4 == 2))
2308 goto bad;
2309 if (!(inet6 == 0 || inet6 == 2))
2310 goto bad;
2311
2312 if (aitop)
2313 freeaddrinfo(aitop);
2314 exit(0);
2315
2316 bad:
2317 if (aitop)
2318 freeaddrinfo(aitop);
2319 exit(1);
2320}
2321],
2322AC_MSG_RESULT(good)
2323buggygetaddrinfo=no,
2324AC_MSG_RESULT(buggy)
2325buggygetaddrinfo=yes,
2326AC_MSG_RESULT(buggy)
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002327buggygetaddrinfo=yes)], [
2328AC_MSG_RESULT(no)
2329buggygetaddrinfo=yes
2330])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002331
2332if test "$buggygetaddrinfo" = "yes"; then
2333 if test "$ipv6" = "yes"; then
2334 echo 'Fatal: You must get working getaddrinfo() function.'
2335 echo ' or you can specify "--disable-ipv6"'.
2336 exit 1
2337 fi
Martin v. Löwis861a65b2001-10-24 14:36:00 +00002338else
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002339 AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if you have the getaddrinfo function.])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002340fi
Thomas Woutersb0db85a2001-08-08 10:39:03 +00002341AC_CHECK_FUNCS(getnameinfo)
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002342
Guido van Rossum627b2d71993-12-24 10:39:16 +00002343# checks for structures
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002344AC_HEADER_TIME
Guido van Rossum627b2d71993-12-24 10:39:16 +00002345AC_STRUCT_TM
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002346AC_STRUCT_TIMEZONE
Martin v. Löwis60a5d722002-10-16 20:28:25 +00002347AC_CHECK_MEMBERS([struct stat.st_rdev])
2348AC_CHECK_MEMBERS([struct stat.st_blksize])
Guido van Rossum98bf58f2001-10-18 20:34:25 +00002349AC_STRUCT_ST_BLOCKS
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002350
2351AC_MSG_CHECKING(for time.h that defines altzone)
2352AC_CACHE_VAL(ac_cv_header_time_altzone,
2353[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
2354 ac_cv_header_time_altzone=yes,
2355 ac_cv_header_time_altzone=no)])
2356AC_MSG_RESULT($ac_cv_header_time_altzone)
2357if test $ac_cv_header_time_altzone = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002358 AC_DEFINE(HAVE_ALTZONE, 1, [Define this if your time.h defines altzone.])
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002359fi
2360
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002361was_it_defined=no
2362AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002363AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002364#include <sys/types.h>
2365#include <sys/select.h>
2366#include <sys/time.h>
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002367], [;], [
2368 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME, 1,
2369 [Define if you can safely include both <sys/select.h> and <sys/time.h>
2370 (which you can't on SCO ODT 3.0).])
2371 was_it_defined=yes
2372])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002373AC_MSG_RESULT($was_it_defined)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002374
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002375AC_MSG_CHECKING(for addrinfo)
2376AC_CACHE_VAL(ac_cv_struct_addrinfo,
2377AC_TRY_COMPILE([
2378# include <netdb.h>],
2379 [struct addrinfo a],
2380 ac_cv_struct_addrinfo=yes,
2381 ac_cv_struct_addrinfo=no))
2382AC_MSG_RESULT($ac_cv_struct_addrinfo)
2383if test $ac_cv_struct_addrinfo = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002384 AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002385fi
2386
2387AC_MSG_CHECKING(for sockaddr_storage)
2388AC_CACHE_VAL(ac_cv_struct_sockaddr_storage,
2389AC_TRY_COMPILE([
2390# include <sys/types.h>
2391# include <sys/socket.h>],
2392 [struct sockaddr_storage s],
2393 ac_cv_struct_sockaddr_storage=yes,
2394 ac_cv_struct_sockaddr_storage=no))
2395AC_MSG_RESULT($ac_cv_struct_sockaddr_storage)
2396if test $ac_cv_struct_sockaddr_storage = yes; then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002397 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [struct sockaddr_storage (sys/socket.h)])
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002398fi
2399
Guido van Rossum627b2d71993-12-24 10:39:16 +00002400# checks for compiler characteristics
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002401
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002402AC_C_CHAR_UNSIGNED
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002403AC_C_CONST
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002404
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002405works=no
2406AC_MSG_CHECKING(for working volatile)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002407AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes,
2408 AC_DEFINE(volatile, [], [Define to empty if the keyword does not work.])
2409)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002410AC_MSG_RESULT($works)
Guido van Rossumdabb11b1994-10-11 15:04:27 +00002411
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002412works=no
2413AC_MSG_CHECKING(for working signed char)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002414AC_TRY_COMPILE([], [signed char c;], works=yes,
2415 AC_DEFINE(signed, [], [Define to empty if the keyword does not work.])
2416)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002417AC_MSG_RESULT($works)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002418
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002419have_prototypes=no
2420AC_MSG_CHECKING(for prototypes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002421AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],[
2422 AC_DEFINE(HAVE_PROTOTYPES, 1,
2423 [Define if your compiler supports function prototype])
2424 have_prototypes=yes
2425])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002426AC_MSG_RESULT($have_prototypes)
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002427
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002428works=no
2429AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002430AC_TRY_COMPILE([
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002431#include <stdarg.h>
Guido van Rossum3f13e481996-08-30 20:58:11 +00002432int foo(int x, ...) {
2433 va_list va;
2434 va_start(va, x);
2435 va_arg(va, int);
2436 va_arg(va, char *);
2437 va_arg(va, double);
2438 return 0;
2439}
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002440], [return foo(10, "", 3.14);], [
2441 AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
2442 [Define if your compiler supports variable length function prototypes
2443 (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
2444 works=yes
2445])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002446AC_MSG_RESULT($works)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002447
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002448if test "$have_prototypes" = yes; then
2449bad_prototypes=no
2450AC_MSG_CHECKING(for bad exec* prototypes)
2451AC_TRY_COMPILE([#include <unistd.h>], [char **t;execve("@",t,t);], ,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002452 AC_DEFINE(BAD_EXEC_PROTOTYPES, 1,
2453 [Define if your <unistd.h> contains bad prototypes for exec*()
2454 (as it does on SGI IRIX 4.x)])
2455 bad_prototypes=yes
2456)
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002457AC_MSG_RESULT($bad_prototypes)
Guido van Rossum627b2d71993-12-24 10:39:16 +00002458fi
2459
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002460# check if sockaddr has sa_len member
2461AC_MSG_CHECKING(if sockaddr has sa_len member)
2462AC_TRY_COMPILE([#include <sys/types.h>
2463#include <sys/socket.h>],
2464[struct sockaddr x;
2465x.sa_len = 0;],
2466 AC_MSG_RESULT(yes)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002467 AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if sockaddr has sa_len member]),
Martin v. Löwis01dfdb32001-06-23 16:30:13 +00002468 AC_MSG_RESULT(no))
2469
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002470va_list_is_array=no
2471AC_MSG_CHECKING(whether va_list is an array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002472AC_TRY_COMPILE([
2473#ifdef HAVE_STDARG_PROTOTYPES
2474#include <stdarg.h>
2475#else
2476#include <varargs.h>
2477#endif
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002478], [va_list list1, list2; list1 = list2;], , [
2479 AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
2480 va_list_is_array=yes
2481])
Guido van Rossum5739e7e1995-01-20 16:50:53 +00002482AC_MSG_RESULT($va_list_is_array)
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002483
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002484# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
Martin v. Löwis11437992002-04-12 09:54:03 +00002485AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
2486 [Define this if you have some version of gethostbyname_r()])
2487
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002488AC_CHECK_FUNC(gethostbyname_r, [
2489 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2490 AC_MSG_CHECKING([gethostbyname_r with 6 args])
2491 OLD_CFLAGS=$CFLAGS
2492 CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS"
2493 AC_TRY_COMPILE([
2494# include <netdb.h>
2495 ], [
2496 char *name;
2497 struct hostent *he, *res;
2498 char buffer[2048];
2499 int buflen = 2048;
2500 int h_errnop;
2501
2502 (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop)
2503 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002504 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002505 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARG, 1,
2506 [Define this if you have the 6-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002507 AC_MSG_RESULT(yes)
2508 ], [
2509 AC_MSG_RESULT(no)
2510 AC_MSG_CHECKING([gethostbyname_r with 5 args])
2511 AC_TRY_COMPILE([
2512# include <netdb.h>
2513 ], [
2514 char *name;
2515 struct hostent *he;
2516 char buffer[2048];
2517 int buflen = 2048;
2518 int h_errnop;
2519
2520 (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop)
2521 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002522 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002523 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARG, 1,
2524 [Define this if you have the 5-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002525 AC_MSG_RESULT(yes)
2526 ], [
2527 AC_MSG_RESULT(no)
2528 AC_MSG_CHECKING([gethostbyname_r with 3 args])
2529 AC_TRY_COMPILE([
2530# include <netdb.h>
2531 ], [
2532 char *name;
2533 struct hostent *he;
2534 struct hostent_data data;
2535
2536 (void) gethostbyname_r(name, he, &data);
2537 ], [
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002538 AC_DEFINE(HAVE_GETHOSTBYNAME_R)
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002539 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARG, 1,
2540 [Define this if you have the 3-arg version of gethostbyname_r().])
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002541 AC_MSG_RESULT(yes)
2542 ], [
2543 AC_MSG_RESULT(no)
2544 ])
2545 ])
2546 ])
2547 CFLAGS=$OLD_CFLAGS
2548], [
Thomas Wouters3a584202000-08-05 23:28:51 +00002549 AC_CHECK_FUNCS(gethostbyname)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002550])
2551AC_SUBST(HAVE_GETHOSTBYNAME_R_6_ARG)
2552AC_SUBST(HAVE_GETHOSTBYNAME_R_5_ARG)
2553AC_SUBST(HAVE_GETHOSTBYNAME_R_3_ARG)
Guido van Rossum8db7d8b1999-03-23 16:40:33 +00002554AC_SUBST(HAVE_GETHOSTBYNAME_R)
Guido van Rossuma96f0ba1999-03-22 21:49:51 +00002555AC_SUBST(HAVE_GETHOSTBYNAME)
2556
Guido van Rossum627b2d71993-12-24 10:39:16 +00002557# checks for system services
2558# (none yet)
2559
Guido van Rossum76be6ed1995-01-02 18:33:54 +00002560# Linux requires this for correct f.p. operations
Jeremy Hyltonbe28f5b2000-07-27 21:03:04 +00002561AC_CHECK_FUNC(__fpu_control,
2562 [],
2563 [AC_CHECK_LIB(ieee, __fpu_control)
2564])
Guido van Rossum627b2d71993-12-24 10:39:16 +00002565
Guido van Rossum93274221997-05-09 02:42:00 +00002566# Check for --with-fpectl
Guido van Rossum93274221997-05-09 02:42:00 +00002567AC_MSG_CHECKING(for --with-fpectl)
Barry Warsawc0d24d8b2000-06-29 16:12:00 +00002568AC_ARG_WITH(fpectl,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002569 AC_HELP_STRING(--with-fpectl, enable SIGFPE catching),
2570[
Guido van Rossum93274221997-05-09 02:42:00 +00002571if test "$withval" != no
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002572then
2573 AC_DEFINE(WANT_SIGFPE_HANDLER, 1,
2574 [Define if you want SIGFPE handled (see Include/pyfpe.h).])
2575 AC_MSG_RESULT(yes)
Guido van Rossum93274221997-05-09 02:42:00 +00002576else AC_MSG_RESULT(no)
Guido van Rossumef2255b2000-03-10 22:30:29 +00002577fi],
2578[AC_MSG_RESULT(no)])
Guido van Rossum93274221997-05-09 02:42:00 +00002579
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002580# check for --with-libm=...
2581AC_SUBST(LIBM)
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002582case $ac_sys_system in
Guido van Rossum3dc0a512000-10-05 18:00:06 +00002583Darwin) ;;
Guido van Rossumec95c7b1998-08-04 17:59:56 +00002584BeOS) ;;
Guido van Rossum4b6b5791996-09-09 20:09:34 +00002585*) LIBM=-lm
2586esac
Guido van Rossum93274221997-05-09 02:42:00 +00002587AC_MSG_CHECKING(for --with-libm=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002588AC_ARG_WITH(libm,
2589 AC_HELP_STRING(--with-libm=STRING, math library),
2590[
Guido van Rossum93274221997-05-09 02:42:00 +00002591if test "$withval" = no
2592then LIBM=
2593 AC_MSG_RESULT(force LIBM empty)
2594elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002595then LIBM=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002596 AC_MSG_RESULT(set LIBM="$withval")
2597else AC_MSG_ERROR([proper usage is --with-libm=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002598fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002599[AC_MSG_RESULT(default LIBM="$LIBM")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002600
2601# check for --with-libc=...
2602AC_SUBST(LIBC)
Guido van Rossum93274221997-05-09 02:42:00 +00002603AC_MSG_CHECKING(for --with-libc=STRING)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002604AC_ARG_WITH(libc,
2605 AC_HELP_STRING(--with-libc=STRING, C library),
2606[
Guido van Rossum93274221997-05-09 02:42:00 +00002607if test "$withval" = no
2608then LIBC=
2609 AC_MSG_RESULT(force LIBC empty)
2610elif test "$withval" != yes
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002611then LIBC=$withval
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002612 AC_MSG_RESULT(set LIBC="$withval")
2613else AC_MSG_ERROR([proper usage is --with-libc=STRING])
Guido van Rossum93274221997-05-09 02:42:00 +00002614fi],
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002615[AC_MSG_RESULT(default LIBC="$LIBC")])
Guido van Rossum433c8ad1994-08-01 12:07:07 +00002616
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002617# check for hypot() in math library
2618LIBS_SAVE=$LIBS
2619LIBS="$LIBS $LIBM"
Guido van Rossumf2f7eb31996-08-30 15:18:00 +00002620AC_REPLACE_FUNCS(hypot)
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00002621LIBS=$LIBS_SAVE
2622
Guido van Rossumef2255b2000-03-10 22:30:29 +00002623# check for wchar.h
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002624AC_CHECK_HEADER(wchar.h, [
2625 AC_DEFINE(HAVE_WCHAR_H, 1,
2626 [Define if the compiler provides a wchar.h header file.])
2627 wchar_h="yes"
2628],
Guido van Rossumef2255b2000-03-10 22:30:29 +00002629wchar_h="no"
2630)
2631
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002632# determine wchar_t size
2633if test "$wchar_h" = yes
2634then
Guido van Rossum67b26592001-10-20 14:21:45 +00002635 AC_CHECK_SIZEOF(wchar_t, 4, [#include <wchar.h>])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002636fi
2637
2638AC_MSG_CHECKING(what type to use for unicode)
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002639dnl quadrigraphs "@<:@" and "@:>@" produce "[" and "]" in the output
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002640AC_ARG_ENABLE(unicode,
Martin v. Löwis3e2c6322002-10-29 10:07:43 +00002641 AC_HELP_STRING(--enable-unicode@<:@=ucs@<:@24@:>@@:>@, Enable Unicode strings (default is yes)),
2642 [],
2643 [enable_unicode=yes])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002644
2645if test $enable_unicode = yes
2646then
Martin v. Löwisfd917792001-06-27 20:22:04 +00002647 # Without any arguments, Py_UNICODE defaults to two-byte mode
2648 enable_unicode="ucs2"
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002649fi
2650
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002651AH_TEMPLATE(Py_UNICODE_SIZE,
2652 [Define as the size of the unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002653case "$enable_unicode" in
2654ucs2) unicode_size="2"
2655 AC_DEFINE(Py_UNICODE_SIZE,2)
2656 ;;
2657ucs4) unicode_size="4"
2658 AC_DEFINE(Py_UNICODE_SIZE,4)
2659 ;;
2660esac
2661
Martin v. Löwis11437992002-04-12 09:54:03 +00002662AH_TEMPLATE(PY_UNICODE_TYPE,
2663 [Define as the integral type used for Unicode representation.])
Martin v. Löwis0036cba2002-04-12 09:58:45 +00002664
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002665AC_SUBST(UNICODE_OBJS)
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002666if test "$enable_unicode" = "no"
2667then
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002668 UNICODE_OBJS=""
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002669 AC_MSG_RESULT(not used)
2670else
Martin v. Löwis339d0f72001-08-17 18:39:25 +00002671 UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002672 AC_DEFINE(Py_USING_UNICODE, 1,
2673 [Define if you want to have a Unicode type.])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002674 if test "$unicode_size" = "$ac_cv_sizeof_wchar_t"
2675 then
2676 PY_UNICODE_TYPE="wchar_t"
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002677 AC_DEFINE(HAVE_USABLE_WCHAR_T, 1,
2678 [Define if you have a useable wchar_t type defined in wchar.h; useable
2679 means wchar_t must be 16-bit unsigned type. (see
2680 Include/unicodeobject.h).])
Martin v. Löwis0ba70cc2001-06-26 22:22:37 +00002681 AC_DEFINE(PY_UNICODE_TYPE,wchar_t)
2682 elif test "$ac_cv_sizeof_short" = "$unicode_size"
2683 then
2684 PY_UNICODE_TYPE="unsigned short"
2685 AC_DEFINE(PY_UNICODE_TYPE,unsigned short)
2686 elif test "$ac_cv_sizeof_long" = "$unicode_size"
2687 then
2688 PY_UNICODE_TYPE="unsigned long"
2689 AC_DEFINE(PY_UNICODE_TYPE,unsigned long)
2690 else
2691 PY_UNICODE_TYPE="no type found"
2692 fi
2693 AC_MSG_RESULT($PY_UNICODE_TYPE)
2694fi
Guido van Rossumef2255b2000-03-10 22:30:29 +00002695
2696# check for endianness
2697AC_C_BIGENDIAN
2698
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002699# Check whether right shifting a negative integer extends the sign bit
2700# or fills with zeros (like the Cray J90, according to Tim Peters).
2701AC_MSG_CHECKING(whether right shift extends the sign bit)
Vladimir Marangozova6180282000-07-12 05:05:06 +00002702AC_CACHE_VAL(ac_cv_rshift_extends_sign, [
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002703AC_TRY_RUN([
2704int main()
2705{
Vladimir Marangozova6180282000-07-12 05:05:06 +00002706 exit(((-1)>>3 == -1) ? 0 : 1);
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002707}
Guido van Rossum3065c942001-09-17 04:03:14 +00002708],
2709ac_cv_rshift_extends_sign=yes,
2710ac_cv_rshift_extends_sign=no,
2711ac_cv_rshift_extends_sign=yes)])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002712AC_MSG_RESULT($ac_cv_rshift_extends_sign)
2713if test "$ac_cv_rshift_extends_sign" = no
2714then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002715 AC_DEFINE(SIGNED_RIGHT_SHIFT_ZERO_FILLS, 1,
2716 [Define if i>>j for signed int i does not extend the sign bit
2717 when i < 0])
Vladimir Marangozova6180282000-07-12 05:05:06 +00002718fi
2719
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002720# check for getc_unlocked and related locking functions
2721AC_MSG_CHECKING(for getc_unlocked() and friends)
2722AC_CACHE_VAL(ac_cv_have_getc_unlocked, [
2723AC_TRY_LINK([#include <stdio.h>],[
2724 FILE *f = fopen("/dev/null", "r");
2725 flockfile(f);
2726 getc_unlocked(f);
2727 funlockfile(f);
2728], ac_cv_have_getc_unlocked=yes, ac_cv_have_getc_unlocked=no)])
2729AC_MSG_RESULT($ac_cv_have_getc_unlocked)
2730if test "$ac_cv_have_getc_unlocked" = yes
2731then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002732 AC_DEFINE(HAVE_GETC_UNLOCKED, 1,
2733 [Define this if you have flockfile(), getc_unlocked(), and funlockfile()])
Guido van Rossumcadfaec2001-01-05 14:45:49 +00002734fi
Vladimir Marangozov9a5a5d12000-07-12 03:02:16 +00002735
Guido van Rossumfaf5e4d2002-12-30 16:25:41 +00002736# check for readline 2.2
2737AC_TRY_CPP([#include <readline/readline.h>],
2738have_readline=yes, have_readline=no)
2739if test $have_readline = yes
2740then
2741 AC_EGREP_HEADER([extern int rl_completion_append_character;],
2742 [readline/readline.h],
2743 AC_DEFINE(HAVE_RL_COMPLETION_APPEND_CHARACTER, 1,
2744 [Define if you have readline 2.2]), )
2745fi
2746
Martin v. Löwis0daad592001-09-30 21:09:59 +00002747# check for readline 4.0
2748AC_CHECK_LIB(readline, rl_pre_input_hook,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002749 AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1,
2750 [Define if you have readline 4.0]), , -ltermcap)
Martin v. Löwis0daad592001-09-30 21:09:59 +00002751
Guido van Rossum353ae582001-07-10 16:45:32 +00002752# check for readline 4.2
2753AC_CHECK_LIB(readline, rl_completion_matches,
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002754 AC_DEFINE(HAVE_RL_COMPLETION_MATCHES, 1,
2755 [Define if you have readline 4.2]), , -ltermcap)
Guido van Rossum353ae582001-07-10 16:45:32 +00002756
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002757AC_MSG_CHECKING(for broken nice())
2758AC_CACHE_VAL(ac_cv_broken_nice, [
2759AC_TRY_RUN([
2760int main()
2761{
2762 int val1 = nice(1);
2763 if (val1 != -1 && val1 == nice(2))
2764 exit(0);
2765 exit(1);
2766}
Guido van Rossum3065c942001-09-17 04:03:14 +00002767],
2768ac_cv_broken_nice=yes,
2769ac_cv_broken_nice=no,
2770ac_cv_broken_nice=no)])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002771AC_MSG_RESULT($ac_cv_broken_nice)
2772if test "$ac_cv_broken_nice" = yes
2773then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002774 AC_DEFINE(HAVE_BROKEN_NICE, 1,
2775 [Define if nice() returns success/failure instead of the new priority.])
Thomas Wouterse38b2f12001-07-11 22:35:31 +00002776fi
2777
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002778# tzset(3) exists and works like we expect it to
2779AC_MSG_CHECKING(for working tzset())
2780AC_CACHE_VAL(ac_cv_working_tzset, [
2781AC_TRY_RUN([
2782#include <stdlib.h>
2783#include <time.h>
2784int main()
2785{
2786 int gmt_hour;
2787 int eastern_hour;
2788 time_t now;
2789 now = time((time_t*)NULL);
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002790 putenv("TZ=UTC+0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002791 tzset();
2792 gmt_hour = localtime(&now)->tm_hour;
Neal Norwitz7f2588c2003-04-11 15:35:53 +00002793 putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
Guido van Rossumd11b62e2003-03-14 21:51:36 +00002794 tzset();
2795 eastern_hour = localtime(&now)->tm_hour;
2796 if (eastern_hour == gmt_hour)
2797 exit(1);
2798 exit(0);
2799}
2800],
2801ac_cv_working_tzset=yes,
2802ac_cv_working_tzset=no,
2803ac_cv_working_tzset=no)])
2804AC_MSG_RESULT($ac_cv_working_tzset)
2805if test "$ac_cv_working_tzset" = yes
2806then
2807 AC_DEFINE(HAVE_WORKING_TZSET, 1,
2808 [Define if tzset() actually switches the local timezone in a meaningful way.])
2809fi
2810
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002811# Look for subsecond timestamps in struct stat
2812AC_MSG_CHECKING(for tv_nsec in struct stat)
2813AC_CACHE_VAL(ac_cv_stat_tv_nsec,
2814AC_TRY_COMPILE([#include <sys/stat.h>], [
2815struct stat st;
2816st.st_mtim.tv_nsec = 1;
2817],
Martin v. Löwisa32c9942002-09-09 16:17:47 +00002818ac_cv_stat_tv_nsec=yes,
Martin v. Löwis94717ed2002-09-09 14:24:16 +00002819ac_cv_stat_tv_nsec=no,
2820ac_cv_stat_tv_nsec=no))
2821AC_MSG_RESULT($ac_cv_stat_tv_nsec)
2822if test "$ac_cv_stat_tv_nsec" = yes
2823then
2824 AC_DEFINE(HAVE_STAT_TV_NSEC, 1,
2825 [Define if you have struct stat.st_mtim.tv_nsec])
2826fi
2827
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002828# On HP/UX 11.0, mvwdelch is a block with a return statement
2829AC_MSG_CHECKING(whether mvwdelch is an expression)
2830AC_CACHE_VAL(ac_cv_mvwdelch_is_expression,
2831AC_TRY_COMPILE([#include <curses.h>], [
2832 int rtn;
2833 rtn = mvwdelch(0,0,0);
2834], ac_cv_mvwdelch_is_expression=yes,
2835 ac_cv_mvwdelch_is_expression=no,
2836 ac_cv_mvwdelch_is_expression=yes))
2837AC_MSG_RESULT($ac_cv_mvwdelch_is_expression)
2838
2839if test "$ac_cv_mvwdelch_is_expression" = yes
2840then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002841 AC_DEFINE(MVWDELCH_IS_EXPRESSION, 1,
2842 [Define if mvwdelch in curses.h is an expression.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002843fi
2844
2845AC_MSG_CHECKING(whether WINDOW has _flags)
2846AC_CACHE_VAL(ac_cv_window_has_flags,
2847AC_TRY_COMPILE([#include <curses.h>], [
2848 WINDOW *w;
2849 w->_flags = 0;
2850], ac_cv_window_has_flags=yes,
2851 ac_cv_window_has_flags=no,
2852 ac_cv_window_has_flags=no))
2853AC_MSG_RESULT($ac_cv_window_has_flags)
2854
2855
2856if test "$ac_cv_window_has_flags" = yes
2857then
Martin v. Löwisc45929e2002-04-06 10:10:49 +00002858 AC_DEFINE(WINDOW_HAS_FLAGS, 1,
2859 [Define if WINDOW in curses.h offers a field _flags.])
Martin v. Löwiseb9b1032001-10-24 17:10:49 +00002860fi
2861
Martin v. Löwis24a880b2002-12-31 12:55:15 +00002862AC_MSG_CHECKING(for /dev/ptmx)
2863
2864if test -e /dev/ptmx
2865then
2866 AC_MSG_RESULT(yes)
2867 AC_DEFINE(HAVE_DEV_PTMX, 1,
2868 [Define if we have /dev/ptmx.])
2869else
2870 AC_MSG_RESULT(no)
2871fi
2872
Neal Norwitz865400f2003-03-21 01:42:58 +00002873AC_MSG_CHECKING(for /dev/ptc)
2874
2875if test -e /dev/ptc
2876then
2877 AC_MSG_RESULT(yes)
2878 AC_DEFINE(HAVE_DEV_PTC, 1,
2879 [Define if we have /dev/ptc.])
2880else
2881 AC_MSG_RESULT(no)
2882fi
2883
Martin v. Löwis01c04012002-11-11 14:58:44 +00002884AC_CHECK_TYPE(socklen_t,,
2885 AC_DEFINE(socklen_t,int,
2886 Define to `int' if <sys/socket.h> does not define.),[
2887#ifdef HAVE_SYS_TYPES_H
2888#include <sys/types.h>
2889#endif
Guido van Rossum95713eb2000-05-18 20:53:31 +00002890#ifdef HAVE_SYS_SOCKET_H
2891#include <sys/socket.h>
2892#endif
Martin v. Löwis01c04012002-11-11 14:58:44 +00002893])
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002894
Martin v. Löwis06f15bb2001-12-02 13:02:32 +00002895AC_SUBST(THREADHEADERS)
2896
2897for h in `(cd $srcdir;echo Python/thread_*.h)`
2898do
2899 THREADHEADERS="$THREADHEADERS \$(srcdir)/$h"
2900done
2901
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002902AC_SUBST(SRCDIRS)
Jack Jansen0b06be72002-06-21 14:48:38 +00002903SRCDIRS="Parser Grammar Objects Python Modules Mac Mac/Python"
Andrew M. Kuchling8abedde2001-01-26 22:55:24 +00002904AC_MSG_CHECKING(for build directories)
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002905for dir in $SRCDIRS; do
2906 if test ! -d $dir; then
2907 mkdir $dir
Fred Drake884d3ba2000-11-02 17:52:56 +00002908 fi
Neil Schemenauer55f0cf32001-01-24 17:24:33 +00002909done
2910AC_MSG_RESULT(done)
Fred Drake036144d2000-10-26 17:09:35 +00002911
Guido van Rossum627b2d71993-12-24 10:39:16 +00002912# generate output files
Martin v. Löwis88afe662002-10-26 13:47:44 +00002913AC_CONFIG_FILES(Makefile.pre Modules/Setup.config)
2914AC_OUTPUT
Neil Schemenauer61c51152001-01-26 16:18:16 +00002915
2916echo "creating Setup"
2917if test ! -f Modules/Setup
2918then
2919 cp $srcdir/Modules/Setup.dist Modules/Setup
2920fi
2921
2922echo "creating Setup.local"
2923if test ! -f Modules/Setup.local
2924then
2925 echo "# Edit this file for local setup changes" >Modules/Setup.local
2926fi
2927
2928echo "creating Makefile"
2929$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
2930 -s Modules Modules/Setup.config \
Neil Schemenauerf8b71c52001-04-21 17:41:16 +00002931 Modules/Setup.local Modules/Setup
Neil Schemenauer66252162001-02-19 04:47:42 +00002932mv config.c Modules